Commit 71c776cd authored by Patrick Monette's avatar Patrick Monette Committed by Commit Bot

Fix EnumerateSharedWorkers to include final response url

EnumerateSharedWorkers() is meant to allow an observer to
"catch up" to the notifications it missed by registering late.
This must include the OnFinalResponseURLDetermined() call.

Bug: 993029
Change-Id: Ib23b269b825c878682bb920651c999bd169f09a1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2204519
Commit-Queue: Patrick Monette <pmonette@chromium.org>
Reviewed-by: default avatarHiroki Nakagawa <nhiroki@chromium.org>
Cr-Commit-Position: refs/heads/master@{#771210}
parent aa2865de
...@@ -153,7 +153,8 @@ void SharedWorkerHost::Start( ...@@ -153,7 +153,8 @@ void SharedWorkerHost::Start(
base::WeakPtr<ServiceWorkerObjectHost> base::WeakPtr<ServiceWorkerObjectHost>
controller_service_worker_object_host, controller_service_worker_object_host,
blink::mojom::FetchClientSettingsObjectPtr blink::mojom::FetchClientSettingsObjectPtr
outside_fetch_client_settings_object) { outside_fetch_client_settings_object,
const GURL& final_response_url) {
DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK_CURRENTLY_ON(BrowserThread::UI);
DCHECK(!started_); DCHECK(!started_);
DCHECK(main_script_load_params); DCHECK(main_script_load_params);
...@@ -161,6 +162,7 @@ void SharedWorkerHost::Start( ...@@ -161,6 +162,7 @@ void SharedWorkerHost::Start(
DCHECK(!subresource_loader_factories->pending_default_factory()); DCHECK(!subresource_loader_factories->pending_default_factory());
started_ = true; started_ = true;
final_response_url_ = final_response_url;
auto options = blink::mojom::WorkerOptions::New( auto options = blink::mojom::WorkerOptions::New(
instance_.script_type(), instance_.credentials_mode(), instance_.name()); instance_.script_type(), instance_.credentials_mode(), instance_.name());
......
...@@ -95,7 +95,8 @@ class CONTENT_EXPORT SharedWorkerHost : public blink::mojom::SharedWorkerHost, ...@@ -95,7 +95,8 @@ class CONTENT_EXPORT SharedWorkerHost : public blink::mojom::SharedWorkerHost,
base::WeakPtr<ServiceWorkerObjectHost> base::WeakPtr<ServiceWorkerObjectHost>
controller_service_worker_object_host, controller_service_worker_object_host,
blink::mojom::FetchClientSettingsObjectPtr blink::mojom::FetchClientSettingsObjectPtr
outside_fetch_client_settings_object); outside_fetch_client_settings_object,
const GURL& final_response_url);
void AllowFileSystem(const GURL& url, void AllowFileSystem(const GURL& url,
base::OnceCallback<void(bool)> callback); base::OnceCallback<void(bool)> callback);
...@@ -131,6 +132,10 @@ class CONTENT_EXPORT SharedWorkerHost : public blink::mojom::SharedWorkerHost, ...@@ -131,6 +132,10 @@ class CONTENT_EXPORT SharedWorkerHost : public blink::mojom::SharedWorkerHost,
// Returns true if this worker is connected to at least one client. // Returns true if this worker is connected to at least one client.
bool HasClients() const; bool HasClients() const;
bool started() const { return started_; }
const GURL& final_response_url() const { return final_response_url_; }
SharedWorkerId id() const { return id_; } SharedWorkerId id() const { return id_; }
const SharedWorkerInstance& instance() const { return instance_; } const SharedWorkerInstance& instance() const { return instance_; }
...@@ -246,6 +251,8 @@ class CONTENT_EXPORT SharedWorkerHost : public blink::mojom::SharedWorkerHost, ...@@ -246,6 +251,8 @@ class CONTENT_EXPORT SharedWorkerHost : public blink::mojom::SharedWorkerHost,
// Indicates if Start() was invoked on this instance. // Indicates if Start() was invoked on this instance.
bool started_ = false; bool started_ = false;
GURL final_response_url_;
base::WeakPtrFactory<SharedWorkerHost> weak_factory_{this}; base::WeakPtrFactory<SharedWorkerHost> weak_factory_{this};
DISALLOW_COPY_AND_ASSIGN(SharedWorkerHost); DISALLOW_COPY_AND_ASSIGN(SharedWorkerHost);
......
...@@ -122,7 +122,8 @@ class SharedWorkerHostTest : public testing::Test { ...@@ -122,7 +122,8 @@ class SharedWorkerHostTest : public testing::Test {
blink::mojom::FetchClientSettingsObject::New( blink::mojom::FetchClientSettingsObject::New(
network::mojom::ReferrerPolicy::kDefault, network::mojom::ReferrerPolicy::kDefault,
GURL() /* outgoing_referrer */, GURL() /* outgoing_referrer */,
blink::mojom::InsecureRequestsPolicy::kDoNotUpgrade)); blink::mojom::InsecureRequestsPolicy::kDoNotUpgrade),
GURL() /* final_response_url */);
} }
MessagePortChannel AddClient( MessagePortChannel AddClient(
......
...@@ -78,6 +78,10 @@ void SharedWorkerServiceImpl::EnumerateSharedWorkers(Observer* observer) { ...@@ -78,6 +78,10 @@ void SharedWorkerServiceImpl::EnumerateSharedWorkers(Observer* observer) {
for (const auto& host : worker_hosts_) { for (const auto& host : worker_hosts_) {
observer->OnWorkerCreated(host->id(), host->GetProcessHost()->GetID(), observer->OnWorkerCreated(host->id(), host->GetProcessHost()->GetID(),
host->GetDevToolsToken()); host->GetDevToolsToken());
if (host->started()) {
observer->OnFinalResponseURLDetermined(host->id(),
host->final_response_url());
}
} }
} }
...@@ -400,7 +404,8 @@ void SharedWorkerServiceImpl::StartWorker( ...@@ -400,7 +404,8 @@ void SharedWorkerServiceImpl::StartWorker(
host->Start(std::move(factory), std::move(main_script_load_params), host->Start(std::move(factory), std::move(main_script_load_params),
std::move(subresource_loader_factories), std::move(controller), std::move(subresource_loader_factories), std::move(controller),
std::move(controller_service_worker_object_host), std::move(controller_service_worker_object_host),
std::move(outside_fetch_client_settings_object)); std::move(outside_fetch_client_settings_object),
final_response_url);
for (Observer& observer : observers_) for (Observer& observer : observers_)
observer.OnFinalResponseURLDetermined(host->id(), final_response_url); observer.OnFinalResponseURLDetermined(host->id(), final_response_url);
} }
......
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