Separate RenderViewHost from RenderWidgetHost, part 6: move more calls to the RenderWidgetHostDelegate.
The WebContentsImpl is already a RenderWidgetHostDelegate, so there's no reason to detour through the RenderViewHostImpl.
BUG=542477
TEST=all green
Review URL: https://codereview.chromium.org/1423333003
Cr-Commit-Position: refs/heads/master@{#359009}
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index ece7e1b..292e2b37 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -1617,7 +1617,8 @@
delegate_->EnterFullscreenModeForTab(this, origin);
FOR_EACH_OBSERVER(WebContentsObserver, observers_,
- DidToggleFullscreenModeForTab(IsFullscreenForCurrentTab()));
+ DidToggleFullscreenModeForTab(IsFullscreenForCurrentTab(
+ GetRenderViewHost()->GetWidget())));
}
void WebContentsImpl::ExitFullscreenMode() {
@@ -1647,16 +1648,24 @@
render_widget_host->WasResized();
}
- FOR_EACH_OBSERVER(WebContentsObserver,
- observers_,
- DidToggleFullscreenModeForTab(IsFullscreenForCurrentTab()));
+ FOR_EACH_OBSERVER(WebContentsObserver, observers_,
+ DidToggleFullscreenModeForTab(IsFullscreenForCurrentTab(
+ GetRenderViewHost()->GetWidget())));
}
-bool WebContentsImpl::IsFullscreenForCurrentTab() const {
+bool WebContentsImpl::IsFullscreenForCurrentTab(
+ RenderWidgetHostImpl* render_widget_host) const {
+ if (!RenderViewHostImpl::From(render_widget_host))
+ return false;
+
return delegate_ ? delegate_->IsFullscreenForTabOrPending(this) : false;
}
-blink::WebDisplayMode WebContentsImpl::GetDisplayMode() const {
+blink::WebDisplayMode WebContentsImpl::GetDisplayMode(
+ RenderWidgetHostImpl* render_widget_host) const {
+ if (!RenderViewHostImpl::From(render_widget_host))
+ return blink::WebDisplayModeBrowser;
+
return delegate_ ? delegate_->GetDisplayMode(this)
: blink::WebDisplayModeBrowser;
}
@@ -2972,9 +2981,9 @@
// No page change? Then, the renderer and browser can remain in fullscreen.
return;
}
- if (IsFullscreenForCurrentTab())
+ if (IsFullscreenForCurrentTab(GetRenderViewHost()->GetWidget()))
ExitFullscreen();
- DCHECK(!IsFullscreenForCurrentTab());
+ DCHECK(!IsFullscreenForCurrentTab(GetRenderViewHost()->GetWidget()));
}
void WebContentsImpl::DidNavigateMainFramePostCommit(
@@ -3895,7 +3904,7 @@
// Ensure fullscreen mode is exited in the |delegate_| since a crashed
// renderer may not have made a clean exit.
- if (IsFullscreenForCurrentTab())
+ if (IsFullscreenForCurrentTab(GetRenderViewHost()->GetWidget()))
ExitFullscreenMode();
// Cancel any visible dialogs so they are not left dangling over the sad tab.
diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h
index 5a520a8..339c066 100644
--- a/content/browser/web_contents/web_contents_impl.h
+++ b/content/browser/web_contents/web_contents_impl.h
@@ -483,8 +483,6 @@
void LostCapture() override;
void RunFileChooser(RenderViewHost* render_view_host,
const FileChooserParams& params) override;
- bool IsFullscreenForCurrentTab() const override;
- blink::WebDisplayMode GetDisplayMode() const override;
void UpdatePreferredSize(const gfx::Size& pref_size) override;
void LostMouseLock() override;
void CreateNewWindow(
@@ -600,6 +598,10 @@
bool last_unlocked_by_target) override;
gfx::Rect GetRootWindowResizerRect(
RenderWidgetHostImpl* render_widget_host) const override;
+ bool IsFullscreenForCurrentTab(
+ RenderWidgetHostImpl* render_widget_host) const override;
+ blink::WebDisplayMode GetDisplayMode(
+ RenderWidgetHostImpl* render_widget_host) const override;
// RenderFrameHostManager::Delegate ------------------------------------------
diff --git a/content/browser/web_contents/web_contents_impl_unittest.cc b/content/browser/web_contents/web_contents_impl_unittest.cc
index acdfc42..2e38619c 100644
--- a/content/browser/web_contents/web_contents_impl_unittest.cc
+++ b/content/browser/web_contents/web_contents_impl_unittest.cc
@@ -1511,7 +1511,6 @@
FakeFullscreenDelegate fake_delegate;
contents()->SetDelegate(&fake_delegate);
TestRenderFrameHost* orig_rfh = contents()->GetMainFrame();
- TestRenderViewHost* orig_rvh = orig_rfh->GetRenderViewHost();
// Navigate to a site.
const GURL url("http://www.google.com");
@@ -1524,13 +1523,11 @@
EXPECT_EQ(orig_rfh, contents()->GetMainFrame());
// Toggle fullscreen mode on (as if initiated via IPC from renderer).
- EXPECT_FALSE(orig_rvh->IsFullscreenGranted());
- EXPECT_FALSE(contents()->IsFullscreenForCurrentTab());
+ EXPECT_FALSE(contents()->IsFullscreenForCurrentTab(test_rvh()->GetWidget()));
EXPECT_FALSE(fake_delegate.IsFullscreenForTabOrPending(contents()));
orig_rfh->OnMessageReceived(
FrameHostMsg_ToggleFullscreen(orig_rfh->GetRoutingID(), true));
- EXPECT_TRUE(orig_rvh->IsFullscreenGranted());
- EXPECT_TRUE(contents()->IsFullscreenForCurrentTab());
+ EXPECT_TRUE(contents()->IsFullscreenForCurrentTab(test_rvh()->GetWidget()));
EXPECT_TRUE(fake_delegate.IsFullscreenForTabOrPending(contents()));
// Navigate to a new site.
@@ -1544,8 +1541,7 @@
ui::PAGE_TRANSITION_TYPED);
// Confirm fullscreen has exited.
- EXPECT_FALSE(orig_rvh->IsFullscreenGranted());
- EXPECT_FALSE(contents()->IsFullscreenForCurrentTab());
+ EXPECT_FALSE(contents()->IsFullscreenForCurrentTab(test_rvh()->GetWidget()));
EXPECT_FALSE(fake_delegate.IsFullscreenForTabOrPending(contents()));
contents()->SetDelegate(nullptr);
@@ -1556,8 +1552,7 @@
TEST_F(WebContentsImplTest, HistoryNavigationExitsFullscreen) {
FakeFullscreenDelegate fake_delegate;
contents()->SetDelegate(&fake_delegate);
- TestRenderFrameHost* const orig_rfh = contents()->GetMainFrame();
- TestRenderViewHost* const orig_rvh = orig_rfh->GetRenderViewHost();
+ TestRenderFrameHost* orig_rfh = contents()->GetMainFrame();
// Navigate to a site.
const GURL url("http://www.google.com");
@@ -1581,16 +1576,14 @@
EXPECT_EQ(orig_rfh, contents()->GetMainFrame());
// Sanity-check: Confirm we're not starting out in fullscreen mode.
- EXPECT_FALSE(orig_rvh->IsFullscreenGranted());
- EXPECT_FALSE(contents()->IsFullscreenForCurrentTab());
+ EXPECT_FALSE(contents()->IsFullscreenForCurrentTab(test_rvh()->GetWidget()));
EXPECT_FALSE(fake_delegate.IsFullscreenForTabOrPending(contents()));
for (int i = 0; i < 2; ++i) {
// Toggle fullscreen mode on (as if initiated via IPC from renderer).
orig_rfh->OnMessageReceived(
FrameHostMsg_ToggleFullscreen(orig_rfh->GetRoutingID(), true));
- EXPECT_TRUE(orig_rvh->IsFullscreenGranted());
- EXPECT_TRUE(contents()->IsFullscreenForCurrentTab());
+ EXPECT_TRUE(contents()->IsFullscreenForCurrentTab(test_rvh()->GetWidget()));
EXPECT_TRUE(fake_delegate.IsFullscreenForTabOrPending(contents()));
// Navigate backward (or forward).
@@ -1607,8 +1600,8 @@
orig_rfh->SimulateNavigationStop();
// Confirm fullscreen has exited.
- EXPECT_FALSE(orig_rvh->IsFullscreenGranted());
- EXPECT_FALSE(contents()->IsFullscreenForCurrentTab());
+ EXPECT_FALSE(
+ contents()->IsFullscreenForCurrentTab(test_rvh()->GetWidget()));
EXPECT_FALSE(fake_delegate.IsFullscreenForTabOrPending(contents()));
}
@@ -1647,21 +1640,18 @@
url, ui::PAGE_TRANSITION_TYPED);
// Toggle fullscreen mode on (as if initiated via IPC from renderer).
- EXPECT_FALSE(test_rvh()->IsFullscreenGranted());
- EXPECT_FALSE(contents()->IsFullscreenForCurrentTab());
+ EXPECT_FALSE(contents()->IsFullscreenForCurrentTab(test_rvh()->GetWidget()));
EXPECT_FALSE(fake_delegate.IsFullscreenForTabOrPending(contents()));
contents()->GetMainFrame()->OnMessageReceived(FrameHostMsg_ToggleFullscreen(
contents()->GetMainFrame()->GetRoutingID(), true));
- EXPECT_TRUE(test_rvh()->IsFullscreenGranted());
- EXPECT_TRUE(contents()->IsFullscreenForCurrentTab());
+ EXPECT_TRUE(contents()->IsFullscreenForCurrentTab(test_rvh()->GetWidget()));
EXPECT_TRUE(fake_delegate.IsFullscreenForTabOrPending(contents()));
// Crash the renderer.
main_test_rfh()->GetProcess()->SimulateCrash();
// Confirm fullscreen has exited.
- EXPECT_FALSE(test_rvh()->IsFullscreenGranted());
- EXPECT_FALSE(contents()->IsFullscreenForCurrentTab());
+ EXPECT_FALSE(contents()->IsFullscreenForCurrentTab(test_rvh()->GetWidget()));
EXPECT_FALSE(fake_delegate.IsFullscreenForTabOrPending(contents()));
contents()->SetDelegate(nullptr);