Index: chrome/common/extensions/extension.cc |
diff --git a/chrome/common/extensions/extension.cc b/chrome/common/extensions/extension.cc |
index e98c5f08cce60461e79b3f28b20ab6d7327136d6..7ce536c1872b7cbe489653e1f3a396c9042779be 100644 |
--- a/chrome/common/extensions/extension.cc |
+++ b/chrome/common/extensions/extension.cc |
@@ -274,6 +274,29 @@ ExtensionPermissionMessages Extension::GetPermissionMessages() const { |
return permission_set_->GetPermissionMessages(); |
} |
+void Extension::OverrideLaunchUrl(const GURL& override_url) { |
+ GURL new_url(override_url); |
+ if (!new_url.is_valid()) { |
+ LOG(WARNING) << "Invalid override url given for " << name(); |
+ } else { |
+ if (new_url.has_port()) { |
+ LOG(WARNING) << "Override URL passed for " << name() |
+ << " should not contain a port. Removing it."; |
+ |
+ GURL::Replacements remove_port; |
+ remove_port.ClearPort(); |
+ new_url = new_url.ReplaceComponents(remove_port); |
+ } |
+ |
+ launch_web_url_ = new_url.spec(); |
+ |
+ URLPattern pattern(kValidWebExtentSchemes); |
+ pattern.Parse(new_url.spec(), URLPattern::PARSE_STRICT); |
+ pattern.SetPath(pattern.path() + '*'); |
+ extent_.AddPattern(pattern); |
+ } |
+} |
+ |
std::vector<string16> Extension::GetPermissionMessageStrings() const { |
return permission_set_->GetWarningMessages(); |
} |
@@ -1019,29 +1042,26 @@ bool Extension::LoadLaunchURL(const DictionaryValue* manifest, |
// Empty string means option was not used. |
if (!gallery_url_str.empty()) { |
GURL gallery_url(gallery_url_str); |
- if (!gallery_url.is_valid()) { |
- LOG(WARNING) << "Invalid url given in switch " |
- << switches::kAppsGalleryURL; |
- } else { |
- if (gallery_url.has_port()) { |
- LOG(WARNING) << "URLs passed to switch " << switches::kAppsGalleryURL |
- << " should not contain a port. Removing it."; |
- |
- GURL::Replacements remove_port; |
- remove_port.ClearPort(); |
- gallery_url = gallery_url.ReplaceComponents(remove_port); |
- } |
- |
- launch_web_url_ = gallery_url.spec(); |
- |
- URLPattern pattern(kValidWebExtentSchemes); |
- pattern.Parse(gallery_url.spec(), URLPattern::PARSE_STRICT); |
- pattern.SetPath(pattern.path() + '*'); |
- extent_.AddPattern(pattern); |
- } |
+ OverrideLaunchUrl(gallery_url); |
+ } |
+ } else if (id() == extension_misc::kCloudPrintAppId) { |
+ // In order for the --cloud-print-service switch to work, we must update |
+ // the launch URL and web extent. |
+ // TODO(sanjeevr): Ideally we want to use CloudPrintURL here but that is |
+ // currently under chrome/browser. |
+ const CommandLine& command_line = *CommandLine::ForCurrentProcess(); |
+ GURL cloud_print_service_url = GURL(command_line.GetSwitchValueASCII( |
+ switches::kCloudPrintServiceURL)); |
+ if (!cloud_print_service_url.is_empty()) { |
+ std::string path( |
+ cloud_print_service_url.path() + "/enable_chrome_connector"); |
+ GURL::Replacements replacements; |
+ replacements.SetPathStr(path); |
+ GURL cloud_print_enable_connector_url = |
+ cloud_print_service_url.ReplaceComponents(replacements); |
+ OverrideLaunchUrl(cloud_print_enable_connector_url); |
} |
} |
- |
return true; |
} |