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

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

Issue 2834343005: Let IME frame update bypass ContentViewCore (Closed)
Patch Set: comment Created 3 years, 7 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 1353 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698