Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(179)

Side by Side Diff: content/browser/web_contents/web_contents_impl.cc

Issue 2810813004: Hide fullscreen rotation jank (Closed)
Patch Set: Make OnFullscreenStateChanged a function at the RWVHB level. cr feedback Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/web_contents/web_contents_impl.h" 5 #include "content/browser/web_contents/web_contents_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <cmath> 9 #include <cmath>
10 #include <utility> 10 #include <utility>
(...skipping 2014 matching lines...) Expand 10 before | Expand all | Expand 10 after
2025 // Make sure any existing fullscreen widget is shut down first. 2025 // Make sure any existing fullscreen widget is shut down first.
2026 RenderWidgetHostView* const widget_view = GetFullscreenRenderWidgetHostView(); 2026 RenderWidgetHostView* const widget_view = GetFullscreenRenderWidgetHostView();
2027 if (widget_view) { 2027 if (widget_view) {
2028 RenderWidgetHostImpl::From(widget_view->GetRenderWidgetHost()) 2028 RenderWidgetHostImpl::From(widget_view->GetRenderWidgetHost())
2029 ->ShutdownAndDestroyWidget(true); 2029 ->ShutdownAndDestroyWidget(true);
2030 } 2030 }
2031 2031
2032 if (delegate_) 2032 if (delegate_)
2033 delegate_->EnterFullscreenModeForTab(this, origin); 2033 delegate_->EnterFullscreenModeForTab(this, origin);
2034 2034
2035 RenderWidgetHostViewBase* rwhvb =
2036 static_cast<RenderWidgetHostViewBase*>(GetRenderWidgetHostView());
2037 if (rwhvb)
2038 rwhvb->OnFullscreenStateChanged(IsFullscreenForCurrentTab());
2039
2035 for (auto& observer : observers_) 2040 for (auto& observer : observers_)
2036 observer.DidToggleFullscreenModeForTab(IsFullscreenForCurrentTab(), false); 2041 observer.DidToggleFullscreenModeForTab(IsFullscreenForCurrentTab(), false);
2037 } 2042 }
2038 2043
2039 void WebContentsImpl::ExitFullscreenMode(bool will_cause_resize) { 2044 void WebContentsImpl::ExitFullscreenMode(bool will_cause_resize) {
2040 // This method is being called to leave renderer-initiated fullscreen mode. 2045 // This method is being called to leave renderer-initiated fullscreen mode.
2041 // Make sure any existing fullscreen widget is shut down first. 2046 // Make sure any existing fullscreen widget is shut down first.
2042 RenderWidgetHostView* const widget_view = GetFullscreenRenderWidgetHostView(); 2047 RenderWidgetHostView* const widget_view = GetFullscreenRenderWidgetHostView();
2043 if (widget_view) { 2048 if (widget_view) {
2044 RenderWidgetHostImpl::From(widget_view->GetRenderWidgetHost()) 2049 RenderWidgetHostImpl::From(widget_view->GetRenderWidgetHost())
2045 ->ShutdownAndDestroyWidget(true); 2050 ->ShutdownAndDestroyWidget(true);
2046 } 2051 }
2047 2052
2048 #if defined(OS_ANDROID) 2053 #if defined(OS_ANDROID)
2049 ContentVideoView* video_view = ContentVideoView::GetInstance(); 2054 ContentVideoView* video_view = ContentVideoView::GetInstance();
2050 if (video_view != NULL) 2055 if (video_view != NULL)
2051 video_view->ExitFullscreen(); 2056 video_view->ExitFullscreen();
2052 #endif 2057 #endif
2053 2058
2059 RenderWidgetHostViewBase* rwhvb =
Khushal 2017/06/15 18:42:56 Don't we need to call this after delegate_->ExitFu
steimel 2017/06/15 21:46:39 Done.
2060 static_cast<RenderWidgetHostViewBase*>(GetRenderWidgetHostView());
2061 if (rwhvb)
2062 rwhvb->OnFullscreenStateChanged(IsFullscreenForCurrentTab());
2063
2054 if (delegate_) 2064 if (delegate_)
2055 delegate_->ExitFullscreenModeForTab(this); 2065 delegate_->ExitFullscreenModeForTab(this);
2056 2066
2057 // The fullscreen state is communicated to the renderer through a resize 2067 // The fullscreen state is communicated to the renderer through a resize
2058 // message. If the change in fullscreen state doesn't cause a view resize 2068 // message. If the change in fullscreen state doesn't cause a view resize
2059 // then we must ensure web contents exit the fullscreen state by explicitly 2069 // then we must ensure web contents exit the fullscreen state by explicitly
2060 // sending a resize message. This is required for the situation of the browser 2070 // sending a resize message. This is required for the situation of the browser
2061 // moving the view into a "browser fullscreen" state and then the contents 2071 // moving the view into a "browser fullscreen" state and then the contents
2062 // entering "tab fullscreen". Exiting the contents "tab fullscreen" then won't 2072 // entering "tab fullscreen". Exiting the contents "tab fullscreen" then won't
2063 // have the side effect of the view resizing, hence the explicit call here is 2073 // have the side effect of the view resizing, hence the explicit call here is
(...skipping 3681 matching lines...) Expand 10 before | Expand all | Expand 10 after
5745 new_root->SetOriginalOpener(opener->frame_tree()->root()); 5755 new_root->SetOriginalOpener(opener->frame_tree()->root());
5746 5756
5747 if (!opener_suppressed) { 5757 if (!opener_suppressed) {
5748 new_root->SetOpener(opener); 5758 new_root->SetOpener(opener);
5749 created_with_opener_ = true; 5759 created_with_opener_ = true;
5750 } 5760 }
5751 } 5761 }
5752 } 5762 }
5753 5763
5754 } // namespace content 5764 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698