├── .gitignore ├── LICENSE ├── README.md ├── RELEASENOTES.md ├── bowser-generic ├── js │ └── about.html └── readme.txt └── bowser-ios ├── .gitignore ├── AboutViewController.h ├── AboutViewController.m ├── Bowser.xcodeproj ├── .gitignore ├── project.pbxproj └── xcuserdata │ └── stefan.xcuserdatad │ ├── xcdebugger │ └── Breakpoints.xcbkptlist │ └── xcschemes │ ├── Bowser.xcscheme │ └── xcschememanagement.plist ├── Bowser.xcworkspace ├── contents.xcworkspacedata └── xcshareddata │ └── Bowser.xcscmblueprint ├── Bowser ├── AddBookmarkViewController.h ├── AddBookmarkViewController.m ├── Bookmarks.plist ├── BookmarksViewController.h ├── BookmarksViewController.m ├── Bowser-Bridging-Header.h ├── Bowser-Info.plist ├── Bowser-Prefix.pch ├── BowserAppDelegate.h ├── BowserAppDelegate.m ├── BowserConfirmView.h ├── BowserConfirmView.m ├── BowserFavicon.h ├── BowserFavicon.m ├── BowserHistory.plist ├── BowserHistoryTableViewCell.h ├── BowserHistoryTableViewCell.m ├── BowserViewController.h ├── BowserViewController.m ├── BowserWebView.h ├── BowserWebView.m ├── Launch Screen.xib ├── en.lproj │ ├── InfoPlist.strings │ ├── MainStoryboard_iPad.storyboard │ └── MainStoryboard_iPhone.storyboard └── main.m ├── Images.xcassets ├── AppIcon.appiconset │ ├── BowserLogo120.png │ ├── BowserLogo152.png │ ├── BowserLogo180.png │ ├── BowserLogo29-1.png │ ├── BowserLogo29.png │ ├── BowserLogo40.png │ ├── BowserLogo58-1.png │ ├── BowserLogo58.png │ ├── BowserLogo76.png │ ├── BowserLogo80-1.png │ ├── BowserLogo80.png │ └── Contents.json ├── LaunchImage.launchimage │ └── Contents.json ├── MenuButton.imageset │ ├── Contents.json │ └── MenuButton.pdf ├── OpenWebRTC-Logo.imageset │ ├── Contents.json │ └── OWR-Logo-Vector.pdf └── ReloadButton.imageset │ ├── Contents.json │ └── ReloadButton.pdf ├── OpenWebRTC-Logo-w400.png ├── Podfile ├── Podfile.lock └── readme.txt /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | build/ 4 | *.pbxuser 5 | !default.pbxuser 6 | *.mode1v3 7 | !default.mode1v3 8 | *.mode2v3 9 | !default.mode2v3 10 | *.perspectivev3 11 | !default.perspectivev3 12 | xcuserdata 13 | *.xccheckout 14 | *.moved-aside 15 | DerivedData 16 | *.hmap 17 | *.ipa 18 | *.xcuserstate 19 | *.framework 20 | 21 | # CocoaPods 22 | # 23 | # We recommend against adding the Pods directory to your .gitignore. However 24 | # you should judge for yourself, the pros and cons are mentioned at: 25 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control 26 | # 27 | Pods/ 28 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014, Ericsson AB. All rights reserved. 2 | 3 | Redistribution and use in source and binary forms, with or without modification, 4 | are permitted provided that the following conditions are met: 5 | 6 | 1. Redistributions of source code must retain the above copyright notice, this 7 | list of conditions and the following disclaimer. 8 | 9 | 2. Redistributions in binary form must reproduce the above copyright notice, this 10 | list of conditions and the following disclaimer in the documentation and/or other 11 | materials provided with the distribution. 12 | 13 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 14 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 15 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 16 | IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 17 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 18 | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 19 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 20 | WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 21 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 22 | OF SUCH DAMAGE. 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Bowser 2 | ====== 3 | 4 | A WebRTC browser for iOS developed in the open. Bowser is built on top of [OpenWebRTC](https://github.com/EricssonResearch/openwebrtc). 5 | 6 | ![Bowser logo](http://static.squarespace.com/static/53f1eedee4b0439bf8d480c5/t/53f25022e4b0cca46a383183/1408389154850/?format=500w "Bowser logo") 7 | 8 | ## App Store 9 | Bowser is not only Open Source, it is also available as a [free download](https://itunes.apple.com/app/bowser/id560478358?mt=8) on the Apple App Store. When improvements have been made to Bowser or OpenWebRTC new versions for the App Store are published by Ericsson Research. 10 | 11 | 12 | 13 | [![Bowser video](http://img.youtube.com/vi/mR_-2trCjzE/0.jpg)](http://www.youtube.com/watch?v=mR_-2trCjzE) 14 | 15 | ## Developing for Bowser 16 | Tips and other resources can be found on the wiki page [Developing for Bowser](https://github.com/EricssonResearch/bowser/wiki/Developing-for-Bowser). 17 | 18 | ## Extension of UIWebView 19 | Bowser is based on the official `UIWebView` provided by the platform and the [WebRTC](http://www.w3.org/2011/04/webrtc/) API's are implemented with JavaScript that is injected into web pages as they load, the injected JavaScript code is using remote procedure calls to control the [OpenWebRTC](https://github.com/EricssonResearch/openwebrtc) backend. 20 | 21 | The [plan](https://github.com/EricssonResearch/bowser/issues/1) is to move to the `WKWebView`, introduced in iOS 8, as soon as possible. 22 | 23 | ## Video rendering 24 | Mobile Safari on iPhone displays `