Add a PageProperties interface for RW access to RV.

As the splitting process for RenderWidget/RenderView continues, it is
becoming necessary for RenderWidget to access "page global" state.
RenderView has historically held this data. Adding a new PageProperties
interface for "page" level concepts will provide the needed access
without opening the door to full API coupling that historically
occurred when RenderWidgets had full access to the RenderViewImpl
interface.

Bug: 998273
Change-Id: I2d532e0e88256b04b8c9e3f49607e0e59bc93113
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1792795
Commit-Queue: Albert J. Wong <[email protected]>
Reviewed-by: Avi Drissman <[email protected]>
Reviewed-by: Daniel Cheng <[email protected]>
Reviewed-by: Erik Chen <[email protected]>
Auto-Submit: Albert J. Wong <[email protected]>
Cr-Commit-Position: refs/heads/master@{#695734}
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index aa42dac7..bef3446 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -419,36 +419,40 @@
 std::unique_ptr<RenderWidget> RenderWidget::CreateForFrame(
     int32_t widget_routing_id,
     CompositorDependencies* compositor_deps,
+    PageProperties* page_properties,
     const ScreenInfo& screen_info,
     blink::WebDisplayMode display_mode,
     bool is_undead,
     bool never_visible) {
   if (g_create_render_widget_for_frame) {
     return g_create_render_widget_for_frame(
-        widget_routing_id, compositor_deps, screen_info, display_mode,
-        is_undead, never_visible, mojo::NullReceiver());
+        widget_routing_id, compositor_deps, page_properties, screen_info,
+        display_mode, is_undead, never_visible, mojo::NullReceiver());
   }
 
   return std::make_unique<RenderWidget>(
-      widget_routing_id, compositor_deps, screen_info, display_mode, is_undead,
+      widget_routing_id, compositor_deps, page_properties, screen_info,
+      display_mode, is_undead,
       /*hidden=*/true, never_visible, mojo::NullReceiver());
 }
 
 RenderWidget* RenderWidget::CreateForPopup(
     int32_t widget_routing_id,
     CompositorDependencies* compositor_deps,
+    PageProperties* page_properties,
     const ScreenInfo& screen_info,
     blink::WebDisplayMode display_mode,
     bool hidden,
     bool never_visible,
     mojo::PendingReceiver<mojom::Widget> widget_receiver) {
-  return new RenderWidget(widget_routing_id, compositor_deps, screen_info,
-                          display_mode, /*is_undead=*/false, hidden,
-                          never_visible, std::move(widget_receiver));
+  return new RenderWidget(widget_routing_id, compositor_deps, page_properties,
+                          screen_info, display_mode, /*is_undead=*/false,
+                          hidden, never_visible, std::move(widget_receiver));
 }
 
 RenderWidget::RenderWidget(int32_t widget_routing_id,
                            CompositorDependencies* compositor_deps,
+                           PageProperties* page_properties,
                            const ScreenInfo& screen_info,
                            blink::WebDisplayMode display_mode,
                            bool is_undead,
@@ -457,6 +461,7 @@
                            mojo::PendingReceiver<mojom::Widget> widget_receiver)
     : routing_id_(widget_routing_id),
       compositor_deps_(compositor_deps),
+      page_properties_(page_properties),
       is_hidden_(hidden),
       compositor_never_visible_(never_visible),
       display_mode_(display_mode),
@@ -467,6 +472,7 @@
       widget_receiver_(this, std::move(widget_receiver)) {
   DCHECK_NE(routing_id_, MSG_ROUTING_NONE);
   DCHECK(RenderThread::IsMainThread());
+  DCHECK(page_properties);
 
   // In tests there may not be a RenderThreadImpl.
   if (RenderThreadImpl::current()) {