├── bowser-ios ├── Bowser.xcodeproj │ ├── .gitignore │ ├── xcuserdata │ │ └── stefan.xcuserdatad │ │ │ ├── xcdebugger │ │ │ └── Breakpoints.xcbkptlist │ │ │ └── xcschemes │ │ │ ├── xcschememanagement.plist │ │ │ └── Bowser.xcscheme │ └── project.pbxproj ├── .gitignore ├── Bowser │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ ├── MainStoryboard_iPad.storyboard │ │ └── MainStoryboard_iPhone.storyboard │ ├── Bowser-Bridging-Header.h │ ├── Bowser-Prefix.pch │ ├── BowserHistory.plist │ ├── Bookmarks.plist │ ├── BowserWebView.h │ ├── BowserAppDelegate.h │ ├── AddBookmarkViewController.h │ ├── main.m │ ├── BowserFavicon.h │ ├── BookmarksViewController.h │ ├── BowserHistoryTableViewCell.h │ ├── BowserHistoryTableViewCell.m │ ├── BowserConfirmView.h │ ├── BowserFavicon.m │ ├── Bowser-Info.plist │ ├── BowserViewController.h │ ├── BowserWebView.m │ ├── AddBookmarkViewController.m │ ├── BookmarksViewController.m │ ├── Launch Screen.xib │ ├── BowserConfirmView.m │ ├── BowserAppDelegate.m │ └── BowserViewController.m ├── readme.txt ├── OpenWebRTC-Logo-w400.png ├── Images.xcassets │ ├── AppIcon.appiconset │ │ ├── BowserLogo29.png │ │ ├── BowserLogo40.png │ │ ├── BowserLogo58.png │ │ ├── BowserLogo76.png │ │ ├── BowserLogo80.png │ │ ├── BowserLogo120.png │ │ ├── BowserLogo152.png │ │ ├── BowserLogo180.png │ │ ├── BowserLogo29-1.png │ │ ├── BowserLogo58-1.png │ │ ├── BowserLogo80-1.png │ │ └── Contents.json │ ├── MenuButton.imageset │ │ ├── MenuButton.pdf │ │ └── Contents.json │ ├── ReloadButton.imageset │ │ ├── ReloadButton.pdf │ │ └── Contents.json │ ├── OpenWebRTC-Logo.imageset │ │ ├── OWR-Logo-Vector.pdf │ │ └── Contents.json │ └── LaunchImage.launchimage │ │ └── Contents.json ├── Podfile ├── Bowser.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── Bowser.xcscmblueprint ├── Podfile.lock ├── AboutViewController.h └── AboutViewController.m ├── bowser-generic └── readme.txt ├── .gitignore ├── RELEASENOTES.md ├── LICENSE └── README.md /bowser-ios/Bowser.xcodeproj/.gitignore: -------------------------------------------------------------------------------- 1 | project.xcworkspace 2 | -------------------------------------------------------------------------------- /bowser-ios/.gitignore: -------------------------------------------------------------------------------- 1 | Intermediates 2 | Products 3 | DerivedData 4 | -------------------------------------------------------------------------------- /bowser-ios/Bowser/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /bowser-ios/readme.txt: -------------------------------------------------------------------------------- 1 | This folder includes files and folders specific for iOS Bowser functionality. -------------------------------------------------------------------------------- /bowser-generic/readme.txt: -------------------------------------------------------------------------------- 1 | This folder includes generic files and folders for both iOS and Android Bowser functionality. 2 | -------------------------------------------------------------------------------- /bowser-ios/OpenWebRTC-Logo-w400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EricssonResearch/bowser/HEAD/bowser-ios/OpenWebRTC-Logo-w400.png -------------------------------------------------------------------------------- /bowser-ios/Bowser/Bowser-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // Use this file to import your target's public headers that you would like to expose to Swift. 3 | // 4 | 5 | -------------------------------------------------------------------------------- /bowser-ios/Images.xcassets/AppIcon.appiconset/BowserLogo29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EricssonResearch/bowser/HEAD/bowser-ios/Images.xcassets/AppIcon.appiconset/BowserLogo29.png -------------------------------------------------------------------------------- /bowser-ios/Images.xcassets/AppIcon.appiconset/BowserLogo40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EricssonResearch/bowser/HEAD/bowser-ios/Images.xcassets/AppIcon.appiconset/BowserLogo40.png -------------------------------------------------------------------------------- /bowser-ios/Images.xcassets/AppIcon.appiconset/BowserLogo58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EricssonResearch/bowser/HEAD/bowser-ios/Images.xcassets/AppIcon.appiconset/BowserLogo58.png -------------------------------------------------------------------------------- /bowser-ios/Images.xcassets/AppIcon.appiconset/BowserLogo76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EricssonResearch/bowser/HEAD/bowser-ios/Images.xcassets/AppIcon.appiconset/BowserLogo76.png -------------------------------------------------------------------------------- /bowser-ios/Images.xcassets/AppIcon.appiconset/BowserLogo80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EricssonResearch/bowser/HEAD/bowser-ios/Images.xcassets/AppIcon.appiconset/BowserLogo80.png -------------------------------------------------------------------------------- /bowser-ios/Images.xcassets/MenuButton.imageset/MenuButton.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EricssonResearch/bowser/HEAD/bowser-ios/Images.xcassets/MenuButton.imageset/MenuButton.pdf -------------------------------------------------------------------------------- /bowser-ios/Images.xcassets/AppIcon.appiconset/BowserLogo120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EricssonResearch/bowser/HEAD/bowser-ios/Images.xcassets/AppIcon.appiconset/BowserLogo120.png -------------------------------------------------------------------------------- /bowser-ios/Images.xcassets/AppIcon.appiconset/BowserLogo152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EricssonResearch/bowser/HEAD/bowser-ios/Images.xcassets/AppIcon.appiconset/BowserLogo152.png -------------------------------------------------------------------------------- /bowser-ios/Images.xcassets/AppIcon.appiconset/BowserLogo180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EricssonResearch/bowser/HEAD/bowser-ios/Images.xcassets/AppIcon.appiconset/BowserLogo180.png -------------------------------------------------------------------------------- /bowser-ios/Images.xcassets/AppIcon.appiconset/BowserLogo29-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EricssonResearch/bowser/HEAD/bowser-ios/Images.xcassets/AppIcon.appiconset/BowserLogo29-1.png -------------------------------------------------------------------------------- /bowser-ios/Images.xcassets/AppIcon.appiconset/BowserLogo58-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EricssonResearch/bowser/HEAD/bowser-ios/Images.xcassets/AppIcon.appiconset/BowserLogo58-1.png -------------------------------------------------------------------------------- /bowser-ios/Images.xcassets/AppIcon.appiconset/BowserLogo80-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EricssonResearch/bowser/HEAD/bowser-ios/Images.xcassets/AppIcon.appiconset/BowserLogo80-1.png -------------------------------------------------------------------------------- /bowser-ios/Images.xcassets/ReloadButton.imageset/ReloadButton.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EricssonResearch/bowser/HEAD/bowser-ios/Images.xcassets/ReloadButton.imageset/ReloadButton.pdf -------------------------------------------------------------------------------- /bowser-ios/Bowser.xcodeproj/xcuserdata/stefan.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /bowser-ios/Images.xcassets/OpenWebRTC-Logo.imageset/OWR-Logo-Vector.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EricssonResearch/bowser/HEAD/bowser-ios/Images.xcassets/OpenWebRTC-Logo.imageset/OWR-Logo-Vector.pdf -------------------------------------------------------------------------------- /bowser-ios/Podfile: -------------------------------------------------------------------------------- 1 | platform :ios, '7.1' 2 | 3 | target 'Bowser' do 4 | pod 'OpenWebRTC-SDK', :git => 'https://github.com/EricssonResearch/openwebrtc-ios-sdk.git' 5 | #pod 'OpenWebRTC-SDK', :path => '../../openwebrtc-ios-sdk/OpenWebRTC-SDK.podspec' 6 | end 7 | -------------------------------------------------------------------------------- /bowser-ios/Images.xcassets/MenuButton.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "MenuButton.pdf" 6 | } 7 | ], 8 | "info" : { 9 | "version" : 1, 10 | "author" : "xcode" 11 | } 12 | } -------------------------------------------------------------------------------- /bowser-ios/Images.xcassets/ReloadButton.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "ReloadButton.pdf" 6 | } 7 | ], 8 | "info" : { 9 | "version" : 1, 10 | "author" : "xcode" 11 | } 12 | } -------------------------------------------------------------------------------- /bowser-ios/Images.xcassets/OpenWebRTC-Logo.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "OWR-Logo-Vector.pdf" 6 | } 7 | ], 8 | "info" : { 9 | "version" : 1, 10 | "author" : "xcode" 11 | } 12 | } -------------------------------------------------------------------------------- /bowser-ios/Bowser.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /bowser-ios/Bowser/Bowser-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'Bowser' target in the 'Bowser' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /bowser-ios/Bowser/BowserHistory.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | url 7 | http://www.getbowser.com/welcome 8 | domain 9 | http://www.getbowser.com 10 | title 11 | About Bowser 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /bowser-ios/Bowser/Bookmarks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | url 7 | http://demo.openwebrtc.org 8 | title 9 | Simple WebRTC Demo 10 | 11 | 12 | url 13 | http://www.openwebrtc.org 14 | title 15 | OpenWebRTC 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /bowser-ios/Bowser.xcodeproj/xcuserdata/stefan.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Bowser.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | B7E3D0D015625681003DE0F1 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /bowser-ios/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - OpenWebRTC (0.3.91) 3 | - OpenWebRTC-SDK (0.3.2): 4 | - OpenWebRTC 5 | 6 | DEPENDENCIES: 7 | - OpenWebRTC-SDK (from `https://github.com/EricssonResearch/openwebrtc-ios-sdk.git`) 8 | 9 | EXTERNAL SOURCES: 10 | OpenWebRTC-SDK: 11 | :git: https://github.com/EricssonResearch/openwebrtc-ios-sdk.git 12 | 13 | CHECKOUT OPTIONS: 14 | OpenWebRTC-SDK: 15 | :commit: d00dd8657df6dcb0212f1ff3f76cd8e6c780949c 16 | :git: https://github.com/EricssonResearch/openwebrtc-ios-sdk.git 17 | 18 | SPEC CHECKSUMS: 19 | OpenWebRTC: 982e4e05d8ba92011526cf890b04ca2bb45f2ad6 20 | OpenWebRTC-SDK: baeb7e6b4247b9a74e61be1aa43d75feee236019 21 | 22 | COCOAPODS: 0.38.2 23 | -------------------------------------------------------------------------------- /bowser-ios/Images.xcassets/LaunchImage.launchimage/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "orientation" : "portrait", 5 | "idiom" : "ipad", 6 | "extent" : "full-screen", 7 | "minimum-system-version" : "7.0", 8 | "scale" : "1x" 9 | }, 10 | { 11 | "orientation" : "landscape", 12 | "idiom" : "ipad", 13 | "extent" : "full-screen", 14 | "minimum-system-version" : "7.0", 15 | "scale" : "1x" 16 | }, 17 | { 18 | "orientation" : "portrait", 19 | "idiom" : "ipad", 20 | "extent" : "full-screen", 21 | "minimum-system-version" : "7.0", 22 | "scale" : "2x" 23 | }, 24 | { 25 | "orientation" : "landscape", 26 | "idiom" : "ipad", 27 | "extent" : "full-screen", 28 | "minimum-system-version" : "7.0", 29 | "scale" : "2x" 30 | } 31 | ], 32 | "info" : { 33 | "version" : 1, 34 | "author" : "xcode" 35 | } 36 | } -------------------------------------------------------------------------------- /RELEASENOTES.md: -------------------------------------------------------------------------------- 1 | # Bowser Release Notes 2 | 3 | ## Version 0.5 4 | * Support for WebRTC DataChannel! 5 | * 64-bit support 6 | * Using CocoaPods (pod 'OpenWebRTC') 7 | * Possible to trigger Bowser to start using URL: bowser(s)://example.com (thanks Andy Ericksen!) 8 | * Lots of improvements in OpenWebRTC 9 | 10 | ## Version 0.4 11 | * Problems starting the app on older devices ( 31 | #import 32 | 33 | @interface BowserWebView : OpenWebRTCWebView 34 | 35 | - (void)shrink; 36 | - (void)restore; 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /bowser-ios/Bowser/BowserAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // BowserAppDelegate.h 3 | // Bowser 4 | // 5 | // Copyright (c) 2014, Ericsson AB. 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // 1. Redistributions of source code must retain the above copyright notice, this 12 | // list of conditions and the following disclaimer. 13 | // 14 | // 2. Redistributions in binary form must reproduce the above copyright notice, this 15 | // list of conditions and the following disclaimer in the documentation and/or other 16 | // materials provided with the distribution. 17 | 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 19 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 22 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23 | // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 24 | // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 25 | // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 27 | // OF SUCH DAMAGE. 28 | // 29 | 30 | #import 31 | 32 | @interface BowserAppDelegate : UIResponder 33 | 34 | @property (strong, nonatomic) UIWindow *window; 35 | @property (nonatomic, assign) NSString *launchURL; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /bowser-ios/AboutViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // AboutViewController.h 3 | // Bowser 4 | // 5 | // Copyright (c) 2014, Ericsson AB. 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // 1. Redistributions of source code must retain the above copyright notice, this 12 | // list of conditions and the following disclaimer. 13 | // 14 | // 2. Redistributions in binary form must reproduce the above copyright notice, this 15 | // list of conditions and the following disclaimer in the documentation and/or other 16 | // materials provided with the distribution. 17 | 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 19 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 22 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23 | // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 24 | // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 25 | // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 27 | // OF SUCH DAMAGE. 28 | // 29 | 30 | #import 31 | 32 | @interface AboutViewController : UIViewController 33 | 34 | @property (nonatomic, strong) IBOutlet UIWebView *webView; 35 | 36 | - (IBAction)doneButtonTapped:(id)sender; 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /bowser-ios/Bowser/AddBookmarkViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // AddBookmarkViewController.h 3 | // Bowser 4 | // 5 | // Copyright (c) 2014, Ericsson AB. 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // 1. Redistributions of source code must retain the above copyright notice, this 12 | // list of conditions and the following disclaimer. 13 | // 14 | // 2. Redistributions in binary form must reproduce the above copyright notice, this 15 | // list of conditions and the following disclaimer in the documentation and/or other 16 | // materials provided with the distribution. 17 | 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 19 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 22 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23 | // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 24 | // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 25 | // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 27 | // OF SUCH DAMAGE. 28 | // 29 | 30 | #import 31 | 32 | @interface AddBookmarkViewController : UIViewController 33 | 34 | @property (nonatomic, strong) NSString *bookmarkTitle; 35 | @property (nonatomic, strong) NSString *bookmarkURL; 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /bowser-ios/Bowser/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Bowser 4 | // 5 | // Copyright (c) 2014, Ericsson AB. 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // 1. Redistributions of source code must retain the above copyright notice, this 12 | // list of conditions and the following disclaimer. 13 | // 14 | // 2. Redistributions in binary form must reproduce the above copyright notice, this 15 | // list of conditions and the following disclaimer in the documentation and/or other 16 | // materials provided with the distribution. 17 | 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 19 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 22 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23 | // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 24 | // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 25 | // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 27 | // OF SUCH DAMAGE. 28 | // 29 | 30 | #import 31 | 32 | #import "BowserAppDelegate.h" 33 | 34 | 35 | int main(int argc, char *argv[]) 36 | { 37 | @autoreleasepool { 38 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([BowserAppDelegate class])); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /bowser-ios/Bowser/BowserFavicon.h: -------------------------------------------------------------------------------- 1 | // 2 | // BowserFavicon.h 3 | // Bowser 4 | // 5 | // Copyright (c) 2014, Ericsson AB. 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // 1. Redistributions of source code must retain the above copyright notice, this 12 | // list of conditions and the following disclaimer. 13 | // 14 | // 2. Redistributions in binary form must reproduce the above copyright notice, this 15 | // list of conditions and the following disclaimer in the documentation and/or other 16 | // materials provided with the distribution. 17 | 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 19 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 22 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23 | // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 24 | // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 25 | // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 27 | // OF SUCH DAMAGE. 28 | // 29 | 30 | #import 31 | 32 | @interface BowserFavicon : UIImageView 33 | { 34 | NSMutableData *downloadedData; 35 | } 36 | 37 | - (void)downloadFaviconFromUrl:(NSString *)url; 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /bowser-ios/Bowser.xcworkspace/xcshareddata/Bowser.xcscmblueprint: -------------------------------------------------------------------------------- 1 | { 2 | "DVTSourceControlWorkspaceBlueprintPrimaryRemoteRepositoryKey" : "247C5AB018CDD92E26F7EDC3AAE761AD77DEFEB5", 3 | "DVTSourceControlWorkspaceBlueprintWorkingCopyRepositoryLocationsKey" : { 4 | 5 | }, 6 | "DVTSourceControlWorkspaceBlueprintWorkingCopyStatesKey" : { 7 | "1EAEDA1860BC864C82183E598213282A44A6A79E" : 0, 8 | "247C5AB018CDD92E26F7EDC3AAE761AD77DEFEB5" : 0 9 | }, 10 | "DVTSourceControlWorkspaceBlueprintIdentifierKey" : "CB0CF6C6-5060-41DD-B48D-352F862C01E5", 11 | "DVTSourceControlWorkspaceBlueprintWorkingCopyPathsKey" : { 12 | "1EAEDA1860BC864C82183E598213282A44A6A79E" : "openwebrtc-ios-sdk\/", 13 | "247C5AB018CDD92E26F7EDC3AAE761AD77DEFEB5" : "my-bowser\/" 14 | }, 15 | "DVTSourceControlWorkspaceBlueprintNameKey" : "Bowser", 16 | "DVTSourceControlWorkspaceBlueprintVersion" : 204, 17 | "DVTSourceControlWorkspaceBlueprintRelativePathToProjectKey" : "bowser-ios\/Bowser.xcworkspace", 18 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoriesKey" : [ 19 | { 20 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/EricssonResearch\/openwebrtc-ios-sdk.git", 21 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", 22 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "1EAEDA1860BC864C82183E598213282A44A6A79E" 23 | }, 24 | { 25 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/stefanalund\/bowser.git", 26 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", 27 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "247C5AB018CDD92E26F7EDC3AAE761AD77DEFEB5" 28 | } 29 | ] 30 | } -------------------------------------------------------------------------------- /bowser-ios/Bowser/BookmarksViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // BookmarksTableViewController.h 3 | // Bowser 4 | // 5 | // Copyright (c) 2014, Ericsson AB. 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // 1. Redistributions of source code must retain the above copyright notice, this 12 | // list of conditions and the following disclaimer. 13 | // 14 | // 2. Redistributions in binary form must reproduce the above copyright notice, this 15 | // list of conditions and the following disclaimer in the documentation and/or other 16 | // materials provided with the distribution. 17 | 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 19 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 22 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23 | // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 24 | // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 25 | // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 27 | // OF SUCH DAMAGE. 28 | // 29 | 30 | #import 31 | 32 | @protocol BookmarkSelectionDelegate 33 | 34 | - (void)bookmarkSelectedWithURL:(NSString *)URL; 35 | 36 | @end 37 | 38 | @interface BookmarksViewController : UITableViewController 39 | 40 | @property (nonatomic, weak) id selectionDelegate; 41 | 42 | @end -------------------------------------------------------------------------------- /bowser-ios/Bowser/BowserHistoryTableViewCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // BowserHistoryTableViewCell.h 3 | // Bowser 4 | // 5 | // Copyright (c) 2014, Ericsson AB. 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // 1. Redistributions of source code must retain the above copyright notice, this 12 | // list of conditions and the following disclaimer. 13 | // 14 | // 2. Redistributions in binary form must reproduce the above copyright notice, this 15 | // list of conditions and the following disclaimer in the documentation and/or other 16 | // materials provided with the distribution. 17 | 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 19 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 22 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23 | // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 24 | // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 25 | // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 27 | // OF SUCH DAMAGE. 28 | // 29 | 30 | #import 31 | #import "BowserFavicon.h" 32 | 33 | @interface BowserHistoryTableViewCell : UITableViewCell 34 | 35 | @property (nonatomic, weak) IBOutlet BowserFavicon *favicon; 36 | @property (nonatomic, weak) IBOutlet UILabel *titleLabel; 37 | @property (nonatomic, weak) IBOutlet UILabel *urlLabel; 38 | 39 | @end 40 | -------------------------------------------------------------------------------- /bowser-ios/Bowser/BowserHistoryTableViewCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // BowserHistoryTableViewCell.m 3 | // Bowser 4 | // 5 | // Copyright (c) 2014, Ericsson AB. 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // 1. Redistributions of source code must retain the above copyright notice, this 12 | // list of conditions and the following disclaimer. 13 | // 14 | // 2. Redistributions in binary form must reproduce the above copyright notice, this 15 | // list of conditions and the following disclaimer in the documentation and/or other 16 | // materials provided with the distribution. 17 | 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 19 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 22 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23 | // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 24 | // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 25 | // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 27 | // OF SUCH DAMAGE. 28 | // 29 | 30 | #import "BowserHistoryTableViewCell.h" 31 | 32 | @implementation BowserHistoryTableViewCell 33 | 34 | - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 35 | { 36 | self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 37 | if (self) { 38 | // Initialization code 39 | } 40 | return self; 41 | } 42 | 43 | - (void)setSelected:(BOOL)selected animated:(BOOL)animated 44 | { 45 | [super setSelected:selected animated:animated]; 46 | 47 | // Configure the view for the selected state 48 | } 49 | 50 | @end 51 | -------------------------------------------------------------------------------- /bowser-ios/Bowser/BowserConfirmView.h: -------------------------------------------------------------------------------- 1 | // 2 | // BowserConfirmView.h 3 | // Bowser 4 | // 5 | // Copyright (c) 2014, Ericsson AB. 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // 1. Redistributions of source code must retain the above copyright notice, this 12 | // list of conditions and the following disclaimer. 13 | // 14 | // 2. Redistributions in binary form must reproduce the above copyright notice, this 15 | // list of conditions and the following disclaimer in the documentation and/or other 16 | // materials provided with the distribution. 17 | 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 19 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 22 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23 | // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 24 | // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 25 | // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 27 | // OF SUCH DAMAGE. 28 | // 29 | 30 | #import 31 | #import 32 | 33 | @protocol BowserConfirmViewDelegate; 34 | 35 | @interface BowserConfirmView : UIView 36 | 37 | @property (assign) IBOutlet id delegate; 38 | @property (weak, nonatomic) IBOutlet UILabel *titleLabel; 39 | @property (weak, nonatomic) IBOutlet UIButton *yesButton; 40 | @property (weak, nonatomic) IBOutlet UIButton *noButton; 41 | @property (weak, nonatomic) IBOutlet UIView *rememberView; 42 | @property (weak, nonatomic) IBOutlet UISwitch *rememberSwitch; 43 | 44 | - (id) initWithTitle: (NSString *) title inView: (UIView*) view withDelegate: (id) delegate; 45 | - (void) setUpView; 46 | - (void)presentWithTitle: (NSString*) title andRequestId: (NSString*) requestId; 47 | - (BOOL)isActive; 48 | 49 | @end 50 | 51 | @protocol BowserConfirmViewDelegate 52 | 53 | - (void)bowserConfirmViewResponded:(BOOL)response withRequestId:(NSString *)requestId willRememberResponse:(BOOL)willRemember; 54 | 55 | @end -------------------------------------------------------------------------------- /bowser-ios/Bowser/BowserFavicon.m: -------------------------------------------------------------------------------- 1 | // 2 | // BowserFavicon.m 3 | // Bowser 4 | // 5 | // Copyright (c) 2014, Ericsson AB. 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // 1. Redistributions of source code must retain the above copyright notice, this 12 | // list of conditions and the following disclaimer. 13 | // 14 | // 2. Redistributions in binary form must reproduce the above copyright notice, this 15 | // list of conditions and the following disclaimer in the documentation and/or other 16 | // materials provided with the distribution. 17 | 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 19 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 22 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23 | // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 24 | // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 25 | // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 27 | // OF SUCH DAMAGE. 28 | // 29 | 30 | #import "BowserFavicon.h" 31 | 32 | @implementation BowserFavicon 33 | 34 | - (void)downloadFaviconFromUrl:(NSString*)url 35 | { 36 | [self setImage:[UIImage imageNamed:@"Icon_57.png"]]; 37 | NSString *faviconUrl = [NSString stringWithFormat:@"%@/favicon.ico", url]; 38 | NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:faviconUrl] cachePolicy:NSURLCacheStorageAllowed timeoutInterval:5.0] delegate:self startImmediately:YES]; 39 | if (connection) { 40 | downloadedData = [NSMutableData data]; 41 | } 42 | } 43 | 44 | - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 45 | { 46 | [downloadedData setLength:0]; 47 | } 48 | 49 | - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 50 | { 51 | [downloadedData appendData:data]; 52 | } 53 | 54 | - (void)connectionDidFinishLoading:(NSURLConnection *)connection 55 | { 56 | [self setImage:[UIImage imageWithData:downloadedData]]; 57 | } 58 | 59 | @end 60 | -------------------------------------------------------------------------------- /bowser-ios/Bowser/Bowser-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleDisplayName 8 | ${PRODUCT_NAME} 9 | CFBundleExecutable 10 | ${EXECUTABLE_NAME} 11 | CFBundleIcons 12 | 13 | CFBundleIcons~ipad 14 | 15 | CFBundleIdentifier 16 | com.ericsson.research.mario.appstore.$(PRODUCT_NAME:rfc1034identifier) 17 | CFBundleInfoDictionaryVersion 18 | 6.0 19 | CFBundleName 20 | ${PRODUCT_NAME} 21 | CFBundlePackageType 22 | APPL 23 | CFBundleShortVersionString 24 | 0.6.1 25 | CFBundleSignature 26 | ???? 27 | CFBundleURLTypes 28 | 29 | 30 | CFBundleURLName 31 | com.ericsson.research.bowser 32 | CFBundleURLSchemes 33 | 34 | bowsers 35 | bowser 36 | 37 | 38 | 39 | CFBundleVersion 40 | 0.6.1 41 | LSApplicationCategoryType 42 | 43 | LSRequiresIPhoneOS 44 | 45 | NSAppTransportSecurity 46 | 47 | NSAllowsArbitraryLoads 48 | 49 | 50 | UILaunchStoryboardName 51 | Launch Screen 52 | UIMainStoryboardFile 53 | MainStoryboard_iPhone 54 | UIMainStoryboardFile~ipad 55 | MainStoryboard_iPad 56 | UIPrerenderedIcon 57 | 58 | UIRequiredDeviceCapabilities 59 | 60 | armv7 61 | 62 | UIStatusBarStyle 63 | UIStatusBarStyleLightContent 64 | UISupportedInterfaceOrientations 65 | 66 | UIInterfaceOrientationPortrait 67 | UIInterfaceOrientationLandscapeLeft 68 | UIInterfaceOrientationLandscapeRight 69 | 70 | UISupportedInterfaceOrientations~ipad 71 | 72 | UIInterfaceOrientationPortrait 73 | UIInterfaceOrientationPortraitUpsideDown 74 | UIInterfaceOrientationLandscapeLeft 75 | UIInterfaceOrientationLandscapeRight 76 | 77 | UIViewControllerBasedStatusBarAppearance 78 | 79 | User 80 | ${USER} 81 | 82 | 83 | -------------------------------------------------------------------------------- /bowser-ios/AboutViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // AboutViewController.m 3 | // Bowser 4 | // 5 | // Copyright (c) 2014, Ericsson AB. 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // 1. Redistributions of source code must retain the above copyright notice, this 12 | // list of conditions and the following disclaimer. 13 | // 14 | // 2. Redistributions in binary form must reproduce the above copyright notice, this 15 | // list of conditions and the following disclaimer in the documentation and/or other 16 | // materials provided with the distribution. 17 | 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 19 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 22 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23 | // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 24 | // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 25 | // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 27 | // OF SUCH DAMAGE. 28 | // 29 | 30 | #import "AboutViewController.h" 31 | 32 | 33 | @implementation AboutViewController 34 | 35 | - (void)viewDidLoad 36 | { 37 | [self.webView setDelegate:self]; 38 | NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"about" ofType:@"html"] isDirectory:NO]; 39 | [self.webView loadRequest:[NSURLRequest requestWithURL:url]]; 40 | } 41 | 42 | - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 43 | { 44 | return YES; 45 | } 46 | 47 | - (void)webViewDidFinishLoad:(UIWebView *)webView 48 | { 49 | NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]; 50 | [self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"setVersion('%@');", version]]; 51 | } 52 | 53 | - (IBAction)doneButtonTapped:(id)sender 54 | { 55 | [self dismissViewControllerAnimated:YES completion:nil]; 56 | } 57 | 58 | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 59 | { 60 | return interfaceOrientation == UIInterfaceOrientationPortrait || 61 | interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown; 62 | } 63 | 64 | 65 | @end 66 | -------------------------------------------------------------------------------- /bowser-ios/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "29x29", 5 | "idiom" : "iphone", 6 | "filename" : "BowserLogo29-1.png", 7 | "scale" : "1x" 8 | }, 9 | { 10 | "size" : "29x29", 11 | "idiom" : "iphone", 12 | "filename" : "BowserLogo58-1.png", 13 | "scale" : "2x" 14 | }, 15 | { 16 | "idiom" : "iphone", 17 | "size" : "29x29", 18 | "scale" : "3x" 19 | }, 20 | { 21 | "size" : "40x40", 22 | "idiom" : "iphone", 23 | "filename" : "BowserLogo80.png", 24 | "scale" : "2x" 25 | }, 26 | { 27 | "idiom" : "iphone", 28 | "size" : "40x40", 29 | "scale" : "3x" 30 | }, 31 | { 32 | "idiom" : "iphone", 33 | "size" : "57x57", 34 | "scale" : "1x" 35 | }, 36 | { 37 | "idiom" : "iphone", 38 | "size" : "57x57", 39 | "scale" : "2x" 40 | }, 41 | { 42 | "size" : "60x60", 43 | "idiom" : "iphone", 44 | "filename" : "BowserLogo120.png", 45 | "scale" : "2x" 46 | }, 47 | { 48 | "size" : "60x60", 49 | "idiom" : "iphone", 50 | "filename" : "BowserLogo180.png", 51 | "scale" : "3x" 52 | }, 53 | { 54 | "size" : "29x29", 55 | "idiom" : "ipad", 56 | "filename" : "BowserLogo29.png", 57 | "scale" : "1x" 58 | }, 59 | { 60 | "size" : "29x29", 61 | "idiom" : "ipad", 62 | "filename" : "BowserLogo58.png", 63 | "scale" : "2x" 64 | }, 65 | { 66 | "size" : "40x40", 67 | "idiom" : "ipad", 68 | "filename" : "BowserLogo40.png", 69 | "scale" : "1x" 70 | }, 71 | { 72 | "size" : "40x40", 73 | "idiom" : "ipad", 74 | "filename" : "BowserLogo80-1.png", 75 | "scale" : "2x" 76 | }, 77 | { 78 | "idiom" : "ipad", 79 | "size" : "50x50", 80 | "scale" : "1x" 81 | }, 82 | { 83 | "idiom" : "ipad", 84 | "size" : "50x50", 85 | "scale" : "2x" 86 | }, 87 | { 88 | "idiom" : "ipad", 89 | "size" : "72x72", 90 | "scale" : "1x" 91 | }, 92 | { 93 | "idiom" : "ipad", 94 | "size" : "72x72", 95 | "scale" : "2x" 96 | }, 97 | { 98 | "size" : "76x76", 99 | "idiom" : "ipad", 100 | "filename" : "BowserLogo76.png", 101 | "scale" : "1x" 102 | }, 103 | { 104 | "size" : "76x76", 105 | "idiom" : "ipad", 106 | "filename" : "BowserLogo152.png", 107 | "scale" : "2x" 108 | }, 109 | { 110 | "idiom" : "ipad", 111 | "size" : "83.5x83.5", 112 | "scale" : "2x" 113 | } 114 | ], 115 | "info" : { 116 | "version" : 1, 117 | "author" : "xcode" 118 | } 119 | } -------------------------------------------------------------------------------- /bowser-ios/Bowser/BowserViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // BowserViewController.h 3 | // Bowser 4 | // 5 | // Copyright (c) 2014, Ericsson AB. 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // 1. Redistributions of source code must retain the above copyright notice, this 12 | // list of conditions and the following disclaimer. 13 | // 14 | // 2. Redistributions in binary form must reproduce the above copyright notice, this 15 | // list of conditions and the following disclaimer in the documentation and/or other 16 | // materials provided with the distribution. 17 | 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 19 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 22 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23 | // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 24 | // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 25 | // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 27 | // OF SUCH DAMAGE. 28 | // 29 | 30 | #import 31 | #import 32 | 33 | #import "AboutViewController.h" 34 | #import "BookmarksViewController.h" 35 | #import "AddBookmarkViewController.h" 36 | 37 | typedef enum { 38 | BowserMenuOptionClearHistory, 39 | BowserMenuOptionShowConsole, 40 | BowserMenuOptionAboutPage, 41 | BowserMenuOptionShowBookmarks, 42 | BowserMenuOptionAddBookmark, 43 | } BowserMenuOption; 44 | 45 | @interface BowserViewController : OpenWebRTCViewController 46 | { 47 | bool canChange; 48 | bool headerIsAbove; 49 | bool consoleIsVisible; 50 | bool bookmarksAreVisible; 51 | NSMutableArray *bowserHistory; 52 | NSArray *filteredHistory; 53 | __strong NSString *historyFilePath, *bookmarksFilePath; 54 | } 55 | 56 | @property (weak, nonatomic) IBOutlet UITableView *historyTableView; 57 | 58 | @property (weak, nonatomic) IBOutlet UIScrollView *headerView; 59 | @property (weak, nonatomic) IBOutlet UIButton *bookmarkButton; 60 | @property (weak, nonatomic) IBOutlet UIProgressView *progressBar; 61 | 62 | @property (weak, nonatomic) IBOutlet UITextField *urlField; 63 | @property (weak, nonatomic) IBOutlet UIWebView *consoleLogView; 64 | @property (nonatomic, strong) NSString *lastURL; 65 | @property (weak, nonatomic) IBOutlet UIView *bookMarkView; 66 | 67 | - (void)saveFiles; 68 | 69 | @end 70 | -------------------------------------------------------------------------------- /bowser-ios/Bowser/BowserWebView.m: -------------------------------------------------------------------------------- 1 | // 2 | // BowserWebView.m 3 | // Bowser 4 | // 5 | // Copyright (c) 2014, Ericsson AB. 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // 1. Redistributions of source code must retain the above copyright notice, this 12 | // list of conditions and the following disclaimer. 13 | // 14 | // 2. Redistributions in binary form must reproduce the above copyright notice, this 15 | // list of conditions and the following disclaimer in the documentation and/or other 16 | // materials provided with the distribution. 17 | 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 19 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 22 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23 | // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 24 | // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 25 | // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 27 | // OF SUCH DAMAGE. 28 | // 29 | 30 | #import "BowserWebView.h" 31 | 32 | @implementation BowserWebView 33 | 34 | - (void)shrink 35 | { 36 | [UIView animateWithDuration:0.6 animations:^{ 37 | self.transform = CGAffineTransformMakeScale(0.82, 0.82); 38 | }]; 39 | } 40 | 41 | - (void)restore 42 | { 43 | [UIView animateWithDuration:0.6 animations:^{ 44 | self.transform = CGAffineTransformMakeScale(1, 1); 45 | }]; 46 | } 47 | 48 | - (void)webView:(UIWebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(id)frame 49 | { 50 | if ([message rangeOfString:@"owr-message:video-rect"].location == 0) { 51 | CGFloat sf = 1.0/([UIScreen mainScreen].scale); 52 | NSArray *messageComps = [message componentsSeparatedByString:@","]; 53 | NSString *tag = [messageComps objectAtIndex:2]; 54 | CGFloat x = [[messageComps objectAtIndex:3] floatValue]; 55 | CGFloat y = [[messageComps objectAtIndex:4] floatValue]; 56 | CGFloat width = [[messageComps objectAtIndex:5] floatValue] - x; 57 | CGFloat height = ([[messageComps objectAtIndex:6] floatValue] - y); 58 | int rotation = [[messageComps objectAtIndex:7] intValue]; 59 | CGRect newRect = CGRectMake(x * sf, y * sf, width * sf, height * sf); 60 | [self.owrDelegate newVideoRect:newRect rotation:rotation tag:tag]; 61 | } else { 62 | //[super webView:sender runJavaScriptAlertPanelWithMessage:message initiatedByFrame:frame]; 63 | NSLog(@"WARNING! owr-message:video-rect NOT handled"); 64 | } 65 | } 66 | 67 | @end 68 | -------------------------------------------------------------------------------- /bowser-ios/Bowser/AddBookmarkViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // AddBookmarkViewController.m 3 | // Bowser 4 | // 5 | // Copyright (c) 2014, Ericsson AB. 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // 1. Redistributions of source code must retain the above copyright notice, this 12 | // list of conditions and the following disclaimer. 13 | // 14 | // 2. Redistributions in binary form must reproduce the above copyright notice, this 15 | // list of conditions and the following disclaimer in the documentation and/or other 16 | // materials provided with the distribution. 17 | 18 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 19 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 22 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23 | // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 24 | // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 25 | // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 27 | // OF SUCH DAMAGE. 28 | // 29 | 30 | #import "AddBookmarkViewController.h" 31 | 32 | @interface AddBookmarkViewController () 33 | { 34 | IBOutlet UITextField *titleTextField; 35 | IBOutlet UITextField *urlTextField; 36 | } 37 | 38 | @end 39 | 40 | @implementation AddBookmarkViewController 41 | 42 | - (void)viewDidLoad 43 | { 44 | [super viewDidLoad]; 45 | 46 | titleTextField.delegate = self; 47 | urlTextField.delegate = self; 48 | 49 | titleTextField.text = self.bookmarkTitle; 50 | urlTextField.text = self.bookmarkURL; 51 | } 52 | 53 | - (IBAction)cancelButtonTapped:(id)sender 54 | { 55 | [self dismissViewControllerAnimated:YES completion:nil]; 56 | } 57 | 58 | - (IBAction)saveButtonTapped:(id)sender 59 | { 60 | if (![titleTextField.text isEqualToString:@""] && ![urlTextField.text isEqualToString:@""]) { 61 | NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 62 | NSString *bookmarksFilePath = [documentsDirectory stringByAppendingPathComponent:@"Bookmarks.plist"]; 63 | NSMutableArray *currentBookmarks = [NSMutableArray arrayWithContentsOfFile:bookmarksFilePath]; 64 | 65 | NSDictionary *bookmark = @{@"title": titleTextField.text, @"url": urlTextField.text}; 66 | [currentBookmarks addObject:bookmark]; 67 | 68 | NSLog(@"Writing new bookmarks to file at %@", bookmarksFilePath); 69 | [currentBookmarks writeToFile:bookmarksFilePath atomically:YES]; 70 | 71 | [self dismissViewControllerAnimated:YES completion:nil]; 72 | } 73 | } 74 | 75 | @end 76 | -------------------------------------------------------------------------------- /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 `