Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open in Firefox, fixes for the demo app. #143

Open
wants to merge 8 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,6 @@ build/

# Cocoapods
Pods

# Editor.
*~
4 changes: 2 additions & 2 deletions Demo/Classes/ViewController.m
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@ @implementation ViewController


- (void)pushWebViewController {
NSURL *URL = [NSURL URLWithString:@"http://samvermette.com"];
NSURL *URL = [NSURL URLWithString:@"https://archive.org"];
SVWebViewController *webViewController = [[SVWebViewController alloc] initWithURL:URL];
[self.navigationController pushViewController:webViewController animated:YES];
}


- (void)presentWebViewController {
NSURL *URL = [NSURL URLWithString:@"http://samvermette.com"];
NSURL *URL = [NSURL URLWithString:@"https://archive.org"];
SVModalWebViewController *webViewController = [[SVModalWebViewController alloc] initWithURL:URL];
webViewController.modalPresentationStyle = UIModalPresentationPageSheet;
[self presentViewController:webViewController animated:YES completion:NULL];
Expand Down
6 changes: 6 additions & 0 deletions Demo/SVWeb-Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,11 @@
<string>MainWindow</string>
<key>NSMainNibFile~ipad</key>
<string>MainWindow-iPad</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>firefox</string>
<string>googlechrome</string>
<string>googlechromes</string>
</array>
</dict>
</plist>
26 changes: 26 additions & 0 deletions Demo/SVWeb.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@
28AD73600D9D9599002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD735F0D9D9599002E5188 /* MainWindow.xib */; };
28C286E10D94DF7D0034E888 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28C286E00D94DF7D0034E888 /* ViewController.m */; };
28F335F11007B36200424DE2 /* ViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28F335F01007B36200424DE2 /* ViewController.xib */; };
28FBEDBB1BFA7DC300BD2A8A /* SVWebViewControllerActivityFirefox-iPad.png in Resources */ = {isa = PBXBuildFile; fileRef = 28FBEDB61BFA7DC300BD2A8A /* SVWebViewControllerActivityFirefox-iPad.png */; };
28FBEDBC1BFA7DC300BD2A8A /* SVWebViewControllerActivityFirefox-iPad@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 28FBEDB71BFA7DC300BD2A8A /* SVWebViewControllerActivityFirefox-iPad@2x.png */; };
28FBEDBD1BFA7DC300BD2A8A /* SVWebViewControllerActivityFirefox.m in Sources */ = {isa = PBXBuildFile; fileRef = 28FBEDB91BFA7DC300BD2A8A /* SVWebViewControllerActivityFirefox.m */; };
28FBEDBE1BFA7DC300BD2A8A /* SVWebViewControllerActivityFirefox@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 28FBEDBA1BFA7DC300BD2A8A /* SVWebViewControllerActivityFirefox@2x.png */; };
D53D8F1316A8688600711E30 /* SVWebViewController.strings in Resources */ = {isa = PBXBuildFile; fileRef = D53D8F1516A8688600711E30 /* SVWebViewController.strings */; };
D5FA63C516A8707A0087531C /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D5FA63C416A8707A0087531C /* Default-568h@2x.png */; };
/* End PBXBuildFile section */
Expand Down Expand Up @@ -65,6 +69,11 @@
28C286DF0D94DF7D0034E888 /* ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
28C286E00D94DF7D0034E888 /* ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
28F335F01007B36200424DE2 /* ViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ViewController.xib; path = ../ViewController.xib; sourceTree = "<group>"; };
28FBEDB61BFA7DC300BD2A8A /* SVWebViewControllerActivityFirefox-iPad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "SVWebViewControllerActivityFirefox-iPad.png"; sourceTree = "<group>"; };
28FBEDB71BFA7DC300BD2A8A /* SVWebViewControllerActivityFirefox-iPad@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "SVWebViewControllerActivityFirefox-iPad@2x.png"; sourceTree = "<group>"; };
28FBEDB81BFA7DC300BD2A8A /* SVWebViewControllerActivityFirefox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVWebViewControllerActivityFirefox.h; sourceTree = "<group>"; };
28FBEDB91BFA7DC300BD2A8A /* SVWebViewControllerActivityFirefox.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SVWebViewControllerActivityFirefox.m; sourceTree = "<group>"; };
28FBEDBA1BFA7DC300BD2A8A /* SVWebViewControllerActivityFirefox@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "SVWebViewControllerActivityFirefox@2x.png"; sourceTree = "<group>"; };
29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
431F485D17145A510045AA32 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/SVWebViewController.strings; sourceTree = "<group>"; };
627D469418D9EA4300E514BB /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/SVWebViewController.strings; sourceTree = "<group>"; };
Expand Down Expand Up @@ -162,12 +171,25 @@
children = (
22DBB6681831E05D0008887C /* SVWebViewControllerActivity.h */,
22DBB6691831E05D0008887C /* SVWebViewControllerActivity.m */,
28FBEDB51BFA7DC300BD2A8A /* Firefox */,
22AAF0B01831F52F00AB15C4 /* Safari */,
22AAF0AA1831F52F00AB15C4 /* Chrome */,
);
path = UIActivities;
sourceTree = "<group>";
};
28FBEDB51BFA7DC300BD2A8A /* Firefox */ = {
isa = PBXGroup;
children = (
28FBEDB61BFA7DC300BD2A8A /* SVWebViewControllerActivityFirefox-iPad.png */,
28FBEDB71BFA7DC300BD2A8A /* SVWebViewControllerActivityFirefox-iPad@2x.png */,
28FBEDB81BFA7DC300BD2A8A /* SVWebViewControllerActivityFirefox.h */,
28FBEDB91BFA7DC300BD2A8A /* SVWebViewControllerActivityFirefox.m */,
28FBEDBA1BFA7DC300BD2A8A /* SVWebViewControllerActivityFirefox@2x.png */,
);
path = Firefox;
sourceTree = "<group>";
};
29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -287,6 +309,7 @@
buildActionMask = 2147483647;
files = (
28AD73600D9D9599002E5188 /* MainWindow.xib in Resources */,
28FBEDBC1BFA7DC300BD2A8A /* SVWebViewControllerActivityFirefox-iPad@2x.png in Resources */,
22AAF0BA1831F52F00AB15C4 /* SVWebViewControllerActivitySafari-iPad.png in Resources */,
22AAF0BB1831F52F00AB15C4 /* SVWebViewControllerActivitySafari-iPad@2x.png in Resources */,
22AAF0B71831F52F00AB15C4 /* SVWebViewControllerActivityChrome-iPad@2x.png in Resources */,
Expand All @@ -297,8 +320,10 @@
22AAF0BD1831F52F00AB15C4 /* SVWebViewControllerActivitySafari@2x.png in Resources */,
22AAF0BF1831F5B300AB15C4 /* README.md in Resources */,
D53D8F1316A8688600711E30 /* SVWebViewController.strings in Resources */,
28FBEDBE1BFA7DC300BD2A8A /* SVWebViewControllerActivityFirefox@2x.png in Resources */,
22AAF0B91831F52F00AB15C4 /* SVWebViewControllerActivityChrome@2x.png in Resources */,
D5FA63C516A8707A0087531C /* Default-568h@2x.png in Resources */,
28FBEDBB1BFA7DC300BD2A8A /* SVWebViewControllerActivityFirefox-iPad.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand All @@ -316,6 +341,7 @@
221C80AF13BBDA2F005F0AB8 /* SVWebViewController.m in Sources */,
22F087701458794B003ECD31 /* SVModalWebViewController.m in Sources */,
22AAF0B81831F52F00AB15C4 /* SVWebViewControllerActivityChrome.m in Sources */,
28FBEDBD1BFA7DC300BD2A8A /* SVWebViewControllerActivityFirefox.m in Sources */,
22AAF0BC1831F52F00AB15C4 /* SVWebViewControllerActivitySafari.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ SVWebViewController is a simple inline browser for your iOS 7 app.
* iPhone and iPad distinct UIs
* full landscape orientation support
* back, forward, stop/refresh and share buttons
* Open in Safari and Chrome UIActivities
* Open in Safari, Firefox, and Chrome UIActivities
* navbar title set to the currently visible web page
* talks with `setNetworkActivityIndicatorVisible`

Expand Down Expand Up @@ -44,7 +44,7 @@ SVModalWebViewController *webViewController = [[SVModalWebViewController alloc]

### SVWebViewControllerActivity

Starting in iOS 6 Apple uses `UIActivity` to let you show additional sharing methods in share sheets. `SVWebViewController` comes with "Open in Safari" and "Open in Chrome" activities. You can easily add your own activity by subclassing `SVWebViewControllerActivity` which takes care of a few things automatically for you. Have a look at the Safari and Chrome activities for implementation examples. Feel free to send it as a pull request once you're done!
Starting in iOS 6 Apple uses `UIActivity` to let you show additional sharing methods in share sheets. `SVWebViewController` comes with "Open in Safari", "Open in Firefox", and "Open in Chrome" activities. You can easily add your own activity by subclassing `SVWebViewControllerActivity` which takes care of a few things automatically for you. Have a look at the Safari, Firefox, and Chrome activities for implementation examples. Feel free to send it as a pull request once you're done!


## Credits
Expand Down
1 change: 1 addition & 0 deletions SVWebViewController/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*~
7 changes: 6 additions & 1 deletion SVWebViewController/SVWebViewController.m
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

#import "SVWebViewControllerActivityChrome.h"
#import "SVWebViewControllerActivitySafari.h"
#import "SVWebViewControllerActivityFirefox.h"
#import "SVWebViewController.h"

@interface SVWebViewController () <UIWebViewDelegate>
Expand Down Expand Up @@ -281,7 +282,11 @@ - (void)stopTapped:(UIBarButtonItem *)sender {
- (void)actionButtonTapped:(id)sender {
NSURL *url = self.webView.request.URL ? self.webView.request.URL : self.request.URL;
if (url != nil) {
NSArray *activities = @[[SVWebViewControllerActivitySafari new], [SVWebViewControllerActivityChrome new]];
NSArray *activities = @[
[SVWebViewControllerActivitySafari new],
[SVWebViewControllerActivityChrome new],
[SVWebViewControllerActivityFirefox new]
];

if ([[url absoluteString] hasPrefix:@"file:///"]) {
UIDocumentInteractionController *dc = [UIDocumentInteractionController interactionControllerWithURL:url];
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// Copyright 2013 Sam Vermette. All rights reserved.
//
// https://github.com/samvermette/SVWebViewController

#import "SVWebViewControllerActivity.h"

@interface SVWebViewControllerActivityFirefox : SVWebViewControllerActivity

@end
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
// Created by Sam Vermette on 11 Nov, 2013.
// Copyright 2013 Sam Vermette. All rights reserved.
//
// https://github.com/samvermette/SVWebViewController

#import "SVWebViewControllerActivityFirefox.h"

@implementation SVWebViewControllerActivityFirefox

- (NSString *)activityTitle {
return NSLocalizedStringFromTable(@"Open in Firefox", @"SVWebViewController", nil);
}

- (BOOL)canPerformWithActivityItems:(NSArray *)activityItems {
for (id activityItem in activityItems) {
if ([activityItem isKindOfClass:[NSURL class]] && [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"firefox://"]]) {
return YES;
}
}
return NO;
}

static NSString *encodeByAddingPercentEscapes(NSString *string) {
NSString *encodedString = (NSString *)CFBridgingRelease
(CFURLCreateStringByAddingPercentEscapes
(kCFAllocatorDefault,
(CFStringRef)string,
NULL,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8));
return encodedString;
}

- (void)performActivity {
NSURL *inputURL = self.URLToOpen;
NSString *scheme = inputURL.scheme;

if (![scheme isEqualToString:@"http"] && ![scheme isEqualToString:@"https"]) {
return;
}

NSString *urlString = [inputURL absoluteString];
NSString *firefoxURLString = [NSString stringWithFormat: @"firefox://open-url?url=%@", encodeByAddingPercentEscapes(urlString)];
NSURL *firefoxURL = [NSURL URLWithString: firefoxURLString];

// Open the URL with Firefox.
[[UIApplication sharedApplication] openURL:firefoxURL];
}

@end
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 2 additions & 1 deletion SVWebViewController/da.lproj/SVWebViewController.strings
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// Copyright (c) 2013 Anders Fogh Eriksen
"Open in Safari" = "Åbn i Safari";
"Open in Chrome" = "Åbn i Chrome";
"Open in Firefox" = "Åbn i Firefox";
"Copy Link" = "Kopier Link";
"Mail Link to this Page" = "Mail Link til denne side";
"Mail Link to this Page" = "Mail Link til denne side";
3 changes: 2 additions & 1 deletion SVWebViewController/de.lproj/SVWebViewController.strings
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
"Open in Safari" = "In Safari öffnen";
"Open in Chrome" = "In Chrome öffnen";
"Open in Chrome" = "In Chrome öffnen";
"Open in Firefox" = "In Firefox öffnen";
3 changes: 2 additions & 1 deletion SVWebViewController/en.lproj/SVWebViewController.strings
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
// Copyright (c) 2013 Alex Ruperez
"Open in Safari" = "Open in Safari";
"Open in Chrome" = "Open in Chrome";
"Open in Chrome" = "Open in Chrome";
"Open in Firefox" = "Open in Firefox";
3 changes: 2 additions & 1 deletion SVWebViewController/es-ES.lproj/SVWebViewController.strings
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
// Copyright (c) 2013 Alex Ruperez
"Open in Safari" = "Abrir en Safari";
"Open in Chrome" = "Abrir en Chrome";
"Open in Chrome" = "Abrir en Chrome";
"Open in Firefox" = "Abrir en Firefox";
3 changes: 2 additions & 1 deletion SVWebViewController/es.lproj/SVWebViewController.strings
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
// Copyright (c) 2013 Alex Ruperez
"Open in Safari" = "Abrir en Safari";
"Open in Chrome" = "Abrir en Chrome";
"Open in Chrome" = "Abrir en Chrome";
"Open in Firefox" = "Abrir en Firefox";
3 changes: 2 additions & 1 deletion SVWebViewController/fr.lproj/SVWebViewController.strings
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
// Copyright (c) 2013 Benjamin Michotte
"Open in Safari" = "Ouvrir dans Safari";
"Open in Chrome" = "Ouvrir dans Chrome";
"Open in Chrome" = "Ouvrir dans Chrome";
"Open in Firefox" = "Ouvrir dans Firefox";
1 change: 1 addition & 0 deletions SVWebViewController/ja.lproj/SVWebViewController.strings
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
"Open in Safari" = "Safariで開く";
"Open in Chrome" = "Chromeで開く";
"Open in Firefox" = "Firefoxで開く";
3 changes: 2 additions & 1 deletion SVWebViewController/pt.lproj/SVWebViewController.strings
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
"Open in Safari" = "Abrir no Safari";
"Open in Chrome" = "Abrir no Chrome";
"Open in Chrome" = "Abrir no Chrome";
"Open in Firefox" = "Abrir no Firefox";
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// Copyright (c) 2013 James Stout
"Open in Safari" = "在Safari中打开";
"Open in Chrome" = "在Chrome中打开";
"Open in Firefox" = "在Firefox中打开";
"Copy Link" = "复制网页链接";
"Mail Link to this Page" = "以电邮传送此页链接";
"Cancel"="取消";
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
// Copyright (c) 2013 James Stout
"Open in Safari" = "打開Safari";
"Open in Chrome" = "打開Chrome";
"Open in Chrome" = "打開Chrome";
"Open in Firefox" = "打開Firefox";