| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |