Commit d00cc535 authored by Nidhi Jaju's avatar Nidhi Jaju Committed by Commit Bot

Use url::Origin for StopAllServiceWorkersForOrigin

The service worker codebase currently uses a lot of GURLs for origins.
However, url::Origin should be used for origin instead of GURL where
possible due to security decisions.

This CL changes ServiceWorkerContextWrapper::
StopAllServiceWorkersForOrigin to use url::Origin instead of GURL.
Some relevant callsites have also been modified accordingly.

Bug: 1095896
Change-Id: I8571beeb38dc0dedc944e73521475bb518c8b9e3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2410066Reviewed-by: default avatarDavid Bertoni <dbertoni@chromium.org>
Reviewed-by: default avatarMatt Falkenhagen <falken@chromium.org>
Reviewed-by: default avatarAhmed Fakhry <afakhry@chromium.org>
Reviewed-by: default avatarFrançois Doray <fdoray@chromium.org>
Commit-Queue: Nidhi Jaju <nidhijaju127@gmail.com>
Cr-Commit-Position: refs/heads/master@{#810499}
parent 77d6c3e4
...@@ -207,7 +207,7 @@ IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerTest, ...@@ -207,7 +207,7 @@ IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerTest,
NavigateToPageAndWaitForReadyTitle("/test.html"); NavigateToPageAndWaitForReadyTitle("/test.html");
GetServiceWorkerContext()->StopAllServiceWorkersForOrigin( GetServiceWorkerContext()->StopAllServiceWorkersForOrigin(
embedded_test_server()->base_url()); url::Origin::Create(embedded_test_server()->base_url()));
HostContentSettingsMapFactory::GetForProfile(browser()->profile()) HostContentSettingsMapFactory::GetForProfile(browser()->profile())
->SetDefaultContentSetting(ContentSettingsType::JAVASCRIPT, ->SetDefaultContentSetting(ContentSettingsType::JAVASCRIPT,
CONTENT_SETTING_BLOCK); CONTENT_SETTING_BLOCK);
...@@ -632,7 +632,7 @@ IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerNavigationHintTest, Started) { ...@@ -632,7 +632,7 @@ IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerNavigationHintTest, Started) {
InitializeServer(); InitializeServer();
NavigateToPageAndWaitForReadyTitle("/test.html"); NavigateToPageAndWaitForReadyTitle("/test.html");
GetServiceWorkerContext()->StopAllServiceWorkersForOrigin( GetServiceWorkerContext()->StopAllServiceWorkersForOrigin(
embedded_test_server()->base_url()); url::Origin::Create(embedded_test_server()->base_url()));
RunNavigationHintTest( RunNavigationHintTest(
"/scope/", content::StartServiceWorkerForNavigationHintResult::STARTED, "/scope/", content::StartServiceWorkerForNavigationHintResult::STARTED,
true); true);
...@@ -687,7 +687,7 @@ IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerNavigationHintTest, NoFetchHandler) { ...@@ -687,7 +687,7 @@ IN_PROC_BROWSER_TEST_F(ChromeServiceWorkerNavigationHintTest, NoFetchHandler) {
InitializeServer(); InitializeServer();
NavigateToPageAndWaitForReadyTitle("/test.html"); NavigateToPageAndWaitForReadyTitle("/test.html");
GetServiceWorkerContext()->StopAllServiceWorkersForOrigin( GetServiceWorkerContext()->StopAllServiceWorkersForOrigin(
embedded_test_server()->base_url()); url::Origin::Create(embedded_test_server()->base_url()));
RunNavigationHintTest( RunNavigationHintTest(
"/scope/", "/scope/",
content::StartServiceWorkerForNavigationHintResult::NO_FETCH_HANDLER, content::StartServiceWorkerForNavigationHintResult::NO_FETCH_HANDLER,
......
...@@ -191,7 +191,7 @@ IN_PROC_BROWSER_TEST_F(WorkerTaskProviderBrowserTest, ...@@ -191,7 +191,7 @@ IN_PROC_BROWSER_TEST_F(WorkerTaskProviderBrowserTest,
base::CompareCase::INSENSITIVE_ASCII)); base::CompareCase::INSENSITIVE_ASCII));
GetServiceWorkerContext(browser())->StopAllServiceWorkersForOrigin( GetServiceWorkerContext(browser())->StopAllServiceWorkersForOrigin(
embedded_test_server()->base_url()); url::Origin::Create(embedded_test_server()->base_url()));
WaitUntilTaskCount(0); WaitUntilTaskCount(0);
StopUpdating(); StopUpdating();
...@@ -228,7 +228,7 @@ IN_PROC_BROWSER_TEST_F(WorkerTaskProviderBrowserTest, ...@@ -228,7 +228,7 @@ IN_PROC_BROWSER_TEST_F(WorkerTaskProviderBrowserTest,
base::CompareCase::INSENSITIVE_ASCII)); base::CompareCase::INSENSITIVE_ASCII));
GetServiceWorkerContext(incognito)->StopAllServiceWorkersForOrigin( GetServiceWorkerContext(incognito)->StopAllServiceWorkersForOrigin(
embedded_test_server()->base_url()); url::Origin::Create(embedded_test_server()->base_url()));
WaitUntilTaskCount(0); WaitUntilTaskCount(0);
StopUpdating(); StopUpdating();
...@@ -281,12 +281,12 @@ IN_PROC_BROWSER_TEST_F(WorkerTaskProviderBrowserTest, ...@@ -281,12 +281,12 @@ IN_PROC_BROWSER_TEST_F(WorkerTaskProviderBrowserTest,
base::CompareCase::INSENSITIVE_ASCII)); base::CompareCase::INSENSITIVE_ASCII));
GetServiceWorkerContext(browser_1)->StopAllServiceWorkersForOrigin( GetServiceWorkerContext(browser_1)->StopAllServiceWorkersForOrigin(
embedded_test_server()->base_url()); url::Origin::Create(embedded_test_server()->base_url()));
WaitUntilTaskCount(1); WaitUntilTaskCount(1);
EXPECT_EQ(task_2, tasks()[0]); EXPECT_EQ(task_2, tasks()[0]);
GetServiceWorkerContext(browser_2)->StopAllServiceWorkersForOrigin( GetServiceWorkerContext(browser_2)->StopAllServiceWorkersForOrigin(
embedded_test_server()->base_url()); url::Origin::Create(embedded_test_server()->base_url()));
WaitUntilTaskCount(0); WaitUntilTaskCount(0);
StopUpdating(); StopUpdating();
...@@ -320,7 +320,7 @@ IN_PROC_BROWSER_TEST_F(WorkerTaskProviderBrowserTest, CreateExistingTasks) { ...@@ -320,7 +320,7 @@ IN_PROC_BROWSER_TEST_F(WorkerTaskProviderBrowserTest, CreateExistingTasks) {
base::CompareCase::INSENSITIVE_ASCII)); base::CompareCase::INSENSITIVE_ASCII));
GetServiceWorkerContext(browser())->StopAllServiceWorkersForOrigin( GetServiceWorkerContext(browser())->StopAllServiceWorkersForOrigin(
embedded_test_server()->base_url()); url::Origin::Create(embedded_test_server()->base_url()));
WaitUntilTaskCount(0); WaitUntilTaskCount(0);
StopUpdating(); StopUpdating();
......
...@@ -181,7 +181,7 @@ void ServiceWorkerContextAdapter::StartServiceWorkerForNavigationHint( ...@@ -181,7 +181,7 @@ void ServiceWorkerContextAdapter::StartServiceWorkerForNavigationHint(
} }
void ServiceWorkerContextAdapter::StopAllServiceWorkersForOrigin( void ServiceWorkerContextAdapter::StopAllServiceWorkersForOrigin(
const GURL& origin) { const url::Origin& origin) {
NOTIMPLEMENTED(); NOTIMPLEMENTED();
} }
......
...@@ -84,7 +84,7 @@ class ServiceWorkerContextAdapter ...@@ -84,7 +84,7 @@ class ServiceWorkerContextAdapter
void StartServiceWorkerForNavigationHint( void StartServiceWorkerForNavigationHint(
const GURL& document_url, const GURL& document_url,
StartServiceWorkerForNavigationHintCallback callback) override; StartServiceWorkerForNavigationHintCallback callback) override;
void StopAllServiceWorkersForOrigin(const GURL& origin) override; void StopAllServiceWorkersForOrigin(const url::Origin& origin) override;
void StopAllServiceWorkers(base::OnceClosure callback) override; void StopAllServiceWorkers(base::OnceClosure callback) override;
const base::flat_map<int64_t /* version_id */, const base::flat_map<int64_t /* version_id */,
content::ServiceWorkerRunningInfo>& content::ServiceWorkerRunningInfo>&
......
...@@ -560,7 +560,7 @@ TEST_F(ServiceWorkerContextTest, OnVersionRunningStatusChangedObserver) { ...@@ -560,7 +560,7 @@ TEST_F(ServiceWorkerContextTest, OnVersionRunningStatusChangedObserver) {
base::BindOnce(&RegisteredCallback, run_loop.QuitClosure())); base::BindOnce(&RegisteredCallback, run_loop.QuitClosure()));
run_loop.Run(); run_loop.Run();
context_wrapper()->StopAllServiceWorkersForOrigin(scope); context_wrapper()->StopAllServiceWorkersForOrigin(url::Origin::Create(scope));
base::RunLoop().RunUntilIdle(); base::RunLoop().RunUntilIdle();
std::vector<TestServiceWorkerContextObserver::EventLog> events; std::vector<TestServiceWorkerContextObserver::EventLog> events;
......
...@@ -884,7 +884,7 @@ void ServiceWorkerContextWrapper::StartServiceWorkerForNavigationHint( ...@@ -884,7 +884,7 @@ void ServiceWorkerContextWrapper::StartServiceWorkerForNavigationHint(
} }
void ServiceWorkerContextWrapper::StopAllServiceWorkersForOrigin( void ServiceWorkerContextWrapper::StopAllServiceWorkersForOrigin(
const GURL& origin) { const url::Origin& origin) {
if (!BrowserThread::CurrentlyOn(GetCoreThreadId())) { if (!BrowserThread::CurrentlyOn(GetCoreThreadId())) {
base::PostTask( base::PostTask(
FROM_HERE, {GetCoreThreadId()}, FROM_HERE, {GetCoreThreadId()},
...@@ -899,7 +899,7 @@ void ServiceWorkerContextWrapper::StopAllServiceWorkersForOrigin( ...@@ -899,7 +899,7 @@ void ServiceWorkerContextWrapper::StopAllServiceWorkersForOrigin(
std::vector<ServiceWorkerVersionInfo> live_versions = GetAllLiveVersionInfo(); std::vector<ServiceWorkerVersionInfo> live_versions = GetAllLiveVersionInfo();
for (const ServiceWorkerVersionInfo& info : live_versions) { for (const ServiceWorkerVersionInfo& info : live_versions) {
ServiceWorkerVersion* version = GetLiveVersion(info.version_id); ServiceWorkerVersion* version = GetLiveVersion(info.version_id);
if (version && version->scope().GetOrigin() == origin) if (version && version->origin() == origin)
version->StopWorker(base::DoNothing()); version->StopWorker(base::DoNothing());
} }
} }
......
...@@ -197,7 +197,7 @@ class CONTENT_EXPORT ServiceWorkerContextWrapper ...@@ -197,7 +197,7 @@ class CONTENT_EXPORT ServiceWorkerContextWrapper
void StartServiceWorkerForNavigationHint( void StartServiceWorkerForNavigationHint(
const GURL& document_url, const GURL& document_url,
StartServiceWorkerForNavigationHintCallback callback) override; StartServiceWorkerForNavigationHintCallback callback) override;
void StopAllServiceWorkersForOrigin(const GURL& origin) override; void StopAllServiceWorkersForOrigin(const url::Origin& origin) override;
void StopAllServiceWorkers(base::OnceClosure callback) override; void StopAllServiceWorkers(base::OnceClosure callback) override;
const base::flat_map<int64_t, ServiceWorkerRunningInfo>& const base::flat_map<int64_t, ServiceWorkerRunningInfo>&
GetRunningServiceWorkerInfos() override; GetRunningServiceWorkerInfos() override;
......
...@@ -261,7 +261,7 @@ class CONTENT_EXPORT ServiceWorkerContext { ...@@ -261,7 +261,7 @@ class CONTENT_EXPORT ServiceWorkerContext {
// Stops all running workers on the given |origin|. // Stops all running workers on the given |origin|.
// //
// This function can be called from any thread. // This function can be called from any thread.
virtual void StopAllServiceWorkersForOrigin(const GURL& origin) = 0; virtual void StopAllServiceWorkersForOrigin(const url::Origin& origin) = 0;
// Stops all running service workers. // Stops all running service workers.
// //
......
...@@ -111,7 +111,7 @@ void FakeServiceWorkerContext::StartServiceWorkerAndDispatchMessage( ...@@ -111,7 +111,7 @@ void FakeServiceWorkerContext::StartServiceWorkerAndDispatchMessage(
} }
void FakeServiceWorkerContext::StopAllServiceWorkersForOrigin( void FakeServiceWorkerContext::StopAllServiceWorkersForOrigin(
const GURL& origin) { const url::Origin& origin) {
stop_all_service_workers_for_origin_calls_.push_back(origin); stop_all_service_workers_for_origin_calls_.push_back(origin);
} }
......
...@@ -74,7 +74,7 @@ class FakeServiceWorkerContext : public ServiceWorkerContext { ...@@ -74,7 +74,7 @@ class FakeServiceWorkerContext : public ServiceWorkerContext {
void StartServiceWorkerForNavigationHint( void StartServiceWorkerForNavigationHint(
const GURL& document_url, const GURL& document_url,
StartServiceWorkerForNavigationHintCallback callback) override; StartServiceWorkerForNavigationHintCallback callback) override;
void StopAllServiceWorkersForOrigin(const GURL& origin) override; void StopAllServiceWorkersForOrigin(const url::Origin& origin) override;
void StopAllServiceWorkers(base::OnceClosure callback) override; void StopAllServiceWorkers(base::OnceClosure callback) override;
const base::flat_map<int64_t, ServiceWorkerRunningInfo>& const base::flat_map<int64_t, ServiceWorkerRunningInfo>&
GetRunningServiceWorkerInfos() override; GetRunningServiceWorkerInfos() override;
...@@ -101,7 +101,7 @@ class FakeServiceWorkerContext : public ServiceWorkerContext { ...@@ -101,7 +101,7 @@ class FakeServiceWorkerContext : public ServiceWorkerContext {
return start_service_worker_and_dispatch_long_running_message_calls_; return start_service_worker_and_dispatch_long_running_message_calls_;
} }
const std::vector<GURL>& stop_all_service_workers_for_origin_calls() { const std::vector<url::Origin>& stop_all_service_workers_for_origin_calls() {
return stop_all_service_workers_for_origin_calls_; return stop_all_service_workers_for_origin_calls_;
} }
...@@ -114,7 +114,7 @@ class FakeServiceWorkerContext : public ServiceWorkerContext { ...@@ -114,7 +114,7 @@ class FakeServiceWorkerContext : public ServiceWorkerContext {
std::vector<StartServiceWorkerAndDispatchMessageArgs> std::vector<StartServiceWorkerAndDispatchMessageArgs>
start_service_worker_and_dispatch_long_running_message_calls_; start_service_worker_and_dispatch_long_running_message_calls_;
std::vector<GURL> stop_all_service_workers_for_origin_calls_; std::vector<url::Origin> stop_all_service_workers_for_origin_calls_;
base::ObserverList<ServiceWorkerContextObserver, true>::Unchecked observers_; base::ObserverList<ServiceWorkerContextObserver, true>::Unchecked observers_;
......
...@@ -27,7 +27,7 @@ void ServiceWorkerManager::OnExtensionUnloaded( ...@@ -27,7 +27,7 @@ void ServiceWorkerManager::OnExtensionUnloaded(
UnloadedExtensionReason reason) { UnloadedExtensionReason reason) {
util::GetStoragePartitionForExtensionId(extension->id(), browser_context_) util::GetStoragePartitionForExtensionId(extension->id(), browser_context_)
->GetServiceWorkerContext() ->GetServiceWorkerContext()
->StopAllServiceWorkersForOrigin(extension->url()); ->StopAllServiceWorkersForOrigin(extension->origin());
} }
void ServiceWorkerManager::OnExtensionUninstalled( void ServiceWorkerManager::OnExtensionUninstalled(
...@@ -40,8 +40,7 @@ void ServiceWorkerManager::OnExtensionUninstalled( ...@@ -40,8 +40,7 @@ void ServiceWorkerManager::OnExtensionUninstalled(
// c) Check for any orphaned workers. // c) Check for any orphaned workers.
util::GetStoragePartitionForExtensionId(extension->id(), browser_context_) util::GetStoragePartitionForExtensionId(extension->id(), browser_context_)
->GetServiceWorkerContext() ->GetServiceWorkerContext()
->DeleteForOrigin(url::Origin::Create(extension->url()), ->DeleteForOrigin(extension->origin(), base::DoNothing());
base::DoNothing());
} }
} // namespace extensions } // namespace extensions
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#include "extensions/common/manifest.h" #include "extensions/common/manifest.h"
#include "extensions/common/url_pattern_set.h" #include "extensions/common/url_pattern_set.h"
#include "url/gurl.h" #include "url/gurl.h"
#include "url/origin.h"
#if !BUILDFLAG(ENABLE_EXTENSIONS) #if !BUILDFLAG(ENABLE_EXTENSIONS)
#error "Extensions must be enabled" #error "Extensions must be enabled"
...@@ -257,6 +258,7 @@ class Extension : public base::RefCountedThreadSafe<Extension> { ...@@ -257,6 +258,7 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
const base::FilePath& path() const { return path_; } const base::FilePath& path() const { return path_; }
const GURL& url() const { return extension_url_; } const GURL& url() const { return extension_url_; }
url::Origin origin() const { return url::Origin::Create(extension_url_); }
Manifest::Location location() const; Manifest::Location location() const;
const ExtensionId& id() const; const ExtensionId& id() const;
const HashedExtensionId& hashed_id() const; const HashedExtensionId& hashed_id() const;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment