Commit c5c33f74 authored by Keishi Hattori's avatar Keishi Hattori Committed by Commit Bot

Remove UntracedMember from WorkerAnimationFrameProvider::offscreen_canvases_

Remove UntracedMember from WorkerAnimationFrameProvider::offscreen_canvases_ and use the safer WeakMember

Bug: 1058341
Change-Id: I62f43a79641eb43fe9c10aedd304e5789760425c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2087871Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Reviewed-by: default avatarFernando Serboncini <fserb@chromium.org>
Commit-Queue: Keishi Hattori <keishi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#758696}
parent dbac2ba5
...@@ -71,20 +71,18 @@ void WorkerAnimationFrameProvider::BeginFrame(const viz::BeginFrameArgs& args) { ...@@ -71,20 +71,18 @@ void WorkerAnimationFrameProvider::BeginFrame(const viz::BeginFrameArgs& args) {
void WorkerAnimationFrameProvider::RegisterOffscreenCanvas( void WorkerAnimationFrameProvider::RegisterOffscreenCanvas(
OffscreenCanvas* context) { OffscreenCanvas* context) {
DCHECK(offscreen_canvases_.Find(context) == kNotFound); auto result = offscreen_canvases_.insert(context);
offscreen_canvases_.push_back(context); DCHECK(result.is_new_entry);
} }
void WorkerAnimationFrameProvider::DeregisterOffscreenCanvas( void WorkerAnimationFrameProvider::DeregisterOffscreenCanvas(
OffscreenCanvas* offscreen_canvas) { OffscreenCanvas* offscreen_canvas) {
wtf_size_t pos = offscreen_canvases_.Find(offscreen_canvas); offscreen_canvases_.erase(offscreen_canvas);
if (pos != kNotFound) {
offscreen_canvases_.EraseAt(pos);
}
} }
void WorkerAnimationFrameProvider::Trace(Visitor* visitor) { void WorkerAnimationFrameProvider::Trace(Visitor* visitor) {
visitor->Trace(callback_collection_); visitor->Trace(callback_collection_);
visitor->Trace(offscreen_canvases_);
visitor->Trace(context_); visitor->Trace(context_);
} }
......
...@@ -51,9 +51,7 @@ class CORE_EXPORT WorkerAnimationFrameProvider ...@@ -51,9 +51,7 @@ class CORE_EXPORT WorkerAnimationFrameProvider
DISALLOW_COPY_AND_ASSIGN(WorkerAnimationFrameProvider); DISALLOW_COPY_AND_ASSIGN(WorkerAnimationFrameProvider);
FrameRequestCallbackCollection callback_collection_; FrameRequestCallbackCollection callback_collection_;
// To avoid leaking OffscreenCanvas objects, the following vector must HeapLinkedHashSet<WeakMember<OffscreenCanvas>> offscreen_canvases_;
// not hold strong references.
Vector<UntracedMember<OffscreenCanvas>> offscreen_canvases_;
Member<ExecutionContext> context_; Member<ExecutionContext> context_;
......
...@@ -105,8 +105,6 @@ void OffscreenCanvas::Dispose() { ...@@ -105,8 +105,6 @@ void OffscreenCanvas::Dispose() {
context_->DetachHost(); context_->DetachHost();
context_ = nullptr; context_ = nullptr;
} }
DeregisterFromAnimationFrameProvider();
} }
void OffscreenCanvas::DeregisterFromAnimationFrameProvider() { void OffscreenCanvas::DeregisterFromAnimationFrameProvider() {
......
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