diff --git content/browser/renderer_host/browser_compositor_view_mac.h content/browser/renderer_host/browser_compositor_view_mac.h
index 513e70d2b738..f821043e0a4e 100644
--- content/browser/renderer_host/browser_compositor_view_mac.h
+++ content/browser/renderer_host/browser_compositor_view_mac.h
@@ -59,6 +59,8 @@ class CONTENT_EXPORT BrowserCompositorMac : public DelegatedFrameHostClient,
 
   // These will not return nullptr until Destroy is called.
   DelegatedFrameHost* GetDelegatedFrameHost();
+  ui::Layer* GetRootLayer() { return root_layer_.get(); }
+  ui::Compositor* GetCompositor();
 
   // Ensure that the currect compositor frame be cleared (even if it is
   // potentially visible).
diff --git content/browser/renderer_host/browser_compositor_view_mac.mm content/browser/renderer_host/browser_compositor_view_mac.mm
index 72ad272b4d1a..0b4cd87019bf 100644
--- content/browser/renderer_host/browser_compositor_view_mac.mm
+++ content/browser/renderer_host/browser_compositor_view_mac.mm
@@ -87,6 +87,12 @@ DelegatedFrameHost* BrowserCompositorMac::GetDelegatedFrameHost() {
   return delegated_frame_host_.get();
 }
 
+ui::Compositor* BrowserCompositorMac::GetCompositor() {
+  if (recyclable_compositor_)
+    return recyclable_compositor_->compositor();
+  return nullptr;
+}
+
 void BrowserCompositorMac::ClearCompositorFrame() {
   // Make sure that we no longer hold a compositor lock by un-suspending the
   // compositor. This ensures that we are able to swap in a new blank frame to