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,
const KURL& script_request_url,
const WorkerOptions* options)
: AbstractWorker(context),
token_(blink::DedicatedWorkerToken::Create()),
script_request_url_(script_request_url),
options_(options),
context_proxy_(
......@@ -93,8 +94,7 @@ DedicatedWorker::DedicatedWorker(ExecutionContext* context,
factory_client_(
Platform::Current()->CreateDedicatedWorkerHostFactoryClient(
this,
GetExecutionContext()->GetBrowserInterfaceBroker())),
token_(blink::DedicatedWorkerToken::Create()) {
GetExecutionContext()->GetBrowserInterfaceBroker())) {
DCHECK(context->IsContextThread());
DCHECK(script_request_url_.IsValid());
DCHECK(context_proxy_);
......
......@@ -137,6 +137,11 @@ class CORE_EXPORT DedicatedWorker final
// Implements EventTarget (via AbstractWorker -> EventTargetWithInlineData).
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_;
Member<const WorkerOptions> options_;
Member<const FetchClientSettingsObjectSnapshot>
......@@ -156,10 +161,6 @@ class CORE_EXPORT DedicatedWorker final
// Whether the worker is frozen due to a call from this context.
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
......
......@@ -112,6 +112,7 @@ DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope(
thread,
time_origin,
ukm_source_id),
token_(thread->WorkerObjectProxy().token()),
animation_frame_provider_(
MakeGarbageCollected<WorkerAnimationFrameProvider>(
this,
......
......@@ -32,6 +32,7 @@
#define THIRD_PARTY_BLINK_RENDERER_CORE_WORKERS_DEDICATED_WORKER_GLOBAL_SCOPE_H_
#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/core_export.h"
#include "third_party/blink/renderer/core/messaging/message_port.h"
......@@ -131,6 +132,8 @@ class CORE_EXPORT DedicatedWorkerGlobalScope final : public WorkerGlobalScope {
// Called by the Oilpan.
void Trace(Visitor*) const override;
const DedicatedWorkerToken& token() const { return token_; }
private:
void DidReceiveResponseForClassicScript(
WorkerClassicScriptLoader* classic_script_loader);
......@@ -139,6 +142,9 @@ class CORE_EXPORT DedicatedWorkerGlobalScope final : public WorkerGlobalScope {
DedicatedWorkerObjectProxy& WorkerObjectProxy() const;
// TODO(chrisha): Lift this up to WorkerGlobalScope once all worker types
// have tokens.
const DedicatedWorkerToken token_;
Member<WorkerAnimationFrameProvider> animation_frame_provider_;
RejectCoepUnsafeNone reject_coep_unsafe_none_ = RejectCoepUnsafeNone(false);
};
......
......@@ -241,6 +241,13 @@ void DedicatedWorkerMessagingProxy::Trace(Visitor* visitor) const {
ThreadedMessagingProxyBase::Trace(visitor);
}
const DedicatedWorkerToken&
DedicatedWorkerMessagingProxy::GetDedicatedWorkerToken() const {
if (!worker_object_)
return DedicatedWorkerToken::Null();
return worker_object_->GetToken();
}
base::Optional<WorkerBackingThreadStartupData>
DedicatedWorkerMessagingProxy::CreateBackingThreadStartupData(
v8::Isolate* isolate) {
......
......@@ -10,6 +10,7 @@
#include "base/memory/scoped_refptr.h"
#include "base/optional.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/renderer/core/core_export.h"
#include "third_party/blink/renderer/core/messaging/message_port.h"
......@@ -72,6 +73,8 @@ class CORE_EXPORT DedicatedWorkerMessagingProxy
void Trace(Visitor*) const override;
const DedicatedWorkerToken& GetDedicatedWorkerToken() const;
private:
friend class DedicatedWorkerMessagingProxyForTest;
......
......@@ -129,6 +129,7 @@ DedicatedWorkerObjectProxy::DedicatedWorkerObjectProxy(
DedicatedWorkerMessagingProxy* messaging_proxy_weak_ptr,
ParentExecutionContextTaskRunners* 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) {}
CrossThreadWeakPersistent<ThreadedMessagingProxyBase>
......
......@@ -34,6 +34,7 @@
#include <memory>
#include "base/macros.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/messaging/message_port.h"
#include "third_party/blink/renderer/core/workers/threaded_object_proxy_base.h"
......@@ -72,6 +73,8 @@ class CORE_EXPORT DedicatedWorkerObjectProxy : public ThreadedObjectProxyBase {
void DidEvaluateClassicScript(bool success) override;
void DidEvaluateModuleScript(bool success) override;
const DedicatedWorkerToken& token() const { return token_; }
protected:
CrossThreadWeakPersistent<ThreadedMessagingProxyBase> MessagingProxyWeakPtr()
final;
......@@ -79,6 +82,8 @@ class CORE_EXPORT DedicatedWorkerObjectProxy : public ThreadedObjectProxyBase {
private:
friend class DedicatedWorkerObjectProxyForTest;
const DedicatedWorkerToken token_;
// No guarantees about the lifetimes of tasks posted by this proxy wrt the
// DedicatedWorkerMessagingProxy so a weak pointer must be used when posting
// 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