Add StorageKey to ServiceWorkerContext
Refactor the ServiceWorkerContext interface, and all implementors, to use StorageKey. This is meant as a behavioral no-op. Bug: 1199077 Change-Id: I60b5c7ffaac18c940973952d99d80813f542f54d Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3036482 Reviewed-by: Dominick Ng <dominickn@chromium.org> Reviewed-by: David Bertoni <dbertoni@chromium.org> Reviewed-by: Nico Weber <thakis@chromium.org> Reviewed-by: Ben Kelly <wanderview@chromium.org> Reviewed-by: Avi Drissman <avi@chromium.org> Reviewed-by: Istiaque Ahmed <lazyboy@chromium.org> Commit-Queue: Steven Bingler <bingler@chromium.org> Cr-Commit-Position: refs/heads/master@{#905316}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
00c5b110d1
commit
c9313b4dea
chrome/browser
autocomplete
chrome_service_worker_browsertest.ccchromeos
android_sms
extensions
prefetch
prefetch_proxy
search_prefetch
task_manager
providers
web_applications
components
browsing_data
content
performance_manager
webapps
browser
installable
content
browser
browsing_data
content_index
devtools
protocol
payments
service_worker
service_worker_browsertest.ccservice_worker_context_unittest.ccservice_worker_context_wrapper.ccservice_worker_context_wrapper.hservice_worker_context_wrapper_unittest.ccservice_worker_main_resource_loader_interceptor.ccservice_worker_offline_capability_check_browsertest.ccservice_worker_process_browsertest.ccservice_worker_version_browsertest.cc
public
extensions/browser
@ -58,6 +58,8 @@
|
||||
#include "content/public/browser/web_contents_user_data.h"
|
||||
#include "extensions/buildflags/buildflags.h"
|
||||
#include "net/traffic_annotation/network_traffic_annotation.h"
|
||||
#include "third_party/blink/public/common/storage_key/storage_key.h"
|
||||
#include "url/origin.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_EXTENSIONS)
|
||||
#include "chrome/browser/autocomplete/keyword_extensions_delegate_impl.h"
|
||||
@ -467,8 +469,9 @@ void ChromeAutocompleteProviderClient::StartServiceWorker(
|
||||
if (!context)
|
||||
return;
|
||||
|
||||
context->StartServiceWorkerForNavigationHint(destination_url,
|
||||
base::DoNothing());
|
||||
context->StartServiceWorkerForNavigationHint(
|
||||
destination_url, blink::StorageKey(url::Origin::Create(destination_url)),
|
||||
base::DoNothing());
|
||||
}
|
||||
|
||||
bool ChromeAutocompleteProviderClient::IsTabOpenWithURL(
|
||||
|
@ -54,8 +54,10 @@
|
||||
#include "net/test/embedded_test_server/http_response.h"
|
||||
#include "ppapi/shared_impl/ppapi_switches.h"
|
||||
#include "third_party/blink/public/common/messaging/string_message_codec.h"
|
||||
#include "third_party/blink/public/common/storage_key/storage_key.h"
|
||||
#include "third_party/blink/public/mojom/service_worker/service_worker_registration.mojom.h"
|
||||
#include "third_party/blink/public/mojom/service_worker/service_worker_registration_options.mojom.h"
|
||||
#include "url/origin.h"
|
||||
|
||||
namespace chrome_service_worker_browser_test {
|
||||
|
||||
@ -148,8 +150,9 @@ class ChromeServiceWorkerTest : public InProcessBrowserTest {
|
||||
InitializeServer();
|
||||
NavigateToPageAndWaitForReadyTitle("/test.html");
|
||||
|
||||
GetServiceWorkerContext()->StopAllServiceWorkersForOrigin(
|
||||
url::Origin::Create(embedded_test_server()->base_url()));
|
||||
GetServiceWorkerContext()->StopAllServiceWorkersForStorageKey(
|
||||
blink::StorageKey(
|
||||
url::Origin::Create(embedded_test_server()->base_url())));
|
||||
HostContentSettingsMapFactory::GetForProfile(browser()->profile())
|
||||
->SetDefaultContentSetting(ContentSettingsType::JAVASCRIPT,
|
||||
CONTENT_SETTING_BLOCK);
|
||||
@ -182,12 +185,13 @@ class ChromeServiceWorkerTest : public InProcessBrowserTest {
|
||||
msg.owned_encoded_message = blink::EncodeStringMessage(message_data);
|
||||
msg.encoded_message = msg.owned_encoded_message;
|
||||
|
||||
GURL url = embedded_test_server()->GetURL("/scope/");
|
||||
content::GetIOThreadTaskRunner({})->PostTask(
|
||||
FROM_HERE,
|
||||
base::BindOnce(&content::ServiceWorkerContext::
|
||||
StartServiceWorkerAndDispatchMessage,
|
||||
base::Unretained(GetServiceWorkerContext()),
|
||||
embedded_test_server()->GetURL("/scope/"),
|
||||
base::Unretained(GetServiceWorkerContext()), url,
|
||||
blink::StorageKey(url::Origin::Create(url)),
|
||||
std::move(msg),
|
||||
base::BindRepeating(&ExpectResultAndRun<bool>, true,
|
||||
run_loop.QuitClosure())));
|
||||
@ -213,8 +217,9 @@ IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerTest,
|
||||
blink::mojom::ServiceWorkerRegistrationOptions options(
|
||||
embedded_test_server()->GetURL("/"), blink::mojom::ScriptType::kClassic,
|
||||
blink::mojom::ServiceWorkerUpdateViaCache::kImports);
|
||||
blink::StorageKey key(url::Origin::Create(options.scope));
|
||||
GetServiceWorkerContext()->RegisterServiceWorker(
|
||||
embedded_test_server()->GetURL("/service_worker.js"), options,
|
||||
embedded_test_server()->GetURL("/service_worker.js"), key, options,
|
||||
base::BindOnce(&ExpectResultAndRun<blink::ServiceWorkerStatusCode>,
|
||||
blink::ServiceWorkerStatusCode::kOk,
|
||||
run_loop.QuitClosure()));
|
||||
@ -241,8 +246,9 @@ IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerTest,
|
||||
blink::mojom::ServiceWorkerRegistrationOptions options(
|
||||
embedded_test_server()->GetURL("/"), blink::mojom::ScriptType::kClassic,
|
||||
blink::mojom::ServiceWorkerUpdateViaCache::kImports);
|
||||
blink::StorageKey key(url::Origin::Create(options.scope));
|
||||
GetServiceWorkerContext()->RegisterServiceWorker(
|
||||
embedded_test_server()->GetURL("/service_worker.js"), options,
|
||||
embedded_test_server()->GetURL("/service_worker.js"), key, options,
|
||||
base::BindOnce(&ExpectResultAndRun<blink::ServiceWorkerStatusCode>,
|
||||
blink::ServiceWorkerStatusCode::kOk,
|
||||
run_loop.QuitClosure()));
|
||||
@ -269,8 +275,9 @@ IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerTest,
|
||||
blink::mojom::ServiceWorkerRegistrationOptions options(
|
||||
embedded_test_server()->GetURL("/"), blink::mojom::ScriptType::kClassic,
|
||||
blink::mojom::ServiceWorkerUpdateViaCache::kImports);
|
||||
blink::StorageKey key(url::Origin::Create(options.scope));
|
||||
GetServiceWorkerContext()->RegisterServiceWorker(
|
||||
embedded_test_server()->GetURL("/service_worker.js"), options,
|
||||
embedded_test_server()->GetURL("/service_worker.js"), key, options,
|
||||
base::BindOnce(&ExpectResultAndRun<blink::ServiceWorkerStatusCode>,
|
||||
blink::ServiceWorkerStatusCode::kErrorDisallowed,
|
||||
run_loop.QuitClosure()));
|
||||
@ -659,8 +666,9 @@ class ChromeServiceWorkerNavigationHintTest : public ChromeServiceWorkerTest {
|
||||
content::StartServiceWorkerForNavigationHintResult expected_result,
|
||||
bool expected_started) {
|
||||
base::RunLoop run_loop;
|
||||
GURL url = embedded_test_server()->GetURL(scope);
|
||||
GetServiceWorkerContext()->StartServiceWorkerForNavigationHint(
|
||||
embedded_test_server()->GetURL(scope),
|
||||
url, blink::StorageKey(url::Origin::Create(url)),
|
||||
base::BindOnce(&ExpectResultAndRun<
|
||||
content::StartServiceWorkerForNavigationHintResult>,
|
||||
expected_result, run_loop.QuitClosure()));
|
||||
@ -688,8 +696,9 @@ class ChromeServiceWorkerNavigationHintTest : public ChromeServiceWorkerTest {
|
||||
WriteFile(FILE_PATH_LITERAL("test.html"), test_script);
|
||||
InitializeServer();
|
||||
NavigateToPageAndWaitForReadyTitle("/test.html");
|
||||
GetServiceWorkerContext()->StopAllServiceWorkersForOrigin(
|
||||
url::Origin::Create(embedded_test_server()->base_url()));
|
||||
GetServiceWorkerContext()->StopAllServiceWorkersForStorageKey(
|
||||
blink::StorageKey(
|
||||
url::Origin::Create(embedded_test_server()->base_url())));
|
||||
RunNavigationHintTest(
|
||||
"/scope/", content::StartServiceWorkerForNavigationHintResult::STARTED,
|
||||
true);
|
||||
@ -711,8 +720,9 @@ class ChromeServiceWorkerNavigationHintTest : public ChromeServiceWorkerTest {
|
||||
WriteFile(FILE_PATH_LITERAL("test.html"), test_script);
|
||||
InitializeServer();
|
||||
NavigateToPageAndWaitForReadyTitle("/test.html");
|
||||
GetServiceWorkerContext()->StopAllServiceWorkersForOrigin(
|
||||
url::Origin::Create(embedded_test_server()->base_url()));
|
||||
GetServiceWorkerContext()->StopAllServiceWorkersForStorageKey(
|
||||
blink::StorageKey(
|
||||
url::Origin::Create(embedded_test_server()->base_url())));
|
||||
RunNavigationHintTest(
|
||||
"/scope/",
|
||||
content::StartServiceWorkerForNavigationHintResult::NO_FETCH_HANDLER,
|
||||
@ -761,8 +771,9 @@ IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerNavigationHintTest,
|
||||
embedded_test_server()->GetURL("/scope/"),
|
||||
blink::mojom::ScriptType::kClassic,
|
||||
blink::mojom::ServiceWorkerUpdateViaCache::kImports);
|
||||
blink::StorageKey key(url::Origin::Create(options.scope));
|
||||
GetServiceWorkerContext()->RegisterServiceWorker(
|
||||
embedded_test_server()->GetURL("/sw.js"), options,
|
||||
embedded_test_server()->GetURL("/sw.js"), key, options,
|
||||
base::BindOnce(&ExpectResultAndRun<blink::ServiceWorkerStatusCode>,
|
||||
blink::ServiceWorkerStatusCode::kOk,
|
||||
run_loop.QuitClosure()));
|
||||
@ -848,8 +859,9 @@ IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerTest, DisallowChromeScheme) {
|
||||
blink::mojom::ServiceWorkerRegistrationOptions options(
|
||||
kScope, blink::mojom::ScriptType::kClassic,
|
||||
blink::mojom::ServiceWorkerUpdateViaCache::kImports);
|
||||
blink::StorageKey key(url::Origin::Create(options.scope));
|
||||
GetServiceWorkerContext()->RegisterServiceWorker(
|
||||
kScript, options,
|
||||
kScript, key, options,
|
||||
base::BindOnce(
|
||||
[](base::OnceClosure quit_closure,
|
||||
blink::ServiceWorkerStatusCode* out_result,
|
||||
|
@ -13,6 +13,8 @@
|
||||
#include "content/public/browser/browser_thread.h"
|
||||
#include "third_party/blink/public/common/messaging/string_message_codec.h"
|
||||
#include "third_party/blink/public/common/messaging/transferable_message.h"
|
||||
#include "third_party/blink/public/common/storage_key/storage_key.h"
|
||||
#include "url/origin.h"
|
||||
|
||||
namespace chromeos {
|
||||
|
||||
@ -141,7 +143,9 @@ void FcmConnectionEstablisher::SendInFlightMessage() {
|
||||
|
||||
PA_LOG(VERBOSE) << "Dispatching message " << message.message_type;
|
||||
message.service_worker_context->StartServiceWorkerAndDispatchMessage(
|
||||
message.service_worker_scope, std::move(msg),
|
||||
message.service_worker_scope,
|
||||
blink::StorageKey(url::Origin::Create(message.service_worker_scope)),
|
||||
std::move(msg),
|
||||
base::BindOnce(&FcmConnectionEstablisher::OnMessageDispatchResult,
|
||||
weak_ptr_factory_.GetWeakPtr()));
|
||||
}
|
||||
|
@ -83,6 +83,7 @@
|
||||
#include "services/network/public/cpp/is_potentially_trustworthy.h"
|
||||
#include "testing/gmock/include/gmock/gmock.h"
|
||||
#include "third_party/abseil-cpp/absl/types/optional.h"
|
||||
#include "third_party/blink/public/common/storage_key/storage_key.h"
|
||||
#include "ui/message_center/public/cpp/notification.h"
|
||||
#include "url/url_constants.h"
|
||||
|
||||
@ -234,13 +235,13 @@ class ServiceWorkerTest : public ExtensionApiTest {
|
||||
return ExtractInnerText(Navigate(url));
|
||||
}
|
||||
|
||||
size_t GetWorkerRefCount(const url::Origin& origin) {
|
||||
size_t GetWorkerRefCount(const blink::StorageKey& key) {
|
||||
content::ServiceWorkerContext* sw_context =
|
||||
browser()
|
||||
->profile()
|
||||
->GetDefaultStoragePartition()
|
||||
->GetServiceWorkerContext();
|
||||
return sw_context->CountExternalRequestsForTest(origin);
|
||||
return sw_context->CountExternalRequestsForTest(key);
|
||||
}
|
||||
|
||||
private:
|
||||
@ -2280,10 +2281,11 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerBasedBackgroundTest, WorkerRefCount) {
|
||||
browser()->tab_strip_model()->GetActiveWebContents();
|
||||
|
||||
url::Origin extension_origin = url::Origin::Create(extension->url());
|
||||
blink::StorageKey extension_key(extension_origin);
|
||||
|
||||
// Service worker should have no pending requests because it hasn't performed
|
||||
// any extension API request yet.
|
||||
EXPECT_EQ(0u, GetWorkerRefCount(extension_origin));
|
||||
EXPECT_EQ(0u, GetWorkerRefCount(extension_key));
|
||||
|
||||
ExtensionTestMessageListener worker_listener("CHECK_REF_COUNT", true);
|
||||
worker_listener.set_failure_message("FAILURE");
|
||||
@ -2292,7 +2294,7 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerBasedBackgroundTest, WorkerRefCount) {
|
||||
|
||||
// Service worker should have exactly one pending request because
|
||||
// chrome.test.sendMessage() API call is in-flight.
|
||||
EXPECT_EQ(1u, GetWorkerRefCount(extension_origin));
|
||||
EXPECT_EQ(1u, GetWorkerRefCount(extension_key));
|
||||
|
||||
// Perform another extension API request while one is ongoing.
|
||||
{
|
||||
@ -2303,7 +2305,7 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerBasedBackgroundTest, WorkerRefCount) {
|
||||
ASSERT_TRUE(listener.WaitUntilSatisfied());
|
||||
|
||||
// Service worker currently has two extension API requests in-flight.
|
||||
EXPECT_EQ(2u, GetWorkerRefCount(extension_origin));
|
||||
EXPECT_EQ(2u, GetWorkerRefCount(extension_key));
|
||||
// Finish executing the nested chrome.test.sendMessage() first.
|
||||
listener.Reply("Hello world");
|
||||
}
|
||||
@ -2330,7 +2332,7 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerBasedBackgroundTest, WorkerRefCount) {
|
||||
}
|
||||
|
||||
// The ref count should drop to 0.
|
||||
EXPECT_EQ(0u, GetWorkerRefCount(extension_origin));
|
||||
EXPECT_EQ(0u, GetWorkerRefCount(extension_key));
|
||||
}
|
||||
|
||||
IN_PROC_BROWSER_TEST_F(ServiceWorkerBasedBackgroundTest,
|
||||
|
@ -126,6 +126,7 @@
|
||||
#include "third_party/abseil-cpp/absl/types/optional.h"
|
||||
#include "third_party/blink/public/common/client_hints/client_hints.h"
|
||||
#include "third_party/blink/public/common/features.h"
|
||||
#include "third_party/blink/public/common/storage_key/storage_key.h"
|
||||
#include "url/gurl.h"
|
||||
#include "url/origin.h"
|
||||
|
||||
|
@ -68,6 +68,7 @@
|
||||
#include "services/network/public/mojom/network_context.mojom.h"
|
||||
#include "services/network/public/mojom/network_service.mojom.h"
|
||||
#include "third_party/abseil-cpp/absl/types/optional.h"
|
||||
#include "third_party/blink/public/common/storage_key/storage_key.h"
|
||||
#include "url/origin.h"
|
||||
|
||||
namespace {
|
||||
|
@ -62,9 +62,11 @@
|
||||
#include "services/network/public/mojom/url_response_head.mojom.h"
|
||||
#include "third_party/abseil-cpp/absl/types/optional.h"
|
||||
#include "third_party/blink/public/common/loader/url_loader_throttle.h"
|
||||
#include "third_party/blink/public/common/storage_key/storage_key.h"
|
||||
#include "third_party/blink/public/mojom/service_worker/service_worker_registration_options.mojom.h"
|
||||
#include "ui/base/page_transition_types.h"
|
||||
#include "url/gurl.h"
|
||||
#include "url/origin.h"
|
||||
|
||||
namespace {
|
||||
constexpr char kSuggestDomain[] = "suggest.com";
|
||||
@ -2358,8 +2360,9 @@ IN_PROC_BROWSER_TEST_P(SearchPrefetchServiceEnabledBrowserTest,
|
||||
GetSearchServerQueryURLWithNoQuery("/"),
|
||||
blink::mojom::ScriptType::kClassic,
|
||||
blink::mojom::ServiceWorkerUpdateViaCache::kImports);
|
||||
blink::StorageKey key(url::Origin::Create(options.scope));
|
||||
service_worker_context->RegisterServiceWorker(
|
||||
worker_url, options,
|
||||
worker_url, key, options,
|
||||
base::BindOnce(&RunFirstParam, run_loop.QuitClosure()));
|
||||
run_loop.Run();
|
||||
|
||||
|
@ -31,7 +31,9 @@
|
||||
#include "content/public/test/browser_test.h"
|
||||
#include "content/public/test/browser_test_utils.h"
|
||||
#include "net/dns/mock_host_resolver.h"
|
||||
#include "third_party/blink/public/common/storage_key/storage_key.h"
|
||||
#include "ui/base/l10n/l10n_util.h"
|
||||
#include "url/origin.h"
|
||||
|
||||
#if BUILDFLAG(IS_CHROMEOS_ASH)
|
||||
#include "ash/constants/ash_switches.h"
|
||||
@ -189,8 +191,9 @@ IN_PROC_BROWSER_TEST_F(WorkerTaskProviderBrowserTest,
|
||||
.spec()),
|
||||
base::CompareCase::INSENSITIVE_ASCII));
|
||||
|
||||
GetServiceWorkerContext(browser())->StopAllServiceWorkersForOrigin(
|
||||
url::Origin::Create(embedded_test_server()->base_url()));
|
||||
GetServiceWorkerContext(browser())->StopAllServiceWorkersForStorageKey(
|
||||
blink::StorageKey(
|
||||
url::Origin::Create(embedded_test_server()->base_url())));
|
||||
WaitUntilTaskCount(0);
|
||||
|
||||
StopUpdating();
|
||||
@ -226,8 +229,9 @@ IN_PROC_BROWSER_TEST_F(WorkerTaskProviderBrowserTest,
|
||||
.spec()),
|
||||
base::CompareCase::INSENSITIVE_ASCII));
|
||||
|
||||
GetServiceWorkerContext(incognito)->StopAllServiceWorkersForOrigin(
|
||||
url::Origin::Create(embedded_test_server()->base_url()));
|
||||
GetServiceWorkerContext(incognito)->StopAllServiceWorkersForStorageKey(
|
||||
blink::StorageKey(
|
||||
url::Origin::Create(embedded_test_server()->base_url())));
|
||||
WaitUntilTaskCount(0);
|
||||
|
||||
StopUpdating();
|
||||
@ -279,13 +283,15 @@ IN_PROC_BROWSER_TEST_F(WorkerTaskProviderBrowserTest,
|
||||
.spec()),
|
||||
base::CompareCase::INSENSITIVE_ASCII));
|
||||
|
||||
GetServiceWorkerContext(browser_1)->StopAllServiceWorkersForOrigin(
|
||||
url::Origin::Create(embedded_test_server()->base_url()));
|
||||
GetServiceWorkerContext(browser_1)->StopAllServiceWorkersForStorageKey(
|
||||
blink::StorageKey(
|
||||
url::Origin::Create(embedded_test_server()->base_url())));
|
||||
WaitUntilTaskCount(1);
|
||||
EXPECT_EQ(task_2, tasks()[0]);
|
||||
|
||||
GetServiceWorkerContext(browser_2)->StopAllServiceWorkersForOrigin(
|
||||
url::Origin::Create(embedded_test_server()->base_url()));
|
||||
GetServiceWorkerContext(browser_2)->StopAllServiceWorkersForStorageKey(
|
||||
blink::StorageKey(
|
||||
url::Origin::Create(embedded_test_server()->base_url())));
|
||||
WaitUntilTaskCount(0);
|
||||
|
||||
StopUpdating();
|
||||
@ -318,8 +324,9 @@ IN_PROC_BROWSER_TEST_F(WorkerTaskProviderBrowserTest, CreateExistingTasks) {
|
||||
.spec()),
|
||||
base::CompareCase::INSENSITIVE_ASCII));
|
||||
|
||||
GetServiceWorkerContext(browser())->StopAllServiceWorkersForOrigin(
|
||||
url::Origin::Create(embedded_test_server()->base_url()));
|
||||
GetServiceWorkerContext(browser())->StopAllServiceWorkersForStorageKey(
|
||||
blink::StorageKey(
|
||||
url::Origin::Create(embedded_test_server()->base_url())));
|
||||
WaitUntilTaskCount(0);
|
||||
|
||||
StopUpdating();
|
||||
|
@ -28,6 +28,8 @@
|
||||
#include "net/dns/mock_host_resolver.h"
|
||||
#include "net/test/embedded_test_server/embedded_test_server.h"
|
||||
#include "third_party/abseil-cpp/absl/types/optional.h"
|
||||
#include "third_party/blink/public/common/storage_key/storage_key.h"
|
||||
#include "url/origin.h"
|
||||
|
||||
namespace web_app {
|
||||
|
||||
@ -66,7 +68,7 @@ class ExternallyManagedAppManagerImplBrowserTest : public InProcessBrowserTest {
|
||||
->GetStoragePartition(web_contents->GetSiteInstance())
|
||||
->GetServiceWorkerContext();
|
||||
service_worker_context->CheckHasServiceWorker(
|
||||
url,
|
||||
url, blink::StorageKey(url::Origin::Create(url)),
|
||||
base::BindLambdaForTesting(
|
||||
[&run_loop, status](content::ServiceWorkerCapability capability) {
|
||||
CHECK_EQ(status, capability);
|
||||
|
@ -12,6 +12,8 @@
|
||||
#include "content/public/browser/service_worker_context.h"
|
||||
#include "content/public/browser/storage_partition.h"
|
||||
#include "content/public/browser/web_contents.h"
|
||||
#include "third_party/blink/public/common/storage_key/storage_key.h"
|
||||
#include "url/origin.h"
|
||||
#include "url/url_constants.h"
|
||||
|
||||
namespace web_app {
|
||||
@ -50,7 +52,7 @@ ExternallyManagedAppRegistrationTask::ExternallyManagedAppRegistrationTask(
|
||||
|
||||
// Check to see if there is already a service worker for the install url.
|
||||
service_worker_context_->CheckHasServiceWorker(
|
||||
install_url,
|
||||
install_url, blink::StorageKey(url::Origin::Create(install_url)),
|
||||
base::BindOnce(
|
||||
&ExternallyManagedAppRegistrationTask::OnDidCheckHasServiceWorker,
|
||||
weak_ptr_factory_.GetWeakPtr()));
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include "content/public/browser/browser_thread.h"
|
||||
#include "content/public/browser/service_worker_context.h"
|
||||
#include "content/public/browser/storage_usage_info.h"
|
||||
#include "third_party/blink/public/common/storage_key/storage_key.h"
|
||||
|
||||
using content::BrowserThread;
|
||||
using content::ServiceWorkerContext;
|
||||
@ -81,7 +82,10 @@ void ServiceWorkerHelper::FetchServiceWorkerUsageInfoOnCoreThread(
|
||||
void ServiceWorkerHelper::DeleteServiceWorkersOnCoreThread(
|
||||
const url::Origin& origin) {
|
||||
DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
|
||||
service_worker_context_->DeleteForOrigin(origin, base::DoNothing());
|
||||
// TODO(crbug.com/1199077): Update this when the cookie tree model understands
|
||||
// StorageKey.
|
||||
service_worker_context_->DeleteForStorageKey(blink::StorageKey(origin),
|
||||
base::DoNothing());
|
||||
}
|
||||
|
||||
CannedServiceWorkerHelper::CannedServiceWorkerHelper(
|
||||
|
@ -104,6 +104,7 @@ void ServiceWorkerContextAdapter::RemoveObserver(
|
||||
|
||||
void ServiceWorkerContextAdapter::RegisterServiceWorker(
|
||||
const GURL& script_url,
|
||||
const blink::StorageKey& key,
|
||||
const blink::mojom::ServiceWorkerRegistrationOptions& options,
|
||||
StatusCodeCallback callback) {
|
||||
NOTIMPLEMENTED();
|
||||
@ -111,6 +112,7 @@ void ServiceWorkerContextAdapter::RegisterServiceWorker(
|
||||
|
||||
void ServiceWorkerContextAdapter::UnregisterServiceWorker(
|
||||
const GURL& scope,
|
||||
const blink::StorageKey& key,
|
||||
ResultCallback callback) {
|
||||
NOTIMPLEMENTED();
|
||||
}
|
||||
@ -132,7 +134,7 @@ ServiceWorkerContextAdapter::FinishedExternalRequest(
|
||||
}
|
||||
|
||||
size_t ServiceWorkerContextAdapter::CountExternalRequestsForTest(
|
||||
const url::Origin& origin) {
|
||||
const blink::StorageKey& key) {
|
||||
NOTIMPLEMENTED();
|
||||
return 0u;
|
||||
}
|
||||
@ -148,19 +150,22 @@ void ServiceWorkerContextAdapter::GetAllOriginsInfo(
|
||||
NOTIMPLEMENTED();
|
||||
}
|
||||
|
||||
void ServiceWorkerContextAdapter::DeleteForOrigin(const url::Origin& origin_url,
|
||||
ResultCallback callback) {
|
||||
void ServiceWorkerContextAdapter::DeleteForStorageKey(
|
||||
const blink::StorageKey& key,
|
||||
ResultCallback callback) {
|
||||
NOTIMPLEMENTED();
|
||||
}
|
||||
|
||||
void ServiceWorkerContextAdapter::CheckHasServiceWorker(
|
||||
const GURL& url,
|
||||
const blink::StorageKey& key,
|
||||
CheckHasServiceWorkerCallback callback) {
|
||||
NOTIMPLEMENTED();
|
||||
}
|
||||
|
||||
void ServiceWorkerContextAdapter::CheckOfflineCapability(
|
||||
const GURL& url,
|
||||
const blink::StorageKey& key,
|
||||
CheckOfflineCapabilityCallback callback) {
|
||||
NOTIMPLEMENTED();
|
||||
}
|
||||
@ -172,6 +177,7 @@ void ServiceWorkerContextAdapter::ClearAllServiceWorkersForTest(
|
||||
|
||||
void ServiceWorkerContextAdapter::StartWorkerForScope(
|
||||
const GURL& scope,
|
||||
const blink::StorageKey& key,
|
||||
StartWorkerCallback info_callback,
|
||||
StatusCodeCallback status_callback) {
|
||||
NOTIMPLEMENTED();
|
||||
@ -179,6 +185,7 @@ void ServiceWorkerContextAdapter::StartWorkerForScope(
|
||||
|
||||
void ServiceWorkerContextAdapter::StartServiceWorkerAndDispatchMessage(
|
||||
const GURL& scope,
|
||||
const blink::StorageKey& key,
|
||||
blink::TransferableMessage message,
|
||||
ResultCallback result_callback) {
|
||||
NOTIMPLEMENTED();
|
||||
@ -186,12 +193,13 @@ void ServiceWorkerContextAdapter::StartServiceWorkerAndDispatchMessage(
|
||||
|
||||
void ServiceWorkerContextAdapter::StartServiceWorkerForNavigationHint(
|
||||
const GURL& document_url,
|
||||
const blink::StorageKey& key,
|
||||
StartServiceWorkerForNavigationHintCallback callback) {
|
||||
NOTIMPLEMENTED();
|
||||
}
|
||||
|
||||
void ServiceWorkerContextAdapter::StopAllServiceWorkersForOrigin(
|
||||
const url::Origin& origin) {
|
||||
void ServiceWorkerContextAdapter::StopAllServiceWorkersForStorageKey(
|
||||
const blink::StorageKey& key) {
|
||||
NOTIMPLEMENTED();
|
||||
}
|
||||
|
||||
|
@ -16,6 +16,10 @@
|
||||
#include "content/public/browser/service_worker_context.h"
|
||||
#include "content/public/browser/service_worker_context_observer.h"
|
||||
|
||||
namespace blink {
|
||||
class StorageKey;
|
||||
} // namespace blink
|
||||
|
||||
namespace performance_manager {
|
||||
|
||||
// This class adapts an existing ServiceWorkerContext to ensure that the
|
||||
@ -48,9 +52,11 @@ class ServiceWorkerContextAdapter
|
||||
void RemoveObserver(content::ServiceWorkerContextObserver* observer) override;
|
||||
void RegisterServiceWorker(
|
||||
const GURL& script_url,
|
||||
const blink::StorageKey& key,
|
||||
const blink::mojom::ServiceWorkerRegistrationOptions& options,
|
||||
StatusCodeCallback callback) override;
|
||||
void UnregisterServiceWorker(const GURL& scope,
|
||||
const blink::StorageKey& key,
|
||||
ResultCallback callback) override;
|
||||
content::ServiceWorkerExternalRequestResult StartingExternalRequest(
|
||||
int64_t service_worker_version_id,
|
||||
@ -58,27 +64,33 @@ class ServiceWorkerContextAdapter
|
||||
content::ServiceWorkerExternalRequestResult FinishedExternalRequest(
|
||||
int64_t service_worker_version_id,
|
||||
const std::string& request_uuid) override;
|
||||
size_t CountExternalRequestsForTest(const url::Origin& origin) override;
|
||||
size_t CountExternalRequestsForTest(const blink::StorageKey& key) override;
|
||||
bool MaybeHasRegistrationForOrigin(const url::Origin& origin) override;
|
||||
void GetAllOriginsInfo(GetUsageInfoCallback callback) override;
|
||||
void DeleteForOrigin(const url::Origin& origin_url,
|
||||
ResultCallback callback) override;
|
||||
void DeleteForStorageKey(const blink::StorageKey& key,
|
||||
ResultCallback callback) override;
|
||||
void CheckHasServiceWorker(const GURL& url,
|
||||
const blink::StorageKey& key,
|
||||
CheckHasServiceWorkerCallback callback) override;
|
||||
void CheckOfflineCapability(const GURL& url,
|
||||
const blink::StorageKey& key,
|
||||
CheckOfflineCapabilityCallback callback) override;
|
||||
void ClearAllServiceWorkersForTest(base::OnceClosure callback) override;
|
||||
void StartWorkerForScope(const GURL& scope,
|
||||
const blink::StorageKey& key,
|
||||
StartWorkerCallback info_callback,
|
||||
StatusCodeCallback failure_callback) override;
|
||||
void StartServiceWorkerAndDispatchMessage(
|
||||
const GURL& scope,
|
||||
const blink::StorageKey& key,
|
||||
blink::TransferableMessage message,
|
||||
ResultCallback result_callback) override;
|
||||
void StartServiceWorkerForNavigationHint(
|
||||
const GURL& document_url,
|
||||
const blink::StorageKey& key,
|
||||
StartServiceWorkerForNavigationHintCallback callback) override;
|
||||
void StopAllServiceWorkersForOrigin(const url::Origin& origin) override;
|
||||
void StopAllServiceWorkersForStorageKey(
|
||||
const blink::StorageKey& key) override;
|
||||
void StopAllServiceWorkers(base::OnceClosure callback) override;
|
||||
const base::flat_map<int64_t /* version_id */,
|
||||
content::ServiceWorkerRunningInfo>&
|
||||
|
@ -32,6 +32,7 @@
|
||||
#include "services/network/public/cpp/is_potentially_trustworthy.h"
|
||||
#include "third_party/blink/public/common/features.h"
|
||||
#include "third_party/blink/public/common/manifest/manifest_icon_selector.h"
|
||||
#include "third_party/blink/public/common/storage_key/storage_key.h"
|
||||
#include "third_party/blink/public/mojom/manifest/display_mode.mojom.h"
|
||||
#include "url/origin.h"
|
||||
|
||||
@ -717,6 +718,7 @@ void InstallableManager::CheckServiceWorker() {
|
||||
// Check to see if there is a service worker for the manifest's scope.
|
||||
service_worker_context_->CheckHasServiceWorker(
|
||||
manifest().scope,
|
||||
blink::StorageKey(url::Origin::Create(manifest().scope)),
|
||||
base::BindOnce(&InstallableManager::OnDidCheckHasServiceWorker,
|
||||
weak_factory_.GetWeakPtr(), base::TimeTicks::Now()));
|
||||
}
|
||||
@ -747,6 +749,7 @@ void InstallableManager::OnDidCheckHasServiceWorker(
|
||||
// environment and see if the site supports an offline page.
|
||||
service_worker_context_->CheckOfflineCapability(
|
||||
manifest().start_url,
|
||||
blink::StorageKey(url::Origin::Create(manifest().start_url)),
|
||||
base::BindOnce(&InstallableManager::OnDidCheckOfflineCapability,
|
||||
weak_factory_.GetWeakPtr(),
|
||||
check_service_worker_start_time,
|
||||
|
@ -29,7 +29,9 @@
|
||||
#include "services/network/public/mojom/network_service.mojom.h"
|
||||
#include "services/network/public/mojom/network_service_test.mojom.h"
|
||||
#include "testing/gtest/include/gtest/gtest.h"
|
||||
#include "third_party/blink/public/common/storage_key/storage_key.h"
|
||||
#include "third_party/blink/public/mojom/service_worker/service_worker_registration_options.mojom.h"
|
||||
#include "url/origin.h"
|
||||
|
||||
namespace content {
|
||||
|
||||
@ -104,11 +106,12 @@ void AddServiceWorker(const std::string& origin,
|
||||
blink::mojom::ServiceWorkerRegistrationOptions options(
|
||||
scope_url, blink::mojom::ScriptType::kClassic,
|
||||
blink::mojom::ServiceWorkerUpdateViaCache::kImports);
|
||||
blink::StorageKey key(url::Origin::Create(options.scope));
|
||||
RunOrPostTaskOnThread(
|
||||
FROM_HERE, ServiceWorkerContext::GetCoreThreadId(),
|
||||
base::BindOnce(&ServiceWorkerContextWrapper::RegisterServiceWorker,
|
||||
base::Unretained(service_worker_context), js_url, options,
|
||||
base::BindOnce(&AddServiceWorkerCallback)));
|
||||
base::Unretained(service_worker_context), js_url, key,
|
||||
options, base::BindOnce(&AddServiceWorkerCallback)));
|
||||
|
||||
// Wait for its activation.
|
||||
base::RunLoop run_loop;
|
||||
|
@ -16,6 +16,8 @@
|
||||
#include "content/public/browser/render_process_host.h"
|
||||
#include "content/public/browser/service_worker_version_base_info.h"
|
||||
#include "mojo/public/cpp/bindings/self_owned_receiver.h"
|
||||
#include "third_party/blink/public/common/storage_key/storage_key.h"
|
||||
#include "url/origin.h"
|
||||
|
||||
namespace content {
|
||||
|
||||
@ -105,7 +107,7 @@ void ContentIndexServiceImpl::CheckOfflineCapability(
|
||||
// TODO(rayankans): Figure out if we can check the service worker specified
|
||||
// by |service_worker_registration_id| rather than any service worker.
|
||||
service_worker_context_->CheckOfflineCapability(
|
||||
launch_url,
|
||||
launch_url, blink::StorageKey(url::Origin::Create(launch_url)),
|
||||
base::BindOnce(&DidCheckOfflineCapability, std::move(callback),
|
||||
service_worker_registration_id));
|
||||
}
|
||||
|
@ -37,6 +37,7 @@
|
||||
#include "third_party/blink/public/mojom/push_messaging/push_messaging_status.mojom.h"
|
||||
#include "third_party/blink/public/mojom/service_worker/service_worker_object.mojom.h"
|
||||
#include "url/gurl.h"
|
||||
#include "url/origin.h"
|
||||
|
||||
namespace content {
|
||||
|
||||
@ -251,7 +252,9 @@ Response ServiceWorkerHandler::Unregister(const std::string& scope_url) {
|
||||
return CreateDomainNotEnabledErrorResponse();
|
||||
if (!context_)
|
||||
return CreateContextErrorResponse();
|
||||
context_->UnregisterServiceWorker(GURL(scope_url), base::DoNothing());
|
||||
GURL url(scope_url);
|
||||
blink::StorageKey key(url::Origin::Create(url));
|
||||
context_->UnregisterServiceWorker(url, key, base::DoNothing());
|
||||
return Response::Success();
|
||||
}
|
||||
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include "third_party/blink/public/common/storage_key/storage_key.h"
|
||||
#include "third_party/blink/public/mojom/service_worker/service_worker_registration_options.mojom.h"
|
||||
#include "url/gurl.h"
|
||||
#include "url/origin.h"
|
||||
|
||||
namespace content {
|
||||
namespace {
|
||||
@ -102,8 +103,11 @@ class SelfDeleteInstaller
|
||||
option.update_via_cache =
|
||||
blink::mojom::ServiceWorkerUpdateViaCache::kNone;
|
||||
}
|
||||
// TODO(crbug.com/1199077): Because this function can be called in a 3p
|
||||
// context we will need to generate a full StorageKey (origin + top-level
|
||||
// site) once StorageKey is expanded with the top-level site.
|
||||
service_worker_context_->RegisterServiceWorker(
|
||||
sw_url_, option,
|
||||
sw_url_, blink::StorageKey(url::Origin::Create(option.scope)), option,
|
||||
base::BindOnce(&SelfDeleteInstaller::OnRegisterServiceWorkerResult,
|
||||
this));
|
||||
}
|
||||
|
@ -588,8 +588,9 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest, FetchPageWithSaveData) {
|
||||
embedded_test_server()->GetURL(kPageUrl),
|
||||
blink::mojom::ScriptType::kClassic,
|
||||
blink::mojom::ServiceWorkerUpdateViaCache::kImports);
|
||||
blink::StorageKey key(url::Origin::Create(options.scope));
|
||||
public_context()->RegisterServiceWorker(
|
||||
embedded_test_server()->GetURL(kWorkerUrl), options,
|
||||
embedded_test_server()->GetURL(kWorkerUrl), key, options,
|
||||
base::BindOnce(&ExpectRegisterResultAndRun,
|
||||
blink::ServiceWorkerStatusCode::kOk, base::DoNothing()));
|
||||
observer->Wait();
|
||||
@ -604,7 +605,7 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest, FetchPageWithSaveData) {
|
||||
|
||||
base::RunLoop run_loop;
|
||||
public_context()->UnregisterServiceWorker(
|
||||
embedded_test_server()->GetURL(kPageUrl),
|
||||
embedded_test_server()->GetURL(kPageUrl), key,
|
||||
base::BindOnce(&ExpectUnregisterResultAndRun, true,
|
||||
run_loop.QuitClosure()));
|
||||
run_loop.Run();
|
||||
@ -635,8 +636,9 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest, CrossOriginFetchWithSaveData) {
|
||||
embedded_test_server()->GetURL(kPageUrl),
|
||||
blink::mojom::ScriptType::kClassic,
|
||||
blink::mojom::ServiceWorkerUpdateViaCache::kImports);
|
||||
blink::StorageKey key(url::Origin::Create(options.scope));
|
||||
public_context()->RegisterServiceWorker(
|
||||
embedded_test_server()->GetURL(kWorkerUrl), options,
|
||||
embedded_test_server()->GetURL(kWorkerUrl), key, options,
|
||||
base::BindOnce(&ExpectRegisterResultAndRun,
|
||||
blink::ServiceWorkerStatusCode::kOk, base::DoNothing()));
|
||||
observer->Wait();
|
||||
@ -656,7 +658,7 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest, CrossOriginFetchWithSaveData) {
|
||||
|
||||
base::RunLoop run_loop;
|
||||
public_context()->UnregisterServiceWorker(
|
||||
embedded_test_server()->GetURL(kPageUrl),
|
||||
embedded_test_server()->GetURL(kPageUrl), key,
|
||||
base::BindOnce(&ExpectUnregisterResultAndRun, true,
|
||||
run_loop.QuitClosure()));
|
||||
run_loop.Run();
|
||||
@ -683,8 +685,9 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest,
|
||||
embedded_test_server()->GetURL(kPageUrl),
|
||||
blink::mojom::ScriptType::kClassic,
|
||||
blink::mojom::ServiceWorkerUpdateViaCache::kImports);
|
||||
blink::StorageKey key(url::Origin::Create(options.scope));
|
||||
public_context()->RegisterServiceWorker(
|
||||
embedded_test_server()->GetURL(kWorkerUrl), options,
|
||||
embedded_test_server()->GetURL(kWorkerUrl), key, options,
|
||||
base::BindOnce(&ExpectRegisterResultAndRun,
|
||||
blink::ServiceWorkerStatusCode::kOk, base::DoNothing()));
|
||||
observer->Wait();
|
||||
@ -697,7 +700,7 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest,
|
||||
|
||||
base::RunLoop run_loop;
|
||||
public_context()->UnregisterServiceWorker(
|
||||
embedded_test_server()->GetURL(kPageUrl),
|
||||
embedded_test_server()->GetURL(kPageUrl), key,
|
||||
base::BindOnce(&ExpectUnregisterResultAndRun, true,
|
||||
run_loop.QuitClosure()));
|
||||
run_loop.Run();
|
||||
@ -714,8 +717,9 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest, Reload) {
|
||||
embedded_test_server()->GetURL(kPageUrl),
|
||||
blink::mojom::ScriptType::kClassic,
|
||||
blink::mojom::ServiceWorkerUpdateViaCache::kImports);
|
||||
blink::StorageKey key(url::Origin::Create(options.scope));
|
||||
public_context()->RegisterServiceWorker(
|
||||
embedded_test_server()->GetURL(kWorkerUrl), options,
|
||||
embedded_test_server()->GetURL(kWorkerUrl), key, options,
|
||||
base::BindOnce(&ExpectRegisterResultAndRun,
|
||||
blink::ServiceWorkerStatusCode::kOk, base::DoNothing()));
|
||||
observer->Wait();
|
||||
@ -734,7 +738,7 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest, Reload) {
|
||||
|
||||
base::RunLoop run_loop;
|
||||
public_context()->UnregisterServiceWorker(
|
||||
embedded_test_server()->GetURL(kPageUrl),
|
||||
embedded_test_server()->GetURL(kPageUrl), key,
|
||||
base::BindOnce(&ExpectUnregisterResultAndRun, true,
|
||||
run_loop.QuitClosure()));
|
||||
run_loop.Run();
|
||||
@ -760,8 +764,9 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest, IdleTimerWithDevTools) {
|
||||
blink::mojom::ServiceWorkerRegistrationOptions options(
|
||||
scope, blink::mojom::ScriptType::kClassic,
|
||||
blink::mojom::ServiceWorkerUpdateViaCache::kNone);
|
||||
blink::StorageKey key(url::Origin::Create(options.scope));
|
||||
public_context()->RegisterServiceWorker(
|
||||
worker_url, options,
|
||||
worker_url, key, options,
|
||||
base::BindOnce(&ExpectRegisterResultAndRun,
|
||||
blink::ServiceWorkerStatusCode::kOk, base::DoNothing()));
|
||||
observer->Wait();
|
||||
@ -853,8 +858,9 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest,
|
||||
blink::mojom::ServiceWorkerRegistrationOptions options(
|
||||
https_server.GetURL(kPageUrl), blink::mojom::ScriptType::kClassic,
|
||||
blink::mojom::ServiceWorkerUpdateViaCache::kImports);
|
||||
blink::StorageKey key(url::Origin::Create(options.scope));
|
||||
public_context()->RegisterServiceWorker(
|
||||
https_server.GetURL(kWorkerUrl), options,
|
||||
https_server.GetURL(kWorkerUrl), key, options,
|
||||
base::BindOnce(&ExpectRegisterResultAndRun,
|
||||
blink::ServiceWorkerStatusCode::kOk, base::DoNothing()));
|
||||
observer->Wait();
|
||||
@ -883,8 +889,8 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest,
|
||||
wrapper(), ServiceWorkerVersion::ACTIVATED);
|
||||
observer->Init();
|
||||
GURL url = https_server.GetURL(kPageUrl);
|
||||
wrapper()->UpdateRegistration(url,
|
||||
blink::StorageKey(url::Origin::Create(url)));
|
||||
blink::StorageKey key(url::Origin::Create(url));
|
||||
wrapper()->UpdateRegistration(url, key);
|
||||
observer->Wait();
|
||||
|
||||
// Wait until the page is appropriately served by the service worker.
|
||||
@ -900,8 +906,10 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest,
|
||||
shell()->Close();
|
||||
|
||||
base::RunLoop run_loop;
|
||||
GURL url = https_server.GetURL(kPageUrl);
|
||||
blink::StorageKey key(url::Origin::Create(url));
|
||||
public_context()->UnregisterServiceWorker(
|
||||
https_server.GetURL(kPageUrl),
|
||||
url, key,
|
||||
base::BindOnce(&ExpectUnregisterResultAndRun, true,
|
||||
run_loop.QuitClosure()));
|
||||
run_loop.Run();
|
||||
@ -919,8 +927,9 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest,
|
||||
embedded_test_server()->GetURL(kPageUrl),
|
||||
blink::mojom::ScriptType::kClassic,
|
||||
blink::mojom::ServiceWorkerUpdateViaCache::kImports);
|
||||
blink::StorageKey key(url::Origin::Create(options.scope));
|
||||
public_context()->RegisterServiceWorker(
|
||||
embedded_test_server()->GetURL(kWorkerUrl), options,
|
||||
embedded_test_server()->GetURL(kWorkerUrl), key, options,
|
||||
base::BindOnce(&ExpectRegisterResultAndRun,
|
||||
blink::ServiceWorkerStatusCode::kOk, base::DoNothing()));
|
||||
observer->Wait();
|
||||
@ -940,7 +949,7 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest,
|
||||
|
||||
base::RunLoop run_loop;
|
||||
public_context()->UnregisterServiceWorker(
|
||||
embedded_test_server()->GetURL(kPageUrl),
|
||||
embedded_test_server()->GetURL(kPageUrl), key,
|
||||
base::BindOnce(&ExpectUnregisterResultAndRun, true,
|
||||
run_loop.QuitClosure()));
|
||||
run_loop.Run();
|
||||
@ -998,8 +1007,9 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest, StartWorkerWhileInstalling) {
|
||||
embedded_test_server()->GetURL(kWorkerUrl),
|
||||
blink::mojom::ScriptType::kClassic,
|
||||
blink::mojom::ServiceWorkerUpdateViaCache::kImports);
|
||||
blink::StorageKey key(url::Origin::Create(options.scope));
|
||||
public_context()->RegisterServiceWorker(
|
||||
embedded_test_server()->GetURL(kWorkerUrl), options,
|
||||
embedded_test_server()->GetURL(kWorkerUrl), key, options,
|
||||
base::BindOnce(&ExpectRegisterResultAndRun,
|
||||
blink::ServiceWorkerStatusCode::kOk, base::DoNothing()));
|
||||
observer->Wait();
|
||||
@ -1265,8 +1275,9 @@ class ServiceWorkerNavigationPreloadTest : public ServiceWorkerBrowserTest {
|
||||
blink::mojom::ServiceWorkerRegistrationOptions options(
|
||||
scope, blink::mojom::ScriptType::kClassic,
|
||||
blink::mojom::ServiceWorkerUpdateViaCache::kImports);
|
||||
blink::StorageKey key(url::Origin::Create(options.scope));
|
||||
public_context()->RegisterServiceWorker(
|
||||
worker_url, options,
|
||||
worker_url, key, options,
|
||||
base::BindOnce(&ExpectRegisterResultAndRun,
|
||||
blink::ServiceWorkerStatusCode::kOk, base::DoNothing()));
|
||||
observer->Wait();
|
||||
@ -2064,8 +2075,10 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerBlackBoxBrowserTest, Registration) {
|
||||
// Unregistering nothing should return false.
|
||||
{
|
||||
base::RunLoop run_loop;
|
||||
GURL url = embedded_test_server()->GetURL("/");
|
||||
blink::StorageKey key(url::Origin::Create(url));
|
||||
public_context()->UnregisterServiceWorker(
|
||||
embedded_test_server()->GetURL("/"),
|
||||
embedded_test_server()->GetURL("/"), key,
|
||||
base::BindOnce(&ExpectUnregisterResultAndRun, false,
|
||||
run_loop.QuitClosure()));
|
||||
run_loop.Run();
|
||||
@ -2078,8 +2091,9 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerBlackBoxBrowserTest, Registration) {
|
||||
embedded_test_server()->GetURL(kScope),
|
||||
blink::mojom::ScriptType::kClassic,
|
||||
blink::mojom::ServiceWorkerUpdateViaCache::kImports);
|
||||
blink::StorageKey key(url::Origin::Create(options.scope));
|
||||
public_context()->RegisterServiceWorker(
|
||||
embedded_test_server()->GetURL("/does/not/exist"), options,
|
||||
embedded_test_server()->GetURL("/does/not/exist"), key, options,
|
||||
base::BindOnce(&ExpectRegisterResultAndRun,
|
||||
blink::ServiceWorkerStatusCode::kErrorNetwork,
|
||||
run_loop.QuitClosure()));
|
||||
@ -2094,8 +2108,9 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerBlackBoxBrowserTest, Registration) {
|
||||
embedded_test_server()->GetURL(kScope),
|
||||
blink::mojom::ScriptType::kClassic,
|
||||
blink::mojom::ServiceWorkerUpdateViaCache::kImports);
|
||||
blink::StorageKey key(url::Origin::Create(options.scope));
|
||||
public_context()->RegisterServiceWorker(
|
||||
embedded_test_server()->GetURL(kWorkerUrl), options,
|
||||
embedded_test_server()->GetURL(kWorkerUrl), key, options,
|
||||
base::BindOnce(&ExpectRegisterResultAndRun,
|
||||
blink::ServiceWorkerStatusCode::kOk,
|
||||
run_loop.QuitClosure()));
|
||||
@ -2111,8 +2126,9 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerBlackBoxBrowserTest, Registration) {
|
||||
embedded_test_server()->GetURL(kScope),
|
||||
blink::mojom::ScriptType::kClassic,
|
||||
blink::mojom::ServiceWorkerUpdateViaCache::kImports);
|
||||
blink::StorageKey key(url::Origin::Create(options.scope));
|
||||
public_context()->RegisterServiceWorker(
|
||||
embedded_test_server()->GetURL(kWorkerUrl), options,
|
||||
embedded_test_server()->GetURL(kWorkerUrl), key, options,
|
||||
base::BindOnce(&ExpectRegisterResultAndRun,
|
||||
blink::ServiceWorkerStatusCode::kOk,
|
||||
run_loop.QuitClosure()));
|
||||
@ -2126,8 +2142,10 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerBlackBoxBrowserTest, Registration) {
|
||||
// Unregistering something should return true.
|
||||
{
|
||||
base::RunLoop run_loop;
|
||||
GURL url = embedded_test_server()->GetURL(kScope);
|
||||
blink::StorageKey key(url::Origin::Create(url));
|
||||
public_context()->UnregisterServiceWorker(
|
||||
embedded_test_server()->GetURL(kScope),
|
||||
url, key,
|
||||
base::BindOnce(&ExpectUnregisterResultAndRun, true,
|
||||
run_loop.QuitClosure()));
|
||||
run_loop.Run();
|
||||
@ -2271,8 +2289,9 @@ class ServiceWorkerV8CodeCacheForCacheStorageTest
|
||||
embedded_test_server()->GetURL(kPageUrl),
|
||||
blink::mojom::ScriptType::kClassic,
|
||||
blink::mojom::ServiceWorkerUpdateViaCache::kImports);
|
||||
blink::StorageKey key(url::Origin::Create(options.scope));
|
||||
public_context()->RegisterServiceWorker(
|
||||
embedded_test_server()->GetURL(GetWorkerURL()), options,
|
||||
embedded_test_server()->GetURL(GetWorkerURL()), key, options,
|
||||
base::BindOnce(&ExpectRegisterResultAndRun,
|
||||
blink::ServiceWorkerStatusCode::kOk, base::DoNothing()));
|
||||
observer->Wait();
|
||||
@ -2613,8 +2632,9 @@ class ServiceWorkerDisableWebSecurityTest : public ServiceWorkerBrowserTest {
|
||||
blink::mojom::ServiceWorkerRegistrationOptions options(
|
||||
cross_origin_server_.GetURL(scope), blink::mojom::ScriptType::kClassic,
|
||||
blink::mojom::ServiceWorkerUpdateViaCache::kImports);
|
||||
blink::StorageKey key(url::Origin::Create(options.scope));
|
||||
public_context()->RegisterServiceWorker(
|
||||
cross_origin_server_.GetURL(script), options,
|
||||
cross_origin_server_.GetURL(script), key, options,
|
||||
base::BindOnce(&ExpectRegisterResultAndRun,
|
||||
blink::ServiceWorkerStatusCode::kOk, base::DoNothing()));
|
||||
observer->Wait();
|
||||
@ -2918,8 +2938,9 @@ class ServiceWorkerThrottlingTest : public ServiceWorkerBrowserTest {
|
||||
embedded_test_server()->GetURL(scope),
|
||||
blink::mojom::ScriptType::kClassic,
|
||||
blink::mojom::ServiceWorkerUpdateViaCache::kImports);
|
||||
blink::StorageKey key(url::Origin::Create(options.scope));
|
||||
public_context()->RegisterServiceWorker(
|
||||
embedded_test_server()->GetURL(script_url), options,
|
||||
embedded_test_server()->GetURL(script_url), key, options,
|
||||
base::BindOnce(&ExpectRegisterResultAndRun,
|
||||
blink::ServiceWorkerStatusCode::kOk, base::DoNothing()));
|
||||
observer->Wait();
|
||||
@ -3624,8 +3645,10 @@ IN_PROC_BROWSER_TEST_F(
|
||||
|
||||
{
|
||||
base::RunLoop loop;
|
||||
GURL url = embedded_test_server()->GetURL("/");
|
||||
blink::StorageKey key(url::Origin::Create(url));
|
||||
public_context()->UnregisterServiceWorker(
|
||||
embedded_test_server()->GetURL("/"),
|
||||
url, key,
|
||||
base::BindOnce(&ExpectUnregisterResultAndRun, true,
|
||||
loop.QuitClosure()));
|
||||
loop.Run();
|
||||
|
@ -572,7 +572,8 @@ TEST_F(ServiceWorkerContextTest, OnVersionRunningStatusChangedObserver) {
|
||||
/*requesting_frame_id=*/GlobalRenderFrameHostId());
|
||||
run_loop.Run();
|
||||
|
||||
context_wrapper()->StopAllServiceWorkersForOrigin(url::Origin::Create(scope));
|
||||
context_wrapper()->StopAllServiceWorkersForStorageKey(
|
||||
blink::StorageKey(url::Origin::Create(scope)));
|
||||
base::RunLoop().RunUntilIdle();
|
||||
|
||||
std::vector<TestServiceWorkerContextObserver::EventLog> events;
|
||||
|
@ -458,6 +458,7 @@ void ServiceWorkerContextWrapper::RemoveObserver(
|
||||
|
||||
void ServiceWorkerContextWrapper::RegisterServiceWorker(
|
||||
const GURL& script_url,
|
||||
const blink::StorageKey& key,
|
||||
const blink::mojom::ServiceWorkerRegistrationOptions& options,
|
||||
StatusCodeCallback callback) {
|
||||
DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||
@ -474,11 +475,8 @@ void ServiceWorkerContextWrapper::RegisterServiceWorker(
|
||||
options.update_via_cache);
|
||||
// TODO(bashi): Pass a valid outside fetch client settings object. Perhaps
|
||||
// changing this method to take a settings object.
|
||||
// TODO(crbug.com/1199077): Update this when ServiceWorkerContextWrapper
|
||||
// implements StorageKey.
|
||||
context()->RegisterServiceWorker(
|
||||
net::SimplifyUrlForRequest(script_url),
|
||||
blink::StorageKey(url::Origin::Create(options.scope)), options_to_pass,
|
||||
net::SimplifyUrlForRequest(script_url), key, options_to_pass,
|
||||
blink::mojom::FetchClientSettingsObject::New(
|
||||
network::mojom::ReferrerPolicy::kDefault,
|
||||
/*outgoing_referrer=*/script_url,
|
||||
@ -492,6 +490,7 @@ void ServiceWorkerContextWrapper::RegisterServiceWorker(
|
||||
|
||||
void ServiceWorkerContextWrapper::UnregisterServiceWorker(
|
||||
const GURL& scope,
|
||||
const blink::StorageKey& key,
|
||||
ResultCallback callback) {
|
||||
DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||
|
||||
@ -500,11 +499,8 @@ void ServiceWorkerContextWrapper::UnregisterServiceWorker(
|
||||
FROM_HERE, base::BindOnce(std::move(callback), false));
|
||||
return;
|
||||
}
|
||||
// TODO(crbug.com/1199077): Update this when ServiceWorkerContextWrapper
|
||||
// implements StorageKey.
|
||||
context()->UnregisterServiceWorker(
|
||||
net::SimplifyUrlForRequest(scope),
|
||||
blink::StorageKey(url::Origin::Create(scope)), /*is_immediate=*/false,
|
||||
net::SimplifyUrlForRequest(scope), key, /*is_immediate=*/false,
|
||||
WrapResultCallbackToTakeStatusCode(std::move(callback)));
|
||||
}
|
||||
|
||||
@ -537,14 +533,14 @@ ServiceWorkerContextWrapper::FinishedExternalRequest(
|
||||
}
|
||||
|
||||
size_t ServiceWorkerContextWrapper::CountExternalRequestsForTest(
|
||||
const url::Origin& origin) {
|
||||
const blink::StorageKey& key) {
|
||||
DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||
|
||||
std::vector<ServiceWorkerVersionInfo> live_version_info =
|
||||
GetAllLiveVersionInfo();
|
||||
for (const ServiceWorkerVersionInfo& info : live_version_info) {
|
||||
ServiceWorkerVersion* version = GetLiveVersion(info.version_id);
|
||||
if (version && version->key().origin() == origin) {
|
||||
if (version && version->key() == key) {
|
||||
return version->GetExternalRequestCountForTest(); // IN-TEST
|
||||
}
|
||||
}
|
||||
@ -578,14 +574,14 @@ void ServiceWorkerContextWrapper::GetAllOriginsInfo(
|
||||
this, std::move(callback)));
|
||||
}
|
||||
|
||||
void ServiceWorkerContextWrapper::DeleteForOrigin(const url::Origin& origin,
|
||||
ResultCallback callback) {
|
||||
void ServiceWorkerContextWrapper::DeleteForStorageKey(
|
||||
const blink::StorageKey& key,
|
||||
ResultCallback callback) {
|
||||
RunOrPostTaskOnThread(
|
||||
FROM_HERE, BrowserThread::UI,
|
||||
base::BindOnce(
|
||||
&ServiceWorkerContextWrapper::DeleteForStorageKeyOnUIThread, this,
|
||||
blink::StorageKey(origin), std::move(callback),
|
||||
base::ThreadTaskRunnerHandle::Get()));
|
||||
key, std::move(callback), base::ThreadTaskRunnerHandle::Get()));
|
||||
}
|
||||
|
||||
void ServiceWorkerContextWrapper::DeleteForStorageKeyOnUIThread(
|
||||
@ -598,8 +594,6 @@ void ServiceWorkerContextWrapper::DeleteForStorageKeyOnUIThread(
|
||||
base::BindOnce(std::move(callback), false));
|
||||
return;
|
||||
}
|
||||
// TODO(crbug.com/1199077): Update this when ServiceWorkerContextWrapper
|
||||
// implements StorageKey.
|
||||
context()->DeleteForStorageKey(
|
||||
key,
|
||||
base::BindOnce(
|
||||
@ -616,6 +610,7 @@ void ServiceWorkerContextWrapper::DeleteForStorageKeyOnUIThread(
|
||||
|
||||
void ServiceWorkerContextWrapper::CheckHasServiceWorker(
|
||||
const GURL& url,
|
||||
const blink::StorageKey& key,
|
||||
CheckHasServiceWorkerCallback callback) {
|
||||
DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||
|
||||
@ -625,15 +620,13 @@ void ServiceWorkerContextWrapper::CheckHasServiceWorker(
|
||||
ServiceWorkerCapability::NO_SERVICE_WORKER));
|
||||
return;
|
||||
}
|
||||
// TODO(crbug.com/1199077): Update this when ServiceWorkerContextWrapper
|
||||
// implements StorageKey.
|
||||
context()->CheckHasServiceWorker(net::SimplifyUrlForRequest(url),
|
||||
blink::StorageKey(url::Origin::Create(url)),
|
||||
context()->CheckHasServiceWorker(net::SimplifyUrlForRequest(url), key,
|
||||
std::move(callback));
|
||||
}
|
||||
|
||||
void ServiceWorkerContextWrapper::CheckOfflineCapability(
|
||||
const GURL& url,
|
||||
const blink::StorageKey& key,
|
||||
CheckOfflineCapabilityCallback callback) {
|
||||
DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||
|
||||
@ -644,10 +637,7 @@ void ServiceWorkerContextWrapper::CheckOfflineCapability(
|
||||
blink::mojom::kInvalidServiceWorkerRegistrationId));
|
||||
return;
|
||||
}
|
||||
// TODO(crbug.com/1199077): Update this when ServiceWorkerContextWrapper
|
||||
// implements StorageKey.
|
||||
context()->CheckOfflineCapability(net::SimplifyUrlForRequest(url),
|
||||
blink::StorageKey(url::Origin::Create(url)),
|
||||
context()->CheckOfflineCapability(net::SimplifyUrlForRequest(url), key,
|
||||
std::move(callback));
|
||||
}
|
||||
|
||||
@ -665,11 +655,12 @@ void ServiceWorkerContextWrapper::ClearAllServiceWorkersForTest(
|
||||
|
||||
void ServiceWorkerContextWrapper::StartWorkerForScope(
|
||||
const GURL& scope,
|
||||
const blink::StorageKey& key,
|
||||
StartWorkerCallback info_callback,
|
||||
StatusCodeCallback failure_callback) {
|
||||
DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||
FindRegistrationForScopeImpl(
|
||||
scope, blink::StorageKey(url::Origin::Create(scope)),
|
||||
scope, key,
|
||||
/*include_installing_version=*/true,
|
||||
base::BindOnce(&FoundRegistrationForStartWorker, std::move(info_callback),
|
||||
std::move(failure_callback)));
|
||||
@ -677,14 +668,14 @@ void ServiceWorkerContextWrapper::StartWorkerForScope(
|
||||
|
||||
void ServiceWorkerContextWrapper::StartServiceWorkerAndDispatchMessage(
|
||||
const GURL& scope,
|
||||
const blink::StorageKey& key,
|
||||
blink::TransferableMessage message,
|
||||
ResultCallback result_callback) {
|
||||
RunOrPostTaskOnThread(
|
||||
FROM_HERE, BrowserThread::UI,
|
||||
base::BindOnce(&ServiceWorkerContextWrapper::
|
||||
StartServiceWorkerAndDispatchMessageOnUIThread,
|
||||
this, scope, blink::StorageKey(url::Origin::Create(scope)),
|
||||
std::move(message),
|
||||
this, scope, key, std::move(message),
|
||||
base::BindOnce(
|
||||
[](ResultCallback callback,
|
||||
scoped_refptr<base::TaskRunner> callback_runner,
|
||||
@ -772,6 +763,7 @@ void ServiceWorkerContextWrapper::DidStartServiceWorkerForMessageDispatch(
|
||||
|
||||
void ServiceWorkerContextWrapper::StartServiceWorkerForNavigationHint(
|
||||
const GURL& document_url,
|
||||
const blink::StorageKey& key,
|
||||
StartServiceWorkerForNavigationHintCallback callback) {
|
||||
TRACE_EVENT1("ServiceWorker", "StartServiceWorkerForNavigationHint",
|
||||
"document_url", document_url.spec());
|
||||
@ -792,15 +784,14 @@ void ServiceWorkerContextWrapper::StartServiceWorkerForNavigationHint(
|
||||
return;
|
||||
}
|
||||
context_core_->registry()->FindRegistrationForClientUrl(
|
||||
net::SimplifyUrlForRequest(document_url),
|
||||
blink::StorageKey(url::Origin::Create(document_url)),
|
||||
net::SimplifyUrlForRequest(document_url), key,
|
||||
base::BindOnce(
|
||||
&ServiceWorkerContextWrapper::DidFindRegistrationForNavigationHint,
|
||||
this, std::move(callback_with_recording_metrics)));
|
||||
}
|
||||
|
||||
void ServiceWorkerContextWrapper::StopAllServiceWorkersForOrigin(
|
||||
const url::Origin& origin) {
|
||||
void ServiceWorkerContextWrapper::StopAllServiceWorkersForStorageKey(
|
||||
const blink::StorageKey& key) {
|
||||
DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||
if (!context_core_.get()) {
|
||||
return;
|
||||
@ -808,7 +799,7 @@ void ServiceWorkerContextWrapper::StopAllServiceWorkersForOrigin(
|
||||
std::vector<ServiceWorkerVersionInfo> live_versions = GetAllLiveVersionInfo();
|
||||
for (const ServiceWorkerVersionInfo& info : live_versions) {
|
||||
ServiceWorkerVersion* version = GetLiveVersion(info.version_id);
|
||||
if (version && version->key().origin() == origin)
|
||||
if (version && version->key() == key)
|
||||
version->StopWorker(base::DoNothing());
|
||||
}
|
||||
}
|
||||
|
@ -153,9 +153,11 @@ class CONTENT_EXPORT ServiceWorkerContextWrapper
|
||||
void RemoveObserver(ServiceWorkerContextObserver* observer) override;
|
||||
void RegisterServiceWorker(
|
||||
const GURL& script_url,
|
||||
const blink::StorageKey& key,
|
||||
const blink::mojom::ServiceWorkerRegistrationOptions& options,
|
||||
StatusCodeCallback callback) override;
|
||||
void UnregisterServiceWorker(const GURL& scope,
|
||||
const blink::StorageKey& key,
|
||||
ResultCallback callback) override;
|
||||
ServiceWorkerExternalRequestResult StartingExternalRequest(
|
||||
int64_t service_worker_version_id,
|
||||
@ -163,28 +165,34 @@ class CONTENT_EXPORT ServiceWorkerContextWrapper
|
||||
ServiceWorkerExternalRequestResult FinishedExternalRequest(
|
||||
int64_t service_worker_version_id,
|
||||
const std::string& request_uuid) override;
|
||||
size_t CountExternalRequestsForTest(const url::Origin& origin) override;
|
||||
size_t CountExternalRequestsForTest(const blink::StorageKey& key) override;
|
||||
bool MaybeHasRegistrationForOrigin(const url::Origin& origin) override;
|
||||
void GetAllOriginsInfo(GetUsageInfoCallback callback) override;
|
||||
void DeleteForOrigin(const url::Origin& origin,
|
||||
ResultCallback callback) override;
|
||||
void DeleteForStorageKey(const blink::StorageKey& key,
|
||||
ResultCallback callback) override;
|
||||
void CheckHasServiceWorker(const GURL& url,
|
||||
const blink::StorageKey& key,
|
||||
CheckHasServiceWorkerCallback callback) override;
|
||||
void CheckOfflineCapability(const GURL& url,
|
||||
const blink::StorageKey& key,
|
||||
CheckOfflineCapabilityCallback callback) override;
|
||||
|
||||
void ClearAllServiceWorkersForTest(base::OnceClosure callback) override;
|
||||
void StartWorkerForScope(const GURL& scope,
|
||||
const blink::StorageKey& key,
|
||||
StartWorkerCallback info_callback,
|
||||
StatusCodeCallback failure_callback) override;
|
||||
void StartServiceWorkerAndDispatchMessage(
|
||||
const GURL& scope,
|
||||
const blink::StorageKey& key,
|
||||
blink::TransferableMessage message,
|
||||
ResultCallback result_callback) override;
|
||||
void StartServiceWorkerForNavigationHint(
|
||||
const GURL& document_url,
|
||||
const blink::StorageKey& key,
|
||||
StartServiceWorkerForNavigationHintCallback callback) override;
|
||||
void StopAllServiceWorkersForOrigin(const url::Origin& origin) override;
|
||||
void StopAllServiceWorkersForStorageKey(
|
||||
const blink::StorageKey& key) override;
|
||||
void StopAllServiceWorkers(base::OnceClosure callback) override;
|
||||
const base::flat_map<int64_t, ServiceWorkerRunningInfo>&
|
||||
GetRunningServiceWorkerInfos() override;
|
||||
|
@ -153,12 +153,12 @@ TEST_F(ServiceWorkerContextWrapperTest, HasRegistration) {
|
||||
url::Origin::Create(GURL("https://example.org"))));
|
||||
}
|
||||
|
||||
// This test involves storing two registrations for the same origin to storage
|
||||
// and deleting one of them to check that MaybeHasRegistrationForOrigin still
|
||||
// correctly returns TRUE since there is still one registration for the origin,
|
||||
// and should only return FALSE when ALL registrations for that origin have been
|
||||
// deleted from storage.
|
||||
TEST_F(ServiceWorkerContextWrapperTest, DeleteRegistrationsForSameOrigin) {
|
||||
// This test involves storing two registrations for the same key to storage
|
||||
// and deleting one of them to check that MaybeHasRegistrationForOrigin
|
||||
// still correctly returns TRUE since there is still one registration for the
|
||||
// key, and should only return FALSE when ALL registrations for that key
|
||||
// have been deleted from storage.
|
||||
TEST_F(ServiceWorkerContextWrapperTest, DeleteRegistrationsForSameKey) {
|
||||
wrapper_->WaitForRegistrationsInitializedForTest();
|
||||
|
||||
// Make two registrations for same origin.
|
||||
@ -186,10 +186,10 @@ TEST_F(ServiceWorkerContextWrapperTest, DeleteRegistrationsForSameOrigin) {
|
||||
|
||||
// Run loop until idle to wait for
|
||||
// ServiceWorkerRegistry::DidDeleteRegistration() to be executed, and make
|
||||
// sure that NotifyAllRegistrationsDeletedForOrigin() is not called.
|
||||
// sure that NotifyAllRegistrationsDeletedForStorageKey() is not called.
|
||||
base::RunLoop().RunUntilIdle();
|
||||
|
||||
// Now test that a registration for an origin is still recognized.
|
||||
// Now test that a registration for a key is still recognized.
|
||||
EXPECT_TRUE(wrapper_->MaybeHasRegistrationForOrigin(
|
||||
url::Origin::Create(GURL("https://example1.com"))));
|
||||
|
||||
@ -199,10 +199,10 @@ TEST_F(ServiceWorkerContextWrapperTest, DeleteRegistrationsForSameOrigin) {
|
||||
|
||||
// Run loop until idle to wait for
|
||||
// ServiceWorkerRegistry::DidDeleteRegistration() to be executed, and make
|
||||
// sure that this time NotifyAllRegistrationsDeletedForOrigin() is called.
|
||||
// sure that this time NotifyAllRegistrationsDeletedForStorageKey() is called.
|
||||
base::RunLoop().RunUntilIdle();
|
||||
|
||||
// Now test that origin does not have any registrations.
|
||||
// Now test that key does not have any registrations.
|
||||
EXPECT_FALSE(wrapper_->MaybeHasRegistrationForOrigin(
|
||||
url::Origin::Create(GURL("https://example1.com"))));
|
||||
}
|
||||
@ -239,7 +239,7 @@ TEST_F(ServiceWorkerContextWrapperTest, DeleteRegistration) {
|
||||
// Finish deleting registration from storage.
|
||||
base::RunLoop().RunUntilIdle();
|
||||
|
||||
// Now test that origin does not have any registrations. This should return
|
||||
// Now test that key does not have any registrations. This should return
|
||||
// FALSE even when live registrations may exist, as the registrations have
|
||||
// been deleted from storage.
|
||||
EXPECT_FALSE(wrapper_->MaybeHasRegistrationForOrigin(
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include "mojo/public/cpp/bindings/pending_associated_receiver.h"
|
||||
#include "mojo/public/cpp/bindings/pending_associated_remote.h"
|
||||
#include "third_party/abseil-cpp/absl/types/optional.h"
|
||||
#include "url/origin.h"
|
||||
|
||||
namespace content {
|
||||
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include "third_party/blink/public/common/service_worker/service_worker_status_code.h"
|
||||
#include "third_party/blink/public/common/storage_key/storage_key.h"
|
||||
#include "url/gurl.h"
|
||||
#include "url/origin.h"
|
||||
|
||||
namespace content {
|
||||
|
||||
@ -275,8 +276,9 @@ class ServiceWorkerOfflineCapabilityCheckBrowserTest
|
||||
void CheckOfflineCapabilityOnCoreThread(
|
||||
const std::string& path,
|
||||
ServiceWorkerContext::CheckOfflineCapabilityCallback callback) {
|
||||
wrapper()->CheckOfflineCapability(embedded_test_server()->GetURL(path),
|
||||
std::move(callback));
|
||||
GURL url = embedded_test_server()->GetURL(path);
|
||||
wrapper()->CheckOfflineCapability(
|
||||
url, blink::StorageKey(url::Origin::Create(url)), std::move(callback));
|
||||
}
|
||||
|
||||
OfflineCapability CheckOfflineCapability(const std::string& path) {
|
||||
|
@ -22,6 +22,8 @@
|
||||
#include "content/shell/browser/shell.h"
|
||||
#include "content/test/test_content_browser_client.h"
|
||||
#include "net/dns/mock_host_resolver.h"
|
||||
#include "third_party/blink/public/common/storage_key/storage_key.h"
|
||||
#include "url/origin.h"
|
||||
|
||||
// This file has tests involving render process selection for service workers.
|
||||
|
||||
@ -205,6 +207,7 @@ IN_PROC_BROWSER_TEST_P(
|
||||
base::BindOnce(
|
||||
&ServiceWorkerContextWrapper::StartWorkerForScope,
|
||||
std::move(wrapper_ref), scope,
|
||||
blink::StorageKey(url::Origin::Create(scope)),
|
||||
base::BindLambdaForTesting(
|
||||
[&](int64_t version_id, int process_id, int thread_id) {
|
||||
worker_process_id = process_id;
|
||||
|
@ -1258,12 +1258,13 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest,
|
||||
embedded_test_server()->GetURL(kScope),
|
||||
blink::mojom::ScriptType::kClassic,
|
||||
blink::mojom::ServiceWorkerUpdateViaCache::kAll);
|
||||
blink::StorageKey key(url::Origin::Create(options.scope));
|
||||
|
||||
// Register and wait for activation.
|
||||
auto observer = base::MakeRefCounted<WorkerActivatedObserver>(wrapper());
|
||||
observer->Init();
|
||||
public_context()->RegisterServiceWorker(
|
||||
embedded_test_server()->GetURL(kWorkerUrl), options,
|
||||
embedded_test_server()->GetURL(kWorkerUrl), key, options,
|
||||
base::BindOnce(&ExpectRegisterResultAndRun,
|
||||
blink::ServiceWorkerStatusCode::kOk, base::DoNothing()));
|
||||
observer->Wait();
|
||||
@ -1311,7 +1312,7 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest,
|
||||
// Tidy up.
|
||||
base::RunLoop run_loop;
|
||||
public_context()->UnregisterServiceWorker(
|
||||
embedded_test_server()->GetURL(kScope),
|
||||
embedded_test_server()->GetURL(kScope), key,
|
||||
base::BindOnce(&ExpectUnregisterResultAndRun, true,
|
||||
run_loop.QuitClosure()));
|
||||
run_loop.Run();
|
||||
@ -1333,10 +1334,11 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest,
|
||||
embedded_test_server()->GetURL(kScope),
|
||||
blink::mojom::ScriptType::kClassic,
|
||||
blink::mojom::ServiceWorkerUpdateViaCache::kNone);
|
||||
blink::StorageKey key(url::Origin::Create(options.scope));
|
||||
auto observer = base::MakeRefCounted<WorkerActivatedObserver>(wrapper());
|
||||
observer->Init();
|
||||
public_context()->RegisterServiceWorker(
|
||||
embedded_test_server()->GetURL(kWorkerUrl), options,
|
||||
embedded_test_server()->GetURL(kWorkerUrl), key, options,
|
||||
base::BindOnce(&ExpectRegisterResultAndRun,
|
||||
blink::ServiceWorkerStatusCode::kOk, base::DoNothing()));
|
||||
observer->Wait();
|
||||
@ -1355,7 +1357,7 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest,
|
||||
// Tidy up.
|
||||
base::RunLoop run_loop;
|
||||
public_context()->UnregisterServiceWorker(
|
||||
embedded_test_server()->GetURL(kScope),
|
||||
embedded_test_server()->GetURL(kScope), key,
|
||||
base::BindOnce(&ExpectUnregisterResultAndRun, true,
|
||||
run_loop.QuitClosure()));
|
||||
run_loop.Run();
|
||||
|
@ -19,6 +19,10 @@
|
||||
#include "third_party/blink/public/mojom/service_worker/service_worker_registration.mojom-forward.h"
|
||||
#include "third_party/blink/public/mojom/service_worker/service_worker_registration_options.mojom-forward.h"
|
||||
|
||||
namespace blink {
|
||||
class StorageKey;
|
||||
} // namespace blink
|
||||
|
||||
namespace url {
|
||||
class Origin;
|
||||
} // namespace url
|
||||
@ -114,27 +118,29 @@ class CONTENT_EXPORT ServiceWorkerContext {
|
||||
virtual void RemoveObserver(ServiceWorkerContextObserver* observer) = 0;
|
||||
|
||||
// Equivalent to calling navigator.serviceWorker.register(script_url,
|
||||
// options). |callback| is passed true when the JS promise is fulfilled or
|
||||
// false when the JS promise is rejected.
|
||||
// options) for a given `key`. `callback` is passed true when the JS promise
|
||||
// is fulfilled or false when the JS promise is rejected.
|
||||
//
|
||||
// The registration can fail if:
|
||||
// * |script_url| is on a different origin from |scope|
|
||||
// * Fetching |script_url| fails.
|
||||
// * |script_url| fails to parse or its top-level execution fails.
|
||||
// * `script_url` is on a different origin from `scope`
|
||||
// * Fetching `script_url` fails.
|
||||
// * `script_url` fails to parse or its top-level execution fails.
|
||||
// * Something unexpected goes wrong, like a renderer crash or a full disk.
|
||||
virtual void RegisterServiceWorker(
|
||||
const GURL& script_url,
|
||||
const blink::StorageKey& key,
|
||||
const blink::mojom::ServiceWorkerRegistrationOptions& options,
|
||||
StatusCodeCallback callback) = 0;
|
||||
|
||||
// Equivalent to calling ServiceWorkerRegistration#unregister on the
|
||||
// registration for |scope|. |callback| is passed true when the JS promise is
|
||||
// registration for `scope`. `callback` is passed true when the JS promise is
|
||||
// fulfilled or false when the JS promise is rejected.
|
||||
//
|
||||
// Unregistration can fail if:
|
||||
// * No registration exists for |scope|.
|
||||
// * No registration exists for `scope`.
|
||||
// * Something unexpected goes wrong, like a renderer crash.
|
||||
virtual void UnregisterServiceWorker(const GURL& scope,
|
||||
const blink::StorageKey& key,
|
||||
ResultCallback callback) = 0;
|
||||
|
||||
// Mechanism for embedder to increment/decrement ref count of a service
|
||||
@ -153,32 +159,36 @@ class CONTENT_EXPORT ServiceWorkerContext {
|
||||
const std::string& request_uuid) = 0;
|
||||
|
||||
// Returns the pending external request count for the worker with the
|
||||
// specified |origin|.
|
||||
virtual size_t CountExternalRequestsForTest(const url::Origin& origin) = 0;
|
||||
// specified `key`.
|
||||
virtual size_t CountExternalRequestsForTest(const blink::StorageKey& key) = 0;
|
||||
|
||||
// Whether |origin| has any registrations. Uninstalling and uninstalled
|
||||
// Whether `origin` has any registrations. Uninstalling and uninstalled
|
||||
// registrations do not cause this to return true, that is, only registrations
|
||||
// with status ServiceWorkerRegistration::Status::kIntact are considered, such
|
||||
// as even if the corresponding live registrations may still exist. Also,
|
||||
// returns true if it doesn't know (registrations are not yet initialized).
|
||||
// TODO(crbug.com/1199077): Refactor to use StorageKey once
|
||||
// ServiceWorkerContextWrapper::registered_origins_ is refactored.
|
||||
virtual bool MaybeHasRegistrationForOrigin(const url::Origin& origin) = 0;
|
||||
|
||||
// TODO(crbug.com/1199077): Update name when StorageUsageInfo uses StorageKey.
|
||||
virtual void GetAllOriginsInfo(GetUsageInfoCallback callback) = 0;
|
||||
|
||||
// Deletes all registrations in the origin and clears all service workers
|
||||
// Deletes all registrations for `key` and clears all service workers
|
||||
// belonging to the registrations. All clients controlled by those service
|
||||
// workers will lose their controllers immediately after this operation.
|
||||
// This function can be called from any thread, and the callback is called on
|
||||
// that thread.
|
||||
virtual void DeleteForOrigin(const url::Origin& origin_url,
|
||||
ResultCallback callback) = 0;
|
||||
virtual void DeleteForStorageKey(const blink::StorageKey& key,
|
||||
ResultCallback callback) = 0;
|
||||
|
||||
// Returns ServiceWorkerCapability describing existence and properties of a
|
||||
// Service Worker registration matching |url|. In case the service
|
||||
// Service Worker registration matching `url` and `key`. In case the service
|
||||
// worker is being installed as of calling this method, it will wait for the
|
||||
// installation to finish before coming back with the result.
|
||||
virtual void CheckHasServiceWorker(
|
||||
const GURL& url,
|
||||
const blink::StorageKey& key,
|
||||
CheckHasServiceWorkerCallback callback) = 0;
|
||||
|
||||
// Simulates a navigation request in the offline state and dispatches a fetch
|
||||
@ -189,6 +199,7 @@ class CONTENT_EXPORT ServiceWorkerContext {
|
||||
// |ServiceWorkerContext::CheckHasServiceWorker|.
|
||||
virtual void CheckOfflineCapability(
|
||||
const GURL& url,
|
||||
const blink::StorageKey& key,
|
||||
CheckOfflineCapabilityCallback callback) = 0;
|
||||
|
||||
// Stops all running service workers and unregisters all service worker
|
||||
@ -196,37 +207,41 @@ class CONTENT_EXPORT ServiceWorkerContext {
|
||||
// existing service worker will not affect the succeeding tests.
|
||||
virtual void ClearAllServiceWorkersForTest(base::OnceClosure callback) = 0;
|
||||
|
||||
// Starts the active worker of the registration for the given |scope|. If
|
||||
// there is no active worker, starts the installing worker.
|
||||
// |info_callback| is passed information about the started worker if
|
||||
// successful, otherwise |failure_callback| is passed information about the
|
||||
// Starts the active worker of the registration for the given `scope` and
|
||||
// `key`. If there is no active worker, starts the installing worker.
|
||||
// `info_callback` is passed information about the started worker if
|
||||
// successful, otherwise `failure_callback` is passed information about the
|
||||
// error.
|
||||
//
|
||||
// There is no guarantee about whether the callback is called synchronously or
|
||||
// asynchronously.
|
||||
virtual void StartWorkerForScope(const GURL& scope,
|
||||
const blink::StorageKey& key,
|
||||
StartWorkerCallback info_callback,
|
||||
StatusCodeCallback failure_callback) = 0;
|
||||
|
||||
// Starts the active worker of the registration for the given |scope| and
|
||||
// dispatches the given |message| to the service worker. |result_callback|
|
||||
// is passed a success boolean indicating whether the message was dispatched
|
||||
// successfully.
|
||||
// Starts the active worker of the registration for the given `scope` and
|
||||
// `key` and dispatches the given `message` to the service worker.
|
||||
// `result_callback` is passed a success boolean indicating whether the
|
||||
// message was dispatched successfully.
|
||||
//
|
||||
// May be called on any thread, and the callback is called on that thread.
|
||||
virtual void StartServiceWorkerAndDispatchMessage(
|
||||
const GURL& scope,
|
||||
const blink::StorageKey& key,
|
||||
blink::TransferableMessage message,
|
||||
ResultCallback result_callback) = 0;
|
||||
|
||||
// Starts the service worker for |document_url|. Called when a navigation to
|
||||
// that URL is predicted to occur soon.
|
||||
// Starts the service worker for `document_url` and `key`. Called when a
|
||||
// navigation to that URL is predicted to occur soon.
|
||||
virtual void StartServiceWorkerForNavigationHint(
|
||||
const GURL& document_url,
|
||||
const blink::StorageKey& key,
|
||||
StartServiceWorkerForNavigationHintCallback callback) = 0;
|
||||
|
||||
// Stops all running workers on the given |origin|.
|
||||
virtual void StopAllServiceWorkersForOrigin(const url::Origin& origin) = 0;
|
||||
// Stops all running workers on the given `key`.
|
||||
virtual void StopAllServiceWorkersForStorageKey(
|
||||
const blink::StorageKey& key) = 0;
|
||||
|
||||
// Stops all running service workers.
|
||||
virtual void StopAllServiceWorkers(base::OnceClosure callback) = 0;
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include "base/notreached.h"
|
||||
#include "content/public/browser/service_worker_context_observer.h"
|
||||
#include "third_party/blink/public/common/messaging/transferable_message.h"
|
||||
#include "third_party/blink/public/common/storage_key/storage_key.h"
|
||||
|
||||
namespace content {
|
||||
|
||||
@ -27,12 +28,14 @@ void FakeServiceWorkerContext::RemoveObserver(
|
||||
}
|
||||
void FakeServiceWorkerContext::RegisterServiceWorker(
|
||||
const GURL& script_url,
|
||||
const blink::StorageKey& key,
|
||||
const blink::mojom::ServiceWorkerRegistrationOptions& options,
|
||||
StatusCodeCallback callback) {
|
||||
NOTREACHED();
|
||||
}
|
||||
void FakeServiceWorkerContext::UnregisterServiceWorker(
|
||||
const GURL& scope,
|
||||
const blink::StorageKey& key,
|
||||
ResultCallback callback) {
|
||||
NOTREACHED();
|
||||
}
|
||||
@ -51,7 +54,7 @@ FakeServiceWorkerContext::FinishedExternalRequest(
|
||||
return ServiceWorkerExternalRequestResult::kWorkerNotFound;
|
||||
}
|
||||
size_t FakeServiceWorkerContext::CountExternalRequestsForTest(
|
||||
const url::Origin& origin) {
|
||||
const blink::StorageKey& key) {
|
||||
NOTREACHED();
|
||||
return 0u;
|
||||
}
|
||||
@ -63,17 +66,19 @@ void FakeServiceWorkerContext::GetAllOriginsInfo(
|
||||
GetUsageInfoCallback callback) {
|
||||
NOTREACHED();
|
||||
}
|
||||
void FakeServiceWorkerContext::DeleteForOrigin(const url::Origin& origin,
|
||||
ResultCallback callback) {
|
||||
void FakeServiceWorkerContext::DeleteForStorageKey(const blink::StorageKey& key,
|
||||
ResultCallback callback) {
|
||||
NOTREACHED();
|
||||
}
|
||||
void FakeServiceWorkerContext::CheckHasServiceWorker(
|
||||
const GURL& url,
|
||||
const blink::StorageKey& key,
|
||||
CheckHasServiceWorkerCallback callback) {
|
||||
NOTREACHED();
|
||||
}
|
||||
void FakeServiceWorkerContext::CheckOfflineCapability(
|
||||
const GURL& url,
|
||||
const blink::StorageKey& key,
|
||||
const ServiceWorkerContext::CheckOfflineCapabilityCallback callback) {
|
||||
NOTREACHED();
|
||||
}
|
||||
@ -83,27 +88,30 @@ void FakeServiceWorkerContext::ClearAllServiceWorkersForTest(
|
||||
}
|
||||
void FakeServiceWorkerContext::StartWorkerForScope(
|
||||
const GURL& scope,
|
||||
const blink::StorageKey& key,
|
||||
ServiceWorkerContext::StartWorkerCallback info_callback,
|
||||
ServiceWorkerContext::StatusCodeCallback failure_callback) {
|
||||
NOTREACHED();
|
||||
}
|
||||
void FakeServiceWorkerContext::StartServiceWorkerForNavigationHint(
|
||||
const GURL& document_url,
|
||||
const blink::StorageKey& key,
|
||||
StartServiceWorkerForNavigationHintCallback callback) {
|
||||
start_service_worker_for_navigation_hint_called_ = true;
|
||||
}
|
||||
|
||||
void FakeServiceWorkerContext::StartServiceWorkerAndDispatchMessage(
|
||||
const GURL& scope,
|
||||
const blink::StorageKey& key,
|
||||
blink::TransferableMessage message,
|
||||
ResultCallback result_callback) {
|
||||
start_service_worker_and_dispatch_message_calls_.push_back(
|
||||
std::make_tuple(scope, std::move(message), std::move(result_callback)));
|
||||
}
|
||||
|
||||
void FakeServiceWorkerContext::StopAllServiceWorkersForOrigin(
|
||||
const url::Origin& origin) {
|
||||
stop_all_service_workers_for_origin_calls_.push_back(origin);
|
||||
void FakeServiceWorkerContext::StopAllServiceWorkersForStorageKey(
|
||||
const blink::StorageKey& key) {
|
||||
stop_all_service_workers_for_origin_calls_.push_back(key.origin());
|
||||
}
|
||||
|
||||
void FakeServiceWorkerContext::StopAllServiceWorkers(base::OnceClosure) {
|
||||
|
@ -15,6 +15,10 @@
|
||||
|
||||
class GURL;
|
||||
|
||||
namespace blink {
|
||||
class StorageKey;
|
||||
} // namespace blink
|
||||
|
||||
namespace content {
|
||||
|
||||
class ServiceWorkerContextObserver;
|
||||
@ -35,9 +39,11 @@ class FakeServiceWorkerContext : public ServiceWorkerContext {
|
||||
void RemoveObserver(ServiceWorkerContextObserver* observer) override;
|
||||
void RegisterServiceWorker(
|
||||
const GURL& script_url,
|
||||
const blink::StorageKey& key,
|
||||
const blink::mojom::ServiceWorkerRegistrationOptions& options,
|
||||
StatusCodeCallback callback) override;
|
||||
void UnregisterServiceWorker(const GURL& scope,
|
||||
const blink::StorageKey& key,
|
||||
ResultCallback callback) override;
|
||||
ServiceWorkerExternalRequestResult StartingExternalRequest(
|
||||
int64_t service_worker_version_id,
|
||||
@ -45,30 +51,36 @@ class FakeServiceWorkerContext : public ServiceWorkerContext {
|
||||
ServiceWorkerExternalRequestResult FinishedExternalRequest(
|
||||
int64_t service_worker_version_id,
|
||||
const std::string& request_uuid) override;
|
||||
size_t CountExternalRequestsForTest(const url::Origin& origin) override;
|
||||
size_t CountExternalRequestsForTest(const blink::StorageKey& key) override;
|
||||
bool MaybeHasRegistrationForOrigin(const url::Origin& origin) override;
|
||||
void GetAllOriginsInfo(GetUsageInfoCallback callback) override;
|
||||
void DeleteForOrigin(const url::Origin& origin,
|
||||
ResultCallback callback) override;
|
||||
void DeleteForStorageKey(const blink::StorageKey& key,
|
||||
ResultCallback callback) override;
|
||||
void CheckHasServiceWorker(const GURL& url,
|
||||
const blink::StorageKey& key,
|
||||
CheckHasServiceWorkerCallback callback) override;
|
||||
void CheckOfflineCapability(
|
||||
const GURL& url,
|
||||
const blink::StorageKey& key,
|
||||
const ServiceWorkerContext::CheckOfflineCapabilityCallback callback)
|
||||
override;
|
||||
void ClearAllServiceWorkersForTest(base::OnceClosure) override;
|
||||
void StartWorkerForScope(
|
||||
const GURL& scope,
|
||||
const blink::StorageKey& key,
|
||||
ServiceWorkerContext::StartWorkerCallback info_callback,
|
||||
ServiceWorkerContext::StatusCodeCallback failure_callback) override;
|
||||
void StartServiceWorkerAndDispatchMessage(
|
||||
const GURL& scope,
|
||||
const blink::StorageKey& key,
|
||||
blink::TransferableMessage message,
|
||||
FakeServiceWorkerContext::ResultCallback result_callback) override;
|
||||
void StartServiceWorkerForNavigationHint(
|
||||
const GURL& document_url,
|
||||
const blink::StorageKey& key,
|
||||
StartServiceWorkerForNavigationHintCallback callback) override;
|
||||
void StopAllServiceWorkersForOrigin(const url::Origin& origin) override;
|
||||
void StopAllServiceWorkersForStorageKey(
|
||||
const blink::StorageKey& key) override;
|
||||
void StopAllServiceWorkers(base::OnceClosure callback) override;
|
||||
const base::flat_map<int64_t, ServiceWorkerRunningInfo>&
|
||||
GetRunningServiceWorkerInfos() override;
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include "content/public/browser/service_worker_context.h"
|
||||
#include "content/public/browser/storage_partition.h"
|
||||
#include "extensions/browser/extension_util.h"
|
||||
#include "third_party/blink/public/common/storage_key/storage_key.h"
|
||||
|
||||
namespace extensions {
|
||||
|
||||
@ -27,7 +28,8 @@ void ServiceWorkerManager::OnExtensionUnloaded(
|
||||
UnloadedExtensionReason reason) {
|
||||
util::GetStoragePartitionForExtensionId(extension->id(), browser_context_)
|
||||
->GetServiceWorkerContext()
|
||||
->StopAllServiceWorkersForOrigin(extension->origin());
|
||||
->StopAllServiceWorkersForStorageKey(
|
||||
blink::StorageKey(extension->origin()));
|
||||
}
|
||||
|
||||
void ServiceWorkerManager::OnExtensionUninstalled(
|
||||
@ -40,7 +42,8 @@ void ServiceWorkerManager::OnExtensionUninstalled(
|
||||
// c) Check for any orphaned workers.
|
||||
util::GetStoragePartitionForExtensionId(extension->id(), browser_context_)
|
||||
->GetServiceWorkerContext()
|
||||
->DeleteForOrigin(extension->origin(), base::DoNothing());
|
||||
->DeleteForStorageKey(blink::StorageKey(extension->origin()),
|
||||
base::DoNothing());
|
||||
}
|
||||
|
||||
} // namespace extensions
|
||||
|
@ -30,7 +30,9 @@
|
||||
#include "extensions/common/constants.h"
|
||||
#include "extensions/common/manifest_constants.h"
|
||||
#include "extensions/common/manifest_handlers/background_info.h"
|
||||
#include "third_party/blink/public/common/storage_key/storage_key.h"
|
||||
#include "third_party/blink/public/mojom/service_worker/service_worker_registration_options.mojom.h"
|
||||
#include "url/origin.h"
|
||||
|
||||
using content::BrowserContext;
|
||||
|
||||
@ -371,7 +373,7 @@ void ServiceWorkerTaskQueue::ActivateExtension(const Extension* extension) {
|
||||
option.type = blink::mojom::ScriptType::kModule;
|
||||
option.scope = extension->url();
|
||||
service_worker_context->RegisterServiceWorker(
|
||||
script_url, option,
|
||||
script_url, blink::StorageKey(url::Origin::Create(option.scope)), option,
|
||||
base::BindOnce(&ServiceWorkerTaskQueue::DidRegisterServiceWorker,
|
||||
weak_factory_.GetWeakPtr(), context_id,
|
||||
base::Time::Now()));
|
||||
@ -402,6 +404,7 @@ void ServiceWorkerTaskQueue::DeactivateExtension(const Extension* extension) {
|
||||
|
||||
service_worker_context->UnregisterServiceWorker(
|
||||
extension->url(),
|
||||
blink::StorageKey(url::Origin::Create(extension->url())),
|
||||
base::BindOnce(&ServiceWorkerTaskQueue::DidUnregisterServiceWorker,
|
||||
weak_factory_.GetWeakPtr(), extension_id, *sequence));
|
||||
|
||||
@ -426,8 +429,9 @@ void ServiceWorkerTaskQueue::RunTasksAfterStartWorker(
|
||||
content::ServiceWorkerContext* service_worker_context =
|
||||
partition->GetServiceWorkerContext();
|
||||
|
||||
const GURL& scope = context_id.first.service_worker_scope();
|
||||
service_worker_context->StartWorkerForScope(
|
||||
context_id.first.service_worker_scope(),
|
||||
scope, blink::StorageKey(url::Origin::Create(scope)),
|
||||
base::BindOnce(&ServiceWorkerTaskQueue::DidStartWorkerForScope,
|
||||
weak_factory_.GetWeakPtr(), context_id, base::Time::Now()),
|
||||
base::BindOnce(&ServiceWorkerTaskQueue::DidStartWorkerFail,
|
||||
|
Reference in New Issue
Block a user