diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/core/html/canvas/canvas_resource_tracker.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/core/html/canvas/canvas_resource_tracker.cc | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/chromium/third_party/blink/renderer/core/html/canvas/canvas_resource_tracker.cc b/chromium/third_party/blink/renderer/core/html/canvas/canvas_resource_tracker.cc new file mode 100644 index 00000000000..470a13144c6 --- /dev/null +++ b/chromium/third_party/blink/renderer/core/html/canvas/canvas_resource_tracker.cc @@ -0,0 +1,40 @@ +// Copyright 2021 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "third_party/blink/renderer/core/html/canvas/canvas_resource_tracker.h" + +#include "third_party/blink/renderer/core/execution_context/execution_context.h" +#include "third_party/blink/renderer/core/html/canvas/canvas_rendering_context_host.h" +#include "third_party/blink/renderer/platform/bindings/v8_per_isolate_data.h" +#include "v8/include/v8.h" + +namespace blink { + +CanvasResourceTracker* CanvasResourceTracker::For(v8::Isolate* isolate) { + auto* isolate_data = V8PerIsolateData::From(isolate); + auto* canvas_resource_tracker = static_cast<CanvasResourceTracker*>( + isolate_data->CanvasResourceTracker()); + if (!canvas_resource_tracker) { + canvas_resource_tracker = MakeGarbageCollected<CanvasResourceTracker>(); + isolate_data->SetCanvasResourceTracker(canvas_resource_tracker); + } + return canvas_resource_tracker; +} + +void CanvasResourceTracker::Add(CanvasRenderingContextHost* resource, + ExecutionContext* execution_context) { + resource_map_.insert(resource, execution_context); +} + +const CanvasResourceTracker::ResourceMap& +CanvasResourceTracker::GetResourceMap() const { + return resource_map_; +} + +void CanvasResourceTracker::Trace(Visitor* visitor) const { + V8PerIsolateData::GarbageCollectedData::Trace(visitor); + visitor->Trace(resource_map_); +} + +} // namespace blink |