Remove WebContentsViewGuest & RenderWidgetHostViewGuest.
This CL removes more dead BrowserPlugin infrastructure.
Specifically, it remove WebContentsViewGuest, and
RenderWidgetHostViewGuest. It also removes the "guest_view_hack" which
has been in RenderWidgetHostViewMac/Aura since the inception of
BrowserPlugin.
Bug: 533069
Change-Id: Ie6d28ca981d612d3f7bf8f180c615f78d53b7e26
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1943097
Commit-Queue: James MacLean <[email protected]>
Reviewed-by: Alex Moshchuk <[email protected]>
Cr-Commit-Position: refs/heads/master@{#721497}
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
index ce30407..f123153 100644
--- a/content/browser/BUILD.gn
+++ b/content/browser/BUILD.gn
@@ -913,8 +913,6 @@
"frame_host/render_frame_message_filter.h",
"frame_host/render_frame_proxy_host.cc",
"frame_host/render_frame_proxy_host.h",
- "frame_host/render_widget_host_view_guest.cc",
- "frame_host/render_widget_host_view_guest.h",
"frame_host/should_swap_browsing_instance.h",
"frame_host/webui_navigation_throttle.cc",
"frame_host/webui_navigation_throttle.h",
@@ -1827,8 +1825,6 @@
"web_contents/web_contents_view_aura.h",
"web_contents/web_contents_view_child_frame.cc",
"web_contents/web_contents_view_child_frame.h",
- "web_contents/web_contents_view_guest.cc",
- "web_contents/web_contents_view_guest.h",
"web_contents/web_contents_view_mac.h",
"web_contents/web_contents_view_mac.mm",
"web_contents/web_drag_dest_mac.h",
diff --git a/content/browser/browser_plugin/browser_plugin_embedder.cc b/content/browser/browser_plugin/browser_plugin_embedder.cc
index 7fbcff29..f95fc51 100644
--- a/content/browser/browser_plugin/browser_plugin_embedder.cc
+++ b/content/browser/browser_plugin/browser_plugin_embedder.cc
@@ -155,17 +155,6 @@
bad_message::BPE_UNEXPECTED_MESSAGE_BEFORE_BPGM_CREATION);
return;
}
- WebContents* guest_web_contents =
- GetBrowserPluginGuestManager()->GetGuestByInstanceID(
- render_frame_host->GetProcess()->GetID(),
- browser_plugin_instance_id);
- if (!guest_web_contents)
- return;
- BrowserPluginGuest* guest = static_cast<WebContentsImpl*>(guest_web_contents)
- ->GetBrowserPluginGuest();
- guest->Attach(browser_plugin_instance_id,
- static_cast<WebContentsImpl*>(web_contents()),
- params);
}
bool BrowserPluginEmbedder::HandleKeyboardEvent(
diff --git a/content/browser/browser_plugin/browser_plugin_guest.cc b/content/browser/browser_plugin/browser_plugin_guest.cc
index 7762fa7..9a754b94 100644
--- a/content/browser/browser_plugin/browser_plugin_guest.cc
+++ b/content/browser/browser_plugin/browser_plugin_guest.cc
@@ -24,14 +24,13 @@
#include "content/browser/child_process_security_policy_impl.h"
#include "content/browser/frame_host/render_frame_host_impl.h"
#include "content/browser/frame_host/render_frame_proxy_host.h"
-#include "content/browser/frame_host/render_widget_host_view_guest.h"
#include "content/browser/renderer_host/cursor_manager.h"
#include "content/browser/renderer_host/render_view_host_impl.h"
#include "content/browser/renderer_host/render_widget_host_impl.h"
#include "content/browser/renderer_host/render_widget_host_view_base.h"
#include "content/browser/renderer_host/render_widget_host_view_child_frame.h"
#include "content/browser/web_contents/web_contents_impl.h"
-#include "content/browser/web_contents/web_contents_view_guest.h"
+#include "content/browser/web_contents/web_contents_view.h"
#include "content/common/browser_plugin/browser_plugin_constants.h"
#include "content/common/browser_plugin/browser_plugin_messages.h"
#include "content/common/content_constants_internal.h"
@@ -161,6 +160,7 @@
}
void BrowserPluginGuest::SizeContents(const gfx::Size& new_size) {
+ // TODO(wjmaclean): Verify whether this is used via WebContentsViewChildFrame.
GetWebContents()->GetView()->SizeContents(new_size);
}
@@ -289,20 +289,9 @@
frame_rect_ = params.frame_rect;
if (owner_web_contents_ != owner_web_contents) {
- WebContentsViewGuest* new_view = nullptr;
- if (!GuestMode::IsCrossProcessFrameGuest(GetWebContents())) {
- new_view =
- static_cast<WebContentsViewGuest*>(GetWebContents()->GetView());
- }
-
- if (owner_web_contents_ && new_view)
- new_view->OnGuestDetached(owner_web_contents_->GetView());
-
// Once a BrowserPluginGuest has an embedder WebContents, it's considered to
// be attached.
owner_web_contents_ = owner_web_contents;
- if (new_view)
- new_view->OnGuestAttached(owner_web_contents_->GetView());
}
blink::mojom::RendererPreferences* renderer_prefs =
@@ -643,18 +632,6 @@
->SetFocus(focused_);
UpdateVisibility();
- // In case we've created a new guest render process after a crash, let the
- // associated BrowserPlugin know. We only need to send this if we're attached,
- // as guest_crashed_ is cleared automatically on attach anyways.
- if (attached()) {
- RenderWidgetHostViewGuest* rwhv = static_cast<RenderWidgetHostViewGuest*>(
- web_contents()->GetRenderWidgetHostView());
- if (rwhv) {
- SendMessageToEmbedder(std::make_unique<BrowserPluginMsg_GuestReady>(
- browser_plugin_instance_id(), rwhv->GetFrameSinkId()));
- }
- }
-
RenderWidgetHostImpl::From(rvh->GetWidget())
->set_hung_renderer_delay(
base::TimeDelta::FromMilliseconds(kHungRendererDelayMs));
@@ -776,58 +753,6 @@
#endif
}
-void BrowserPluginGuest::Attach(
- int browser_plugin_instance_id,
- WebContentsImpl* embedder_web_contents,
- const BrowserPluginHostMsg_Attach_Params& params) {
- browser_plugin_instance_id_ = browser_plugin_instance_id;
- // The guest is owned by the embedder. Attach is queued up so we cannot
- // change embedders before attach completes. If the embedder goes away,
- // so does the guest and so we will never call WillAttachComplete because
- // we have a weak ptr.
- delegate_->WillAttach(
- embedder_web_contents, browser_plugin_instance_id,
- params.is_full_page_plugin,
- base::BindOnce(&BrowserPluginGuest::OnWillAttachComplete,
- weak_ptr_factory_.GetWeakPtr(), embedder_web_contents,
- params));
-}
-
-void BrowserPluginGuest::OnWillAttachComplete(
- WebContentsImpl* embedder_web_contents,
- const BrowserPluginHostMsg_Attach_Params& params) {
- // If a RenderView has already been created for this new window, then we need
- // to initialize the browser-side state now so that the RenderFrameHostManager
- // does not create a new RenderView on navigation.
- if (has_render_view_) {
- // This will trigger a callback to RenderViewReady after a round-trip IPC.
- static_cast<RenderViewHostImpl*>(GetWebContents()->GetRenderViewHost())
- ->GetWidget()
- ->Init();
- GetWebContents()->GetMainFrame()->Init();
- WebContentsViewGuest* web_contents_view =
- static_cast<WebContentsViewGuest*>(GetWebContents()->GetView());
- if (!web_contents()->GetRenderViewHost()->GetWidget()->GetView()) {
- web_contents_view->CreateViewForWidget(
- web_contents()->GetRenderViewHost()->GetWidget(), true);
- }
- }
-
- InitInternal(params, embedder_web_contents);
-
- attached_ = true;
- SendQueuedMessages();
-
- delegate_->DidAttach(GetGuestRenderViewRoutingID());
- RenderWidgetHostViewGuest* rwhv = static_cast<RenderWidgetHostViewGuest*>(
- web_contents()->GetRenderWidgetHostView());
- if (rwhv)
- rwhv->OnAttached();
- has_render_view_ = true;
-
- RecordAction(base::UserMetricsAction("BrowserPlugin.Guest.Attached"));
-}
-
void BrowserPluginGuest::OnDetach(int browser_plugin_instance_id) {
if (!attached())
return;
@@ -845,10 +770,6 @@
// If the guest is terminated, our host may already be gone.
if (rwhv) {
rwhv->UnregisterFrameSinkId();
- RenderWidgetHostViewBase* root_view =
- RenderWidgetHostViewGuest::GetRootView(rwhv);
- if (root_view)
- root_view->GetCursorManager()->ViewBeingDestroyed(rwhv);
}
delegate_->DidDetach();
diff --git a/content/browser/browser_plugin/browser_plugin_guest.h b/content/browser/browser_plugin/browser_plugin_guest.h
index 44ed710..ead1cf0 100644
--- a/content/browser/browser_plugin/browser_plugin_guest.h
+++ b/content/browser/browser_plugin/browser_plugin_guest.h
@@ -229,14 +229,6 @@
// Returns whether the guest is attached to an embedder.
bool attached() const { return attached_; }
- // Attaches this BrowserPluginGuest to the provided |embedder_web_contents|
- // and initializes the guest with the provided |params|. Attaching a guest
- // to an embedder implies that this guest's lifetime is no longer managed
- // by its opener, and it can begin loading resources.
- void Attach(int browser_plugin_instance_id,
- WebContentsImpl* embedder_web_contents,
- const BrowserPluginHostMsg_Attach_Params& params);
-
// Returns whether BrowserPluginGuest is interested in receiving the given
// |message|.
static bool ShouldForwardToBrowserPluginGuest(const IPC::Message& message);
@@ -376,10 +368,6 @@
bool is_top_level,
const std::string& name);
- // Called when WillAttach is complete.
- void OnWillAttachComplete(WebContentsImpl* embedder_web_contents,
- const BrowserPluginHostMsg_Attach_Params& params);
-
// Returns identical message with current browser_plugin_instance_id() if
// the input was created with browser_plugin::kInstanceIdNone, else it returns
// the input message unmodified. If no current browser_plugin_instance_id()
diff --git a/content/browser/frame_host/interstitial_page_impl.cc b/content/browser/frame_host/interstitial_page_impl.cc
index 545fefd..767fd31 100644
--- a/content/browser/frame_host/interstitial_page_impl.cc
+++ b/content/browser/frame_host/interstitial_page_impl.cc
@@ -614,7 +614,7 @@
WebContentsView* wcv =
static_cast<WebContentsImpl*>(web_contents())->GetView();
RenderWidgetHostViewBase* view =
- wcv->CreateViewForWidget(render_view_host_->GetWidget(), false);
+ wcv->CreateViewForWidget(render_view_host_->GetWidget());
render_view_host_->GetWidget()->SetView(view);
render_view_host_->GetMainFrame()->AllowBindings(
BINDINGS_POLICY_DOM_AUTOMATION);
diff --git a/content/browser/frame_host/render_widget_host_view_guest.cc b/content/browser/frame_host/render_widget_host_view_guest.cc
deleted file mode 100644
index 09ac7172..0000000
--- a/content/browser/frame_host/render_widget_host_view_guest.cc
+++ /dev/null
@@ -1,671 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/browser/frame_host/render_widget_host_view_guest.h"
-
-#include <memory>
-#include <utility>
-
-#include "base/bind.h"
-#include "base/bind_helpers.h"
-#include "base/command_line.h"
-#include "base/logging.h"
-#include "build/build_config.h"
-#include "components/viz/common/surfaces/parent_local_surface_id_allocator.h"
-#include "components/viz/service/frame_sinks/frame_sink_manager_impl.h"
-#include "components/viz/service/surfaces/surface.h"
-#include "components/viz/service/surfaces/surface_manager.h"
-#include "content/browser/browser_plugin/browser_plugin_guest.h"
-#include "content/browser/compositor/surface_utils.h"
-#include "content/browser/renderer_host/cursor_manager.h"
-#include "content/browser/renderer_host/input/input_router.h"
-#include "content/browser/renderer_host/render_view_host_impl.h"
-#include "content/browser/renderer_host/render_widget_host_delegate.h"
-#include "content/browser/renderer_host/render_widget_host_input_event_router.h"
-#include "content/common/browser_plugin/browser_plugin_messages.h"
-#include "content/common/frame_messages.h"
-#include "content/common/input/web_touch_event_traits.h"
-#include "content/common/text_input_state.h"
-#include "content/common/widget_messages.h"
-#include "content/public/common/content_switches.h"
-#include "content/public/common/use_zoom_for_dsf_policy.h"
-#include "gpu/ipc/common/gpu_messages.h"
-#include "skia/ext/platform_canvas.h"
-#include "ui/base/ui_base_switches_util.h"
-#include "ui/events/base_event_utils.h"
-#include "ui/gfx/geometry/dip_util.h"
-
-#if defined(USE_AURA)
-#include "content/browser/renderer_host/ui_events_helper.h"
-#include "ui/aura/env.h"
-#endif
-
-namespace content {
-namespace {
-
-class ScopedInputScaleDisabler {
- public:
- ScopedInputScaleDisabler(RenderWidgetHostImpl* host, float scale_factor)
- : host_(host), scale_factor_(scale_factor) {
- if (IsUseZoomForDSFEnabled())
- host_->input_router()->SetDeviceScaleFactor(1.0f);
- }
-
- ~ScopedInputScaleDisabler() {
- if (IsUseZoomForDSFEnabled())
- host_->input_router()->SetDeviceScaleFactor(scale_factor_);
- }
-
- private:
- RenderWidgetHostImpl* host_;
- float scale_factor_;
-
- DISALLOW_COPY_AND_ASSIGN(ScopedInputScaleDisabler);
-};
-
-} // namespace
-
-// static
-RenderWidgetHostViewGuest* RenderWidgetHostViewGuest::Create(
- RenderWidgetHost* widget,
- BrowserPluginGuest* guest,
- base::WeakPtr<RenderWidgetHostViewBase> platform_view) {
- RenderWidgetHostViewGuest* view =
- new RenderWidgetHostViewGuest(widget, guest, platform_view);
- view->Init();
- return view;
-}
-
-// static
-RenderWidgetHostViewBase* RenderWidgetHostViewGuest::GetRootView(
- RenderWidgetHostViewBase* rwhv) {
- // If we're a pdf in a WebView, we could have nested guest views here.
- while (rwhv && rwhv->IsRenderWidgetHostViewGuest()) {
- rwhv = static_cast<RenderWidgetHostViewGuest*>(rwhv)
- ->GetOwnerRenderWidgetHostView();
- }
- if (!rwhv)
- return nullptr;
-
- // We could be a guest inside an oopif frame, in which case we're not the
- // root.
- if (rwhv->IsRenderWidgetHostViewChildFrame()) {
- rwhv = static_cast<RenderWidgetHostViewChildFrame*>(rwhv)
- ->GetRootRenderWidgetHostView();
- }
- return rwhv;
-}
-
-RenderWidgetHostViewBase* RenderWidgetHostViewGuest::GetParentView() {
- return GetOwnerRenderWidgetHostView();
-}
-
-RenderWidgetHostViewGuest::RenderWidgetHostViewGuest(
- RenderWidgetHost* widget_host,
- BrowserPluginGuest* guest,
- base::WeakPtr<RenderWidgetHostViewBase> platform_view)
- : RenderWidgetHostViewChildFrame(widget_host),
- // |guest| is NULL during test.
- guest_(guest ? guest->AsWeakPtr() : base::WeakPtr<BrowserPluginGuest>()),
- platform_view_(platform_view) {
- // In tests |guest_| and therefore |owner| can be null.
- auto* owner = GetOwnerRenderWidgetHostView();
- if (owner)
- SetParentFrameSinkId(owner->GetFrameSinkId());
-
- gfx::NativeView view = GetNativeView();
- if (view)
- UpdateScreenInfo(view);
-}
-
-RenderWidgetHostViewGuest::~RenderWidgetHostViewGuest() {}
-
-void RenderWidgetHostViewGuest::Show() {
- // If the WebContents associated with us showed an interstitial page in the
- // beginning, the teardown path might call WasShown() while |host_| is in
- // the process of destruction. Avoid calling WasShown below in this case.
- // TODO(lazyboy): We shouldn't be showing interstitial pages in guests in the
- // first place: http://crbug.com/273089.
- //
- // |guest_| is NULL during test.
- if ((guest_ && guest_->is_in_destruction()) || !host()->is_hidden())
- return;
- // Make sure the size of this view matches the size of the WebContentsView.
- // The two sizes may fall out of sync if we switch RenderWidgetHostViews,
- // resize, and then switch page, as is the case with interstitial pages.
- // NOTE: |guest_| is NULL in unit tests.
- if (guest_)
- SetSize(guest_->web_contents()->GetViewBounds().size());
-
- host()->WasShown(base::nullopt /* record_tab_switch_time_request */);
-}
-
-void RenderWidgetHostViewGuest::Hide() {
- // |guest_| is NULL during test.
- if ((guest_ && guest_->is_in_destruction()) || host()->is_hidden())
- return;
- host()->WasHidden();
-}
-
-void RenderWidgetHostViewGuest::SetSize(const gfx::Size& size) {}
-void RenderWidgetHostViewGuest::SetBounds(const gfx::Rect& rect) {}
-
-void RenderWidgetHostViewGuest::Focus() {
- // InterstitialPageImpl focuses views directly, so we place focus logic here.
- // InterstitialPages are not WebContents, and so BrowserPluginGuest does not
- // have direct access to the interstitial page's RenderWidgetHost.
- if (guest_)
- guest_->SetFocus(host(), true, blink::kWebFocusTypeNone);
-}
-
-bool RenderWidgetHostViewGuest::HasFocus() {
- if (!guest_)
- return false;
- return guest_->focused();
-}
-
-void RenderWidgetHostViewGuest::PreProcessMouseEvent(
- const blink::WebMouseEvent& event) {
- if (event.GetType() == blink::WebInputEvent::kMouseDown) {
- RenderWidgetHostViewBase* owner_view = GetOwnerRenderWidgetHostView();
- if (!owner_view->HasFocus())
- owner_view->Focus();
-
- // With direct routing, the embedder would not know to focus the guest on
- // click. Sends a synthetic event for the focusing side effect.
- // TODO(wjmaclean): When we remove BrowserPlugin, delete this code.
- // http://crbug.com/533069
- MaybeSendSyntheticTapGesture(owner_view, event.PositionInWidget(),
- event.PositionInScreen());
- }
-}
-
-void RenderWidgetHostViewGuest::PreProcessTouchEvent(
- const blink::WebTouchEvent& event) {
- if (event.GetType() == blink::WebInputEvent::kTouchStart) {
- RenderWidgetHostViewBase* owner_view = GetOwnerRenderWidgetHostView();
- if (!owner_view->HasFocus())
- owner_view->Focus();
-
- // With direct routing, the embedder would not know to focus the guest on
- // touch. Sends a synthetic event for the focusing side effect.
- // TODO(wjmaclean): When we remove BrowserPlugin, delete this code.
- // http://crbug.com/533069
- MaybeSendSyntheticTapGesture(owner_view,
- event.touches[0].PositionInWidget(),
- event.touches[0].PositionInScreen());
- }
-}
-
-gfx::Rect RenderWidgetHostViewGuest::GetViewBounds() {
- if (!guest_)
- return gfx::Rect();
-
- RenderWidgetHostViewBase* rwhv = GetOwnerRenderWidgetHostView();
- gfx::Rect embedder_bounds;
- if (rwhv)
- embedder_bounds = rwhv->GetViewBounds();
- return gfx::Rect(guest_->GetScreenCoordinates(embedder_bounds.origin()),
- guest_->frame_rect().size());
-}
-
-gfx::Rect RenderWidgetHostViewGuest::GetBoundsInRootWindow() {
- return GetViewBounds();
-}
-
-gfx::PointF RenderWidgetHostViewGuest::TransformPointToRootCoordSpaceF(
- const gfx::PointF& point) {
- viz::SurfaceId surface_id = GetCurrentSurfaceId();
- if (!guest_)
- return point;
-
- RenderWidgetHostViewBase* root_rwhv = GetRootView(this);
- if (!root_rwhv)
- return point;
-
- gfx::PointF transformed_point = point;
- // TODO(wjmaclean): If we knew that TransformPointToLocalCoordSpace would
- // guarantee not to change transformed_point on failure, then we could skip
- // checking the function return value and directly return transformed_point.
- if (!root_rwhv->TransformPointToLocalCoordSpace(point, surface_id,
- &transformed_point)) {
- return point;
- }
- return transformed_point;
-}
-
-gfx::PointF RenderWidgetHostViewGuest::TransformRootPointToViewCoordSpace(
- const gfx::PointF& point) {
- RenderWidgetHostViewBase* root_rwhv = GetRootView(this);
- if (!root_rwhv)
- return point;
-
- gfx::PointF transformed_point;
- if (!root_rwhv->TransformPointToCoordSpaceForView(point, this,
- &transformed_point)) {
- return point;
- }
- return transformed_point;
-}
-
-void RenderWidgetHostViewGuest::RenderProcessGone() {
- // The |platform_view_| gets destroyed before we get here if this view
- // is for an InterstitialPage.
- if (platform_view_)
- platform_view_->RenderProcessGone();
-
- RenderWidgetHostViewChildFrame::RenderProcessGone();
-}
-
-void RenderWidgetHostViewGuest::Destroy() {
- if (platform_view_) // The platform view might have been destroyed already.
- platform_view_->Destroy();
-
- RenderWidgetHostViewBase* root_view = GetRootView(this);
- if (root_view)
- root_view->GetCursorManager()->ViewBeingDestroyed(this);
-
- // RenderWidgetHostViewChildFrame::Destroy destroys this object.
- RenderWidgetHostViewChildFrame::Destroy();
-}
-
-gfx::Size RenderWidgetHostViewGuest::GetCompositorViewportPixelSize() {
- gfx::Size size;
- if (guest_) {
- size = gfx::ScaleToCeiledSize(guest_->frame_rect().size(),
- guest_->screen_info().device_scale_factor);
- }
- return size;
-}
-
-base::string16 RenderWidgetHostViewGuest::GetSelectedText() {
- return platform_view_->GetSelectedText();
-}
-
-TouchSelectionControllerClientManager*
-RenderWidgetHostViewGuest::GetTouchSelectionControllerClientManager() {
- RenderWidgetHostView* root_view = GetRootView(this);
- if (!root_view)
- return nullptr;
-
- // There is only ever one manager, and it's owned by the root view.
- return root_view->GetTouchSelectionControllerClientManager();
-}
-
-void RenderWidgetHostViewGuest::SetTooltipText(
- const base::string16& tooltip_text) {
- RenderWidgetHostViewBase* root_view = GetRootView(this);
- if (root_view)
- root_view->GetCursorManager()->SetTooltipTextForView(this, tooltip_text);
-}
-
-void RenderWidgetHostViewGuest::OnDidUpdateVisualPropertiesComplete(
- const cc::RenderFrameMetadata& metadata) {
- if (guest_)
- guest_->DidUpdateVisualProperties(metadata);
- host()->SynchronizeVisualProperties();
-}
-
-void RenderWidgetHostViewGuest::OnAttached() {
- RegisterFrameSinkId();
-}
-
-RenderWidgetHostViewBase* RenderWidgetHostViewGuest::GetRootView() {
- return GetRootView(this);
-}
-
-void RenderWidgetHostViewGuest::InitAsChild(gfx::NativeView parent_view) {
- // This should never get called.
- NOTREACHED();
-}
-
-void RenderWidgetHostViewGuest::InitAsPopup(
- RenderWidgetHostView* parent_host_view,
- const gfx::Rect& bounds) {
- // This should never get called.
- NOTREACHED();
-}
-
-void RenderWidgetHostViewGuest::InitAsFullscreen(
- RenderWidgetHostView* reference_host_view) {
- // This should never get called.
- NOTREACHED();
-}
-
-gfx::NativeView RenderWidgetHostViewGuest::GetNativeView() {
- if (!guest_)
- return gfx::NativeView();
-
- RenderWidgetHostView* rwhv = guest_->GetOwnerRenderWidgetHostView();
- if (!rwhv)
- return gfx::NativeView();
- return rwhv->GetNativeView();
-}
-
-gfx::NativeViewAccessible RenderWidgetHostViewGuest::GetNativeViewAccessible() {
- if (!guest_)
- return gfx::NativeViewAccessible();
-
- RenderWidgetHostView* rwhv = guest_->GetOwnerRenderWidgetHostView();
- if (!rwhv)
- return gfx::NativeViewAccessible();
- return rwhv->GetNativeViewAccessible();
-}
-
-void RenderWidgetHostViewGuest::UpdateCursor(const WebCursor& cursor) {
- // InterstitialPages are not WebContents so we cannot intercept
- // WidgetHostMsg_SetCursor for interstitial pages in BrowserPluginGuest.
- // All guest RenderViewHosts have RenderWidgetHostViewGuests however,
- // and so we will always hit this code path.
- if (!guest_)
- return;
- RenderWidgetHostViewBase* rwhvb = GetRootView(this);
- if (rwhvb && rwhvb->GetCursorManager())
- rwhvb->GetCursorManager()->UpdateCursor(this, cursor);
-}
-
-void RenderWidgetHostViewGuest::SetIsLoading(bool is_loading) {
- platform_view_->SetIsLoading(is_loading);
-}
-
-bool RenderWidgetHostViewGuest::HasSize() const {
- // RenderWidgetHostViewGuests are always hosting main frames, so the renderer
- // always have a size, which is sent on the CreateView IPC.
- return true;
-}
-
-void RenderWidgetHostViewGuest::TextInputStateChanged(
- const TextInputState& params) {
- if (!guest_)
- return;
-
- RenderWidgetHostViewBase* rwhv = GetOwnerRenderWidgetHostView();
- if (!rwhv)
- return;
- // Forward the information to embedding RWHV.
- rwhv->TextInputStateChanged(params);
-
- should_forward_text_selection_ =
- (params.type != ui::TEXT_INPUT_TYPE_NONE) && guest_ && guest_->focused();
-}
-
-void RenderWidgetHostViewGuest::ImeCancelComposition() {
- if (!guest_)
- return;
-
- RenderWidgetHostViewBase* rwhv = GetOwnerRenderWidgetHostView();
- if (!rwhv)
- return;
- // Forward the information to embedding RWHV.
- rwhv->ImeCancelComposition();
-}
-
-#if defined(OS_MACOSX) || defined(USE_AURA)
-void RenderWidgetHostViewGuest::ImeCompositionRangeChanged(
- const gfx::Range& range,
- const std::vector<gfx::Rect>& character_bounds) {
- if (!guest_)
- return;
-
- RenderWidgetHostViewBase* rwhv = GetOwnerRenderWidgetHostView();
- if (!rwhv)
- return;
- std::vector<gfx::Rect> guest_character_bounds;
- for (size_t i = 0; i < character_bounds.size(); ++i) {
- guest_character_bounds.push_back(
- gfx::Rect(guest_->GetScreenCoordinates(character_bounds[i].origin()),
- character_bounds[i].size()));
- }
- // Forward the information to embedding RWHV.
- rwhv->ImeCompositionRangeChanged(range, guest_character_bounds);
-}
-#endif
-
-void RenderWidgetHostViewGuest::SelectionChanged(const base::string16& text,
- size_t offset,
- const gfx::Range& range) {
- RenderWidgetHostViewBase* view = should_forward_text_selection_
- ? GetOwnerRenderWidgetHostView()
- : platform_view_.get();
- if (view)
- view->SelectionChanged(text, offset, range);
-}
-
-void RenderWidgetHostViewGuest::SelectionBoundsChanged(
- const WidgetHostMsg_SelectionBounds_Params& params) {
- if (!guest_)
- return;
-
- RenderWidgetHostViewBase* rwhv = GetOwnerRenderWidgetHostView();
- if (!rwhv)
- return;
- WidgetHostMsg_SelectionBounds_Params guest_params(params);
- guest_params.anchor_rect.set_origin(
- guest_->GetScreenCoordinates(params.anchor_rect.origin()));
- guest_params.focus_rect.set_origin(
- guest_->GetScreenCoordinates(params.focus_rect.origin()));
- rwhv->SelectionBoundsChanged(guest_params);
-}
-
-void RenderWidgetHostViewGuest::DidStopFlinging() {
- RenderWidgetHostViewBase* rwhv = this;
- // If we're a pdf in a WebView, we could have nested guest views here.
- while (rwhv && rwhv->IsRenderWidgetHostViewGuest()) {
- rwhv = static_cast<RenderWidgetHostViewGuest*>(rwhv)
- ->GetOwnerRenderWidgetHostView();
- }
- // DidStopFlinging() is used by TouchSelection to correctly detect the end of
- // scroll events, so we forward this to the top-level RenderWidgetHostViewBase
- // so it can be passed along to its TouchSelectionController.
- if (rwhv)
- rwhv->DidStopFlinging();
-}
-
-bool RenderWidgetHostViewGuest::LockMouse(bool request_unadjusted_movement) {
- return platform_view_->LockMouse(request_unadjusted_movement);
-}
-
-void RenderWidgetHostViewGuest::UnlockMouse() {
- platform_view_->UnlockMouse();
-}
-
-viz::FrameSinkId RenderWidgetHostViewGuest::GetRootFrameSinkId() {
- RenderWidgetHostViewBase* root_rwhv = GetRootView(this);
- if (root_rwhv)
- return root_rwhv->GetRootFrameSinkId();
- return viz::FrameSinkId();
-}
-
-const viz::LocalSurfaceIdAllocation&
-RenderWidgetHostViewGuest::GetLocalSurfaceIdAllocation() const {
- if (guest_)
- return guest_->local_surface_id_allocation();
- return viz::ParentLocalSurfaceIdAllocator::InvalidLocalSurfaceIdAllocation();
-}
-
-void RenderWidgetHostViewGuest::DidCreateNewRendererCompositorFrameSink(
- viz::mojom::CompositorFrameSinkClient* renderer_compositor_frame_sink) {
- RenderWidgetHostViewChildFrame::DidCreateNewRendererCompositorFrameSink(
- renderer_compositor_frame_sink);
- platform_view_->DidCreateNewRendererCompositorFrameSink(
- renderer_compositor_frame_sink);
-}
-
-#if defined(OS_MACOSX)
-void RenderWidgetHostViewGuest::SetActive(bool active) {
- platform_view_->SetActive(active);
-}
-
-void RenderWidgetHostViewGuest::ShowDefinitionForSelection() {
- // Note that if there were a dictionary overlay, that dictionary overlay
- // would target |guest_|. This path does not actually support getting the
- // attributed string and its point on the page, so it will not create an
- // overlay (it will open Dictionary.app), so the target NSView need not be
- // specified.
- // https://crbug.com/152438
- platform_view_->ShowDefinitionForSelection();
-}
-
-void RenderWidgetHostViewGuest::SpeakSelection() {
- platform_view_->SpeakSelection();
-}
-#endif // defined(OS_MACOSX)
-
-RenderWidgetHostViewBase*
-RenderWidgetHostViewGuest::GetOwnerRenderWidgetHostView() const {
- return guest_ ? static_cast<RenderWidgetHostViewBase*>(
- guest_->GetOwnerRenderWidgetHostView())
- : nullptr;
-}
-
-void RenderWidgetHostViewGuest::MaybeSendSyntheticTapGestureForTest(
- const blink::WebFloatPoint& position,
- const blink::WebFloatPoint& screen_position) {
- MaybeSendSyntheticTapGesture(GetOwnerRenderWidgetHostView(), position,
- screen_position);
-}
-
-// TODO(wjmaclean): When we remove BrowserPlugin, delete this code.
-// http://crbug.com/533069
-void RenderWidgetHostViewGuest::MaybeSendSyntheticTapGesture(
- RenderWidgetHostViewBase* owner_view,
- const blink::WebFloatPoint& position,
- const blink::WebFloatPoint& screen_position) {
- DCHECK(owner_view);
- if (!HasFocus()) {
- // We need to convert the position of the event into the coordinate frame
- // of the embedder in order to be sure we hit the BrowserPlugin element.
- gfx::PointF point_in_owner;
- if (!owner_view->TransformPointToLocalCoordSpace(
- position, GetCurrentSurfaceId(), &point_in_owner)) {
- LOG(ERROR) << "Unable to convert gesture location to owner coordinates.";
- return;
- }
- blink::WebGestureEvent gesture_tap_event(
- blink::WebGestureEvent::kGestureTapDown,
- blink::WebInputEvent::kNoModifiers, ui::EventTimeForNow(),
- blink::WebGestureDevice::kTouchscreen);
- gesture_tap_event.SetPositionInWidget(point_in_owner);
- gesture_tap_event.SetPositionInScreen(screen_position);
- // The touch action may not be set yet because this is still at the
- // Pre-processing stage of a mouse or a touch event. In this case, set the
- // touch action to Auto to prevent crashing.
- static_cast<RenderWidgetHostImpl*>(owner_view->GetRenderWidgetHost())
- ->input_router()
- ->ForceSetTouchActionAuto();
- owner_view->ProcessGestureEvent(
- gesture_tap_event, ui::LatencyInfo(ui::SourceEventType::TOUCH));
-
- gesture_tap_event.SetType(blink::WebGestureEvent::kGestureTapCancel);
- owner_view->ProcessGestureEvent(
- gesture_tap_event, ui::LatencyInfo(ui::SourceEventType::TOUCH));
- }
-}
-
-void RenderWidgetHostViewGuest::WheelEventAck(
- const blink::WebMouseWheelEvent& event,
- InputEventAckState ack_result) {
- if (ack_result == INPUT_EVENT_ACK_STATE_NOT_CONSUMED ||
- ack_result == INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS) {
- guest_->ResendEventToEmbedder(event);
- }
-}
-
-void RenderWidgetHostViewGuest::GestureEventAck(
- const blink::WebGestureEvent& event,
- InputEventAckState ack_result) {
- // Stops flinging if a GSU event with momentum phase is sent to the renderer
- // but not consumed.
- StopFlingingIfNecessary(event, ack_result);
-
- bool not_consumed = ack_result == INPUT_EVENT_ACK_STATE_NOT_CONSUMED ||
- ack_result == INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS;
- // GestureScrollBegin/End are always consumed by the guest, so we only
- // forward GestureScrollUpdate.
- // Consumed GestureScrollUpdates and GestureScrollBegins must still be
- // forwarded to the owner RWHV so it may update its state.
- if (event.GetType() == blink::WebInputEvent::kGestureScrollUpdate &&
- not_consumed) {
- guest_->ResendEventToEmbedder(event);
- } else if (event.GetType() == blink::WebInputEvent::kGestureScrollUpdate ||
- event.GetType() == blink::WebInputEvent::kGestureScrollBegin) {
- GetOwnerRenderWidgetHostView()->GestureEventAck(event, ack_result);
- }
-
- if (event.IsTouchpadZoomEvent())
- ProcessTouchpadZoomEventAckInRoot(event, ack_result);
-}
-
-void RenderWidgetHostViewGuest::ProcessTouchpadZoomEventAckInRoot(
- const blink::WebGestureEvent& event,
- InputEventAckState ack_result) {
- DCHECK(event.IsTouchpadZoomEvent());
-
- RenderWidgetHostViewBase* root_rwhv = GetRootView(this);
- if (!root_rwhv)
- return;
-
- blink::WebGestureEvent root_event(event);
- const gfx::PointF root_point =
- TransformPointToRootCoordSpaceF(event.PositionInWidget());
- root_event.SetPositionInWidget(root_point);
- root_rwhv->GestureEventAck(root_event, ack_result);
-}
-
-InputEventAckState RenderWidgetHostViewGuest::FilterInputEvent(
- const blink::WebInputEvent& input_event) {
- InputEventAckState ack_state =
- RenderWidgetHostViewChildFrame::FilterInputEvent(input_event);
- if (ack_state != INPUT_EVENT_ACK_STATE_NOT_CONSUMED)
- return ack_state;
-
- // The owner RWHV may want to consume the guest's GestureScrollUpdates.
- // Also, we don't resend GestureFlingStarts, GestureScrollBegins, or
- // GestureScrollEnds, so we let the owner RWHV know about them here.
- if (input_event.GetType() == blink::WebInputEvent::kGestureScrollUpdate ||
- input_event.GetType() == blink::WebInputEvent::kGestureFlingStart ||
- input_event.GetType() == blink::WebInputEvent::kGestureScrollBegin ||
- input_event.GetType() == blink::WebInputEvent::kGestureScrollEnd) {
- const blink::WebGestureEvent& gesture_event =
- static_cast<const blink::WebGestureEvent&>(input_event);
- return GetOwnerRenderWidgetHostView()->FilterChildGestureEvent(
- gesture_event);
- }
-
- return INPUT_EVENT_ACK_STATE_NOT_CONSUMED;
-}
-
-void RenderWidgetHostViewGuest::GetScreenInfo(ScreenInfo* screen_info) {
- DCHECK(screen_info);
- if (guest_)
- *screen_info = guest_->screen_info();
- else
- RenderWidgetHostViewBase::GetScreenInfo(screen_info);
-}
-
-void RenderWidgetHostViewGuest::EnableAutoResize(const gfx::Size& min_size,
- const gfx::Size& max_size) {
- if (guest_)
- guest_->EnableAutoResize(min_size, max_size);
-}
-
-void RenderWidgetHostViewGuest::DisableAutoResize(const gfx::Size& new_size) {
- if (guest_)
- guest_->DisableAutoResize();
-}
-
-viz::ScopedSurfaceIdAllocator
-RenderWidgetHostViewGuest::DidUpdateVisualProperties(
- const cc::RenderFrameMetadata& metadata) {
- base::OnceCallback<void()> allocation_task = base::BindOnce(
- &RenderWidgetHostViewGuest::OnDidUpdateVisualPropertiesComplete,
- weak_ptr_factory_.GetWeakPtr(), metadata);
- return viz::ScopedSurfaceIdAllocator(std::move(allocation_task));
-}
-
-bool RenderWidgetHostViewGuest::IsRenderWidgetHostViewGuest() {
- return true;
-}
-
-} // namespace content
diff --git a/content/browser/frame_host/render_widget_host_view_guest.h b/content/browser/frame_host/render_widget_host_view_guest.h
deleted file mode 100644
index fdc3462..0000000
--- a/content/browser/frame_host/render_widget_host_view_guest.h
+++ /dev/null
@@ -1,196 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CONTENT_BROWSER_FRAME_HOST_RENDER_WIDGET_HOST_VIEW_GUEST_H_
-#define CONTENT_BROWSER_FRAME_HOST_RENDER_WIDGET_HOST_VIEW_GUEST_H_
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include <memory>
-#include <vector>
-
-#include "base/macros.h"
-#include "build/build_config.h"
-#include "content/browser/renderer_host/render_widget_host_view_child_frame.h"
-#include "content/common/content_export.h"
-#include "content/common/cursors/webcursor.h"
-#include "third_party/blink/public/platform/web_input_event.h"
-#include "ui/events/event.h"
-#include "ui/events/gestures/gesture_recognizer.h"
-#include "ui/events/gestures/gesture_types.h"
-#include "ui/gfx/geometry/rect.h"
-#include "ui/gfx/geometry/vector2d_f.h"
-#include "ui/gfx/native_widget_types.h"
-
-namespace content {
-
-class BrowserPluginGuest;
-class RenderWidgetHost;
-struct TextInputState;
-
-// See comments in render_widget_host_view.h about this class and its members.
-// This version is for the BrowserPlugin which handles a lot of the
-// functionality in a diffent place and isn't platform specific.
-// The BrowserPlugin is currently a special case for out-of-process rendered
-// content and therefore inherits from RenderWidgetHostViewChildFrame.
-// Eventually all RenderWidgetHostViewGuest code will be subsumed by
-// RenderWidgetHostViewChildFrame and this class will be removed.
-//
-// Some elements that are platform specific will be deal with by delegating
-// the relevant calls to the platform view.
-class CONTENT_EXPORT RenderWidgetHostViewGuest
- : public RenderWidgetHostViewChildFrame,
- public ui::GestureConsumer {
- public:
- static RenderWidgetHostViewGuest* Create(
- RenderWidgetHost* widget,
- BrowserPluginGuest* guest,
- base::WeakPtr<RenderWidgetHostViewBase> platform_view);
- static RenderWidgetHostViewBase* GetRootView(RenderWidgetHostViewBase* rwhv);
-
- ~RenderWidgetHostViewGuest() override;
-
- // Called when this RenderWidgetHostViewGuest is attached.
- void OnAttached();
-
- // RenderWidgetHostViewChildFrame implementation.
- RenderWidgetHostViewBase* GetParentView() override;
-
- // RenderWidgetHostView implementation.
- void InitAsChild(gfx::NativeView parent_view) override;
- void SetSize(const gfx::Size& size) override;
- void SetBounds(const gfx::Rect& rect) override;
- void Focus() override;
- bool HasFocus() override;
- void Show() override;
- void Hide() override;
- gfx::NativeView GetNativeView() override;
- gfx::NativeViewAccessible GetNativeViewAccessible() override;
- gfx::Rect GetViewBounds() override;
- gfx::Rect GetBoundsInRootWindow() override;
- gfx::Size GetCompositorViewportPixelSize() override;
- base::string16 GetSelectedText() override;
- TouchSelectionControllerClientManager*
- GetTouchSelectionControllerClientManager() override;
- gfx::PointF TransformPointToRootCoordSpaceF(
- const gfx::PointF& point) override;
- gfx::PointF TransformRootPointToViewCoordSpace(
- const gfx::PointF& point) override;
-
- // RenderWidgetHostViewBase implementation.
- RenderWidgetHostViewBase* GetRootView() override;
- void InitAsPopup(RenderWidgetHostView* parent_host_view,
- const gfx::Rect& bounds) override;
- void InitAsFullscreen(RenderWidgetHostView* reference_host_view) override;
- void UpdateCursor(const WebCursor& cursor) override;
- void SetIsLoading(bool is_loading) override;
- bool HasSize() const override;
- void TextInputStateChanged(const TextInputState& params) override;
- void ImeCancelComposition() override;
-#if defined(OS_MACOSX) || defined(USE_AURA)
- void ImeCompositionRangeChanged(
- const gfx::Range& range,
- const std::vector<gfx::Rect>& character_bounds) override;
-#endif
- void RenderProcessGone() override;
- void Destroy() override;
- void SetTooltipText(const base::string16& tooltip_text) override;
- void SelectionChanged(const base::string16& text,
- size_t offset,
- const gfx::Range& range) override;
- void SelectionBoundsChanged(
- const WidgetHostMsg_SelectionBounds_Params& params) override;
- void PreProcessMouseEvent(const blink::WebMouseEvent& event) override;
- void PreProcessTouchEvent(const blink::WebTouchEvent& event) override;
-
- void DidStopFlinging() override;
- bool LockMouse(bool request_unadjusted_movement) override;
- void UnlockMouse() override;
- viz::FrameSinkId GetRootFrameSinkId() override;
- const viz::LocalSurfaceIdAllocation& GetLocalSurfaceIdAllocation()
- const override;
- void DidCreateNewRendererCompositorFrameSink(
- viz::mojom::CompositorFrameSinkClient* renderer_compositor_frame_sink)
- override;
-
-#if defined(OS_MACOSX)
- // RenderWidgetHostView implementation.
- void SetActive(bool active) override;
- void ShowDefinitionForSelection() override;
- void SpeakSelection() override;
-#endif // defined(OS_MACOSX)
-
- void WheelEventAck(const blink::WebMouseWheelEvent& event,
- InputEventAckState ack_result) override;
-
- void GestureEventAck(const blink::WebGestureEvent& event,
- InputEventAckState ack_result) override;
-
- InputEventAckState FilterInputEvent(
- const blink::WebInputEvent& input_event) override;
-
- bool IsRenderWidgetHostViewGuest() override;
- RenderWidgetHostViewBase* GetOwnerRenderWidgetHostView() const;
-
- void GetScreenInfo(ScreenInfo* screen_info) override;
-
- void EnableAutoResize(const gfx::Size& min_size,
- const gfx::Size& max_size) override;
- void DisableAutoResize(const gfx::Size& new_size) override;
-
- viz::ScopedSurfaceIdAllocator DidUpdateVisualProperties(
- const cc::RenderFrameMetadata& metadata) override;
-
- void MaybeSendSyntheticTapGestureForTest(
- const blink::WebFloatPoint& position,
- const blink::WebFloatPoint& screen_position);
-
- private:
- friend class RenderWidgetHostView;
-
- void OnDidUpdateVisualPropertiesComplete(
- const cc::RenderFrameMetadata& metadata);
-
- RenderWidgetHostViewGuest(
- RenderWidgetHost* widget,
- BrowserPluginGuest* guest,
- base::WeakPtr<RenderWidgetHostViewBase> platform_view);
-
- // Since we now route GestureEvents directly to the guest renderer, we need
- // a way to make sure that the BrowserPlugin in the embedder gets focused so
- // that keyboard input (which still travels via BrowserPlugin) is routed to
- // the plugin and thus onwards to the guest.
- // TODO(wjmaclean): When we remove BrowserPlugin, delete this code.
- // http://crbug.com/533069
- void MaybeSendSyntheticTapGesture(
- RenderWidgetHostViewBase* owner_view,
- const blink::WebFloatPoint& position,
- const blink::WebFloatPoint& screen_position);
-
- void ProcessTouchpadZoomEventAckInRoot(const blink::WebGestureEvent& event,
- InputEventAckState ack_result);
-
- // BrowserPluginGuest and RenderWidgetHostViewGuest's lifetimes are not tied
- // to one another, therefore we access |guest_| through WeakPtr.
- base::WeakPtr<BrowserPluginGuest> guest_;
-
- // The platform view for this RenderWidgetHostView.
- // RenderWidgetHostViewGuest mostly only cares about stuff related to
- // compositing, the rest are directly forwarded to this |platform_view_|.
- base::WeakPtr<RenderWidgetHostViewBase> platform_view_;
-
- // When true the guest will forward its selection updates to the owner RWHV.
- // The guest may forward its updates only when there is an ongoing IME
- // session.
- bool should_forward_text_selection_ = false;
-
- base::WeakPtrFactory<RenderWidgetHostViewGuest> weak_ptr_factory_{this};
-
- DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostViewGuest);
-};
-
-} // namespace content
-
-#endif // CONTENT_BROWSER_FRAME_HOST_RENDER_WIDGET_HOST_VIEW_GUEST_H_
diff --git a/content/browser/frame_host/render_widget_host_view_guest_unittest.cc b/content/browser/frame_host/render_widget_host_view_guest_unittest.cc
deleted file mode 100644
index 304ee554..0000000
--- a/content/browser/frame_host/render_widget_host_view_guest_unittest.cc
+++ /dev/null
@@ -1,198 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/browser/frame_host/render_widget_host_view_guest.h"
-
-#include <stdint.h>
-#include <utility>
-
-#include "base/macros.h"
-#include "base/run_loop.h"
-#include "base/single_thread_task_runner.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "build/build_config.h"
-#include "components/viz/common/features.h"
-#include "components/viz/service/frame_sinks/frame_sink_manager_impl.h"
-#include "components/viz/service/surfaces/surface.h"
-#include "components/viz/service/surfaces/surface_manager.h"
-#include "content/browser/browser_plugin/browser_plugin_guest.h"
-#include "content/browser/compositor/test/test_image_transport_factory.h"
-#include "content/browser/gpu/compositor_util.h"
-#include "content/browser/renderer_host/frame_token_message_queue.h"
-#include "content/browser/renderer_host/render_process_host_impl.h"
-#include "content/browser/renderer_host/render_widget_host_delegate.h"
-#include "content/browser/renderer_host/render_widget_host_impl.h"
-#include "content/common/view_messages.h"
-#include "content/public/browser/browser_plugin_guest_delegate.h"
-#include "content/public/browser/render_widget_host_view.h"
-#include "content/public/test/browser_task_environment.h"
-#include "content/public/test/mock_render_process_host.h"
-#include "content/public/test/test_browser_context.h"
-#include "content/test/mock_render_widget_host_delegate.h"
-#include "content/test/mock_widget_impl.h"
-#include "content/test/test_render_view_host.h"
-#include "content/test/test_web_contents.h"
-#include "mojo/public/cpp/bindings/remote.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "ui/base/ui_base_features.h"
-#include "ui/compositor/compositor.h"
-
-namespace content {
-namespace {
-
-class RenderWidgetHostViewGuestTest : public testing::Test {
- public:
- RenderWidgetHostViewGuestTest() {}
-
- void SetUp() override {
-#if !defined(OS_ANDROID)
- ImageTransportFactory::SetFactory(
- std::make_unique<TestImageTransportFactory>());
-#endif
- browser_context_.reset(new TestBrowserContext);
- MockRenderProcessHost* process_host =
- new MockRenderProcessHost(browser_context_.get());
- int32_t routing_id = process_host->GetNextRoutingID();
- mojo::PendingRemote<mojom::Widget> widget;
- widget_impl_ = std::make_unique<MockWidgetImpl>(
- widget.InitWithNewPipeAndPassReceiver());
-
- widget_host_ = new RenderWidgetHostImpl(
- &delegate_, process_host, routing_id, std::move(widget),
- /*hidden=*/false, std::make_unique<FrameTokenMessageQueue>());
- view_ = RenderWidgetHostViewGuest::Create(
- widget_host_, nullptr,
- (new TestRenderWidgetHostView(widget_host_))->GetWeakPtr());
- }
-
- void TearDown() override {
- if (view_)
- view_->Destroy();
- delete widget_host_;
-
- browser_context_.reset();
-
- base::ThreadTaskRunnerHandle::Get()->DeleteSoon(FROM_HERE,
- browser_context_.release());
- base::RunLoop().RunUntilIdle();
-#if !defined(OS_ANDROID)
- ImageTransportFactory::Terminate();
-#endif
- }
-
- protected:
- BrowserTaskEnvironment task_environment_;
-
- std::unique_ptr<BrowserContext> browser_context_;
- MockRenderWidgetHostDelegate delegate_;
-
- // Tests should set these to NULL if they've already triggered their
- // destruction.
- std::unique_ptr<MockWidgetImpl> widget_impl_;
- RenderWidgetHostImpl* widget_host_;
- RenderWidgetHostViewGuest* view_;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostViewGuestTest);
-};
-
-} // namespace
-
-TEST_F(RenderWidgetHostViewGuestTest, VisibilityTest) {
- view_->Show();
- ASSERT_TRUE(view_->IsShowing());
-
- view_->Hide();
- ASSERT_FALSE(view_->IsShowing());
-}
-
-class TestBrowserPluginGuest : public BrowserPluginGuest {
- public:
- TestBrowserPluginGuest(WebContentsImpl* web_contents,
- BrowserPluginGuestDelegate* delegate)
- : BrowserPluginGuest(web_contents->HasOpener(), web_contents, delegate) {}
-
- ~TestBrowserPluginGuest() override {}
-
- void set_attached(bool attached) {
- BrowserPluginGuest::set_attached_for_test(attached);
- }
-};
-
-// TODO(wjmaclean): we should restructure RenderWidgetHostViewChildFrameTest to
-// look more like this one, and then this one could be derived from it.
-class RenderWidgetHostViewGuestSurfaceTest : public testing::Test {
- public:
- RenderWidgetHostViewGuestSurfaceTest()
- : widget_host_(nullptr), view_(nullptr) {}
-
- void SetUp() override {
-#if !defined(OS_ANDROID)
- ImageTransportFactory::SetFactory(
- std::make_unique<TestImageTransportFactory>());
-#endif
- browser_context_.reset(new TestBrowserContext);
- MockRenderProcessHost* process_host =
- new MockRenderProcessHost(browser_context_.get());
- web_contents_ = TestWebContents::Create(browser_context_.get(), nullptr);
- // We don't own the BPG, the WebContents does.
- browser_plugin_guest_ = new TestBrowserPluginGuest(
- web_contents_.get(), &browser_plugin_guest_delegate_);
-
- int32_t routing_id = process_host->GetNextRoutingID();
- mojo::PendingRemote<mojom::Widget> widget;
- widget_impl_ = std::make_unique<MockWidgetImpl>(
- widget.InitWithNewPipeAndPassReceiver());
-
- widget_host_ = new RenderWidgetHostImpl(
- &delegate_, process_host, routing_id, std::move(widget),
- /*hidden=*/false, std::make_unique<FrameTokenMessageQueue>());
- view_ = RenderWidgetHostViewGuest::Create(
- widget_host_, browser_plugin_guest_,
- (new TestRenderWidgetHostView(widget_host_))->GetWeakPtr());
- }
-
- void TearDown() override {
- if (view_)
- view_->Destroy();
- delete widget_host_;
-
- // It's important to make sure that the view finishes destructing before
- // we hit the destructor for the BrowserTaskEnvironment, so run the message
- // loop here.
- base::RunLoop().RunUntilIdle();
-#if !defined(OS_ANDROID)
- ImageTransportFactory::Terminate();
-#endif
- }
-
- viz::SurfaceId GetSurfaceId() const {
- DCHECK(view_);
- RenderWidgetHostViewChildFrame* rwhvcf =
- static_cast<RenderWidgetHostViewChildFrame*>(view_);
- return rwhvcf->last_activated_surface_info_.id();
- }
-
- protected:
- BrowserTaskEnvironment task_environment_;
- std::unique_ptr<BrowserContext> browser_context_;
- MockRenderWidgetHostDelegate delegate_;
- BrowserPluginGuestDelegate browser_plugin_guest_delegate_;
- std::unique_ptr<TestWebContents> web_contents_;
- TestBrowserPluginGuest* browser_plugin_guest_;
-
- // Tests should set these to NULL if they've already triggered their
- // destruction.
- std::unique_ptr<MockWidgetImpl> widget_impl_;
- RenderWidgetHostImpl* widget_host_;
- RenderWidgetHostViewGuest* view_;
-
- private:
- mojo::Remote<viz::mojom::CompositorFrameSinkClient>
- renderer_compositor_frame_sink_remote_;
-
- DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostViewGuestSurfaceTest);
-};
-
-} // namespace content
diff --git a/content/browser/keyboard_lock_browsertest.cc b/content/browser/keyboard_lock_browsertest.cc
index 0687ac9..9c499a8 100644
--- a/content/browser/keyboard_lock_browsertest.cc
+++ b/content/browser/keyboard_lock_browsertest.cc
@@ -126,8 +126,8 @@
class TestRenderWidgetHostView : public RenderWidgetHostViewAura {
public:
- TestRenderWidgetHostView(RenderWidgetHost* host, bool is_guest_view_hack)
- : RenderWidgetHostViewAura(host, is_guest_view_hack) {}
+ TestRenderWidgetHostView(RenderWidgetHost* host)
+ : RenderWidgetHostViewAura(host) {}
~TestRenderWidgetHostView() override {}
bool HasFocus() override { return g_window_has_focus; }
@@ -207,9 +207,8 @@
void InstallCreateHooksForKeyboardLockBrowserTests() {
WebContentsViewAura::InstallCreateHookForTests(
- [](RenderWidgetHost* host,
- bool is_guest_view_hack) -> RenderWidgetHostViewAura* {
- return new TestRenderWidgetHostView(host, is_guest_view_hack);
+ [](RenderWidgetHost* host) -> RenderWidgetHostViewAura* {
+ return new TestRenderWidgetHostView(host);
});
}
diff --git a/content/browser/keyboard_lock_browsertest_mac.mm b/content/browser/keyboard_lock_browsertest_mac.mm
index 5f743f4..58218c2 100644
--- a/content/browser/keyboard_lock_browsertest_mac.mm
+++ b/content/browser/keyboard_lock_browsertest_mac.mm
@@ -16,8 +16,8 @@
class TestRenderWidgetHostView : public RenderWidgetHostViewMac {
public:
- TestRenderWidgetHostView(RenderWidgetHost* host, bool is_guest_view_hack)
- : RenderWidgetHostViewMac(host, is_guest_view_hack) {}
+ TestRenderWidgetHostView(RenderWidgetHost* host)
+ : RenderWidgetHostViewMac(host) {}
~TestRenderWidgetHostView() override {}
bool HasFocus() override { return g_window_has_focus; }
@@ -30,9 +30,8 @@
void InstallCreateHooksForKeyboardLockBrowserTests() {
WebContentsViewMac::InstallCreateHookForTests(
- [](RenderWidgetHost* host,
- bool is_guest_view_hack) -> RenderWidgetHostViewMac* {
- return new TestRenderWidgetHostView(host, is_guest_view_hack);
+ [](RenderWidgetHost* host) -> RenderWidgetHostViewMac* {
+ return new TestRenderWidgetHostView(host);
});
}
diff --git a/content/browser/pointer_lock_browsertest.cc b/content/browser/pointer_lock_browsertest.cc
index e9b3cfaa..a00720d 100644
--- a/content/browser/pointer_lock_browsertest.cc
+++ b/content/browser/pointer_lock_browsertest.cc
@@ -54,9 +54,8 @@
class MockPointerLockRenderWidgetHostView : public RenderWidgetHostViewAura {
public:
- MockPointerLockRenderWidgetHostView(RenderWidgetHost* host,
- bool is_guest_view_hack)
- : RenderWidgetHostViewAura(host, is_guest_view_hack),
+ MockPointerLockRenderWidgetHostView(RenderWidgetHost* host)
+ : RenderWidgetHostViewAura(host),
host_(RenderWidgetHostImpl::From(host)) {}
~MockPointerLockRenderWidgetHostView() override {
if (IsMouseLocked())
@@ -97,10 +96,8 @@
void InstallCreateHooksForPointerLockBrowserTests() {
WebContentsViewAura::InstallCreateHookForTests(
- [](RenderWidgetHost* host,
- bool is_guest_view_hack) -> RenderWidgetHostViewAura* {
- return new MockPointerLockRenderWidgetHostView(host,
- is_guest_view_hack);
+ [](RenderWidgetHost* host) -> RenderWidgetHostViewAura* {
+ return new MockPointerLockRenderWidgetHostView(host);
});
}
#endif // USE_AURA
diff --git a/content/browser/pointer_lock_browsertest_mac.mm b/content/browser/pointer_lock_browsertest_mac.mm
index 8b8d914..e2cbbaa 100644
--- a/content/browser/pointer_lock_browsertest_mac.mm
+++ b/content/browser/pointer_lock_browsertest_mac.mm
@@ -12,9 +12,8 @@
class MockPointerLockRenderWidgetHostView : public RenderWidgetHostViewMac {
public:
- MockPointerLockRenderWidgetHostView(RenderWidgetHost* host,
- bool is_guest_view_hack)
- : RenderWidgetHostViewMac(host, is_guest_view_hack) {}
+ MockPointerLockRenderWidgetHostView(RenderWidgetHost* host)
+ : RenderWidgetHostViewMac(host) {}
~MockPointerLockRenderWidgetHostView() override {
if (mouse_locked_)
UnlockMouse();
@@ -45,10 +44,8 @@
void InstallCreateHooksForPointerLockBrowserTests() {
WebContentsViewMac::InstallCreateHookForTests(
- [](RenderWidgetHost* host,
- bool is_guest_view_hack) -> RenderWidgetHostViewMac* {
- return new MockPointerLockRenderWidgetHostView(host,
- is_guest_view_hack);
+ [](RenderWidgetHost* host) -> RenderWidgetHostViewMac* {
+ return new MockPointerLockRenderWidgetHostView(host);
});
}
diff --git a/content/browser/renderer_host/DEPS b/content/browser/renderer_host/DEPS
index bf0446d..11dd06ac 100644
--- a/content/browser/renderer_host/DEPS
+++ b/content/browser/renderer_host/DEPS
@@ -54,16 +54,4 @@
"render_widget_host_view_event_handler\.cc": [
"+content/browser/frame_host",
],
- # RenderWidgetHostViewGuest dependency is needed to allow for routing mouse
- # events to the correct owner RenderWidgetHostViewBase. It should be removed
- # when all inner WebContents are based on OOPIF structure (as opposed to
- # BrowserPlugin).
- # TODO(kenrb, wjmaclean): Remove this when RenderWidgetHostViewGuest is
- # deleted. See https://crbug.com/533069.
- "render_widget_host_input_event_router.cc": [
- "+content/browser/frame_host/render_widget_host_view_guest.h",
- ],
- "render_widget_host_view_base\.cc": [
- "+content/browser/frame_host/render_widget_host_view_guest.h",
- ],
}
diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
index 53c208c..99b1214 100644
--- a/content/browser/renderer_host/render_widget_host_impl.cc
+++ b/content/browser/renderer_host/render_widget_host_impl.cc
@@ -826,8 +826,7 @@
visual_properties.compositor_viewport_pixel_rect =
gfx::Rect(view_->GetCompositorViewportPixelSize());
- const bool is_child_frame = view_->IsRenderWidgetHostViewChildFrame() &&
- !view_->IsRenderWidgetHostViewGuest();
+ const bool is_child_frame = view_->IsRenderWidgetHostViewChildFrame();
// These properties come from the main frame RenderWidget and flow down the
// tree of RenderWidgets. Each child frame RenderWidgetHost gets its values
// from their parent RenderWidget in the renderer process. It gives them to
diff --git a/content/browser/renderer_host/render_widget_host_input_event_router.cc b/content/browser/renderer_host/render_widget_host_input_event_router.cc
index 753ac8b6..dbe9829 100644
--- a/content/browser/renderer_host/render_widget_host_input_event_router.cc
+++ b/content/browser/renderer_host/render_widget_host_input_event_router.cc
@@ -19,7 +19,6 @@
#include "components/viz/host/host_frame_sink_manager.h"
#include "components/viz/service/surfaces/surface_manager.h"
#include "content/browser/compositor/surface_utils.h"
-#include "content/browser/frame_host/render_widget_host_view_guest.h"
#include "content/browser/renderer_host/cursor_manager.h"
#include "content/browser/renderer_host/input/touch_emulator.h"
#include "content/browser/renderer_host/render_widget_host_impl.h"
@@ -584,7 +583,7 @@
auto* view = FindViewFromFrameSinkId(frame_sink_id);
// Send the event to |root_view| if |view| is not in |root_view|'s sub-tree
// anymore.
- if (!view || (RenderWidgetHostViewGuest::GetRootView(view) != root_view)) {
+ if (!view) {
view = root_view;
*transformed_point = point;
}
diff --git a/content/browser/renderer_host/render_widget_host_unittest.cc b/content/browser/renderer_host/render_widget_host_unittest.cc
index d257dab..5ced029 100644
--- a/content/browser/renderer_host/render_widget_host_unittest.cc
+++ b/content/browser/renderer_host/render_widget_host_unittest.cc
@@ -1017,7 +1017,7 @@
TEST_F(RenderWidgetHostTest, Background) {
std::unique_ptr<RenderWidgetHostViewBase> view;
#if defined(USE_AURA)
- view.reset(new RenderWidgetHostViewAura(host_.get(), false));
+ view.reset(new RenderWidgetHostViewAura(host_.get()));
// TODO(derat): Call this on all platforms: http://crbug.com/102450.
view->InitAsChild(nullptr);
#elif defined(OS_ANDROID)
diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc
index 65dfdfea..ff143398 100644
--- a/content/browser/renderer_host/render_widget_host_view_android.cc
+++ b/content/browser/renderer_host/render_widget_host_view_android.cc
@@ -2419,8 +2419,6 @@
RenderWidgetHostView* view) {
DCHECK(!static_cast<RenderWidgetHostViewBase*>(view)
->IsRenderWidgetHostViewChildFrame());
- DCHECK(!static_cast<RenderWidgetHostViewBase*>(view)
- ->IsRenderWidgetHostViewGuest());
base::Optional<SkColor> color = view->GetBackgroundColor();
if (color)
SetBackgroundColor(*color);
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc
index b4d69fb..a6415cd 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -344,8 +344,7 @@
// RenderWidgetHostViewAura, public:
RenderWidgetHostViewAura::RenderWidgetHostViewAura(
- RenderWidgetHost* widget_host,
- bool is_guest_view_hack)
+ RenderWidgetHost* widget_host)
: RenderWidgetHostViewBase(widget_host),
window_(nullptr),
in_shutdown_(false),
@@ -361,15 +360,12 @@
legacy_render_widget_host_HWND_(nullptr),
legacy_window_destroyed_(false),
#endif
- is_guest_view_hack_(is_guest_view_hack),
device_scale_factor_(0.0f),
event_handler_(new RenderWidgetHostViewEventHandler(host(), this, this)),
- frame_sink_id_(is_guest_view_hack_ ? AllocateFrameSinkIdForGuestViewHack()
- : host()->GetFrameSinkId()) {
+ frame_sink_id_(host()->GetFrameSinkId()) {
CreateDelegatedFrameHostClient();
- if (!is_guest_view_hack_)
- host()->SetView(this);
+ host()->SetView(this);
// We should start observing the TextInputManager for IME-related events as
// well as monitoring its lifetime.
@@ -1949,8 +1945,7 @@
RenderWidgetHostViewAura::~RenderWidgetHostViewAura() {
// Ask the RWH to drop reference to us.
- if (!is_guest_view_hack_)
- host()->ViewDestroyed();
+ host()->ViewDestroyed();
selection_controller_.reset();
selection_controller_client_.reset();
@@ -2151,13 +2146,8 @@
RenderWidgetHostViewBase*
RenderWidgetHostViewAura::GetFocusedViewForTextSelection() {
// We obtain the TextSelection from focused RWH which is obtained from the
- // frame tree. BrowserPlugin-based guests' RWH is not part of the frame tree
- // and the focused RWH will be that of the embedder which is incorrect. In
- // this case we should use TextSelection for |this| since RWHV for guest
- // forwards text selection information to its platform view.
- return is_guest_view_hack_
- ? this
- : GetFocusedWidget() ? GetFocusedWidget()->GetView() : nullptr;
+ // frame tree.
+ return GetFocusedWidget() ? GetFocusedWidget()->GetView() : nullptr;
}
void RenderWidgetHostViewAura::Shutdown() {
@@ -2479,14 +2469,9 @@
return;
// We obtain the TextSelection from focused RWH which is obtained from the
- // frame tree. BrowserPlugin-based guests' RWH is not part of the frame tree
- // and the focused RWH will be that of the embedder which is incorrect. In
- // this case we should use TextSelection for |this| since RWHV for guest
- // forwards text selection information to its platform view.
+ // frame tree.
RenderWidgetHostViewBase* focused_view =
- is_guest_view_hack_
- ? this
- : GetFocusedWidget() ? GetFocusedWidget()->GetView() : nullptr;
+ GetFocusedWidget() ? GetFocusedWidget()->GetView() : nullptr;
if (!focused_view)
return;
@@ -2573,14 +2558,6 @@
is_first_navigation_ = false;
}
-// static
-viz::FrameSinkId
-RenderWidgetHostViewAura::AllocateFrameSinkIdForGuestViewHack() {
- return ImageTransportFactory::GetInstance()
- ->GetContextFactoryPrivate()
- ->AllocateFrameSinkId();
-}
-
MouseWheelPhaseHandler* RenderWidgetHostViewAura::GetMouseWheelPhaseHandler() {
return &event_handler_->mouse_wheel_phase_handler();
}
@@ -2589,8 +2566,6 @@
RenderWidgetHostView* view) {
DCHECK(!static_cast<RenderWidgetHostViewBase*>(view)
->IsRenderWidgetHostViewChildFrame());
- DCHECK(!static_cast<RenderWidgetHostViewBase*>(view)
- ->IsRenderWidgetHostViewGuest());
RenderWidgetHostViewAura* view_aura =
static_cast<RenderWidgetHostViewAura*>(view);
base::Optional<SkColor> color = view_aura->GetBackgroundColor();
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.h b/content/browser/renderer_host/render_widget_host_view_aura.h
index 8b9ae50..dbffcf02 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.h
+++ b/content/browser/renderer_host/render_widget_host_view_aura.h
@@ -89,12 +89,7 @@
public aura::client::FocusChangeObserver,
public aura::client::CursorClientObserver {
public:
- // When |is_guest_view_hack| is true, this view isn't really the view for
- // the |widget|, a RenderWidgetHostViewGuest is.
- //
- // TODO(lazyboy): Remove |is_guest_view_hack| once BrowserPlugin has migrated
- // to use RWHVChildFrame (http://crbug.com/330264).
- RenderWidgetHostViewAura(RenderWidgetHost* host, bool is_guest_view_hack);
+ RenderWidgetHostViewAura(RenderWidgetHost* host);
// RenderWidgetHostView implementation.
void InitAsChild(gfx::NativeView parent_view) override;
@@ -459,13 +454,6 @@
friend void VerifyStaleContentOnFrameEviction(
RenderWidgetHostView* render_widget_host_view);
- // Allocate a new FrameSinkId if this object is the platform view of a
- // RenderWidgetHostViewGuest. This FrameSinkId will not be actually used in
- // any useful way. It's only created because this object always expects to
- // have a FrameSinkId. FrameSinkIds generated by this method do not
- // collide with FrameSinkIds used by RenderWidgetHostImpls.
- static viz::FrameSinkId AllocateFrameSinkIdForGuestViewHack();
-
void CreateAuraWindow(aura::client::WindowType type);
// Returns true if a stale frame content needs to be set for the current RWHV.
@@ -659,10 +647,6 @@
std::unique_ptr<wm::ScopedTooltipDisabler> tooltip_disabler_;
- // True when this view acts as a platform view hack for a
- // RenderWidgetHostViewGuest.
- bool is_guest_view_hack_;
-
float device_scale_factor_;
viz::mojom::CompositorFrameSinkClient* renderer_compositor_frame_sink_ =
diff --git a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
index 138e6032..a533ec7 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
@@ -44,7 +44,6 @@
#include "components/viz/test/test_latest_local_surface_id_lookup_delegate.h"
#include "content/browser/browser_main_loop.h"
#include "content/browser/compositor/test/test_image_transport_factory.h"
-#include "content/browser/frame_host/render_widget_host_view_guest.h"
#include "content/browser/gpu/compositor_util.h"
#include "content/browser/renderer_host/delegated_frame_host.h"
#include "content/browser/renderer_host/delegated_frame_host_client_aura.h"
@@ -243,10 +242,8 @@
class FakeRenderWidgetHostViewAura : public RenderWidgetHostViewAura {
public:
- FakeRenderWidgetHostViewAura(RenderWidgetHost* widget,
- bool is_guest_view_hack)
- : RenderWidgetHostViewAura(widget, is_guest_view_hack),
- is_guest_view_hack_(is_guest_view_hack),
+ FakeRenderWidgetHostViewAura(RenderWidgetHost* widget)
+ : RenderWidgetHostViewAura(widget),
delegated_frame_host_client_(
new FakeDelegatedFrameHostClientAura(this)) {
InstallDelegatedFrameHostClient(
@@ -310,15 +307,12 @@
metadata);
}
- bool is_guest_view_hack() { return is_guest_view_hack_; }
-
gfx::Size last_frame_size_;
FakeWindowEventDispatcher* dispatcher_;
std::unique_ptr<FakeRendererCompositorFrameSink>
renderer_compositor_frame_sink_;
private:
- bool is_guest_view_hack_;
FakeDelegatedFrameHostClientAura* delegated_frame_host_client_;
mojo::Remote<viz::mojom::CompositorFrameSinkClient>
renderer_compositor_frame_sink_remote_;
@@ -487,8 +481,7 @@
class RenderWidgetHostViewAuraTest : public testing::Test {
public:
RenderWidgetHostViewAuraTest()
- : widget_host_uses_shutdown_to_destroy_(false),
- is_guest_view_hack_(false) {
+ : widget_host_uses_shutdown_to_destroy_(false) {
ui::GestureConfiguration::GetInstance()->set_scroll_debounce_interval_in_ms(
0);
}
@@ -508,25 +501,22 @@
false /* should_register_frame_sink_id */);
}
- FakeRenderWidgetHostViewAura* CreateView(bool is_guest_view_hack) {
+ FakeRenderWidgetHostViewAura* CreateView() {
int32_t routing_id = process_host_->GetNextRoutingID();
delegates_.push_back(base::WrapUnique(new MockRenderWidgetHostDelegate));
auto* widget_host = MockRenderWidgetHostImpl::Create(
delegates_.back().get(), process_host_, routing_id);
delegates_.back()->set_widget_host(widget_host);
widget_host->Init();
- return new FakeRenderWidgetHostViewAura(widget_host, is_guest_view_hack);
+ return new FakeRenderWidgetHostViewAura(widget_host);
}
void DestroyView(FakeRenderWidgetHostViewAura* view) {
// For guest-views, |view_| is not the view used by |widget_host_|.
- bool is_guest_view_hack = view->is_guest_view_hack();
RenderWidgetHostImpl* host = view->host();
- if (!is_guest_view_hack)
- EXPECT_EQ(view, host->GetView());
+ EXPECT_EQ(view, host->GetView());
view->Destroy();
- if (!is_guest_view_hack)
- EXPECT_EQ(nullptr, host->GetView());
+ EXPECT_EQ(nullptr, host->GetView());
if (widget_host_uses_shutdown_to_destroy_)
host->ShutdownAndDestroyWidget(true);
@@ -554,13 +544,12 @@
parent_host_ = MockRenderWidgetHostImpl::Create(delegates_.back().get(),
process_host_, routing_id);
delegates_.back()->set_widget_host(parent_host_);
- parent_view_ =
- new RenderWidgetHostViewAura(parent_host_, is_guest_view_hack_);
+ parent_view_ = new RenderWidgetHostViewAura(parent_host_);
parent_view_->InitAsChild(nullptr);
aura::client::ParentWindowWithContext(parent_view_->GetNativeView(),
aura_test_helper_->root_window(),
gfx::Rect());
- view_ = CreateView(is_guest_view_hack_);
+ view_ = CreateView();
widget_host_ = static_cast<MockRenderWidgetHostImpl*>(view_->host());
// Set the mouse_wheel_phase_handler_ timer timeout to 100ms.
view_->event_handler()->set_mouse_wheel_wheel_phase_handler_timeout(
@@ -670,8 +659,6 @@
// If true, then calls RWH::Shutdown() instead of deleting RWH.
bool widget_host_uses_shutdown_to_destroy_;
- bool is_guest_view_hack_;
-
BrowserTaskEnvironment task_environment_;
std::unique_ptr<aura::test::AuraTestHelper> aura_test_helper_;
std::unique_ptr<BrowserContext> browser_context_;
@@ -716,25 +703,11 @@
set_widget_host_uses_shutdown_to_destroy(true);
}
- // We explicitly invoke SetUp to allow gesture debounce customization.
- void SetUp() override {
- is_guest_view_hack_ = true;
-
- RenderWidgetHostViewAuraTest::SetUp();
-
- guest_view_weak_ = (RenderWidgetHostViewGuest::Create(widget_host_, nullptr,
- view_->GetWeakPtr()))
- ->GetWeakPtr();
- }
-
void TearDown() override {
// Internal override to do nothing, we clean up ourselves in the test body.
// This helps us test that |guest_view_weak_| does not leak.
}
- protected:
- base::WeakPtr<RenderWidgetHostViewBase> guest_view_weak_;
-
private:
DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostViewGuestAuraTest);
@@ -3528,7 +3501,7 @@
process_host_, routing_id);
delegates_.back()->set_widget_host(hosts[i]);
hosts[i]->Init();
- views[i] = new FakeRenderWidgetHostViewAura(hosts[i], false);
+ views[i] = new FakeRenderWidgetHostViewAura(hosts[i]);
// Prevent frames from being skipped due to resize, this test does not
// run a UI compositor so the DelegatedFrameHost doesn't get the chance
// to release its resize lock once it receives a frame of the expected
@@ -3642,7 +3615,7 @@
process_host_, routing_id);
delegates_.back()->set_widget_host(hosts[i]);
hosts[i]->Init();
- views[i] = new FakeRenderWidgetHostViewAura(hosts[i], false);
+ views[i] = new FakeRenderWidgetHostViewAura(hosts[i]);
views[i]->InitAsChild(nullptr);
aura::client::ParentWindowWithContext(
views[i]->GetNativeView(),
@@ -5259,14 +5232,6 @@
}
#endif // defined(OS_CHROMEOS)
-// Tests that when view initiated shutdown happens (i.e. RWHView is deleted
-// before RWH), we clean up properly and don't leak the RWHVGuest.
-TEST_F(RenderWidgetHostViewGuestAuraTest, GuestViewDoesNotLeak) {
- view_->InitAsChild(nullptr);
- TearDownEnvironment();
- ASSERT_FALSE(guest_view_weak_.get());
-}
-
// Tests that invalid touch events are consumed and handled
// synchronously.
TEST_F(RenderWidgetHostViewAuraTest,
@@ -5900,7 +5865,7 @@
view_->Show();
// Create and initialize the second view.
- FakeRenderWidgetHostViewAura* view2 = CreateView(false);
+ FakeRenderWidgetHostViewAura* view2 = CreateView();
view2->InitAsChild(nullptr);
aura::client::ParentWindowWithContext(
view2->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(),
@@ -5933,7 +5898,7 @@
delete contents()->GetRenderViewHost()->GetWidget()->GetView();
// This instance is destroyed in the TearDown method below.
view_ = new RenderWidgetHostViewAura(
- contents()->GetRenderViewHost()->GetWidget(), false);
+ contents()->GetRenderViewHost()->GetWidget());
}
void TearDown() override {
diff --git a/content/browser/renderer_host/render_widget_host_view_base.cc b/content/browser/renderer_host/render_widget_host_view_base.cc
index ce5ca1a..6a7254a 100644
--- a/content/browser/renderer_host/render_widget_host_view_base.cc
+++ b/content/browser/renderer_host/render_widget_host_view_base.cc
@@ -13,7 +13,6 @@
#include "components/viz/service/frame_sinks/frame_sink_manager_impl.h"
#include "content/browser/accessibility/browser_accessibility_manager.h"
#include "content/browser/compositor/surface_utils.h"
-#include "content/browser/frame_host/render_widget_host_view_guest.h"
#include "content/browser/gpu/gpu_data_manager_impl.h"
#include "content/browser/renderer_host/delegated_frame_host.h"
#include "content/browser/renderer_host/display_util.h"
@@ -53,9 +52,9 @@
// away. However, some subclasses may wish to call this earlier in their
// shutdown process, e.g. to force removal from
// RenderWidgetHostInputEventRouter's surface map before relinquishing a
- // host pointer, as in RenderWidgetHostViewGuest. There is no harm in calling
- // NotifyObserversAboutShutdown() twice, as the observers are required to
- // de-register on the first call, and so the second call does nothing.
+ // host pointer. There is no harm in calling NotifyObserversAboutShutdown()
+ // twice, as the observers are required to de-register on the first call, and
+ // so the second call does nothing.
NotifyObserversAboutShutdown();
// If we have a live reference to |text_input_manager_|, we should unregister
// so that the |text_input_manager_| will free its state.
@@ -682,10 +681,6 @@
return true;
}
-bool RenderWidgetHostViewBase::IsRenderWidgetHostViewGuest() {
- return false;
-}
-
bool RenderWidgetHostViewBase::IsRenderWidgetHostViewChildFrame() {
return false;
}
@@ -823,13 +818,8 @@
RenderWidgetHostViewBase* cur_view = target_view;
while (cur_view->IsRenderWidgetHostViewChildFrame()) {
- if (cur_view->IsRenderWidgetHostViewGuest()) {
- cur_view = static_cast<RenderWidgetHostViewGuest*>(cur_view)
- ->GetOwnerRenderWidgetHostView();
- } else {
- cur_view = static_cast<RenderWidgetHostViewChildFrame*>(cur_view)
- ->GetParentView();
- }
+ cur_view =
+ static_cast<RenderWidgetHostViewChildFrame*>(cur_view)->GetParentView();
if (!cur_view)
return false;
target_ancestors.push_back(cur_view->GetFrameSinkId());
diff --git a/content/browser/renderer_host/render_widget_host_view_base.h b/content/browser/renderer_host/render_widget_host_view_base.h
index f299bb0..68b8881bc 100644
--- a/content/browser/renderer_host/render_widget_host_view_base.h
+++ b/content/browser/renderer_host/render_widget_host_view_base.h
@@ -386,13 +386,6 @@
bool GetTransformToViewCoordSpace(RenderWidgetHostViewBase* target_view,
gfx::Transform* transform);
- // TODO(kenrb, wjmaclean): This is a temporary subclass identifier for
- // RenderWidgetHostViewGuests that is needed for special treatment during
- // input event routing. It can be removed either when RWHVGuests properly
- // support direct mouse event routing, or when RWHVGuest is removed
- // entirely, which comes first.
- virtual bool IsRenderWidgetHostViewGuest();
-
// Subclass identifier for RenderWidgetHostViewChildFrames. This is useful
// to be able to know if this RWHV is embedded within another RWHV. If
// other kinds of embeddable RWHVs are created, this should be renamed to
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.h b/content/browser/renderer_host/render_widget_host_view_mac.h
index 16a8769..fb8589f 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac.h
+++ b/content/browser/renderer_host/render_widget_host_view_mac.h
@@ -87,12 +87,7 @@
// The view will associate itself with the given widget. The native view must
// be hooked up immediately to the view hierarchy, or else when it is
// deleted it will delete this out from under the caller.
- //
- // When |is_guest_view_hack| is true, this view isn't really the view for
- // the |widget|, a RenderWidgetHostViewGuest is.
- // TODO(lazyboy): Remove |is_guest_view_hack| once BrowserPlugin has migrated
- // to use RWHVChildFrame (http://crbug.com/330264).
- RenderWidgetHostViewMac(RenderWidgetHost* widget, bool is_guest_view_hack);
+ RenderWidgetHostViewMac(RenderWidgetHost* widget);
RenderWidgetHostViewCocoa* GetInProcessNSView() const;
@@ -432,10 +427,7 @@
// (accepting IME and keyboard input).
const TextInputManager::CompositionRangeInfo* GetCompositionRangeInfo();
- // Returns the TextSelection information for the active widget. If
- // |is_guest_view_hack_| is true, then it will return the TextSelection
- // information for this RenderWidgetHostViewMac (which is serving as a
- // platform view for a guest).
+ // Returns the TextSelection information for the active widget.
const TextInputManager::TextSelection* GetTextSelection();
// Get the focused view that should be used for retrieving the text selection.
@@ -488,13 +480,6 @@
friend class MockPointerLockRenderWidgetHostView;
FRIEND_TEST_ALL_PREFIXES(RenderWidgetHostViewMacTest, GetPageTextForSpeech);
- // Allocate a new FrameSinkId if this object is the platform view of a
- // RenderWidgetHostViewGuest. This FrameSinkId will not be actually used in
- // any useful way. It's only created because BrowserCompositorMac always
- // expects to have a FrameSinkId. FrameSinkIds generated by this method do not
- // collide with FrameSinkIds used by RenderWidgetHostImpls.
- static viz::FrameSinkId AllocateFrameSinkIdForGuestViewHack();
-
// Shuts down the render_widget_host_. This is a separate function so we can
// invoke it from the message loop.
void ShutdownHost();
@@ -570,10 +555,6 @@
// Indicates if the page is loading.
bool is_loading_;
- // True when this view acts as a platform view hack for a
- // RenderWidgetHostViewGuest.
- bool is_guest_view_hack_;
-
// Our parent host view, if this is a popup. NULL otherwise.
RenderWidgetHostViewMac* popup_parent_host_view_;
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm
index c8b2075c..275caf5 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac.mm
+++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
@@ -169,13 +169,11 @@
///////////////////////////////////////////////////////////////////////////////
// RenderWidgetHostViewMac, public:
-RenderWidgetHostViewMac::RenderWidgetHostViewMac(RenderWidgetHost* widget,
- bool is_guest_view_hack)
+RenderWidgetHostViewMac::RenderWidgetHostViewMac(RenderWidgetHost* widget)
: RenderWidgetHostViewBase(widget),
page_at_minimum_scale_(true),
mouse_wheel_phase_handler_(this),
is_loading_(false),
- is_guest_view_hack_(is_guest_view_hack),
popup_parent_host_view_(nullptr),
popup_child_host_view_(nullptr),
gesture_provider_(ui::GetGestureProviderConfig(
@@ -194,16 +192,13 @@
display_ =
display::Screen::GetScreen()->GetDisplayNearestWindow([NSApp keyWindow]);
- viz::FrameSinkId frame_sink_id = is_guest_view_hack_
- ? AllocateFrameSinkIdForGuestViewHack()
- : host()->GetFrameSinkId();
+ viz::FrameSinkId frame_sink_id = host()->GetFrameSinkId();
browser_compositor_.reset(new BrowserCompositorMac(
this, this, host()->is_hidden(), display_, frame_sink_id));
DCHECK(![GetInProcessNSView() window]);
- if (!is_guest_view_hack_)
- host()->SetView(this);
+ host()->SetView(this);
// Let the page-level input event router know about our surface ID
// namespace for surface-based hit testing.
@@ -374,13 +369,8 @@
RenderWidgetHostViewBase*
RenderWidgetHostViewMac::GetFocusedViewForTextSelection() {
// We obtain the TextSelection from focused RWH which is obtained from the
- // frame tree. BrowserPlugin-based guests' RWH is not part of the frame tree
- // and the focused RWH will be that of the embedder which is incorrect. In
- // this case we should use TextSelection for |this| since RWHV for guest
- // forwards text selection information to its platform view.
- return is_guest_view_hack_
- ? this
- : GetFocusedWidget() ? GetFocusedWidget()->GetView() : nullptr;
+ // frame tree.
+ return GetFocusedWidget() ? GetFocusedWidget()->GetView() : nullptr;
}
RenderWidgetHostDelegate*
@@ -880,8 +870,6 @@
RenderWidgetHostView* view) {
DCHECK(!static_cast<RenderWidgetHostViewBase*>(view)
->IsRenderWidgetHostViewChildFrame());
- DCHECK(!static_cast<RenderWidgetHostViewBase*>(view)
- ->IsRenderWidgetHostViewGuest());
RenderWidgetHostViewMac* view_mac =
static_cast<RenderWidgetHostViewMac*>(view);
ScopedCAActionDisabler disabler;
@@ -1398,14 +1386,6 @@
password_input_enabler_.reset();
}
-// static
-viz::FrameSinkId
-RenderWidgetHostViewMac::AllocateFrameSinkIdForGuestViewHack() {
- return ImageTransportFactory::GetInstance()
- ->GetContextFactoryPrivate()
- ->AllocateFrameSinkId();
-}
-
MouseWheelPhaseHandler* RenderWidgetHostViewMac::GetMouseWheelPhaseHandler() {
return &mouse_wheel_phase_handler_;
}
diff --git a/content/browser/renderer_host/render_widget_host_view_mac_editcommand_helper_unittest.mm b/content/browser/renderer_host/render_widget_host_view_mac_editcommand_helper_unittest.mm
index 67e7b0a3..be927b9 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac_editcommand_helper_unittest.mm
+++ b/content/browser/renderer_host/render_widget_host_view_mac_editcommand_helper_unittest.mm
@@ -157,7 +157,7 @@
// Owned by its |GetInProcessNSView()|, i.e. |rwhv_cocoa|.
RenderWidgetHostViewMac* rwhv_mac =
- new RenderWidgetHostViewMac(render_widget, false);
+ new RenderWidgetHostViewMac(render_widget);
base::scoped_nsobject<RenderWidgetHostViewCocoa> rwhv_cocoa(
[rwhv_mac->GetInProcessNSView() retain]);
diff --git a/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm b/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm
index cee79138..82183a1 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm
+++ b/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm
@@ -26,7 +26,6 @@
#include "components/viz/common/surfaces/child_local_surface_id_allocator.h"
#import "content/app_shim_remote_cocoa/render_widget_host_view_cocoa.h"
#include "content/browser/compositor/image_transport_factory.h"
-#include "content/browser/frame_host/render_widget_host_view_guest.h"
#include "content/browser/gpu/compositor_util.h"
#include "content/browser/renderer_host/frame_token_message_queue.h"
#include "content/browser/renderer_host/render_widget_host_delegate.h"
@@ -495,7 +494,7 @@
host_ = base::WrapUnique(MockRenderWidgetHostImpl::Create(
&delegate_, process_host_.get(), process_host_->GetNextRoutingID()));
host_->set_owner_delegate(&mock_owner_delegate_);
- rwhv_mac_ = new RenderWidgetHostViewMac(host_.get(), false);
+ rwhv_mac_ = new RenderWidgetHostViewMac(host_.get());
rwhv_cocoa_.reset([rwhv_mac_->GetInProcessNSView() retain]);
window_.reset([[CocoaTestHelperWindow alloc] init]);
@@ -1207,44 +1206,6 @@
rwhv_cocoa_.reset();
}
-// Tests that when view initiated shutdown happens (i.e. RWHView is deleted
-// before RWH), we clean up properly and don't leak the RWHVGuest.
-TEST_F(RenderWidgetHostViewMacTest, GuestViewDoesNotLeak) {
- int32_t routing_id = process_host_->GetNextRoutingID();
-
- // Owned by its |GetInProcessNSView()|.
- MockRenderWidgetHostImpl* rwh = MockRenderWidgetHostImpl::Create(
- &delegate_, process_host_.get(), routing_id);
- RenderWidgetHostViewMac* view = new RenderWidgetHostViewMac(rwh, true);
-
- // Add a delegate to the view.
- base::scoped_nsobject<MockRenderWidgetHostViewMacDelegate> view_delegate(
- [[MockRenderWidgetHostViewMacDelegate alloc] init]);
- view->SetDelegate(view_delegate.get());
-
- base::WeakPtr<RenderWidgetHostViewBase> guest_rwhv_weak =
- (RenderWidgetHostViewGuest::Create(rwh, nullptr, view->GetWeakPtr()))
- ->GetWeakPtr();
-
- // Remove the GetInProcessNSView() so |view| also goes away before |rwh|.
- {
- base::scoped_nsobject<RenderWidgetHostViewCocoa> rwhv_cocoa;
- rwhv_cocoa.reset([view->GetInProcessNSView() retain]);
- }
- RecycleAndWait();
-
- // Clean up.
- rwh->ShutdownAndDestroyWidget(true);
-
- // Let |guest_rwhv_weak| have a chance to delete itself.
- base::RunLoop run_loop;
- base::PostTask(FROM_HERE, {content::BrowserThread::UI},
- run_loop.QuitClosure());
- run_loop.Run();
-
- ASSERT_FALSE(guest_rwhv_weak.get());
-}
-
// Tests setting background transparency. See also (disabled on Mac)
// RenderWidgetHostTest.Background. This test has some additional checks for
// Mac.
@@ -1336,7 +1297,7 @@
int32_t routing_id = process_host->GetNextRoutingID();
MockRenderWidgetHostImpl* host =
MockRenderWidgetHostImpl::Create(&delegate, process_host, routing_id);
- RenderWidgetHostViewMac* view = new RenderWidgetHostViewMac(host, false);
+ RenderWidgetHostViewMac* view = new RenderWidgetHostViewMac(host);
base::RunLoop().RunUntilIdle();
// Send an initial wheel event for scrolling by 3 lines.
@@ -1396,7 +1357,7 @@
int32_t routing_id = process_host->GetNextRoutingID();
MockRenderWidgetHostImpl* host =
MockRenderWidgetHostImpl::Create(&delegate, process_host, routing_id);
- RenderWidgetHostViewMac* view = new RenderWidgetHostViewMac(host, false);
+ RenderWidgetHostViewMac* view = new RenderWidgetHostViewMac(host);
base::RunLoop().RunUntilIdle();
// Send an initial wheel event for scrolling by 3 lines.
@@ -1452,7 +1413,7 @@
int32_t routing_id = process_host->GetNextRoutingID();
MockRenderWidgetHostImpl* host =
MockRenderWidgetHostImpl::Create(&delegate, process_host, routing_id);
- RenderWidgetHostViewMac* view = new RenderWidgetHostViewMac(host, false);
+ RenderWidgetHostViewMac* view = new RenderWidgetHostViewMac(host);
base::RunLoop().RunUntilIdle();
// Send an initial wheel event for scrolling by 3 lines.
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 3a5aa31d..c116da56 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -85,7 +85,6 @@
#include "content/browser/site_instance_impl.h"
#include "content/browser/web_contents/javascript_dialog_navigation_deferrer.h"
#include "content/browser/web_contents/web_contents_view_child_frame.h"
-#include "content/browser/web_contents/web_contents_view_guest.h"
#include "content/browser/webui/web_ui_controller_factory_registry.h"
#include "content/browser/webui/web_ui_impl.h"
#include "content/common/browser_plugin/browser_plugin_constants.h"
@@ -2055,11 +2054,6 @@
} else {
view_.reset(CreateWebContentsView(this, delegate,
&render_view_host_delegate_view_));
- if (browser_plugin_guest_) {
- view_ = std::make_unique<WebContentsViewGuest>(
- this, browser_plugin_guest_.get(), std::move(view_),
- &render_view_host_delegate_view_);
- }
}
CHECK(render_view_host_delegate_view_);
CHECK(view_.get());
@@ -2399,13 +2393,8 @@
// If the focused WebContents is a guest WebContents, then get the focused
// frame in the embedder WebContents instead.
- FrameTreeNode* focused_frame = nullptr;
- if (focused_contents->browser_plugin_guest_ &&
- !GuestMode::IsCrossProcessFrameGuest(focused_contents)) {
- focused_frame = frame_tree_.GetFocusedFrame();
- } else {
- focused_frame = GetFocusedWebContents()->frame_tree_.GetFocusedFrame();
- }
+ FrameTreeNode* focused_frame =
+ GetFocusedWebContents()->frame_tree_.GetFocusedFrame();
if (!focused_frame)
return receiving_widget;
@@ -2429,13 +2418,6 @@
focused_web_contents->interstitial_page_->GetMainFrame())
->GetRenderWidgetHost();
}
- if (!GuestMode::IsCrossProcessFrameGuest(focused_web_contents) &&
- focused_web_contents->browser_plugin_guest_) {
- // If this is a guest, we need to be controlled by our embedder.
- return focused_web_contents->GetOuterWebContents()
- ->GetMainFrame()
- ->GetRenderWidgetHost();
- }
return focused_web_contents->GetMainFrame()->GetRenderWidgetHost();
}
@@ -2912,7 +2894,7 @@
// TODO(brettw): It seems bogus that we have to call this function on the
// newly created object and give it one of its own member variables.
RenderWidgetHostView* widget_view = new_view->CreateViewForWidget(
- new_contents_impl->GetRenderViewHost()->GetWidget(), false);
+ new_contents_impl->GetRenderViewHost()->GetWidget());
if (!renderer_started_hidden) {
// RenderWidgets for frames always initialize as hidden. If the renderer
// created this window as visible, then we show it here.
@@ -5750,12 +5732,6 @@
}
WebContentsImpl* WebContentsImpl::GetOuterWebContents() {
- if (GuestMode::IsCrossProcessFrameGuest(this))
- return node_.outer_web_contents();
-
- if (browser_plugin_guest_)
- return browser_plugin_guest_->embedder_web_contents();
-
return node_.outer_web_contents();
}
@@ -6251,9 +6227,6 @@
GetOutermostWebContents()->node_.SetFocusedWebContents(this);
- if (!GuestMode::IsCrossProcessFrameGuest(this) && browser_plugin_guest_)
- return;
-
// Send a page level blur to the old contents so that it displays inactive UI
// and focus this contents to activate it.
if (old_contents)
@@ -6420,11 +6393,6 @@
void WebContentsImpl::FocusOwningWebContents(
RenderWidgetHostImpl* render_widget_host) {
- // The PDF plugin still runs as a BrowserPlugin and must go through the
- // input redirection mechanism. It must not become focused direcly.
- if (!GuestMode::IsCrossProcessFrameGuest(this) && browser_plugin_guest_)
- return;
-
RenderWidgetHostImpl* main_frame_widget_host =
GetMainFrame()->GetRenderWidgetHost();
RenderWidgetHostImpl* focused_widget =
@@ -6580,7 +6548,7 @@
void WebContentsImpl::CreateRenderWidgetHostViewForRenderManager(
RenderViewHost* render_view_host) {
RenderWidgetHostViewBase* rwh_view =
- view_->CreateViewForWidget(render_view_host->GetWidget(), false);
+ view_->CreateViewForWidget(render_view_host->GetWidget());
rwh_view->SetSize(GetSizeForNewRenderView(true));
}
diff --git a/content/browser/web_contents/web_contents_view.h b/content/browser/web_contents/web_contents_view.h
index bff5b42..4c5fb180 100644
--- a/content/browser/web_contents/web_contents_view.h
+++ b/content/browser/web_contents/web_contents_view.h
@@ -83,13 +83,8 @@
// Sets up the View that holds the rendered web page, receives messages for
// it and contains page plugins. The host view should be sized to the current
// size of the WebContents.
- //
- // |is_guest_view_hack| is temporary hack and will be removed once
- // RenderWidgetHostViewGuest is not dependent on platform view.
- // TODO(lazyboy): Remove |is_guest_view_hack| once http://crbug.com/330264 is
- // fixed.
virtual RenderWidgetHostViewBase* CreateViewForWidget(
- RenderWidgetHost* render_widget_host, bool is_guest_view_hack) = 0;
+ RenderWidgetHost* render_widget_host) = 0;
// Creates a new View that holds a non-top-level widget and receives messages
// for it.
diff --git a/content/browser/web_contents/web_contents_view_android.cc b/content/browser/web_contents/web_contents_view_android.cc
index af081e77..991732d 100644
--- a/content/browser/web_contents/web_contents_view_android.cc
+++ b/content/browser/web_contents/web_contents_view_android.cc
@@ -233,7 +233,7 @@
void WebContentsViewAndroid::CreateView(gfx::NativeView context) {}
RenderWidgetHostViewBase* WebContentsViewAndroid::CreateViewForWidget(
- RenderWidgetHost* render_widget_host, bool is_guest_view_hack) {
+ RenderWidgetHost* render_widget_host) {
if (render_widget_host->GetView()) {
// During testing, the view will already be set up in most cases to the
// test view, so we don't want to clobber it with a real one. To verify that
diff --git a/content/browser/web_contents/web_contents_view_android.h b/content/browser/web_contents/web_contents_view_android.h
index 59579dc..63befcc1 100644
--- a/content/browser/web_contents/web_contents_view_android.h
+++ b/content/browser/web_contents/web_contents_view_android.h
@@ -70,8 +70,7 @@
gfx::Rect GetViewBounds() const override;
void CreateView(gfx::NativeView context) override;
RenderWidgetHostViewBase* CreateViewForWidget(
- RenderWidgetHost* render_widget_host,
- bool is_guest_view_hack) override;
+ RenderWidgetHost* render_widget_host) override;
RenderWidgetHostViewBase* CreateViewForChildWidget(
RenderWidgetHost* render_widget_host) override;
void SetPageTitle(const base::string16& title) override;
diff --git a/content/browser/web_contents/web_contents_view_aura.cc b/content/browser/web_contents/web_contents_view_aura.cc
index d8f6e22..75972bb 100644
--- a/content/browser/web_contents/web_contents_view_aura.cc
+++ b/content/browser/web_contents/web_contents_view_aura.cc
@@ -962,7 +962,7 @@
}
RenderWidgetHostViewBase* WebContentsViewAura::CreateViewForWidget(
- RenderWidgetHost* render_widget_host, bool is_guest_view_hack) {
+ RenderWidgetHost* render_widget_host) {
if (render_widget_host->GetView()) {
// During testing, the view will already be set up in most cases to the
// test view, so we don't want to clobber it with a real one. To verify that
@@ -976,10 +976,8 @@
RenderWidgetHostViewAura* view =
g_create_render_widget_host_view
- ? g_create_render_widget_host_view(render_widget_host,
- is_guest_view_hack)
- : new RenderWidgetHostViewAura(render_widget_host,
- is_guest_view_hack);
+ ? g_create_render_widget_host_view(render_widget_host)
+ : new RenderWidgetHostViewAura(render_widget_host);
view->InitAsChild(GetRenderWidgetHostViewParent());
RenderWidgetHostImpl* host_impl =
@@ -1002,7 +1000,7 @@
RenderWidgetHostViewBase* WebContentsViewAura::CreateViewForChildWidget(
RenderWidgetHost* render_widget_host) {
- return new RenderWidgetHostViewAura(render_widget_host, false);
+ return new RenderWidgetHostViewAura(render_widget_host);
}
void WebContentsViewAura::SetPageTitle(const base::string16& title) {
diff --git a/content/browser/web_contents/web_contents_view_aura.h b/content/browser/web_contents/web_contents_view_aura.h
index 180f4fa0..acdba5f 100644
--- a/content/browser/web_contents/web_contents_view_aura.h
+++ b/content/browser/web_contents/web_contents_view_aura.h
@@ -61,7 +61,7 @@
}
using RenderWidgetHostViewCreateFunction =
- RenderWidgetHostViewAura* (*)(RenderWidgetHost*, bool);
+ RenderWidgetHostViewAura* (*)(RenderWidgetHost*);
// Used to override the creation of RenderWidgetHostViews in tests.
static void InstallCreateHookForTests(
@@ -147,8 +147,7 @@
gfx::Rect GetViewBounds() const override;
void CreateView(gfx::NativeView context) override;
RenderWidgetHostViewBase* CreateViewForWidget(
- RenderWidgetHost* render_widget_host,
- bool is_guest_view_hack) override;
+ RenderWidgetHost* render_widget_host) override;
RenderWidgetHostViewBase* CreateViewForChildWidget(
RenderWidgetHost* render_widget_host) override;
void SetPageTitle(const base::string16& title) override;
diff --git a/content/browser/web_contents/web_contents_view_child_frame.cc b/content/browser/web_contents/web_contents_view_child_frame.cc
index a766385..c8cb360 100644
--- a/content/browser/web_contents/web_contents_view_child_frame.cc
+++ b/content/browser/web_contents/web_contents_view_child_frame.cc
@@ -82,8 +82,7 @@
}
RenderWidgetHostViewBase* WebContentsViewChildFrame::CreateViewForWidget(
- RenderWidgetHost* render_widget_host,
- bool is_guest_view_hack) {
+ RenderWidgetHost* render_widget_host) {
return RenderWidgetHostViewChildFrame::Create(render_widget_host);
}
diff --git a/content/browser/web_contents/web_contents_view_child_frame.h b/content/browser/web_contents/web_contents_view_child_frame.h
index 412bb35..92cbe3d 100644
--- a/content/browser/web_contents/web_contents_view_child_frame.h
+++ b/content/browser/web_contents/web_contents_view_child_frame.h
@@ -38,8 +38,7 @@
gfx::Rect GetViewBounds() const override;
void CreateView(gfx::NativeView context) override;
RenderWidgetHostViewBase* CreateViewForWidget(
- RenderWidgetHost* render_widget_host,
- bool is_guest_view_hack) override;
+ RenderWidgetHost* render_widget_host) override;
RenderWidgetHostViewBase* CreateViewForChildWidget(
RenderWidgetHost* render_widget_host) override;
void SetPageTitle(const base::string16& title) override;
diff --git a/content/browser/web_contents/web_contents_view_guest.cc b/content/browser/web_contents/web_contents_view_guest.cc
deleted file mode 100644
index c45581fd..0000000
--- a/content/browser/web_contents/web_contents_view_guest.cc
+++ /dev/null
@@ -1,237 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/browser/web_contents/web_contents_view_guest.h"
-
-#include <utility>
-
-#include "base/metrics/user_metrics.h"
-#include "build/build_config.h"
-#include "content/browser/browser_plugin/browser_plugin_embedder.h"
-#include "content/browser/browser_plugin/browser_plugin_guest.h"
-#include "content/browser/frame_host/interstitial_page_impl.h"
-#include "content/browser/frame_host/render_widget_host_view_guest.h"
-#include "content/browser/renderer_host/display_util.h"
-#include "content/browser/renderer_host/render_view_host_factory.h"
-#include "content/browser/renderer_host/render_view_host_impl.h"
-#include "content/browser/web_contents/web_contents_impl.h"
-#include "content/common/drag_messages.h"
-#include "content/public/browser/guest_mode.h"
-#include "content/public/browser/web_contents_delegate.h"
-#include "content/public/common/context_menu_params.h"
-#include "content/public/common/drop_data.h"
-#include "ui/gfx/geometry/point.h"
-#include "ui/gfx/geometry/rect.h"
-#include "ui/gfx/geometry/size.h"
-#include "ui/gfx/image/image_skia.h"
-
-#if defined(USE_AURA)
-#include "ui/aura/window.h"
-#endif
-
-using blink::WebDragOperation;
-using blink::WebDragOperationsMask;
-
-namespace content {
-
-WebContentsViewGuest::WebContentsViewGuest(
- WebContentsImpl* web_contents,
- BrowserPluginGuest* guest,
- std::unique_ptr<WebContentsView> platform_view,
- RenderViewHostDelegateView** delegate_view)
- : web_contents_(web_contents),
- guest_(guest),
- platform_view_(std::move(platform_view)),
- platform_view_delegate_view_(*delegate_view) {
- *delegate_view = this;
- DCHECK(!GuestMode::IsCrossProcessFrameGuest(web_contents));
-}
-
-WebContentsViewGuest::~WebContentsViewGuest() {
-}
-
-gfx::NativeView WebContentsViewGuest::GetNativeView() const {
- return platform_view_->GetNativeView();
-}
-
-gfx::NativeView WebContentsViewGuest::GetContentNativeView() const {
- RenderWidgetHostView* rwhv = web_contents_->GetRenderWidgetHostView();
- if (!rwhv)
- return nullptr;
- return rwhv->GetNativeView();
-}
-
-gfx::NativeWindow WebContentsViewGuest::GetTopLevelNativeWindow() const {
- return guest_->embedder_web_contents()->GetTopLevelNativeWindow();
-}
-
-void WebContentsViewGuest::OnGuestAttached(WebContentsView* parent_view) {
-#if defined(USE_AURA)
- // In aura, ScreenPositionClient doesn't work properly if we do
- // not have the native view associated with this WebContentsViewGuest in the
- // view hierarchy. We add this view as embedder's child here.
- // This would go in WebContentsViewGuest::CreateView, but that is too early to
- // access embedder_web_contents(). Therefore, we do it here.
- parent_view->GetNativeView()->AddChild(platform_view_->GetNativeView());
-#endif // defined(USE_AURA)
-}
-
-void WebContentsViewGuest::OnGuestDetached(WebContentsView* old_parent_view) {
-#if defined(USE_AURA)
- old_parent_view->GetNativeView()->RemoveChild(
- platform_view_->GetNativeView());
-#endif // defined(USE_AURA)
-}
-
-void WebContentsViewGuest::GetContainerBounds(gfx::Rect* out) const {
- if (guest_->embedder_web_contents()) {
- // We need embedder container's bounds to calculate our bounds.
- guest_->embedder_web_contents()->GetView()->GetContainerBounds(out);
- gfx::Point guest_coordinates =
- guest_->GetCoordinatesInEmbedderWebContents(gfx::Point());
- out->Offset(guest_coordinates.x(), guest_coordinates.y());
- } else {
- out->set_origin(gfx::Point());
- }
-
- out->set_size(size_);
-}
-
-void WebContentsViewGuest::SizeContents(const gfx::Size& size) {
- size_ = size;
- RenderWidgetHostView* rwhv = web_contents_->GetRenderWidgetHostView();
- if (rwhv)
- rwhv->SetSize(size);
-}
-
-void WebContentsViewGuest::SetInitialFocus() {
- platform_view_->SetInitialFocus();
-}
-
-gfx::Rect WebContentsViewGuest::GetViewBounds() const {
- return gfx::Rect(size_);
-}
-
-void WebContentsViewGuest::CreateView(gfx::NativeView context) {
- platform_view_->CreateView(context);
-}
-
-RenderWidgetHostViewBase* WebContentsViewGuest::CreateViewForWidget(
- RenderWidgetHost* render_widget_host, bool is_guest_view_hack) {
- if (render_widget_host->GetView()) {
- // During testing, the view will already be set up in most cases to the
- // test view, so we don't want to clobber it with a real one. To verify that
- // this actually is happening (and somebody isn't accidentally creating the
- // view twice), we check for the RVH Factory, which will be set when we're
- // making special ones (which go along with the special views).
- DCHECK(RenderViewHostFactory::has_factory());
- return static_cast<RenderWidgetHostViewBase*>(
- render_widget_host->GetView());
- }
-
- RenderWidgetHostViewBase* platform_widget =
- platform_view_->CreateViewForWidget(render_widget_host, true);
-
- return RenderWidgetHostViewGuest::Create(render_widget_host, guest_,
- platform_widget->GetWeakPtr());
-}
-
-RenderWidgetHostViewBase* WebContentsViewGuest::CreateViewForChildWidget(
- RenderWidgetHost* render_widget_host) {
- return platform_view_->CreateViewForChildWidget(render_widget_host);
-}
-
-void WebContentsViewGuest::SetPageTitle(const base::string16& title) {
-}
-
-void WebContentsViewGuest::RenderViewCreated(RenderViewHost* host) {
- platform_view_->RenderViewCreated(host);
-}
-
-void WebContentsViewGuest::RenderViewReady() {
- platform_view_->RenderViewReady();
-}
-
-void WebContentsViewGuest::RenderViewHostChanged(RenderViewHost* old_host,
- RenderViewHost* new_host) {
- platform_view_->RenderViewHostChanged(old_host, new_host);
-}
-
-void WebContentsViewGuest::SetOverscrollControllerEnabled(bool enabled) {
- // This should never override the setting of the embedder view.
-}
-
-#if defined(OS_MACOSX)
-bool WebContentsViewGuest::CloseTabAfterEventTrackingIfNeeded() {
- return false;
-}
-#endif
-
-WebContents* WebContentsViewGuest::web_contents() {
- return web_contents_;
-}
-
-void WebContentsViewGuest::RestoreFocus() {
- platform_view_->RestoreFocus();
-}
-
-void WebContentsViewGuest::Focus() {
- platform_view_->Focus();
-}
-
-void WebContentsViewGuest::StoreFocus() {
- platform_view_->StoreFocus();
-}
-
-void WebContentsViewGuest::FocusThroughTabTraversal(bool reverse) {
- platform_view_->FocusThroughTabTraversal(reverse);
-}
-
-DropData* WebContentsViewGuest::GetDropData() const {
- NOTIMPLEMENTED();
- return nullptr;
-}
-
-void WebContentsViewGuest::UpdateDragCursor(WebDragOperation operation) {
- RenderViewHostImpl* embedder_render_view_host =
- static_cast<RenderViewHostImpl*>(
- guest_->embedder_web_contents()->GetRenderViewHost());
- CHECK(embedder_render_view_host);
- RenderViewHostDelegateView* view =
- embedder_render_view_host->GetDelegate()->GetDelegateView();
- if (view)
- view->UpdateDragCursor(operation);
-}
-
-void WebContentsViewGuest::ShowContextMenu(RenderFrameHost* render_frame_host,
- const ContextMenuParams& params) {
- DCHECK(platform_view_delegate_view_);
- platform_view_delegate_view_->ShowContextMenu(render_frame_host, params);
-}
-
-void WebContentsViewGuest::StartDragging(
- const DropData& drop_data,
- WebDragOperationsMask ops,
- const gfx::ImageSkia& image,
- const gfx::Vector2d& image_offset,
- const DragEventSourceInfo& event_info,
- RenderWidgetHostImpl* source_rwh) {
- WebContentsImpl* embedder_web_contents = guest_->embedder_web_contents();
- embedder_web_contents->GetBrowserPluginEmbedder()->StartDrag(guest_);
- RenderViewHostImpl* embedder_render_view_host =
- static_cast<RenderViewHostImpl*>(
- embedder_web_contents->GetRenderViewHost());
- CHECK(embedder_render_view_host);
- RenderViewHostDelegateView* view =
- embedder_render_view_host->GetDelegate()->GetDelegateView();
- if (view) {
- RecordAction(base::UserMetricsAction("BrowserPlugin.Guest.StartDrag"));
- view->StartDragging(
- drop_data, ops, image, image_offset, event_info, source_rwh);
- } else {
- embedder_web_contents->SystemDragEnded(source_rwh);
- }
-}
-
-} // namespace content
diff --git a/content/browser/web_contents/web_contents_view_guest.h b/content/browser/web_contents/web_contents_view_guest.h
deleted file mode 100644
index 12aa7cd..0000000
--- a/content/browser/web_contents/web_contents_view_guest.h
+++ /dev/null
@@ -1,101 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CONTENT_BROWSER_WEB_CONTENTS_WEB_CONTENTS_VIEW_GUEST_H_
-#define CONTENT_BROWSER_WEB_CONTENTS_WEB_CONTENTS_VIEW_GUEST_H_
-
-#include <memory>
-#include <vector>
-
-#include "base/macros.h"
-#include "build/build_config.h"
-#include "content/browser/renderer_host/render_view_host_delegate_view.h"
-#include "content/browser/web_contents/web_contents_view.h"
-#include "content/common/content_export.h"
-#include "content/common/drag_event_source_info.h"
-
-namespace content {
-
-class WebContents;
-class WebContentsImpl;
-class BrowserPluginGuest;
-
-class WebContentsViewGuest : public WebContentsView,
- public RenderViewHostDelegateView {
- public:
- // The corresponding WebContentsImpl is passed in the constructor, and manages
- // our lifetime. This doesn't need to be the case, but is this way currently
- // because that's what was easiest when they were split.
- // WebContentsViewGuest always has a backing platform dependent view,
- // |platform_view|.
- WebContentsViewGuest(WebContentsImpl* web_contents,
- BrowserPluginGuest* guest,
- std::unique_ptr<WebContentsView> platform_view,
- RenderViewHostDelegateView** delegate_view);
- ~WebContentsViewGuest() override;
-
- WebContents* web_contents();
-
- void OnGuestAttached(WebContentsView* parent_view);
-
- void OnGuestDetached(WebContentsView* old_parent_view);
-
- // WebContentsView implementation --------------------------------------------
- gfx::NativeView GetNativeView() const override;
- gfx::NativeView GetContentNativeView() const override;
- gfx::NativeWindow GetTopLevelNativeWindow() const override;
- void GetContainerBounds(gfx::Rect* out) const override;
- void SizeContents(const gfx::Size& size) override;
- void Focus() override;
- void SetInitialFocus() override;
- void StoreFocus() override;
- void RestoreFocus() override;
- void FocusThroughTabTraversal(bool reverse) override;
- DropData* GetDropData() const override;
- gfx::Rect GetViewBounds() const override;
- void CreateView(gfx::NativeView context) override;
- RenderWidgetHostViewBase* CreateViewForWidget(
- RenderWidgetHost* render_widget_host,
- bool is_guest_view_hack) override;
- RenderWidgetHostViewBase* CreateViewForChildWidget(
- RenderWidgetHost* render_widget_host) override;
- void SetPageTitle(const base::string16& title) override;
- void RenderViewCreated(RenderViewHost* host) override;
- void RenderViewReady() override;
- void RenderViewHostChanged(RenderViewHost* old_host,
- RenderViewHost* new_host) override;
- void SetOverscrollControllerEnabled(bool enabled) override;
-#if defined(OS_MACOSX)
- bool CloseTabAfterEventTrackingIfNeeded() override;
-#endif
-
- // Backend implementation of RenderViewHostDelegateView.
- void ShowContextMenu(RenderFrameHost* render_frame_host,
- const ContextMenuParams& params) override;
- void StartDragging(const DropData& drop_data,
- blink::WebDragOperationsMask allowed_ops,
- const gfx::ImageSkia& image,
- const gfx::Vector2d& image_offset,
- const DragEventSourceInfo& event_info,
- RenderWidgetHostImpl* source_rwh) override;
- void UpdateDragCursor(blink::WebDragOperation operation) override;
-
- private:
- // The WebContentsImpl whose contents we display.
- WebContentsImpl* web_contents_;
- BrowserPluginGuest* guest_;
- // The platform dependent view backing this WebContentsView.
- // Calls to this WebContentsViewGuest are forwarded to |platform_view_|.
- std::unique_ptr<WebContentsView> platform_view_;
- gfx::Size size_;
-
- // Delegate view for guest's platform view.
- RenderViewHostDelegateView* platform_view_delegate_view_;
-
- DISALLOW_COPY_AND_ASSIGN(WebContentsViewGuest);
-};
-
-} // namespace content
-
-#endif // CONTENT_BROWSER_WEB_CONTENTS_WEB_CONTENTS_VIEW_GUEST_H_
diff --git a/content/browser/web_contents/web_contents_view_mac.h b/content/browser/web_contents/web_contents_view_mac.h
index 470a8a6..78b29f5 100644
--- a/content/browser/web_contents/web_contents_view_mac.h
+++ b/content/browser/web_contents/web_contents_view_mac.h
@@ -76,8 +76,7 @@
gfx::Rect GetViewBounds() const override;
void CreateView(gfx::NativeView context) override;
RenderWidgetHostViewBase* CreateViewForWidget(
- RenderWidgetHost* render_widget_host,
- bool is_guest_view_hack) override;
+ RenderWidgetHost* render_widget_host) override;
RenderWidgetHostViewBase* CreateViewForChildWidget(
RenderWidgetHost* render_widget_host) override;
void SetPageTitle(const base::string16& title) override;
@@ -133,7 +132,7 @@
WebDragDest* drag_dest() const { return drag_dest_.get(); }
using RenderWidgetHostViewCreateFunction =
- RenderWidgetHostViewMac* (*)(RenderWidgetHost*, bool);
+ RenderWidgetHostViewMac* (*)(RenderWidgetHost*);
// Used to override the creation of RenderWidgetHostViews in tests.
CONTENT_EXPORT static void InstallCreateHookForTests(
diff --git a/content/browser/web_contents/web_contents_view_mac.mm b/content/browser/web_contents/web_contents_view_mac.mm
index ef68ba9..e0bb1e52 100644
--- a/content/browser/web_contents/web_contents_view_mac.mm
+++ b/content/browser/web_contents/web_contents_view_mac.mm
@@ -326,7 +326,7 @@
}
RenderWidgetHostViewBase* WebContentsViewMac::CreateViewForWidget(
- RenderWidgetHost* render_widget_host, bool is_guest_view_hack) {
+ RenderWidgetHost* render_widget_host) {
if (render_widget_host->GetView()) {
// During testing, the view will already be set up in most cases to the
// test view, so we don't want to clobber it with a real one. To verify that
@@ -340,9 +340,8 @@
RenderWidgetHostViewMac* view =
g_create_render_widget_host_view
- ? g_create_render_widget_host_view(render_widget_host,
- is_guest_view_hack)
- : new RenderWidgetHostViewMac(render_widget_host, is_guest_view_hack);
+ ? g_create_render_widget_host_view(render_widget_host)
+ : new RenderWidgetHostViewMac(render_widget_host);
if (delegate()) {
base::scoped_nsobject<NSObject<RenderWidgetHostViewMacDelegate>>
rw_delegate(delegate()->CreateRenderWidgetHostViewDelegate(
@@ -385,7 +384,7 @@
RenderWidgetHostViewBase* WebContentsViewMac::CreateViewForChildWidget(
RenderWidgetHost* render_widget_host) {
RenderWidgetHostViewMac* view =
- new RenderWidgetHostViewMac(render_widget_host, false);
+ new RenderWidgetHostViewMac(render_widget_host);
if (delegate()) {
base::scoped_nsobject<NSObject<RenderWidgetHostViewMacDelegate>>
rw_delegate(delegate()->CreateRenderWidgetHostViewDelegate(