| 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 1373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1384 content_view_core_->GetWindowAndroid()->AddObserver(this); | 1384 content_view_core_->GetWindowAndroid()->AddObserver(this); |
| 1385 | 1385 |
| 1386 // Clear existing vsync requests to allow a request to the new window. | 1386 // Clear existing vsync requests to allow a request to the new window. |
| 1387 uint32_t outstanding_vsync_requests = outstanding_vsync_requests_; | 1387 uint32_t outstanding_vsync_requests = outstanding_vsync_requests_; |
| 1388 outstanding_vsync_requests_ = 0; | 1388 outstanding_vsync_requests_ = 0; |
| 1389 RequestVSyncUpdate(outstanding_vsync_requests); | 1389 RequestVSyncUpdate(outstanding_vsync_requests); |
| 1390 | 1390 |
| 1391 ui::WindowAndroidCompositor* compositor = | 1391 ui::WindowAndroidCompositor* compositor = |
| 1392 content_view_core_->GetWindowAndroid()->GetCompositor(); | 1392 content_view_core_->GetWindowAndroid()->GetCompositor(); |
| 1393 if (compositor) { | 1393 if (compositor) { |
| 1394 delegated_frame_host_->RegisterSurfaceNamespaceHierarchy( | 1394 delegated_frame_host_->RegisterFrameSinkHierarchy( |
| 1395 compositor->GetSurfaceClientId()); | 1395 compositor->GetFrameSinkId()); |
| 1396 } | 1396 } |
| 1397 } | 1397 } |
| 1398 | 1398 |
| 1399 void RenderWidgetHostViewAndroid::StopObservingRootWindow() { | 1399 void RenderWidgetHostViewAndroid::StopObservingRootWindow() { |
| 1400 if (!content_view_core_ || !(content_view_core_->GetWindowAndroid())) { | 1400 if (!content_view_core_ || !(content_view_core_->GetWindowAndroid())) { |
| 1401 DCHECK(!observing_root_window_); | 1401 DCHECK(!observing_root_window_); |
| 1402 return; | 1402 return; |
| 1403 } | 1403 } |
| 1404 | 1404 |
| 1405 if (!observing_root_window_) | 1405 if (!observing_root_window_) |
| 1406 return; | 1406 return; |
| 1407 | 1407 |
| 1408 // Reset window state variables to their defaults. | 1408 // Reset window state variables to their defaults. |
| 1409 is_window_activity_started_ = true; | 1409 is_window_activity_started_ = true; |
| 1410 is_window_visible_ = true; | 1410 is_window_visible_ = true; |
| 1411 observing_root_window_ = false; | 1411 observing_root_window_ = false; |
| 1412 if (host_) | 1412 if (host_) |
| 1413 host_->Send(new ViewMsg_SetBeginFramePaused(host_->GetRoutingID(), true)); | 1413 host_->Send(new ViewMsg_SetBeginFramePaused(host_->GetRoutingID(), true)); |
| 1414 content_view_core_->GetWindowAndroid()->RemoveObserver(this); | 1414 content_view_core_->GetWindowAndroid()->RemoveObserver(this); |
| 1415 // If the DFH has already been destroyed, it will have cleaned itself up. | 1415 // If the DFH has already been destroyed, it will have cleaned itself up. |
| 1416 // This happens in some WebView cases. | 1416 // This happens in some WebView cases. |
| 1417 if (delegated_frame_host_) | 1417 if (delegated_frame_host_) |
| 1418 delegated_frame_host_->UnregisterSurfaceNamespaceHierarchy(); | 1418 delegated_frame_host_->UnregisterFrameSinkHierarchy(); |
| 1419 } | 1419 } |
| 1420 | 1420 |
| 1421 void RenderWidgetHostViewAndroid::SendBeginFrame(base::TimeTicks frame_time, | 1421 void RenderWidgetHostViewAndroid::SendBeginFrame(base::TimeTicks frame_time, |
| 1422 base::TimeDelta vsync_period) { | 1422 base::TimeDelta vsync_period) { |
| 1423 TRACE_EVENT1("cc", "RenderWidgetHostViewAndroid::SendBeginFrame", | 1423 TRACE_EVENT1("cc", "RenderWidgetHostViewAndroid::SendBeginFrame", |
| 1424 "frame_time_us", frame_time.ToInternalValue()); | 1424 "frame_time_us", frame_time.ToInternalValue()); |
| 1425 | 1425 |
| 1426 // Synchronous compositor does not use deadline-based scheduling. | 1426 // Synchronous compositor does not use deadline-based scheduling. |
| 1427 // TODO(brianderson): Replace this hardcoded deadline after Android | 1427 // TODO(brianderson): Replace this hardcoded deadline after Android |
| 1428 // switches to Surfaces and the Browser's commit isn't in the critcal path. | 1428 // switches to Surfaces and the Browser's commit isn't in the critcal path. |
| (...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1666 | 1666 |
| 1667 if (overscroll_controller_) | 1667 if (overscroll_controller_) |
| 1668 overscroll_controller_->OnOverscrolled(params); | 1668 overscroll_controller_->OnOverscrolled(params); |
| 1669 } | 1669 } |
| 1670 | 1670 |
| 1671 void RenderWidgetHostViewAndroid::DidStopFlinging() { | 1671 void RenderWidgetHostViewAndroid::DidStopFlinging() { |
| 1672 if (content_view_core_) | 1672 if (content_view_core_) |
| 1673 content_view_core_->DidStopFlinging(); | 1673 content_view_core_->DidStopFlinging(); |
| 1674 } | 1674 } |
| 1675 | 1675 |
| 1676 uint32_t RenderWidgetHostViewAndroid::GetSurfaceClientId() { | 1676 cc::FrameSinkId RenderWidgetHostViewAndroid::GetFrameSinkId() { |
| 1677 if (!delegated_frame_host_) | 1677 if (!delegated_frame_host_) |
| 1678 return 0; | 1678 return cc::FrameSinkId(); |
| 1679 | 1679 |
| 1680 return delegated_frame_host_->GetSurfaceClientId(); | 1680 return delegated_frame_host_->GetFrameSinkId(); |
| 1681 } | 1681 } |
| 1682 | 1682 |
| 1683 void RenderWidgetHostViewAndroid::SetContentViewCore( | 1683 void RenderWidgetHostViewAndroid::SetContentViewCore( |
| 1684 ContentViewCoreImpl* content_view_core) { | 1684 ContentViewCoreImpl* content_view_core) { |
| 1685 DCHECK(!content_view_core || !content_view_core_ || | 1685 DCHECK(!content_view_core || !content_view_core_ || |
| 1686 (content_view_core_ == content_view_core)); | 1686 (content_view_core_ == content_view_core)); |
| 1687 StopObservingRootWindow(); | 1687 StopObservingRootWindow(); |
| 1688 | 1688 |
| 1689 bool resize = false; | 1689 bool resize = false; |
| 1690 if (content_view_core != content_view_core_) { | 1690 if (content_view_core != content_view_core_) { |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1807 OnDetachCompositor(); | 1807 OnDetachCompositor(); |
| 1808 } | 1808 } |
| 1809 | 1809 |
| 1810 void RenderWidgetHostViewAndroid::OnAttachCompositor() { | 1810 void RenderWidgetHostViewAndroid::OnAttachCompositor() { |
| 1811 DCHECK(content_view_core_); | 1811 DCHECK(content_view_core_); |
| 1812 if (!overscroll_controller_) | 1812 if (!overscroll_controller_) |
| 1813 overscroll_controller_ = CreateOverscrollController( | 1813 overscroll_controller_ = CreateOverscrollController( |
| 1814 content_view_core_, ui::GetScaleFactorForNativeView(GetNativeView())); | 1814 content_view_core_, ui::GetScaleFactorForNativeView(GetNativeView())); |
| 1815 ui::WindowAndroidCompositor* compositor = | 1815 ui::WindowAndroidCompositor* compositor = |
| 1816 content_view_core_->GetWindowAndroid()->GetCompositor(); | 1816 content_view_core_->GetWindowAndroid()->GetCompositor(); |
| 1817 delegated_frame_host_->RegisterSurfaceNamespaceHierarchy( | 1817 delegated_frame_host_->RegisterFrameSinkHierarchy( |
| 1818 compositor->GetSurfaceClientId()); | 1818 compositor->GetFrameSinkId()); |
| 1819 } | 1819 } |
| 1820 | 1820 |
| 1821 void RenderWidgetHostViewAndroid::OnDetachCompositor() { | 1821 void RenderWidgetHostViewAndroid::OnDetachCompositor() { |
| 1822 DCHECK(content_view_core_); | 1822 DCHECK(content_view_core_); |
| 1823 DCHECK(using_browser_compositor_); | 1823 DCHECK(using_browser_compositor_); |
| 1824 RunAckCallbacks(); | 1824 RunAckCallbacks(); |
| 1825 overscroll_controller_.reset(); | 1825 overscroll_controller_.reset(); |
| 1826 delegated_frame_host_->UnregisterSurfaceNamespaceHierarchy(); | 1826 delegated_frame_host_->UnregisterFrameSinkHierarchy(); |
| 1827 } | 1827 } |
| 1828 | 1828 |
| 1829 void RenderWidgetHostViewAndroid::OnVSync(base::TimeTicks frame_time, | 1829 void RenderWidgetHostViewAndroid::OnVSync(base::TimeTicks frame_time, |
| 1830 base::TimeDelta vsync_period) { | 1830 base::TimeDelta vsync_period) { |
| 1831 TRACE_EVENT0("cc,benchmark", "RenderWidgetHostViewAndroid::OnVSync"); | 1831 TRACE_EVENT0("cc,benchmark", "RenderWidgetHostViewAndroid::OnVSync"); |
| 1832 if (!host_) | 1832 if (!host_) |
| 1833 return; | 1833 return; |
| 1834 | 1834 |
| 1835 if (outstanding_vsync_requests_ & FLUSH_INPUT) { | 1835 if (outstanding_vsync_requests_ & FLUSH_INPUT) { |
| 1836 outstanding_vsync_requests_ &= ~FLUSH_INPUT; | 1836 outstanding_vsync_requests_ &= ~FLUSH_INPUT; |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1980 case ui::MotionEvent::ACTION_UP: | 1980 case ui::MotionEvent::ACTION_UP: |
| 1981 case ui::MotionEvent::ACTION_POINTER_UP: | 1981 case ui::MotionEvent::ACTION_POINTER_UP: |
| 1982 UMA_HISTOGRAM_CUSTOM_COUNTS("Event.Latency.OS.TOUCH_RELEASED", | 1982 UMA_HISTOGRAM_CUSTOM_COUNTS("Event.Latency.OS.TOUCH_RELEASED", |
| 1983 delta.InMicroseconds(), 1, 1000000, 50); | 1983 delta.InMicroseconds(), 1, 1000000, 50); |
| 1984 default: | 1984 default: |
| 1985 return; | 1985 return; |
| 1986 } | 1986 } |
| 1987 } | 1987 } |
| 1988 | 1988 |
| 1989 } // namespace content | 1989 } // namespace content |
| OLD | NEW |