| Index: content/browser/service_worker/service_worker_utils.cc
|
| diff --git a/content/browser/service_worker/service_worker_utils.cc b/content/browser/service_worker/service_worker_utils.cc
|
| index d088e97994915a9bc1e5ab2f970172947ec11d67..edbe9f97b227726057c5ce85c0ef4bb5322d138f 100644
|
| --- a/content/browser/service_worker/service_worker_utils.cc
|
| +++ b/content/browser/service_worker/service_worker_utils.cc
|
| @@ -6,10 +6,8 @@
|
|
|
| #include <string>
|
|
|
| -#include "base/command_line.h"
|
| #include "base/logging.h"
|
| -#include "content/public/common/content_switches.h"
|
| -#include "url/gurl.h"
|
| +#include "base/strings/string_util.h"
|
|
|
| namespace content {
|
|
|
| @@ -17,41 +15,16 @@ namespace content {
|
| bool ServiceWorkerUtils::ScopeMatches(const GURL& scope, const GURL& url) {
|
| DCHECK(!scope.has_ref());
|
| DCHECK(!url.has_ref());
|
| - const std::string& scope_spec = scope.spec();
|
| - const std::string& url_spec = url.spec();
|
| -
|
| - size_t len = scope_spec.size();
|
| - if (len > 0 && scope_spec[len - 1] == '*')
|
| - return scope_spec.compare(0, len - 1, url_spec, 0, len - 1) == 0;
|
| - return scope_spec == url_spec;
|
| + return StartsWithASCII(url.spec(), scope.spec(), true);
|
| }
|
|
|
| bool LongestScopeMatcher::MatchLongest(const GURL& scope) {
|
| if (!ServiceWorkerUtils::ScopeMatches(scope, url_))
|
| return false;
|
| - if (match_.is_empty()) {
|
| - match_ = scope;
|
| - return true;
|
| - }
|
| -
|
| - const std::string match_spec = match_.spec();
|
| - const std::string scope_spec = scope.spec();
|
| - if (match_spec.size() < scope_spec.size()) {
|
| + if (match_.is_empty() || match_.spec().size() < scope.spec().size()) {
|
| match_ = scope;
|
| return true;
|
| }
|
| -
|
| - // If |scope| has the same length with |match_|, they are compared as strings.
|
| - // For example:
|
| - // 1) for a document "/foo", "/foo" is prioritized over "/fo*".
|
| - // 2) for a document "/f(1)", "/f(1*" is prioritized over "/f(1)".
|
| - // TODO(nhiroki): This isn't in the spec.
|
| - // (https://github.com/slightlyoff/ServiceWorker/issues/287)
|
| - if (match_spec.size() == scope_spec.size() && match_spec < scope_spec) {
|
| - match_ = scope;
|
| - return true;
|
| - }
|
| -
|
| return false;
|
| }
|
|
|
|
|