summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/workers/dedicated_worker.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2019-07-31 15:50:41 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-08-30 12:35:23 +0000
commit7b2ffa587235a47d4094787d72f38102089f402a (patch)
tree30e82af9cbab08a7fa028bb18f4f2987a3f74dfa /chromium/third_party/blink/renderer/core/workers/dedicated_worker.cc
parentd94af01c90575348c4e81a418257f254b6f8d225 (diff)
downloadqtwebengine-chromium-7b2ffa587235a47d4094787d72f38102089f402a.tar.gz
BASELINE: Update Chromium to 76.0.3809.94
Change-Id: I321c3f5f929c105aec0f98c5091ef6108822e647 Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/third_party/blink/renderer/core/workers/dedicated_worker.cc')
-rw-r--r--chromium/third_party/blink/renderer/core/workers/dedicated_worker.cc56
1 files changed, 44 insertions, 12 deletions
diff --git a/chromium/third_party/blink/renderer/core/workers/dedicated_worker.cc b/chromium/third_party/blink/renderer/core/workers/dedicated_worker.cc
index 60259c5858b..9c221ad625e 100644
--- a/chromium/third_party/blink/renderer/core/workers/dedicated_worker.cc
+++ b/chromium/third_party/blink/renderer/core/workers/dedicated_worker.cc
@@ -129,6 +129,7 @@ DedicatedWorker* DedicatedWorker::Create(ExecutionContext* context,
DedicatedWorker* worker = MakeGarbageCollected<DedicatedWorker>(
context, script_request_url, options);
+ worker->UpdateStateIfNeeded();
worker->Start();
return worker;
}
@@ -144,9 +145,7 @@ DedicatedWorker::DedicatedWorker(ExecutionContext* context,
factory_client_(
Platform::Current()->CreateDedicatedWorkerHostFactoryClient(
this,
- GetExecutionContext()->GetInterfaceProvider())),
- v8_stack_trace_id_(ThreadDebugger::From(context->GetIsolate())
- ->StoreCurrentStackTrace("Worker Created")) {
+ GetExecutionContext()->GetInterfaceProvider())) {
DCHECK(context->IsContextThread());
DCHECK(script_request_url_.IsValid());
DCHECK(context_proxy_);
@@ -205,6 +204,10 @@ void DedicatedWorker::postMessage(ScriptState* script_state,
void DedicatedWorker::Start() {
DCHECK(GetExecutionContext()->IsContextThread());
+ // This needs to be done after the UpdateStateIfNeeded is called as
+ // calling into the debugger can cause a breakpoint.
+ v8_stack_trace_id_ = ThreadDebugger::From(GetExecutionContext()->GetIsolate())
+ ->StoreCurrentStackTrace("Worker Created");
if (auto* scope = DynamicTo<WorkerGlobalScope>(*GetExecutionContext()))
scope->EnsureFetcher();
if (blink::features::IsPlzDedicatedWorkerEnabled()) {
@@ -233,7 +236,8 @@ void DedicatedWorker::Start() {
// worker thread.
ContinueStart(
script_request_url_, OffMainThreadWorkerScriptFetchOption::kEnabled,
- network::mojom::ReferrerPolicy::kDefault, String() /* source_code */);
+ network::mojom::ReferrerPolicy::kDefault,
+ base::nullopt /* response_address_space */, String() /* source_code */);
return;
}
if (options_->type() == "classic") {
@@ -246,7 +250,6 @@ void DedicatedWorker::Start() {
script_request_url_, mojom::RequestContextType::WORKER,
network::mojom::FetchRequestMode::kSameOrigin,
network::mojom::FetchCredentialsMode::kSameOrigin,
- GetExecutionContext()->GetSecurityContext().AddressSpace(),
WTF::Bind(&DedicatedWorker::OnResponse, WrapPersistent(this)),
WTF::Bind(&DedicatedWorker::OnFinished, WrapPersistent(this)));
return;
@@ -311,7 +314,8 @@ void DedicatedWorker::OnScriptLoadStarted() {
// worker thread.
ContinueStart(
script_request_url_, OffMainThreadWorkerScriptFetchOption::kEnabled,
- network::mojom::ReferrerPolicy::kDefault, String() /* source_code */);
+ network::mojom::ReferrerPolicy::kDefault,
+ base::nullopt /* response_address_space */, String() /* source_code */);
}
void DedicatedWorker::OnScriptLoadStartFailed() {
@@ -376,9 +380,10 @@ void DedicatedWorker::OnFinished() {
DCHECK(script_request_url_ == script_response_url ||
SecurityOrigin::AreSameSchemeHostPort(script_request_url_,
script_response_url));
- ContinueStart(script_response_url,
- OffMainThreadWorkerScriptFetchOption::kDisabled,
- referrer_policy, classic_script_loader_->SourceText());
+ ContinueStart(
+ script_response_url, OffMainThreadWorkerScriptFetchOption::kDisabled,
+ referrer_policy, classic_script_loader_->ResponseAddressSpace(),
+ classic_script_loader_->SourceText());
probe::ScriptImported(GetExecutionContext(),
classic_script_loader_->Identifier(),
classic_script_loader_->SourceText());
@@ -390,6 +395,7 @@ void DedicatedWorker::ContinueStart(
const KURL& script_url,
OffMainThreadWorkerScriptFetchOption off_main_thread_fetch_option,
network::mojom::ReferrerPolicy referrer_policy,
+ base::Optional<mojom::IPAddressSpace> response_address_space,
const String& source_code) {
auto* outside_settings_object =
MakeGarbageCollected<FetchClientSettingsObjectSnapshot>(
@@ -399,7 +405,7 @@ void DedicatedWorker::ContinueStart(
.GetFetchClientSettingsObject());
context_proxy_->StartWorkerGlobalScope(
CreateGlobalScopeCreationParams(script_url, off_main_thread_fetch_option,
- referrer_policy),
+ referrer_policy, response_address_space),
options_, script_url, *outside_settings_object, v8_stack_trace_id_,
source_code);
}
@@ -408,7 +414,8 @@ std::unique_ptr<GlobalScopeCreationParams>
DedicatedWorker::CreateGlobalScopeCreationParams(
const KURL& script_url,
OffMainThreadWorkerScriptFetchOption off_main_thread_fetch_option,
- network::mojom::ReferrerPolicy referrer_policy) {
+ network::mojom::ReferrerPolicy referrer_policy,
+ base::Optional<mojom::IPAddressSpace> response_address_space) {
base::UnguessableToken parent_devtools_token;
std::unique_ptr<WorkerSettings> settings;
if (auto* document = DynamicTo<Document>(GetExecutionContext())) {
@@ -435,7 +442,7 @@ DedicatedWorker::CreateGlobalScopeCreationParams(
referrer_policy, GetExecutionContext()->GetSecurityOrigin(),
GetExecutionContext()->IsSecureContext(),
GetExecutionContext()->GetHttpsState(), CreateWorkerClients(),
- GetExecutionContext()->GetSecurityContext().AddressSpace(),
+ response_address_space,
OriginTrialContext::GetTokens(GetExecutionContext()).get(),
parent_devtools_token, std::move(settings), kV8CacheOptionsDefault,
nullptr /* worklet_module_responses_map */,
@@ -480,6 +487,31 @@ const AtomicString& DedicatedWorker::InterfaceName() const {
return event_target_names::kWorker;
}
+void DedicatedWorker::ContextLifecycleStateChanged(
+ mojom::FrameLifecycleState state) {
+ DCHECK(GetExecutionContext()->IsContextThread());
+ switch (state) {
+ case mojom::FrameLifecycleState::kPaused:
+ // Do not do anything in this case. kPaused is only used
+ // for when the main thread is paused we shouldn't worry
+ // about pausing the worker thread in this case.
+ break;
+ case mojom::FrameLifecycleState::kFrozen:
+ case mojom::FrameLifecycleState::kFrozenAutoResumeMedia:
+ if (!requested_frozen_) {
+ requested_frozen_ = true;
+ context_proxy_->Freeze();
+ }
+ break;
+ case mojom::FrameLifecycleState::kRunning:
+ if (requested_frozen_) {
+ context_proxy_->Resume();
+ requested_frozen_ = false;
+ }
+ break;
+ }
+}
+
void DedicatedWorker::Trace(blink::Visitor* visitor) {
visitor->Trace(context_proxy_);
visitor->Trace(options_);