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 1353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1364 sync_compositor_->DemandDrawSw(&canvas); | 1364 sync_compositor_->DemandDrawSw(&canvas); |
1365 callback.Run(bitmap, READBACK_SUCCESS); | 1365 callback.Run(bitmap, READBACK_SUCCESS); |
1366 } | 1366 } |
1367 | 1367 |
1368 void RenderWidgetHostViewAndroid::OnFrameMetadataUpdated( | 1368 void RenderWidgetHostViewAndroid::OnFrameMetadataUpdated( |
1369 const cc::CompositorFrameMetadata& frame_metadata, | 1369 const cc::CompositorFrameMetadata& frame_metadata, |
1370 bool is_transparent) { | 1370 bool is_transparent) { |
1371 bool is_mobile_optimized = IsMobileOptimizedFrame(frame_metadata); | 1371 bool is_mobile_optimized = IsMobileOptimizedFrame(frame_metadata); |
1372 gesture_provider_.SetDoubleTapSupportForPageEnabled(!is_mobile_optimized); | 1372 gesture_provider_.SetDoubleTapSupportForPageEnabled(!is_mobile_optimized); |
1373 | 1373 |
1374 float dip_scale = view_.GetDipScale(); | |
1375 float top_controls_pix = frame_metadata.top_controls_height * dip_scale; | |
1376 float top_shown_pix = | |
1377 top_controls_pix * frame_metadata.top_controls_shown_ratio; | |
1378 | |
1379 if (ime_adapter_android_) | |
1380 ime_adapter_android_->UpdateFrameInfo(frame_metadata.selection.start, | |
1381 dip_scale, top_shown_pix); | |
1382 | |
1374 if (!content_view_core_) | 1383 if (!content_view_core_) |
1375 return; | 1384 return; |
1376 | 1385 |
1377 if (overscroll_controller_) | 1386 if (overscroll_controller_) |
1378 overscroll_controller_->OnFrameMetadataUpdated(frame_metadata); | 1387 overscroll_controller_->OnFrameMetadataUpdated(frame_metadata); |
1379 | 1388 |
1380 if (touch_selection_controller_) { | 1389 if (touch_selection_controller_) { |
1381 touch_selection_controller_->OnSelectionBoundsChanged( | 1390 touch_selection_controller_->OnSelectionBoundsChanged( |
1382 frame_metadata.selection.start, frame_metadata.selection.end); | 1391 frame_metadata.selection.start, frame_metadata.selection.end); |
1383 | 1392 |
1384 // Set parameters for adaptive handle orientation. | 1393 // Set parameters for adaptive handle orientation. |
1385 gfx::SizeF viewport_size(frame_metadata.scrollable_viewport_size); | 1394 gfx::SizeF viewport_size(frame_metadata.scrollable_viewport_size); |
1386 viewport_size.Scale(frame_metadata.page_scale_factor); | 1395 viewport_size.Scale(frame_metadata.page_scale_factor); |
1387 gfx::RectF viewport_rect(0.0f, frame_metadata.top_controls_height * | 1396 gfx::RectF viewport_rect(0.0f, frame_metadata.top_controls_height * |
1388 frame_metadata.top_controls_shown_ratio, | 1397 frame_metadata.top_controls_shown_ratio, |
1389 viewport_size.width(), viewport_size.height()); | 1398 viewport_size.width(), viewport_size.height()); |
1390 touch_selection_controller_->OnViewportChanged(viewport_rect); | 1399 touch_selection_controller_->OnViewportChanged(viewport_rect); |
1391 } | 1400 } |
1392 | 1401 |
1393 UpdateBackgroundColor(is_transparent ? SK_ColorTRANSPARENT | 1402 UpdateBackgroundColor(is_transparent ? SK_ColorTRANSPARENT |
1394 : frame_metadata.root_background_color); | 1403 : frame_metadata.root_background_color); |
1395 | 1404 |
1396 view_.set_content_offset(gfx::Vector2dF(0.0f, | 1405 view_.set_content_offset(gfx::Vector2dF(0.0f, |
boliu
2017/04/25 22:43:37
presumably all the view_ calls don't need to be gu
| |
1397 frame_metadata.top_controls_height * | 1406 frame_metadata.top_controls_height * |
1398 frame_metadata.top_controls_shown_ratio)); | 1407 frame_metadata.top_controls_shown_ratio)); |
1399 | 1408 |
1400 float dip_scale = view_.GetDipScale(); | |
1401 float top_controls_pix = frame_metadata.top_controls_height * dip_scale; | |
1402 float top_shown_pix = | |
1403 top_controls_pix * frame_metadata.top_controls_shown_ratio; | |
1404 bool top_changed = !FloatEquals(top_shown_pix, prev_top_shown_pix_); | 1409 bool top_changed = !FloatEquals(top_shown_pix, prev_top_shown_pix_); |
1410 if (top_changed) { | |
1411 float translate = top_shown_pix - top_controls_pix; | |
1412 view_.OnTopControlsChanged(translate, top_shown_pix); | |
1413 prev_top_shown_pix_ = top_shown_pix; | |
1414 } | |
1405 | 1415 |
1406 float bottom_controls_pix = frame_metadata.bottom_controls_height * dip_scale; | 1416 float bottom_controls_pix = frame_metadata.bottom_controls_height * dip_scale; |
1407 float bottom_shown_pix = | 1417 float bottom_shown_pix = |
1408 bottom_controls_pix * frame_metadata.bottom_controls_shown_ratio; | 1418 bottom_controls_pix * frame_metadata.bottom_controls_shown_ratio; |
1409 bool bottom_changed = !FloatEquals(bottom_shown_pix, prev_bottom_shown_pix_); | 1419 bool bottom_changed = !FloatEquals(bottom_shown_pix, prev_bottom_shown_pix_); |
1410 | |
1411 if (top_changed) { | |
1412 float translate = top_shown_pix - top_controls_pix; | |
1413 view_.OnTopControlsChanged(translate, top_shown_pix); | |
1414 prev_top_shown_pix_ = top_shown_pix; | |
1415 } | |
1416 if (bottom_changed) { | 1420 if (bottom_changed) { |
1417 float translate = bottom_controls_pix - bottom_shown_pix; | 1421 float translate = bottom_controls_pix - bottom_shown_pix; |
1418 view_.OnBottomControlsChanged(translate, bottom_shown_pix); | 1422 view_.OnBottomControlsChanged(translate, bottom_shown_pix); |
1419 prev_bottom_shown_pix_ = bottom_shown_pix; | 1423 prev_bottom_shown_pix_ = bottom_shown_pix; |
1420 } | 1424 } |
1421 | 1425 |
1422 // All offsets and sizes are in CSS pixels. | 1426 // All offsets and sizes are in CSS pixels. |
1423 content_view_core_->UpdateFrameInfo( | 1427 content_view_core_->UpdateFrameInfo( |
1424 frame_metadata.root_scroll_offset, | 1428 frame_metadata.root_scroll_offset, frame_metadata.page_scale_factor, |
1425 frame_metadata.page_scale_factor, | |
1426 gfx::Vector2dF(frame_metadata.min_page_scale_factor, | 1429 gfx::Vector2dF(frame_metadata.min_page_scale_factor, |
1427 frame_metadata.max_page_scale_factor), | 1430 frame_metadata.max_page_scale_factor), |
1428 frame_metadata.root_layer_size, | 1431 frame_metadata.root_layer_size, frame_metadata.scrollable_viewport_size, |
1429 frame_metadata.scrollable_viewport_size, | |
1430 frame_metadata.top_controls_height, | 1432 frame_metadata.top_controls_height, |
1431 frame_metadata.top_controls_shown_ratio, | 1433 frame_metadata.top_controls_shown_ratio, is_mobile_optimized); |
1432 is_mobile_optimized, | |
1433 frame_metadata.selection.start); | |
1434 } | 1434 } |
1435 | 1435 |
1436 void RenderWidgetHostViewAndroid::ShowInternal() { | 1436 void RenderWidgetHostViewAndroid::ShowInternal() { |
1437 bool show = is_showing_ && is_window_activity_started_ && is_window_visible_; | 1437 bool show = is_showing_ && is_window_activity_started_ && is_window_visible_; |
1438 if (!show) | 1438 if (!show) |
1439 return; | 1439 return; |
1440 | 1440 |
1441 if (!host_ || !host_->is_hidden()) | 1441 if (!host_ || !host_->is_hidden()) |
1442 return; | 1442 return; |
1443 | 1443 |
(...skipping 747 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2191 | 2191 |
2192 ui::WindowAndroidCompositor* compositor = window_android->GetCompositor(); | 2192 ui::WindowAndroidCompositor* compositor = window_android->GetCompositor(); |
2193 if (!compositor) | 2193 if (!compositor) |
2194 return; | 2194 return; |
2195 | 2195 |
2196 overscroll_controller_ = base::MakeUnique<OverscrollControllerAndroid>( | 2196 overscroll_controller_ = base::MakeUnique<OverscrollControllerAndroid>( |
2197 overscroll_refresh_handler, compositor, view_.GetDipScale()); | 2197 overscroll_refresh_handler, compositor, view_.GetDipScale()); |
2198 } | 2198 } |
2199 | 2199 |
2200 } // namespace content | 2200 } // namespace content |
OLD | NEW |