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

Unified Diff: content/browser/renderer_host/render_widget_host_view_mac.mm

Issue 2656893003: Let DelegateFrameHost in Mac and Android use correct FrameSinkId during creation (Closed)
Patch Set: more comments Created 3 years, 11 months 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/render_widget_host_view_mac.mm
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm
index c91614f5c60f505661f68f3390315a215913abfc..cf1874923c999d9fea8c4c1bbe48ae7c60d64efe 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac.mm
+++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
@@ -468,8 +468,23 @@ RenderWidgetHostViewMac::RenderWidgetHostViewMac(RenderWidgetHost* widget,
[cocoa_view_ setLayer:background_layer_];
[cocoa_view_ setWantsLayer:YES];
- browser_compositor_.reset(new BrowserCompositorMac(
- this, this, render_widget_host_->is_hidden(), [cocoa_view_ window]));
+ // GuestViews have two RenderWidgetHostViews and so we need to make sure
+ // we don't have FrameSinkId collisions.
+ // The FrameSinkId generated here must be unique with FrameSinkId allocated
+ // in ContextFactoryPrivate.
+ // TODO(crbug.com/685777): Centralize allocation in one place for easier
+ // maintenance.
+ ImageTransportFactory* factory = ImageTransportFactory::GetInstance();
+ cc::FrameSinkId frame_sink_id =
+ is_guest_view_hack_
+ ? factory->GetContextFactoryPrivate()->AllocateFrameSinkId()
+ : cc::FrameSinkId(base::checked_cast<uint32_t>(
+ render_widget_host_->GetProcess()->GetID()),
+ base::checked_cast<uint32_t>(
+ render_widget_host_->GetRoutingID()));
+ browser_compositor_.reset(
+ new BrowserCompositorMac(this, this, render_widget_host_->is_hidden(),
+ [cocoa_view_ window], frame_sink_id));
display::Screen::GetScreen()->AddObserver(this);
« no previous file with comments | « content/browser/renderer_host/render_widget_host_view_aura.cc ('k') | ui/android/delegated_frame_host_android.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698