Index: content/browser/renderer_host/render_widget_host_impl.cc |
diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc |
index 9b64f82bd3e837edad5a73c5f131a1f964fca930..0f488d8d88c866c07413ade08acdc0fc1ff70551 100644 |
--- a/content/browser/renderer_host/render_widget_host_impl.cc |
+++ b/content/browser/renderer_host/render_widget_host_impl.cc |
@@ -95,6 +95,10 @@ |
#if defined(OS_ANDROID) |
#include "ui/android/view_android.h" |
+#else |
+#include "content/browser/compositor/image_transport_factory.h" |
+// nogncheck as dependency of "ui/compositor" is on non-Android platforms only. |
+#include "ui/compositor/compositor.h" // nogncheck |
#endif |
#if defined(OS_MACOSX) |
@@ -425,6 +429,23 @@ RenderWidgetHostViewBase* RenderWidgetHostImpl::GetView() const { |
return view_.get(); |
} |
+cc::FrameSinkId RenderWidgetHostImpl::AllocateFrameSinkId( |
+ bool is_guest_view_hack) { |
+// GuestViews have two RenderWidgetHostViews and so we need to make sure |
+// we don't have FrameSinkId collisions. |
+// The FrameSinkId generated here must not conflict with FrameSinkId allocated |
+// in cc::FrameSinkIdAllocator. |
+#if !defined(OS_ANDROID) |
+ if (is_guest_view_hack) { |
+ ImageTransportFactory* factory = ImageTransportFactory::GetInstance(); |
+ return factory->GetContextFactoryPrivate()->AllocateFrameSinkId(); |
+ } |
+#endif |
+ return cc::FrameSinkId( |
+ base::checked_cast<uint32_t>(this->GetProcess()->GetID()), |
+ base::checked_cast<uint32_t>(this->GetRoutingID())); |
+} |
+ |
void RenderWidgetHostImpl::ResetSizeAndRepaintPendingFlags() { |
resize_ack_pending_ = false; |
if (repaint_ack_pending_) { |