Commit 01fc6284 authored by Hiroki Nakagawa's avatar Hiroki Nakagawa Committed by Commit Bot

Worker: Pass UserAgent from the browser process to a shared worker's process

This is a preparation CL for removing WorkerShadowPage. Before this CL, shared
worker's user agent is supplied by WorkerShadowPage's Document. After this CL,
it's supplied from SharedWorkerHost in the browser process. This is aligned with
service workers.

Bug: 538751
Change-Id: I16a4c51077ed04563c9bba4609f821b704d59ace
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1730490
Commit-Queue: Hiroki Nakagawa <nhiroki@chromium.org>
Reviewed-by: default avatarKenichi Ishibashi <bashi@chromium.org>
Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Cr-Commit-Position: refs/heads/master@{#683500}
parent a85fab10
......@@ -99,6 +99,7 @@ bool MockSharedWorkerFactory::CheckReceivedCreateSharedWorker(
void MockSharedWorkerFactory::CreateSharedWorker(
blink::mojom::SharedWorkerInfoPtr info,
const std::string& user_agent,
bool pause_on_start,
const base::UnguessableToken& devtools_worker_token,
blink::mojom::RendererPreferencesPtr renderer_preferences,
......
......@@ -74,6 +74,7 @@ class MockSharedWorkerFactory : public blink::mojom::SharedWorkerFactory {
// blink::mojom::SharedWorkerFactory methods:
void CreateSharedWorker(
blink::mojom::SharedWorkerInfoPtr info,
const std::string& user_agent,
bool pause_on_start,
const base::UnguessableToken& devtools_worker_token,
blink::mojom::RendererPreferencesPtr renderer_preferences,
......
......@@ -240,9 +240,10 @@ void SharedWorkerHost::Start(
// Send the CreateSharedWorker message.
factory_ = std::move(factory);
factory_->CreateSharedWorker(
std::move(info), pause_on_start, devtools_worker_token,
std::move(renderer_preferences), std::move(preference_watcher_request),
std::move(content_settings), service_worker_handle_->TakeProviderInfo(),
std::move(info), GetContentClient()->browser()->GetUserAgent(),
pause_on_start, devtools_worker_token, std::move(renderer_preferences),
std::move(preference_watcher_request), std::move(content_settings),
service_worker_handle_->TakeProviderInfo(),
appcache_handle_
? base::make_optional(appcache_handle_->appcache_host_id())
: base::nullopt,
......
......@@ -41,6 +41,7 @@ namespace content {
EmbeddedSharedWorkerStub::EmbeddedSharedWorkerStub(
blink::mojom::SharedWorkerInfoPtr info,
const std::string& user_agent,
bool pause_on_start,
const base::UnguessableToken& devtools_worker_token,
const blink::mojom::RendererPreferences& renderer_preferences,
......@@ -58,7 +59,6 @@ EmbeddedSharedWorkerStub::EmbeddedSharedWorkerStub(
service_manager::mojom::InterfaceProviderPtr interface_provider)
: binding_(this, std::move(request)),
host_(std::move(host)),
name_(info->name),
url_(info->url),
renderer_preferences_(renderer_preferences),
preference_watcher_request_(std::move(preference_watcher_request)) {
......@@ -115,7 +115,8 @@ EmbeddedSharedWorkerStub::EmbeddedSharedWorkerStub(
}
impl_->StartWorkerContext(
url_, blink::WebString::FromUTF8(name_),
url_, blink::WebString::FromUTF8(info->name),
blink::WebString::FromUTF8(user_agent),
blink::WebString::FromUTF8(info->content_security_policy),
info->content_security_policy_type, info->creation_address_space,
devtools_worker_token,
......
......@@ -56,6 +56,7 @@ class EmbeddedSharedWorkerStub : public blink::WebSharedWorkerClient,
public:
EmbeddedSharedWorkerStub(
blink::mojom::SharedWorkerInfoPtr info,
const std::string& user_agent,
bool pause_on_start,
const base::UnguessableToken& devtools_worker_token,
const blink::mojom::RendererPreferences& renderer_preferences,
......@@ -98,7 +99,6 @@ class EmbeddedSharedWorkerStub : public blink::WebSharedWorkerClient,
mojo::Binding<blink::mojom::SharedWorker> binding_;
blink::mojom::SharedWorkerHostPtr host_;
const std::string name_;
bool running_ = false;
GURL url_;
blink::mojom::RendererPreferences renderer_preferences_;
......
......@@ -23,6 +23,7 @@ SharedWorkerFactoryImpl::SharedWorkerFactoryImpl() {}
void SharedWorkerFactoryImpl::CreateSharedWorker(
blink::mojom::SharedWorkerInfoPtr info,
const std::string& user_agent,
bool pause_on_start,
const base::UnguessableToken& devtools_worker_token,
blink::mojom::RendererPreferencesPtr renderer_preferences,
......@@ -40,7 +41,7 @@ void SharedWorkerFactoryImpl::CreateSharedWorker(
service_manager::mojom::InterfaceProviderPtr interface_provider) {
// Bound to the lifetime of the underlying blink::WebSharedWorker instance.
new EmbeddedSharedWorkerStub(
std::move(info), pause_on_start, devtools_worker_token,
std::move(info), user_agent, pause_on_start, devtools_worker_token,
*renderer_preferences, std::move(preference_watcher_request),
std::move(content_settings), std::move(service_worker_provider_info),
appcache_host_id.value_or(base::UnguessableToken()),
......
......@@ -25,6 +25,7 @@ class SharedWorkerFactoryImpl : public blink::mojom::SharedWorkerFactory {
// mojom::SharedWorkerFactory methods:
void CreateSharedWorker(
blink::mojom::SharedWorkerInfoPtr info,
const std::string& user_agent,
bool pause_on_start,
const base::UnguessableToken& devtools_worker_token,
blink::mojom::RendererPreferencesPtr renderer_preferences,
......
......@@ -32,6 +32,7 @@ interface SharedWorkerFactory {
// |interface_provider| instead of receiving plumbing it here.
CreateSharedWorker(
SharedWorkerInfo info,
string user_agent,
bool pause_on_start,
mojo_base.mojom.UnguessableToken devtools_worker_token,
RendererPreferences renderer_preferences,
......
......@@ -71,6 +71,7 @@ class BLINK_EXPORT WebSharedWorker {
virtual void StartWorkerContext(
const WebURL& script_url,
const WebString& name,
const WebString& user_agent,
const WebString& content_security_policy,
mojom::ContentSecurityPolicyType,
mojom::IPAddressSpace,
......
......@@ -193,6 +193,7 @@ void WebSharedWorkerImpl::ConnectTaskOnWorkerThread(
void WebSharedWorkerImpl::StartWorkerContext(
const WebURL& script_request_url,
const WebString& name,
const WebString& user_agent,
const WebString& content_security_policy,
mojom::ContentSecurityPolicyType policy_type,
mojom::IPAddressSpace creation_address_space,
......@@ -204,6 +205,7 @@ void WebSharedWorkerImpl::StartWorkerContext(
DCHECK(IsMainThread());
script_request_url_ = script_request_url;
name_ = name;
user_agent_ = user_agent;
creation_address_space_ = creation_address_space;
// Chrome doesn't use interface versioning.
content_settings_info_ = mojom::blink::WorkerContentSettingsProxyPtrInfo(
......@@ -286,8 +288,7 @@ void WebSharedWorkerImpl::ContinueStartWorkerContext() {
// worker script fetch on the worker thread.
auto creation_params = std::make_unique<GlobalScopeCreationParams>(
script_request_url_, script_type,
OffMainThreadWorkerScriptFetchOption::kEnabled, name_,
shadow_page_->GetDocument()->UserAgent(),
OffMainThreadWorkerScriptFetchOption::kEnabled, name_, user_agent_,
std::move(web_worker_fetch_context), Vector<CSPHeaderAndType>(),
outside_settings_object->GetReferrerPolicy(),
outside_settings_object->GetSecurityOrigin(), starter_secure_context,
......
......@@ -93,6 +93,7 @@ class CORE_EXPORT WebSharedWorkerImpl final : public WebSharedWorker,
void StartWorkerContext(
const WebURL&,
const WebString& name,
const WebString& user_agent,
const WebString& content_security_policy,
mojom::ContentSecurityPolicyType,
mojom::IPAddressSpace,
......@@ -152,6 +153,7 @@ class CORE_EXPORT WebSharedWorkerImpl final : public WebSharedWorker,
WebURL script_request_url_;
WebString name_;
WebString user_agent_;
mojom::IPAddressSpace creation_address_space_;
service_manager::mojom::blink::InterfaceProviderPtrInfo
......
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