Make out of process iframes draw when flag enabled.

This patch provides the final pieces to allow out of process iframes
to render in their embedding page when running under --site-per-process.

The --force-compositing-mode is also required unless using Aura.

BrowserPluginCompositingHelper has been renamed to
ChildFrameCompositingHelper and is now being used for both purposes.
The split code paths within the helper class will be merged when
BrowserPlugin is converted to use RenderFrame for IPC routing.

[email protected]
BUG=325803

Review URL: https://codereview.chromium.org/136953003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@246682 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index 5197534c..af78979 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -40,6 +40,7 @@
 #include "content/renderer/ime_event_guard.h"
 #include "content/renderer/input/input_handler_manager.h"
 #include "content/renderer/pepper/pepper_plugin_instance_impl.h"
+#include "content/renderer/render_frame_impl.h"
 #include "content/renderer/render_process.h"
 #include "content/renderer/render_thread_impl.h"
 #include "content/renderer/renderer_webkitplatformsupport_impl.h"
@@ -406,6 +407,7 @@
     }
     current_paint_buf_ = NULL;
   }
+
   // If we are swapped out, we have released already.
   if (!is_swapped_out_ && RenderProcess::current())
     RenderProcess::current()->ReleaseProcess();
@@ -1897,6 +1899,8 @@
 }
 
 void RenderWidget::DidCommitCompositorFrame() {
+  FOR_EACH_OBSERVER(RenderFrameImpl, swapped_out_frames_,
+                    DidCommitCompositorFrame());
 }
 
 void RenderWidget::didCommitAndDrawCompositorFrame() {
@@ -2891,4 +2895,12 @@
   return context.Pass();
 }
 
+void RenderWidget::RegisterSwappedOutChildFrame(RenderFrameImpl* frame) {
+  swapped_out_frames_.AddObserver(frame);
+}
+
+void RenderWidget::UnregisterSwappedOutChildFrame(RenderFrameImpl* frame) {
+  swapped_out_frames_.RemoveObserver(frame);
+}
+
 }  // namespace content