Commit 372a6d2e authored by Omer Katz's avatar Omer Katz Committed by Commit Bot

Converting ServiceWorker and ServiceWorkerRegistration to PreFinalizer

Both PreFinalizers reset host_ pointer and close binding_.

Bug: 981043
Change-Id: I8f4a22e696e3c5c0532b8021d0ae1c207e9fef0a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1692417Reviewed-by: default avatarMichael Lippautz <mlippautz@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Commit-Queue: Omer Katz <omerkatz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#676319}
parent 68f31acf
......@@ -193,6 +193,11 @@ ServiceWorker::ServiceWorker(ExecutionContext* execution_context,
ServiceWorker::~ServiceWorker() = default;
void ServiceWorker::Dispose() {
host_.reset();
binding_.Close();
}
void ServiceWorker::Trace(blink::Visitor* visitor) {
AbstractWorker::Trace(visitor);
}
......
......@@ -53,7 +53,8 @@ class MODULES_EXPORT ServiceWorker final
public mojom::blink::ServiceWorkerObject {
DEFINE_WRAPPERTYPEINFO();
USING_GARBAGE_COLLECTED_MIXIN(ServiceWorker);
USING_PRE_FINALIZER(ServiceWorker, Dispose);
public:
static ServiceWorker* From(ExecutionContext*,
mojom::blink::ServiceWorkerObjectInfoPtr);
......@@ -73,8 +74,8 @@ class MODULES_EXPORT ServiceWorker final
~ServiceWorker() override;
void Trace(blink::Visitor*) override;
// Eager finalization needed to promptly release owned WebServiceWorker.
EAGERLY_FINALIZE();
// Pre-finalization needed to promptly release owned WebServiceWorker.
void Dispose();
void postMessage(ScriptState*,
const ScriptValue& message,
......
......@@ -277,6 +277,11 @@ ScriptPromise ServiceWorkerRegistration::unregister(ScriptState* script_state) {
ServiceWorkerRegistration::~ServiceWorkerRegistration() = default;
void ServiceWorkerRegistration::Dispose() {
host_.reset();
binding_.Close();
}
void ServiceWorkerRegistration::Trace(blink::Visitor* visitor) {
visitor->Trace(installing_);
visitor->Trace(waiting_);
......
......@@ -33,6 +33,7 @@ class ServiceWorkerRegistration final
public mojom::blink::ServiceWorkerRegistrationObject {
DEFINE_WRAPPERTYPEINFO();
USING_GARBAGE_COLLECTED_MIXIN(ServiceWorkerRegistration);
USING_PRE_FINALIZER(ServiceWorkerRegistration, Dispose);
public:
// Called from CallbackPromiseAdapter.
......@@ -48,11 +49,6 @@ class ServiceWorkerRegistration final
ExecutionContext*,
mojom::blink::ServiceWorkerRegistrationObjectInfoPtr);
// Eager finalization needed to promptly invalidate the corresponding entry of
// the (registration id, WeakMember<ServiceWorkerRegistration>) map inside
// ServiceWorkerContainer.
EAGERLY_FINALIZE();
// Called in 2 scenarios:
// - when constructing |this|.
// - when the browser process sends a new
......@@ -92,6 +88,8 @@ class ServiceWorkerRegistration final
~ServiceWorkerRegistration() override;
void Dispose();
void Trace(blink::Visitor*) override;
private:
......
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