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