| Index: chrome/common/extensions/extension.cc
|
| diff --git a/chrome/common/extensions/extension.cc b/chrome/common/extensions/extension.cc
|
| index 1690e4431cc9c4d5770e6f98e4381bf3143afaf4..f4c683d62aaa76003246f376c9973622035ab582 100644
|
| --- a/chrome/common/extensions/extension.cc
|
| +++ b/chrome/common/extensions/extension.cc
|
| @@ -283,8 +283,8 @@ void Extension::OverrideLaunchUrl(const GURL& override_url) {
|
|
|
| launch_web_url_ = new_url.spec();
|
|
|
| - URLPattern pattern(kValidWebExtentSchemes);
|
| - pattern.Parse(new_url.spec(), URLPattern::ERROR_ON_PORTS);
|
| + URLPattern pattern(URLPattern::ERROR_ON_PORTS, kValidWebExtentSchemes);
|
| + pattern.Parse(new_url.spec());
|
| pattern.SetPath(pattern.path() + '*');
|
| extent_.AddPattern(pattern);
|
| }
|
| @@ -387,7 +387,7 @@ bool Extension::LoadUserScriptHelper(const DictionaryValue* content_script,
|
| std::string* error,
|
| UserScript* result) {
|
| // When strict error checks are enabled, make URL pattern parsing strict.
|
| - URLPattern::ParseOption parse_strictness =
|
| + URLPattern::ParseOption parse_option =
|
| (flags & STRICT_ERROR_CHECKS ? URLPattern::ERROR_ON_PORTS
|
| : URLPattern::IGNORE_PORTS);
|
|
|
| @@ -448,12 +448,11 @@ bool Extension::LoadUserScriptHelper(const DictionaryValue* content_script,
|
| return false;
|
| }
|
|
|
| - URLPattern pattern(UserScript::kValidUserScriptSchemes);
|
| + URLPattern pattern(parse_option, UserScript::kValidUserScriptSchemes);
|
| if (CanExecuteScriptEverywhere())
|
| pattern.SetValidSchemes(URLPattern::SCHEME_ALL);
|
|
|
| - URLPattern::ParseResult parse_result = pattern.Parse(match_str,
|
| - parse_strictness);
|
| + URLPattern::ParseResult parse_result = pattern.Parse(match_str);
|
| if (parse_result != URLPattern::PARSE_SUCCESS) {
|
| *error = ExtensionErrorUtils::FormatErrorMessage(
|
| errors::kInvalidMatch,
|
| @@ -495,11 +494,10 @@ bool Extension::LoadUserScriptHelper(const DictionaryValue* content_script,
|
| return false;
|
| }
|
|
|
| - URLPattern pattern(UserScript::kValidUserScriptSchemes);
|
| + URLPattern pattern(parse_option, UserScript::kValidUserScriptSchemes);
|
| if (CanExecuteScriptEverywhere())
|
| pattern.SetValidSchemes(URLPattern::SCHEME_ALL);
|
| - URLPattern::ParseResult parse_result = pattern.Parse(match_str,
|
| - parse_strictness);
|
| + URLPattern::ParseResult parse_result = pattern.Parse(match_str);
|
| if (parse_result != URLPattern::PARSE_SUCCESS) {
|
| *error = ExtensionErrorUtils::FormatErrorMessage(
|
| errors::kInvalidExcludeMatch,
|
| @@ -799,9 +797,9 @@ FileBrowserHandler* Extension::LoadFileBrowserHandler(
|
| return NULL;
|
| }
|
| StringToLowerASCII(&filter);
|
| - URLPattern pattern(URLPattern::SCHEME_FILESYSTEM);
|
| - if (pattern.Parse(filter, URLPattern::ERROR_ON_PORTS) !=
|
| - URLPattern::PARSE_SUCCESS) {
|
| + URLPattern pattern(URLPattern::ERROR_ON_PORTS,
|
| + URLPattern::SCHEME_FILESYSTEM);
|
| + if (pattern.Parse(filter) != URLPattern::PARSE_SUCCESS) {
|
| *error = ExtensionErrorUtils::FormatErrorMessage(
|
| errors::kInvalidURLPatternError, filter);
|
| return NULL;
|
| @@ -884,7 +882,7 @@ bool Extension::LoadExtent(const extensions::Manifest* manifest,
|
| URLPatternSet* extent,
|
| const char* list_error,
|
| const char* value_error,
|
| - URLPattern::ParseOption parse_strictness,
|
| + URLPattern::ParseOption parse_option,
|
| std::string* error) {
|
| Value* temp = NULL;
|
| if (!manifest->Get(key, &temp))
|
| @@ -905,12 +903,11 @@ bool Extension::LoadExtent(const extensions::Manifest* manifest,
|
| return false;
|
| }
|
|
|
| - URLPattern pattern(kValidWebExtentSchemes);
|
| - URLPattern::ParseResult parse_result = pattern.Parse(pattern_string,
|
| - parse_strictness);
|
| + URLPattern pattern(parse_option, kValidWebExtentSchemes);
|
| + URLPattern::ParseResult parse_result = pattern.Parse(pattern_string);
|
| if (parse_result == URLPattern::PARSE_ERROR_EMPTY_PATH) {
|
| pattern_string += "/";
|
| - parse_result = pattern.Parse(pattern_string, parse_strictness);
|
| + parse_result = pattern.Parse(pattern_string);
|
| }
|
|
|
| if (parse_result != URLPattern::PARSE_SUCCESS) {
|
| @@ -996,7 +993,7 @@ bool Extension::LoadLaunchURL(const extensions::Manifest* manifest,
|
|
|
| // Ensure the launch URL is a valid absolute URL and web extent scheme.
|
| GURL url(launch_url);
|
| - URLPattern pattern(kValidWebExtentSchemes);
|
| + URLPattern pattern(URLPattern::ERROR_ON_PORTS, kValidWebExtentSchemes);
|
| if (!url.is_valid() || !pattern.SetScheme(url.scheme())) {
|
| *error = errors::kInvalidLaunchWebURL;
|
| return false;
|
| @@ -1011,7 +1008,7 @@ bool Extension::LoadLaunchURL(const extensions::Manifest* manifest,
|
| // If there is no extent, we default the extent based on the launch URL.
|
| if (web_extent().is_empty() && !launch_web_url().empty()) {
|
| GURL launch_url(launch_web_url());
|
| - URLPattern pattern(kValidWebExtentSchemes);
|
| + URLPattern pattern(URLPattern::ERROR_ON_PORTS, kValidWebExtentSchemes);
|
| if (!pattern.SetScheme("*")) {
|
| *error = errors::kInvalidLaunchWebURL;
|
| return false;
|
| @@ -1391,7 +1388,7 @@ bool Extension::InitFromValue(extensions::Manifest* manifest, int flags,
|
| return false;
|
|
|
| // When strict error checks are enabled, make URL pattern parsing strict.
|
| - URLPattern::ParseOption parse_strictness =
|
| + URLPattern::ParseOption parse_option =
|
| (flags & STRICT_ERROR_CHECKS ? URLPattern::ERROR_ON_PORTS
|
| : URLPattern::IGNORE_PORTS);
|
|
|
| @@ -1479,7 +1476,7 @@ bool Extension::InitFromValue(extensions::Manifest* manifest, int flags,
|
| (!LoadExtent(manifest_.get(), keys::kWebURLs,
|
| &extent_,
|
| errors::kInvalidWebURLs, errors::kInvalidWebURL,
|
| - parse_strictness, error) ||
|
| + parse_option, error) ||
|
| !LoadLaunchURL(manifest_.get(), error) ||
|
| !LoadLaunchContainer(manifest_.get(), error))) {
|
| return false;
|
| @@ -2524,7 +2521,7 @@ bool Extension::ParsePermissions(const extensions::Manifest* source,
|
| URLPatternSet* host_permissions) {
|
| if (source->HasKey(key)) {
|
| // When strict error checks are enabled, make URL pattern parsing strict.
|
| - URLPattern::ParseOption parse_strictness =
|
| + URLPattern::ParseOption parse_option =
|
| (flags & STRICT_ERROR_CHECKS ? URLPattern::ERROR_ON_PORTS
|
| : URLPattern::IGNORE_PORTS);
|
| ListValue* permissions = NULL;
|
| @@ -2554,11 +2551,11 @@ bool Extension::ParsePermissions(const extensions::Manifest* source,
|
| }
|
|
|
| // Check if it's a host pattern permission.
|
| - URLPattern pattern = URLPattern(CanExecuteScriptEverywhere() ?
|
| - URLPattern::SCHEME_ALL : kValidHostPermissionSchemes);
|
| + const int kAllowedSchemes = CanExecuteScriptEverywhere() ?
|
| + URLPattern::SCHEME_ALL : kValidHostPermissionSchemes;
|
|
|
| - URLPattern::ParseResult parse_result = pattern.Parse(permission_str,
|
| - parse_strictness);
|
| + URLPattern pattern = URLPattern(parse_option, kAllowedSchemes);
|
| + URLPattern::ParseResult parse_result = pattern.Parse(permission_str);
|
| if (parse_result == URLPattern::PARSE_SUCCESS) {
|
| if (!CanSpecifyHostPermission(pattern, *api_permissions)) {
|
| *error = ExtensionErrorUtils::FormatErrorMessage(
|
| @@ -2906,7 +2903,8 @@ bool Extension::OverlapsWithOrigin(const GURL& origin) const {
|
| return false;
|
|
|
| // Note: patterns and extents ignore port numbers.
|
| - URLPattern origin_only_pattern(kValidWebExtentSchemes);
|
| + URLPattern origin_only_pattern(URLPattern::ERROR_ON_PORTS,
|
| + kValidWebExtentSchemes);
|
| if (!origin_only_pattern.SetScheme(origin.scheme()))
|
| return false;
|
| origin_only_pattern.SetHost(origin.host());
|
|
|