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 538 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
549 if (!host_ || host_->is_hidden() || !IsSurfaceAvailableForCopy()) { | 549 if (!host_ || host_->is_hidden() || !IsSurfaceAvailableForCopy()) { |
550 result_callback.Run(SkBitmap(), READBACK_SURFACE_UNAVAILABLE); | 550 result_callback.Run(SkBitmap(), READBACK_SURFACE_UNAVAILABLE); |
551 return; | 551 return; |
552 } | 552 } |
553 gfx::Size bounds = current_surface_size_; | 553 gfx::Size bounds = current_surface_size_; |
554 if (src_subrect.IsEmpty()) | 554 if (src_subrect.IsEmpty()) |
555 src_subrect = gfx::Rect(bounds); | 555 src_subrect = gfx::Rect(bounds); |
556 DCHECK_LE(src_subrect.width() + src_subrect.x(), bounds.width()); | 556 DCHECK_LE(src_subrect.width() + src_subrect.x(), bounds.width()); |
557 DCHECK_LE(src_subrect.height() + src_subrect.y(), bounds.height()); | 557 DCHECK_LE(src_subrect.height() + src_subrect.y(), bounds.height()); |
558 const display::Display& display = | 558 const display::Display& display = |
559 display::Screen::GetScreen()->GetPrimaryDisplay(); | 559 display::Screen::GetScreen()->GetDisplayNearestWindow(GetNativeView()); |
560 float device_scale_factor = display.device_scale_factor(); | 560 float device_scale_factor = display.device_scale_factor(); |
561 DCHECK_GT(device_scale_factor, 0); | 561 DCHECK_GT(device_scale_factor, 0); |
562 gfx::Size dst_size( | 562 gfx::Size dst_size( |
563 gfx::ScaleToCeiledSize(src_subrect.size(), scale / device_scale_factor)); | 563 gfx::ScaleToCeiledSize(src_subrect.size(), scale / device_scale_factor)); |
564 src_subrect = gfx::ConvertRectToDIP(device_scale_factor, src_subrect); | 564 src_subrect = gfx::ConvertRectToDIP(device_scale_factor, src_subrect); |
565 | 565 |
566 CopyFromCompositingSurface(src_subrect, dst_size, result_callback, | 566 CopyFromCompositingSurface(src_subrect, dst_size, result_callback, |
567 preferred_color_type); | 567 preferred_color_type); |
568 } | 568 } |
569 | 569 |
(...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
982 callback.Run(SkBitmap(), READBACK_SURFACE_UNAVAILABLE); | 982 callback.Run(SkBitmap(), READBACK_SURFACE_UNAVAILABLE); |
983 return; | 983 return; |
984 } | 984 } |
985 if (!content_view_core_ || !(content_view_core_->GetWindowAndroid())) { | 985 if (!content_view_core_ || !(content_view_core_->GetWindowAndroid())) { |
986 callback.Run(SkBitmap(), READBACK_FAILED); | 986 callback.Run(SkBitmap(), READBACK_FAILED); |
987 return; | 987 return; |
988 } | 988 } |
989 | 989 |
990 base::TimeTicks start_time = base::TimeTicks::Now(); | 990 base::TimeTicks start_time = base::TimeTicks::Now(); |
991 const display::Display& display = | 991 const display::Display& display = |
992 display::Screen::GetScreen()->GetPrimaryDisplay(); | 992 display::Screen::GetScreen()->GetDisplayNearestWindow(GetNativeView()); |
993 float device_scale_factor = display.device_scale_factor(); | 993 float device_scale_factor = display.device_scale_factor(); |
994 gfx::Size dst_size_in_pixel = | 994 gfx::Size dst_size_in_pixel = |
995 gfx::ConvertRectToPixel(device_scale_factor, gfx::Rect(dst_size)).size(); | 995 gfx::ConvertRectToPixel(device_scale_factor, gfx::Rect(dst_size)).size(); |
996 gfx::Rect src_subrect_in_pixel = | 996 gfx::Rect src_subrect_in_pixel = |
997 gfx::ConvertRectToPixel(device_scale_factor, src_subrect); | 997 gfx::ConvertRectToPixel(device_scale_factor, src_subrect); |
998 | 998 |
999 if (!using_browser_compositor_) { | 999 if (!using_browser_compositor_) { |
1000 SynchronousCopyContents(src_subrect_in_pixel, dst_size_in_pixel, callback, | 1000 SynchronousCopyContents(src_subrect_in_pixel, dst_size_in_pixel, callback, |
1001 preferred_color_type); | 1001 preferred_color_type); |
1002 UMA_HISTOGRAM_TIMES("Compositing.CopyFromSurfaceTimeSynchronous", | 1002 UMA_HISTOGRAM_TIMES("Compositing.CopyFromSurfaceTimeSynchronous", |
(...skipping 987 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1990 case ui::MotionEvent::ACTION_UP: | 1990 case ui::MotionEvent::ACTION_UP: |
1991 case ui::MotionEvent::ACTION_POINTER_UP: | 1991 case ui::MotionEvent::ACTION_POINTER_UP: |
1992 UMA_HISTOGRAM_CUSTOM_COUNTS("Event.Latency.OS.TOUCH_RELEASED", | 1992 UMA_HISTOGRAM_CUSTOM_COUNTS("Event.Latency.OS.TOUCH_RELEASED", |
1993 delta.InMicroseconds(), 1, 1000000, 50); | 1993 delta.InMicroseconds(), 1, 1000000, 50); |
1994 default: | 1994 default: |
1995 return; | 1995 return; |
1996 } | 1996 } |
1997 } | 1997 } |
1998 | 1998 |
1999 } // namespace content | 1999 } // namespace content |
OLD | NEW |