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

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

Issue 859973003: Touch emulator: enables double tap support for pages similar to Chrome on Android. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: frame_metadata_util Created 5 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
« no previous file with comments | « content/browser/renderer_host/render_widget_host_impl.cc ('k') | content/content_browser.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "base/android/build_info.h" 9 #include "base/android/build_info.h"
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 26 matching lines...) Expand all
37 #include "content/browser/android/overscroll_controller_android.h" 37 #include "content/browser/android/overscroll_controller_android.h"
38 #include "content/browser/devtools/render_view_devtools_agent_host.h" 38 #include "content/browser/devtools/render_view_devtools_agent_host.h"
39 #include "content/browser/gpu/browser_gpu_channel_host_factory.h" 39 #include "content/browser/gpu/browser_gpu_channel_host_factory.h"
40 #include "content/browser/gpu/compositor_util.h" 40 #include "content/browser/gpu/compositor_util.h"
41 #include "content/browser/gpu/gpu_data_manager_impl.h" 41 #include "content/browser/gpu/gpu_data_manager_impl.h"
42 #include "content/browser/gpu/gpu_process_host_ui_shim.h" 42 #include "content/browser/gpu/gpu_process_host_ui_shim.h"
43 #include "content/browser/gpu/gpu_surface_tracker.h" 43 #include "content/browser/gpu/gpu_surface_tracker.h"
44 #include "content/browser/media/media_web_contents_observer.h" 44 #include "content/browser/media/media_web_contents_observer.h"
45 #include "content/browser/renderer_host/compositor_impl_android.h" 45 #include "content/browser/renderer_host/compositor_impl_android.h"
46 #include "content/browser/renderer_host/dip_util.h" 46 #include "content/browser/renderer_host/dip_util.h"
47 #include "content/browser/renderer_host/frame_metadata_util.h"
47 #include "content/browser/renderer_host/input/synthetic_gesture_target_android.h " 48 #include "content/browser/renderer_host/input/synthetic_gesture_target_android.h "
48 #include "content/browser/renderer_host/input/web_input_event_builders_android.h " 49 #include "content/browser/renderer_host/input/web_input_event_builders_android.h "
49 #include "content/browser/renderer_host/input/web_input_event_util.h" 50 #include "content/browser/renderer_host/input/web_input_event_util.h"
50 #include "content/browser/renderer_host/render_process_host_impl.h" 51 #include "content/browser/renderer_host/render_process_host_impl.h"
51 #include "content/browser/renderer_host/render_view_host_impl.h" 52 #include "content/browser/renderer_host/render_view_host_impl.h"
52 #include "content/browser/renderer_host/render_widget_host_impl.h" 53 #include "content/browser/renderer_host/render_widget_host_impl.h"
53 #include "content/common/gpu/client/gl_helper.h" 54 #include "content/common/gpu/client/gl_helper.h"
54 #include "content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h" 55 #include "content/common/gpu/client/webgraphicscontext3d_command_buffer_impl.h"
55 #include "content/common/gpu/gpu_messages.h" 56 #include "content/common/gpu/gpu_messages.h"
56 #include "content/common/gpu/gpu_process_launch_causes.h" 57 #include "content/common/gpu/gpu_process_launch_causes.h"
(...skipping 24 matching lines...) Expand all
81 #include "ui/gfx/geometry/size_conversions.h" 82 #include "ui/gfx/geometry/size_conversions.h"
82 #include "ui/gfx/screen.h" 83 #include "ui/gfx/screen.h"
83 #include "ui/touch_selection/touch_selection_controller.h" 84 #include "ui/touch_selection/touch_selection_controller.h"
84 85
85 namespace content { 86 namespace content {
86 87
87 namespace { 88 namespace {
88 89
89 const int kUndefinedOutputSurfaceId = -1; 90 const int kUndefinedOutputSurfaceId = -1;
90 91
91 // Used to accomodate finite precision when comparing scaled viewport and
92 // content widths. While this value may seem large, width=device-width on an N7
93 // V1 saw errors of ~0.065 between computed window and content widths.
94 const float kMobileViewportWidthEpsilon = 0.15f;
95
96 static const char kAsyncReadBackString[] = "Compositing.CopyFromSurfaceTime"; 92 static const char kAsyncReadBackString[] = "Compositing.CopyFromSurfaceTime";
97 93
98 // Sends an acknowledgement to the renderer of a processed IME event. 94 // Sends an acknowledgement to the renderer of a processed IME event.
99 void SendImeEventAck(RenderWidgetHostImpl* host) { 95 void SendImeEventAck(RenderWidgetHostImpl* host) {
100 host->Send(new ViewMsg_ImeEventAck(host->GetRoutingID())); 96 host->Send(new ViewMsg_ImeEventAck(host->GetRoutingID()));
101 } 97 }
102 98
103 class GLHelperHolder 99 class GLHelperHolder
104 : public blink::WebGraphicsContext3D::WebGraphicsContextLostCallback { 100 : public blink::WebGraphicsContext3D::WebGraphicsContextLostCallback {
105 public: 101 public:
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 282
287 ui::GestureProvider::Config CreateGestureProviderConfig() { 283 ui::GestureProvider::Config CreateGestureProviderConfig() {
288 ui::GestureProvider::Config config = ui::GetGestureProviderConfig( 284 ui::GestureProvider::Config config = ui::GetGestureProviderConfig(
289 ui::GestureProviderConfigType::CURRENT_PLATFORM); 285 ui::GestureProviderConfigType::CURRENT_PLATFORM);
290 config.disable_click_delay = 286 config.disable_click_delay =
291 base::CommandLine::ForCurrentProcess()->HasSwitch( 287 base::CommandLine::ForCurrentProcess()->HasSwitch(
292 switches::kDisableClickDelay); 288 switches::kDisableClickDelay);
293 return config; 289 return config;
294 } 290 }
295 291
296 bool HasFixedPageScale(const cc::CompositorFrameMetadata& frame_metadata) {
297 return frame_metadata.min_page_scale_factor ==
298 frame_metadata.max_page_scale_factor;
299 }
300
301 bool HasMobileViewport(const cc::CompositorFrameMetadata& frame_metadata) {
302 float window_width_dip =
303 frame_metadata.page_scale_factor *
304 frame_metadata.scrollable_viewport_size.width();
305 float content_width_css = frame_metadata.root_layer_size.width();
306 return content_width_css <= window_width_dip + kMobileViewportWidthEpsilon;
307 }
308
309 } // anonymous namespace 292 } // anonymous namespace
310 293
311 ReadbackRequest::ReadbackRequest(float scale, 294 ReadbackRequest::ReadbackRequest(float scale,
312 SkColorType color_type, 295 SkColorType color_type,
313 gfx::Rect src_subrect, 296 gfx::Rect src_subrect,
314 ReadbackRequestCallback& result_callback) 297 ReadbackRequestCallback& result_callback)
315 : scale_(scale), 298 : scale_(scale),
316 color_type_(color_type), 299 color_type_(color_type),
317 src_subrect_(src_subrect), 300 src_subrect_(src_subrect),
318 result_callback_(result_callback) { 301 result_callback_(result_callback) {
(...skipping 1001 matching lines...) Expand 10 before | Expand all | Expand 10 after
1320 SkCanvas canvas(bitmap); 1303 SkCanvas canvas(bitmap);
1321 canvas.scale( 1304 canvas.scale(
1322 (float)output_width / (float)input_size_in_pixel.width(), 1305 (float)output_width / (float)input_size_in_pixel.width(),
1323 (float)output_height / (float)input_size_in_pixel.height()); 1306 (float)output_height / (float)input_size_in_pixel.height());
1324 compositor->DemandDrawSw(&canvas); 1307 compositor->DemandDrawSw(&canvas);
1325 callback.Run(bitmap, READBACK_SUCCESS); 1308 callback.Run(bitmap, READBACK_SUCCESS);
1326 } 1309 }
1327 1310
1328 void RenderWidgetHostViewAndroid::OnFrameMetadataUpdated( 1311 void RenderWidgetHostViewAndroid::OnFrameMetadataUpdated(
1329 const cc::CompositorFrameMetadata& frame_metadata) { 1312 const cc::CompositorFrameMetadata& frame_metadata) {
1330
1331 // Disable double tap zoom for pages that have a width=device-width or
1332 // narrower viewport (indicating that this is a mobile-optimized or responsive
1333 // web design, so text will be legible without zooming). Also disable
1334 // double tap and pinch for pages that prevent zooming in or out.
1335 bool has_mobile_viewport = HasMobileViewport(frame_metadata);
1336 bool has_fixed_page_scale = HasFixedPageScale(frame_metadata);
1337 gesture_provider_.SetDoubleTapSupportForPageEnabled( 1313 gesture_provider_.SetDoubleTapSupportForPageEnabled(
1338 !has_fixed_page_scale && !has_mobile_viewport); 1314 !IsMobileOptimizedFrame(frame_metadata));
1339 1315
1340 if (!content_view_core_) 1316 if (!content_view_core_)
1341 return; 1317 return;
1342 1318
1343 if (overscroll_controller_) 1319 if (overscroll_controller_)
1344 overscroll_controller_->OnFrameMetadataUpdated(frame_metadata); 1320 overscroll_controller_->OnFrameMetadataUpdated(frame_metadata);
1345 1321
1346 if (selection_controller_) { 1322 if (selection_controller_) {
1347 selection_controller_->OnSelectionBoundsChanged( 1323 selection_controller_->OnSelectionBoundsChanged(
1348 ui::SelectionBound(frame_metadata.selection_start), 1324 ui::SelectionBound(frame_metadata.selection_start),
(...skipping 586 matching lines...) Expand 10 before | Expand all | Expand 10 after
1935 results->orientationAngle = display.RotationAsDegree(); 1911 results->orientationAngle = display.RotationAsDegree();
1936 results->orientationType = 1912 results->orientationType =
1937 RenderWidgetHostViewBase::GetOrientationTypeForMobile(display); 1913 RenderWidgetHostViewBase::GetOrientationTypeForMobile(display);
1938 gfx::DeviceDisplayInfo info; 1914 gfx::DeviceDisplayInfo info;
1939 results->depth = info.GetBitsPerPixel(); 1915 results->depth = info.GetBitsPerPixel();
1940 results->depthPerComponent = info.GetBitsPerComponent(); 1916 results->depthPerComponent = info.GetBitsPerComponent();
1941 results->isMonochrome = (results->depthPerComponent == 0); 1917 results->isMonochrome = (results->depthPerComponent == 0);
1942 } 1918 }
1943 1919
1944 } // namespace content 1920 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/render_widget_host_impl.cc ('k') | content/content_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698