| Index: content/renderer/render_widget.cc
|
| diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
|
| index c2eefbd766a8c00c252c1c06c249675af13d37fa..1f3defddb6b04046ed1a232100761272393a65f6 100644
|
| --- a/content/renderer/render_widget.cc
|
| +++ b/content/renderer/render_widget.cc
|
| @@ -61,12 +61,15 @@
|
| #include "third_party/WebKit/public/platform/WebSize.h"
|
| #include "third_party/WebKit/public/platform/WebString.h"
|
| #include "third_party/WebKit/public/web/WebDeviceEmulationParams.h"
|
| +#include "third_party/WebKit/public/web/WebFrameWidget.h"
|
| +#include "third_party/WebKit/public/web/WebLocalFrame.h"
|
| #include "third_party/WebKit/public/web/WebNode.h"
|
| #include "third_party/WebKit/public/web/WebPagePopup.h"
|
| #include "third_party/WebKit/public/web/WebPopupMenu.h"
|
| #include "third_party/WebKit/public/web/WebPopupMenuInfo.h"
|
| #include "third_party/WebKit/public/web/WebRange.h"
|
| #include "third_party/WebKit/public/web/WebRuntimeFeatures.h"
|
| +#include "third_party/WebKit/public/web/WebView.h"
|
| #include "third_party/skia/include/core/SkShader.h"
|
| #include "ui/base/ui_base_switches.h"
|
| #include "ui/gfx/frame_time.h"
|
| @@ -533,7 +536,32 @@ RenderWidget* RenderWidget::Create(int32 opener_id,
|
| }
|
|
|
| // static
|
| -WebWidget* RenderWidget::CreateWebWidget(RenderWidget* render_widget) {
|
| +RenderWidget* RenderWidget::CreateForFrame(
|
| + int routing_id,
|
| + int surface_id,
|
| + bool hidden,
|
| + const blink::WebScreenInfo& screen_info,
|
| + CompositorDependencies* compositor_deps,
|
| + blink::WebLocalFrame* frame) {
|
| + CHECK_NE(routing_id, MSG_ROUTING_NONE);
|
| + scoped_refptr<RenderWidget> widget(new RenderWidget(
|
| + blink::WebPopupTypeNone, screen_info, false, hidden, false));
|
| + widget->routing_id_ = routing_id;
|
| + widget->surface_id_ = surface_id;
|
| + widget->compositor_deps_ = compositor_deps;
|
| + // DoInit increments the reference count on |widget|, keeping it alive after
|
| + // this function returns.
|
| + if (widget->DoInit(MSG_ROUTING_NONE, compositor_deps,
|
| + RenderWidget::CreateWebFrameWidget(widget.get(), frame),
|
| + nullptr)) {
|
| + widget->CompleteInit();
|
| + return widget.get();
|
| + }
|
| + return nullptr;
|
| +}
|
| +
|
| +// static
|
| +blink::WebWidget* RenderWidget::CreateWebWidget(RenderWidget* render_widget) {
|
| switch (render_widget->popup_type_) {
|
| case blink::WebPopupTypeNone: // Nothing to create.
|
| break;
|
| @@ -548,6 +576,13 @@ WebWidget* RenderWidget::CreateWebWidget(RenderWidget* render_widget) {
|
| return NULL;
|
| }
|
|
|
| +// static
|
| +blink::WebWidget* RenderWidget::CreateWebFrameWidget(
|
| + RenderWidget* render_widget,
|
| + blink::WebLocalFrame* frame) {
|
| + return blink::WebFrameWidget::create(render_widget, frame);
|
| +}
|
| +
|
| bool RenderWidget::Init(int32 opener_id,
|
| CompositorDependencies* compositor_deps) {
|
| return DoInit(opener_id, compositor_deps, RenderWidget::CreateWebWidget(this),
|
| @@ -567,7 +602,10 @@ bool RenderWidget::DoInit(int32 opener_id,
|
| compositor_deps_ = compositor_deps;
|
| webwidget_ = web_widget;
|
|
|
| - bool result = RenderThread::Get()->Send(create_widget_message);
|
| + bool result = true;
|
| + if (create_widget_message)
|
| + result = RenderThread::Get()->Send(create_widget_message);
|
| +
|
| if (result) {
|
| RenderThread::Get()->AddRoute(routing_id_, this);
|
| // Take a reference on behalf of the RenderThread. This will be balanced
|
|
|