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

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_android.cc

Issue 2683663002: Add AddChildFrameSink() and RemoveChildFrameSink() To WindowAndroidCompositor (Closed)
Patch Set: Created 3 years, 10 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/renderer_host/render_widget_host_view_android.h" 5 #include "content/browser/renderer_host/render_widget_host_view_android.h"
6 6
7 #include <android/bitmap.h> 7 #include <android/bitmap.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
(...skipping 1395 matching lines...) Expand 10 before | Expand all | Expand 10 after
1406 if (host_) 1406 if (host_)
1407 host_->Send(new ViewMsg_SetBeginFramePaused(host_->GetRoutingID(), false)); 1407 host_->Send(new ViewMsg_SetBeginFramePaused(host_->GetRoutingID(), false));
1408 view_.GetWindowAndroid()->AddObserver(this); 1408 view_.GetWindowAndroid()->AddObserver(this);
1409 // When using browser compositor, DelegatedFrameHostAndroid provides the BFS. 1409 // When using browser compositor, DelegatedFrameHostAndroid provides the BFS.
1410 if (!using_browser_compositor_) 1410 if (!using_browser_compositor_)
1411 SetBeginFrameSource(view_.GetWindowAndroid()->GetBeginFrameSource()); 1411 SetBeginFrameSource(view_.GetWindowAndroid()->GetBeginFrameSource());
1412 1412
1413 ui::WindowAndroidCompositor* compositor = 1413 ui::WindowAndroidCompositor* compositor =
1414 view_.GetWindowAndroid()->GetCompositor(); 1414 view_.GetWindowAndroid()->GetCompositor();
1415 if (compositor) { 1415 if (compositor) {
1416 delegated_frame_host_->RegisterFrameSinkHierarchy( 1416 delegated_frame_host_->AttachToCompositor(compositor);
1417 compositor->GetFrameSinkId());
1418 } 1417 }
1419 } 1418 }
1420 1419
1421 void RenderWidgetHostViewAndroid::StopObservingRootWindow() { 1420 void RenderWidgetHostViewAndroid::StopObservingRootWindow() {
1422 if (!(view_.GetWindowAndroid())) { 1421 if (!(view_.GetWindowAndroid())) {
1423 DCHECK(!observing_root_window_); 1422 DCHECK(!observing_root_window_);
1424 return; 1423 return;
1425 } 1424 }
1426 1425
1427 if (!observing_root_window_) 1426 if (!observing_root_window_)
1428 return; 1427 return;
1429 1428
1430 // Reset window state variables to their defaults. 1429 // Reset window state variables to their defaults.
1431 is_window_activity_started_ = true; 1430 is_window_activity_started_ = true;
1432 is_window_visible_ = true; 1431 is_window_visible_ = true;
1433 observing_root_window_ = false; 1432 observing_root_window_ = false;
1434 if (host_) 1433 if (host_)
1435 host_->Send(new ViewMsg_SetBeginFramePaused(host_->GetRoutingID(), true)); 1434 host_->Send(new ViewMsg_SetBeginFramePaused(host_->GetRoutingID(), true));
1436 view_.GetWindowAndroid()->RemoveObserver(this); 1435 view_.GetWindowAndroid()->RemoveObserver(this);
1437 if (!using_browser_compositor_) 1436 if (!using_browser_compositor_)
1438 SetBeginFrameSource(nullptr); 1437 SetBeginFrameSource(nullptr);
1439 // If the DFH has already been destroyed, it will have cleaned itself up. 1438 // If the DFH has already been destroyed, it will have cleaned itself up.
1440 // This happens in some WebView cases. 1439 // This happens in some WebView cases.
1441 if (delegated_frame_host_) 1440 if (delegated_frame_host_)
1442 delegated_frame_host_->UnregisterFrameSinkHierarchy(); 1441 delegated_frame_host_->DetachFromCompositor();
1443 DCHECK(!begin_frame_source_); 1442 DCHECK(!begin_frame_source_);
1444 } 1443 }
1445 1444
1446 void RenderWidgetHostViewAndroid::SendBeginFrame(cc::BeginFrameArgs args) { 1445 void RenderWidgetHostViewAndroid::SendBeginFrame(cc::BeginFrameArgs args) {
1447 TRACE_EVENT2("cc", "RenderWidgetHostViewAndroid::SendBeginFrame", 1446 TRACE_EVENT2("cc", "RenderWidgetHostViewAndroid::SendBeginFrame",
1448 "frame_number", args.sequence_number, "frame_time_us", 1447 "frame_number", args.sequence_number, "frame_time_us",
1449 args.frame_time.ToInternalValue()); 1448 args.frame_time.ToInternalValue());
1450 1449
1451 // Synchronous compositor does not use deadline-based scheduling. 1450 // Synchronous compositor does not use deadline-based scheduling.
1452 // TODO(brianderson): Replace this hardcoded deadline after Android 1451 // TODO(brianderson): Replace this hardcoded deadline after Android
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
1817 StopObservingRootWindow(); 1816 StopObservingRootWindow();
1818 OnDetachCompositor(); 1817 OnDetachCompositor();
1819 } 1818 }
1820 1819
1821 void RenderWidgetHostViewAndroid::OnAttachCompositor() { 1820 void RenderWidgetHostViewAndroid::OnAttachCompositor() {
1822 DCHECK(content_view_core_); 1821 DCHECK(content_view_core_);
1823 CreateOverscrollControllerIfPossible(); 1822 CreateOverscrollControllerIfPossible();
1824 if (observing_root_window_) { 1823 if (observing_root_window_) {
1825 ui::WindowAndroidCompositor* compositor = 1824 ui::WindowAndroidCompositor* compositor =
1826 view_.GetWindowAndroid()->GetCompositor(); 1825 view_.GetWindowAndroid()->GetCompositor();
1827 delegated_frame_host_->RegisterFrameSinkHierarchy( 1826 delegated_frame_host_->AttachToCompositor(compositor);
1828 compositor->GetFrameSinkId());
1829 } 1827 }
1830 } 1828 }
1831 1829
1832 void RenderWidgetHostViewAndroid::OnDetachCompositor() { 1830 void RenderWidgetHostViewAndroid::OnDetachCompositor() {
1833 DCHECK(content_view_core_); 1831 DCHECK(content_view_core_);
1834 DCHECK(using_browser_compositor_); 1832 DCHECK(using_browser_compositor_);
1835 RunAckCallbacks(); 1833 RunAckCallbacks();
1836 overscroll_controller_.reset(); 1834 overscroll_controller_.reset();
1837 delegated_frame_host_->UnregisterFrameSinkHierarchy(); 1835 delegated_frame_host_->DetachFromCompositor();
1838 } 1836 }
1839 1837
1840 void RenderWidgetHostViewAndroid::OnBeginFrame(const cc::BeginFrameArgs& args) { 1838 void RenderWidgetHostViewAndroid::OnBeginFrame(const cc::BeginFrameArgs& args) {
1841 TRACE_EVENT0("cc,benchmark", "RenderWidgetHostViewAndroid::OnBeginFrame"); 1839 TRACE_EVENT0("cc,benchmark", "RenderWidgetHostViewAndroid::OnBeginFrame");
1842 if (!host_) 1840 if (!host_)
1843 return; 1841 return;
1844 1842
1845 // In sync mode, we disregard missed frame args to ensure that 1843 // In sync mode, we disregard missed frame args to ensure that
1846 // SynchronousCompositorBrowserFilter::SyncStateAfterVSync will be called 1844 // SynchronousCompositorBrowserFilter::SyncStateAfterVSync will be called
1847 // during WindowAndroid::WindowBeginFrameSource::OnVSync() observer iteration. 1845 // during WindowAndroid::WindowBeginFrameSource::OnVSync() observer iteration.
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
1986 ui::WindowAndroidCompositor* compositor = window_android->GetCompositor(); 1984 ui::WindowAndroidCompositor* compositor = window_android->GetCompositor();
1987 if (!compositor) 1985 if (!compositor)
1988 return; 1986 return;
1989 1987
1990 overscroll_controller_ = base::MakeUnique<OverscrollControllerAndroid>( 1988 overscroll_controller_ = base::MakeUnique<OverscrollControllerAndroid>(
1991 overscroll_refresh_handler, compositor, 1989 overscroll_refresh_handler, compositor,
1992 ui::GetScaleFactorForNativeView(GetNativeView())); 1990 ui::GetScaleFactorForNativeView(GetNativeView()));
1993 } 1991 }
1994 1992
1995 } // namespace content 1993 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/compositor_impl_android.cc ('k') | ui/android/delegated_frame_host_android.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698