summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/html/canvas/canvas_resource_tracker.cc
diff options
context:
space:
mode:
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.cc40
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