OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/service_worker/service_worker_utils.h" | 5 #include "content/browser/service_worker/service_worker_utils.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/strings/string_util.h" | 10 #include "base/strings/string_util.h" |
(...skipping 18 matching lines...) Expand all Loading... |
29 } | 29 } |
30 return false; | 30 return false; |
31 } | 31 } |
32 | 32 |
33 } // namespace | 33 } // namespace |
34 | 34 |
35 // static | 35 // static |
36 bool ServiceWorkerUtils::ScopeMatches(const GURL& scope, const GURL& url) { | 36 bool ServiceWorkerUtils::ScopeMatches(const GURL& scope, const GURL& url) { |
37 DCHECK(!scope.has_ref()); | 37 DCHECK(!scope.has_ref()); |
38 DCHECK(!url.has_ref()); | 38 DCHECK(!url.has_ref()); |
39 return StartsWithASCII(url.spec(), scope.spec(), true); | 39 return base::StartsWithASCII(url.spec(), scope.spec(), true); |
40 } | 40 } |
41 | 41 |
42 // static | 42 // static |
43 bool ServiceWorkerUtils::IsPathRestrictionSatisfied( | 43 bool ServiceWorkerUtils::IsPathRestrictionSatisfied( |
44 const GURL& scope, | 44 const GURL& scope, |
45 const GURL& script_url, | 45 const GURL& script_url, |
46 const std::string* service_worker_allowed_header_value, | 46 const std::string* service_worker_allowed_header_value, |
47 std::string* error_message) { | 47 std::string* error_message) { |
48 DCHECK(scope.is_valid()); | 48 DCHECK(scope.is_valid()); |
49 DCHECK(!scope.has_ref()); | 49 DCHECK(!scope.has_ref()); |
(...skipping 12 matching lines...) Expand all Loading... |
62 error_message->append(*service_worker_allowed_header_value); | 62 error_message->append(*service_worker_allowed_header_value); |
63 error_message->append("') was received when fetching the script."); | 63 error_message->append("') was received when fetching the script."); |
64 return false; | 64 return false; |
65 } | 65 } |
66 max_scope_string = max_scope.path(); | 66 max_scope_string = max_scope.path(); |
67 } else { | 67 } else { |
68 max_scope_string = script_url.Resolve(".").path(); | 68 max_scope_string = script_url.Resolve(".").path(); |
69 } | 69 } |
70 | 70 |
71 std::string scope_string = scope.path(); | 71 std::string scope_string = scope.path(); |
72 if (!StartsWithASCII(scope_string, max_scope_string, true)) { | 72 if (!base::StartsWithASCII(scope_string, max_scope_string, true)) { |
73 *error_message = "The path of the provided scope ('"; | 73 *error_message = "The path of the provided scope ('"; |
74 error_message->append(scope_string); | 74 error_message->append(scope_string); |
75 error_message->append("') is not under the max scope allowed ("); | 75 error_message->append("') is not under the max scope allowed ("); |
76 if (service_worker_allowed_header_value) | 76 if (service_worker_allowed_header_value) |
77 error_message->append("set by Service-Worker-Allowed: "); | 77 error_message->append("set by Service-Worker-Allowed: "); |
78 error_message->append("'"); | 78 error_message->append("'"); |
79 error_message->append(max_scope_string); | 79 error_message->append(max_scope_string); |
80 error_message->append( | 80 error_message->append( |
81 "'). Adjust the scope, move the Service Worker script, or use the " | 81 "'). Adjust the scope, move the Service Worker script, or use the " |
82 "Service-Worker-Allowed HTTP header to allow the scope."); | 82 "Service-Worker-Allowed HTTP header to allow the scope."); |
(...skipping 23 matching lines...) Expand all Loading... |
106 if (!ServiceWorkerUtils::ScopeMatches(scope, url_)) | 106 if (!ServiceWorkerUtils::ScopeMatches(scope, url_)) |
107 return false; | 107 return false; |
108 if (match_.is_empty() || match_.spec().size() < scope.spec().size()) { | 108 if (match_.is_empty() || match_.spec().size() < scope.spec().size()) { |
109 match_ = scope; | 109 match_ = scope; |
110 return true; | 110 return true; |
111 } | 111 } |
112 return false; | 112 return false; |
113 } | 113 } |
114 | 114 |
115 } // namespace content | 115 } // namespace content |
OLD | NEW |