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) {
void WorkerAnimationFrameProvider::RegisterOffscreenCanvas(
OffscreenCanvas* context) {
DCHECK(offscreen_canvases_.Find(context) == kNotFound);
offscreen_canvases_.push_back(context);
auto result = offscreen_canvases_.insert(context);
DCHECK(result.is_new_entry);
}
void WorkerAnimationFrameProvider::DeregisterOffscreenCanvas(
OffscreenCanvas* offscreen_canvas) {
wtf_size_t pos = offscreen_canvases_.Find(offscreen_canvas);
if (pos != kNotFound) {
offscreen_canvases_.EraseAt(pos);
}
offscreen_canvases_.erase(offscreen_canvas);
}
void WorkerAnimationFrameProvider::Trace(Visitor* visitor) {
visitor->Trace(callback_collection_);
visitor->Trace(offscreen_canvases_);
visitor->Trace(context_);
}
......
......@@ -51,9 +51,7 @@ class CORE_EXPORT WorkerAnimationFrameProvider
DISALLOW_COPY_AND_ASSIGN(WorkerAnimationFrameProvider);
FrameRequestCallbackCollection callback_collection_;
// To avoid leaking OffscreenCanvas objects, the following vector must
// not hold strong references.
Vector<UntracedMember<OffscreenCanvas>> offscreen_canvases_;
HeapLinkedHashSet<WeakMember<OffscreenCanvas>> offscreen_canvases_;
Member<ExecutionContext> context_;
......
......@@ -105,8 +105,6 @@ void OffscreenCanvas::Dispose() {
context_->DetachHost();
context_ = nullptr;
}
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