| Index: content/renderer/render_view_impl.cc
|
| diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
|
| index 26c7ef258201a7ca9bb1c6f5842996d3027052a3..77e806a9bb1bde152811f4e9f1ee90f000b7e4d1 100644
|
| --- a/content/renderer/render_view_impl.cc
|
| +++ b/content/renderer/render_view_impl.cc
|
| @@ -1343,6 +1343,9 @@ bool RenderViewImpl::OnMessageReceived(const IPC::Message& message) {
|
| IPC_MESSAGE_HANDLER(PageMsg_UpdateWindowScreenRect,
|
| OnUpdateWindowScreenRect)
|
| IPC_MESSAGE_HANDLER(PageMsg_SetZoomLevel, OnSetZoomLevel)
|
| + IPC_MESSAGE_HANDLER(PageMsg_WasHidden, OnPageWasHidden)
|
| + IPC_MESSAGE_HANDLER(PageMsg_WasShown, OnPageWasShown)
|
| +
|
| #if defined(OS_ANDROID)
|
| IPC_MESSAGE_HANDLER(ViewMsg_UpdateTopControlsState,
|
| OnUpdateTopControlsState)
|
| @@ -2315,10 +2318,6 @@ bool RenderViewImpl::GetContentStateImmediately() const {
|
| return send_content_state_immediately_;
|
| }
|
|
|
| -blink::WebPageVisibilityState RenderViewImpl::GetVisibilityState() const {
|
| - return visibilityState();
|
| -}
|
| -
|
| void RenderViewImpl::DidStartLoading() {
|
| main_render_frame_->didStartLoading(true);
|
| }
|
| @@ -2782,9 +2781,7 @@ void RenderViewImpl::Close() {
|
| RenderThread::Get()->Send(new ViewHostMsg_Close_ACK(GetRoutingID()));
|
| }
|
|
|
| -void RenderViewImpl::OnWasHidden() {
|
| - RenderWidget::OnWasHidden();
|
| -
|
| +void RenderViewImpl::OnPageWasHidden() {
|
| #if defined(OS_ANDROID) && defined(ENABLE_WEBRTC)
|
| RenderThreadImpl::current()->video_capture_impl_manager()->
|
| SuspendDevices(true);
|
| @@ -2792,21 +2789,30 @@ void RenderViewImpl::OnWasHidden() {
|
| speech_recognition_dispatcher_->AbortAllRecognitions();
|
| #endif
|
|
|
| - if (webview())
|
| - webview()->setVisibilityState(visibilityState(), false);
|
| + if (webview()) {
|
| + // TODO(lfg): It's not correct to defer the page visibility to the main
|
| + // frame. Currently, this is done because the main frame may override the
|
| + // visibility of the page when prerendering. In order to fix this,
|
| + // prerendering must be made aware of OOPIFs. https://crbug.com/440544
|
| + blink::WebPageVisibilityState visibilityState =
|
| + GetMainRenderFrame() ? GetMainRenderFrame()->visibilityState()
|
| + : blink::WebPageVisibilityStateHidden;
|
| + webview()->setVisibilityState(visibilityState, false);
|
| + }
|
| }
|
|
|
| -void RenderViewImpl::OnWasShown(bool needs_repainting,
|
| - const ui::LatencyInfo& latency_info) {
|
| - RenderWidget::OnWasShown(needs_repainting, latency_info);
|
| -
|
| +void RenderViewImpl::OnPageWasShown() {
|
| #if defined(OS_ANDROID) && defined(ENABLE_WEBRTC)
|
| RenderThreadImpl::current()->video_capture_impl_manager()->
|
| SuspendDevices(false);
|
| #endif
|
|
|
| - if (webview())
|
| - webview()->setVisibilityState(visibilityState(), false);
|
| + if (webview()) {
|
| + blink::WebPageVisibilityState visibilityState =
|
| + GetMainRenderFrame() ? GetMainRenderFrame()->visibilityState()
|
| + : blink::WebPageVisibilityStateVisible;
|
| + webview()->setVisibilityState(visibilityState, false);
|
| + }
|
| }
|
|
|
| GURL RenderViewImpl::GetURLForGraphicsContext3D() {
|
| @@ -3083,16 +3089,10 @@ double RenderViewImpl::zoomFactorToZoomLevel(double factor) const {
|
| }
|
|
|
| blink::WebPageVisibilityState RenderViewImpl::visibilityState() const {
|
| - blink::WebPageVisibilityState current_state = is_hidden() ?
|
| - blink::WebPageVisibilityStateHidden :
|
| - blink::WebPageVisibilityStateVisible;
|
| - blink::WebPageVisibilityState override_state = current_state;
|
| - // TODO(jam): move this method to WebFrameClient.
|
| - if (GetContentClient()->renderer()->
|
| - ShouldOverridePageVisibilityState(main_render_frame_,
|
| - &override_state))
|
| - return override_state;
|
| - return current_state;
|
| + // This method should only be used to determine initial visibility.
|
| + DCHECK(!main_render_frame_);
|
| + return is_hidden() ? blink::WebPageVisibilityStateHidden
|
| + : blink::WebPageVisibilityStateVisible;
|
| }
|
|
|
| void RenderViewImpl::draggableRegionsChanged() {
|
|
|