Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Unified Diff: content/browser/renderer_host/offscreen_canvas_surface_impl.cc

Issue 2479563005: Create manager to track OffscreenCanvasSurfaceImpl instances (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/offscreen_canvas_surface_impl.cc
diff --git a/content/browser/renderer_host/offscreen_canvas_surface_impl.cc b/content/browser/renderer_host/offscreen_canvas_surface_impl.cc
index bac06970c2382f730a49d63858dfaa89953644e6..0b4c5e12626be8a8800fa36b32b4de7e7247cf7c 100644
--- a/content/browser/renderer_host/offscreen_canvas_surface_impl.cc
+++ b/content/browser/renderer_host/offscreen_canvas_surface_impl.cc
@@ -8,13 +8,14 @@
#include "cc/surfaces/surface.h"
#include "cc/surfaces/surface_manager.h"
#include "content/browser/compositor/surface_utils.h"
+#include "content/browser/renderer_host/offscreen_canvas_surface_manager.h"
#include "content/public/browser/browser_thread.h"
#include "mojo/public/cpp/bindings/strong_binding.h"
namespace content {
OffscreenCanvasSurfaceImpl::OffscreenCanvasSurfaceImpl()
- : id_allocator_(new cc::SurfaceIdAllocator()) {}
+ : id_allocator_(new cc::SurfaceIdAllocator()), weak_factory_(this) {}
OffscreenCanvasSurfaceImpl::~OffscreenCanvasSurfaceImpl() {}
@@ -26,11 +27,20 @@ void OffscreenCanvasSurfaceImpl::Create(
}
void OffscreenCanvasSurfaceImpl::GetSurfaceId(
+ uint32_t canvas_id,
const GetSurfaceIdCallback& callback) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
cc::LocalFrameId local_frame_id = id_allocator_->GenerateId();
+
+ // This IPC should be only called once for each HTMLCanvasElement. In this
+ // case, surface_id_ is still unset.
+ DCHECK(surface_id_.is_null());
dcheng 2016/11/08 18:30:23 This can't DCHECK, since the renderer could do thi
xlai (Olivia) 2016/11/10 15:45:11 This IPC call is supposed to be called only once f
dcheng 2016/11/11 08:36:40 Right, but this is browser code being invoked by t
surface_id_ = cc::SurfaceId(AllocateFrameSinkId(), local_frame_id);
+ canvas_id_ = canvas_id;
+
+ OffscreenCanvasSurfaceManager::GetInstance()
+ ->RegisterOffscreenCanvasSurfaceInstance(canvas_id_, this);
callback.Run(surface_id_);
}

Powered by Google App Engine
This is Rietveld 408576698