Commit c1e9e0a4 authored by Chris Hamilton's avatar Chris Hamilton Committed by Commit Bot

Add DedicatedWorkerToken to DedicatedWorkerGlobalScope.

BUG=1085129, 1096617

Change-Id: I9cf35e58c5de9cb2d3e8907bed30ad577b206149
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2324164Reviewed-by: default avatarMatt Falkenhagen <falken@chromium.org>
Commit-Queue: Chris Hamilton <chrisha@chromium.org>
Cr-Commit-Position: refs/heads/master@{#792707}
parent 9f5237e2
...@@ -86,6 +86,7 @@ DedicatedWorker::DedicatedWorker(ExecutionContext* context, ...@@ -86,6 +86,7 @@ DedicatedWorker::DedicatedWorker(ExecutionContext* context,
const KURL& script_request_url, const KURL& script_request_url,
const WorkerOptions* options) const WorkerOptions* options)
: AbstractWorker(context), : AbstractWorker(context),
token_(blink::DedicatedWorkerToken::Create()),
script_request_url_(script_request_url), script_request_url_(script_request_url),
options_(options), options_(options),
context_proxy_( context_proxy_(
...@@ -93,8 +94,7 @@ DedicatedWorker::DedicatedWorker(ExecutionContext* context, ...@@ -93,8 +94,7 @@ DedicatedWorker::DedicatedWorker(ExecutionContext* context,
factory_client_( factory_client_(
Platform::Current()->CreateDedicatedWorkerHostFactoryClient( Platform::Current()->CreateDedicatedWorkerHostFactoryClient(
this, this,
GetExecutionContext()->GetBrowserInterfaceBroker())), GetExecutionContext()->GetBrowserInterfaceBroker())) {
token_(blink::DedicatedWorkerToken::Create()) {
DCHECK(context->IsContextThread()); DCHECK(context->IsContextThread());
DCHECK(script_request_url_.IsValid()); DCHECK(script_request_url_.IsValid());
DCHECK(context_proxy_); DCHECK(context_proxy_);
......
...@@ -137,6 +137,11 @@ class CORE_EXPORT DedicatedWorker final ...@@ -137,6 +137,11 @@ class CORE_EXPORT DedicatedWorker final
// Implements EventTarget (via AbstractWorker -> EventTargetWithInlineData). // Implements EventTarget (via AbstractWorker -> EventTargetWithInlineData).
const AtomicString& InterfaceName() const final; const AtomicString& InterfaceName() const final;
// The unique identifier for this DedicatedWorker. This is created in the
// renderer process, and passed to the browser. This must be initialized
// before |context_proxy_|.
blink::DedicatedWorkerToken token_;
const KURL script_request_url_; const KURL script_request_url_;
Member<const WorkerOptions> options_; Member<const WorkerOptions> options_;
Member<const FetchClientSettingsObjectSnapshot> Member<const FetchClientSettingsObjectSnapshot>
...@@ -156,10 +161,6 @@ class CORE_EXPORT DedicatedWorker final ...@@ -156,10 +161,6 @@ class CORE_EXPORT DedicatedWorker final
// Whether the worker is frozen due to a call from this context. // Whether the worker is frozen due to a call from this context.
bool requested_frozen_ = false; bool requested_frozen_ = false;
// The unique identifier for this DedicatedWorker. This is created in the
// renderer process, and passed to the browser.
blink::DedicatedWorkerToken token_;
}; };
} // namespace blink } // namespace blink
......
...@@ -112,6 +112,7 @@ DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope( ...@@ -112,6 +112,7 @@ DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope(
thread, thread,
time_origin, time_origin,
ukm_source_id), ukm_source_id),
token_(thread->WorkerObjectProxy().token()),
animation_frame_provider_( animation_frame_provider_(
MakeGarbageCollected<WorkerAnimationFrameProvider>( MakeGarbageCollected<WorkerAnimationFrameProvider>(
this, this,
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#define THIRD_PARTY_BLINK_RENDERER_CORE_WORKERS_DEDICATED_WORKER_GLOBAL_SCOPE_H_ #define THIRD_PARTY_BLINK_RENDERER_CORE_WORKERS_DEDICATED_WORKER_GLOBAL_SCOPE_H_
#include <memory> #include <memory>
#include "third_party/blink/public/common/tokens/worker_tokens.h"
#include "third_party/blink/renderer/core/animation_frame/worker_animation_frame_provider.h" #include "third_party/blink/renderer/core/animation_frame/worker_animation_frame_provider.h"
#include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/core/core_export.h"
#include "third_party/blink/renderer/core/messaging/message_port.h" #include "third_party/blink/renderer/core/messaging/message_port.h"
...@@ -131,6 +132,8 @@ class CORE_EXPORT DedicatedWorkerGlobalScope final : public WorkerGlobalScope { ...@@ -131,6 +132,8 @@ class CORE_EXPORT DedicatedWorkerGlobalScope final : public WorkerGlobalScope {
// Called by the Oilpan. // Called by the Oilpan.
void Trace(Visitor*) const override; void Trace(Visitor*) const override;
const DedicatedWorkerToken& token() const { return token_; }
private: private:
void DidReceiveResponseForClassicScript( void DidReceiveResponseForClassicScript(
WorkerClassicScriptLoader* classic_script_loader); WorkerClassicScriptLoader* classic_script_loader);
...@@ -139,6 +142,9 @@ class CORE_EXPORT DedicatedWorkerGlobalScope final : public WorkerGlobalScope { ...@@ -139,6 +142,9 @@ class CORE_EXPORT DedicatedWorkerGlobalScope final : public WorkerGlobalScope {
DedicatedWorkerObjectProxy& WorkerObjectProxy() const; DedicatedWorkerObjectProxy& WorkerObjectProxy() const;
// TODO(chrisha): Lift this up to WorkerGlobalScope once all worker types
// have tokens.
const DedicatedWorkerToken token_;
Member<WorkerAnimationFrameProvider> animation_frame_provider_; Member<WorkerAnimationFrameProvider> animation_frame_provider_;
RejectCoepUnsafeNone reject_coep_unsafe_none_ = RejectCoepUnsafeNone(false); RejectCoepUnsafeNone reject_coep_unsafe_none_ = RejectCoepUnsafeNone(false);
}; };
......
...@@ -241,6 +241,13 @@ void DedicatedWorkerMessagingProxy::Trace(Visitor* visitor) const { ...@@ -241,6 +241,13 @@ void DedicatedWorkerMessagingProxy::Trace(Visitor* visitor) const {
ThreadedMessagingProxyBase::Trace(visitor); ThreadedMessagingProxyBase::Trace(visitor);
} }
const DedicatedWorkerToken&
DedicatedWorkerMessagingProxy::GetDedicatedWorkerToken() const {
if (!worker_object_)
return DedicatedWorkerToken::Null();
return worker_object_->GetToken();
}
base::Optional<WorkerBackingThreadStartupData> base::Optional<WorkerBackingThreadStartupData>
DedicatedWorkerMessagingProxy::CreateBackingThreadStartupData( DedicatedWorkerMessagingProxy::CreateBackingThreadStartupData(
v8::Isolate* isolate) { v8::Isolate* isolate) {
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "base/memory/scoped_refptr.h" #include "base/memory/scoped_refptr.h"
#include "base/optional.h" #include "base/optional.h"
#include "services/network/public/mojom/referrer_policy.mojom-blink-forward.h" #include "services/network/public/mojom/referrer_policy.mojom-blink-forward.h"
#include "third_party/blink/public/common/tokens/worker_tokens.h"
#include "third_party/blink/public/mojom/messaging/transferable_message.mojom-blink-forward.h" #include "third_party/blink/public/mojom/messaging/transferable_message.mojom-blink-forward.h"
#include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/core/core_export.h"
#include "third_party/blink/renderer/core/messaging/message_port.h" #include "third_party/blink/renderer/core/messaging/message_port.h"
...@@ -72,6 +73,8 @@ class CORE_EXPORT DedicatedWorkerMessagingProxy ...@@ -72,6 +73,8 @@ class CORE_EXPORT DedicatedWorkerMessagingProxy
void Trace(Visitor*) const override; void Trace(Visitor*) const override;
const DedicatedWorkerToken& GetDedicatedWorkerToken() const;
private: private:
friend class DedicatedWorkerMessagingProxyForTest; friend class DedicatedWorkerMessagingProxyForTest;
......
...@@ -129,6 +129,7 @@ DedicatedWorkerObjectProxy::DedicatedWorkerObjectProxy( ...@@ -129,6 +129,7 @@ DedicatedWorkerObjectProxy::DedicatedWorkerObjectProxy(
DedicatedWorkerMessagingProxy* messaging_proxy_weak_ptr, DedicatedWorkerMessagingProxy* messaging_proxy_weak_ptr,
ParentExecutionContextTaskRunners* parent_execution_context_task_runners) ParentExecutionContextTaskRunners* parent_execution_context_task_runners)
: ThreadedObjectProxyBase(parent_execution_context_task_runners), : ThreadedObjectProxyBase(parent_execution_context_task_runners),
token_(messaging_proxy_weak_ptr->GetDedicatedWorkerToken()),
messaging_proxy_weak_ptr_(messaging_proxy_weak_ptr) {} messaging_proxy_weak_ptr_(messaging_proxy_weak_ptr) {}
CrossThreadWeakPersistent<ThreadedMessagingProxyBase> CrossThreadWeakPersistent<ThreadedMessagingProxyBase>
......
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
#include <memory> #include <memory>
#include "base/macros.h" #include "base/macros.h"
#include "base/memory/scoped_refptr.h" #include "base/memory/scoped_refptr.h"
#include "third_party/blink/public/common/tokens/worker_tokens.h"
#include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/core/core_export.h"
#include "third_party/blink/renderer/core/messaging/message_port.h" #include "third_party/blink/renderer/core/messaging/message_port.h"
#include "third_party/blink/renderer/core/workers/threaded_object_proxy_base.h" #include "third_party/blink/renderer/core/workers/threaded_object_proxy_base.h"
...@@ -72,6 +73,8 @@ class CORE_EXPORT DedicatedWorkerObjectProxy : public ThreadedObjectProxyBase { ...@@ -72,6 +73,8 @@ class CORE_EXPORT DedicatedWorkerObjectProxy : public ThreadedObjectProxyBase {
void DidEvaluateClassicScript(bool success) override; void DidEvaluateClassicScript(bool success) override;
void DidEvaluateModuleScript(bool success) override; void DidEvaluateModuleScript(bool success) override;
const DedicatedWorkerToken& token() const { return token_; }
protected: protected:
CrossThreadWeakPersistent<ThreadedMessagingProxyBase> MessagingProxyWeakPtr() CrossThreadWeakPersistent<ThreadedMessagingProxyBase> MessagingProxyWeakPtr()
final; final;
...@@ -79,6 +82,8 @@ class CORE_EXPORT DedicatedWorkerObjectProxy : public ThreadedObjectProxyBase { ...@@ -79,6 +82,8 @@ class CORE_EXPORT DedicatedWorkerObjectProxy : public ThreadedObjectProxyBase {
private: private:
friend class DedicatedWorkerObjectProxyForTest; friend class DedicatedWorkerObjectProxyForTest;
const DedicatedWorkerToken token_;
// No guarantees about the lifetimes of tasks posted by this proxy wrt the // No guarantees about the lifetimes of tasks posted by this proxy wrt the
// DedicatedWorkerMessagingProxy so a weak pointer must be used when posting // DedicatedWorkerMessagingProxy so a weak pointer must be used when posting
// the tasks. // the tasks.
......
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