Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #import "ios/chrome/browser/chrome_url_util.h" | |
| 6 | |
| 7 #import <UIKit/UIKit.h> | |
| 8 | |
| 9 #include "base/logging.h" | |
| 10 #include "base/mac/scoped_nsobject.h" | |
| 11 #include "base/strings/string_util.h" | |
| 12 #include "base/strings/sys_string_conversions.h" | |
| 13 #include "ios/chrome/browser/chrome_url_constants.h" | |
| 14 #import "ios/net/url_scheme_util.h" | |
| 15 #include "ios/public/provider/chrome/browser/chrome_browser_provider.h" | |
| 16 #include "url/gurl.h" | |
| 17 | |
| 18 bool UrlIsExternalFileReference(const GURL& url) { | |
| 19 return url.SchemeIs(ios::GetChromeBrowserProvider()->GetChromeUIScheme()) && | |
| 20 LowerCaseEqualsASCII(url.host(), kChromeUIExternalFileHost); | |
| 21 } | |
| 22 | |
| 23 NSURL* UrlToLaunchChrome() { | |
| 24 // Determines the target URL scheme that will launch Chrome. | |
| 25 NSString* scheme = [[ChromeAppConstants sharedInstance] getBundleURLScheme]; | |
| 26 return [NSURL URLWithString:[NSString stringWithFormat:@"%@://", scheme]]; | |
| 27 } | |
| 28 | |
| 29 NSURL* UrlOfChromeAppIcon(int width, int height) { | |
| 30 NSString* url = | |
| 31 [[ChromeAppConstants sharedInstance] getChromeAppIconURLOfWidth:width | |
| 32 height:height]; | |
| 33 return [NSURL URLWithString:url]; | |
| 34 } | |
| 35 | |
| 36 bool UrlHasChromeScheme(const GURL& url) { | |
| 37 return url.SchemeIs(ios::GetChromeBrowserProvider()->GetChromeUIScheme()); | |
| 38 } | |
| 39 | |
| 40 bool UrlHasChromeScheme(NSURL* url) { | |
| 41 return net::UrlSchemeIs( | |
| 42 url, base::SysUTF8ToNSString( | |
| 43 ios::GetChromeBrowserProvider()->GetChromeUIScheme())); | |
| 44 } | |
| 45 | |
| 46 @implementation ChromeAppConstants { | |
| 47 base::scoped_nsobject<NSString> callbackScheme_; | |
| 48 base::scoped_nsprotocol<AppIconURLProvider> appIconURLProvider_; | |
|
rohitrao (ping after 24h)
2015/05/18 13:34:56
Want to switch to leading underscores for these va
sdefresne
2015/05/18 14:19:54
Done and changed the block to use base::mac::Scope
| |
| 49 } | |
| 50 | |
| 51 + (ChromeAppConstants*)sharedInstance { | |
| 52 static ChromeAppConstants* g_instance = [[ChromeAppConstants alloc] init]; | |
| 53 return g_instance; | |
| 54 } | |
| 55 | |
| 56 - (NSString*)getBundleURLScheme { | |
| 57 if (!callbackScheme_) { | |
| 58 NSSet* allowableSchemes = | |
| 59 [NSSet setWithObjects:@"googlechrome", @"chromium", nil]; | |
| 60 NSDictionary* info = [[NSBundle mainBundle] infoDictionary]; | |
| 61 NSArray* urlTypes = [info objectForKey:@"CFBundleURLTypes"]; | |
| 62 for (NSDictionary* urlType in urlTypes) { | |
| 63 DCHECK([urlType isKindOfClass:[NSDictionary class]]); | |
| 64 NSArray* schemes = [urlType objectForKey:@"CFBundleURLSchemes"]; | |
| 65 if (!schemes) | |
| 66 continue; | |
| 67 DCHECK([schemes isKindOfClass:[NSArray class]]); | |
| 68 for (NSString* scheme in schemes) { | |
| 69 if ([allowableSchemes containsObject:scheme]) | |
| 70 callbackScheme_.reset([scheme copy]); | |
| 71 } | |
| 72 } | |
| 73 } | |
| 74 DCHECK([callbackScheme_ length]); | |
| 75 return callbackScheme_; | |
| 76 } | |
| 77 | |
| 78 - (NSString*)getChromeAppIconURLOfWidth:(int)width height:(int)height { | |
| 79 if (!appIconURLProvider_) { | |
| 80 appIconURLProvider_.reset([^(int width, int height) { | |
| 81 return [NSString | |
| 82 stringWithFormat:@"https://%@/Icon-%dx%d-%dx.png", | |
| 83 @"ssl.gstatic.com/ios-apps/com.google.chrome.ios", | |
|
rohitrao (ping after 24h)
2015/05/18 13:34:56
We should consider debranding this.
sdefresne
2015/05/18 14:19:54
Added a TODO.
| |
| 84 width, height, | |
| 85 [[UIScreen mainScreen] scale] == 1.0 ? 1 : 2]; | |
| 86 } copy]); | |
| 87 } | |
| 88 return appIconURLProvider_.get()(width, height); | |
| 89 } | |
| 90 | |
| 91 - (void)setCallbackSchemeForTesting:(NSString*)scheme { | |
| 92 callbackScheme_.reset([scheme copy]); | |
| 93 } | |
| 94 | |
| 95 - (void)setAppIconURLProviderForTesting:(AppIconURLProvider)block { | |
| 96 appIconURLProvider_.reset([block copy]); | |
| 97 } | |
| 98 | |
| 99 @end | |
| OLD | NEW |