OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "android_webview/browser/browser_view_renderer.h" | 5 #include "android_webview/browser/browser_view_renderer.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "android_webview/browser/browser_view_renderer_client.h" | 9 #include "android_webview/browser/browser_view_renderer_client.h" |
10 #include "android_webview/browser/child_frame.h" | 10 #include "android_webview/browser/child_frame.h" |
11 #include "base/auto_reset.h" | 11 #include "base/auto_reset.h" |
12 #include "base/command_line.h" | 12 #include "base/command_line.h" |
13 #include "base/logging.h" | 13 #include "base/logging.h" |
| 14 #include "base/memory/ptr_util.h" |
14 #include "base/strings/string_number_conversions.h" | 15 #include "base/strings/string_number_conversions.h" |
15 #include "base/strings/stringprintf.h" | 16 #include "base/strings/stringprintf.h" |
16 #include "base/supports_user_data.h" | 17 #include "base/supports_user_data.h" |
17 #include "base/trace_event/trace_event_argument.h" | 18 #include "base/trace_event/trace_event_argument.h" |
18 #include "cc/output/compositor_frame.h" | 19 #include "cc/output/compositor_frame.h" |
19 #include "cc/output/compositor_frame_ack.h" | 20 #include "cc/output/compositor_frame_ack.h" |
20 #include "content/public/browser/web_contents.h" | 21 #include "content/public/browser/web_contents.h" |
21 #include "content/public/common/content_switches.h" | 22 #include "content/public/common/content_switches.h" |
22 #include "gpu/command_buffer/service/gpu_switches.h" | 23 #include "gpu/command_buffer/service/gpu_switches.h" |
23 #include "third_party/skia/include/core/SkBitmap.h" | 24 #include "third_party/skia/include/core/SkBitmap.h" |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
233 transform_for_tile_priority); | 234 transform_for_tile_priority); |
234 if (!frame.frame.get()) { | 235 if (!frame.frame.get()) { |
235 TRACE_EVENT_INSTANT0("android_webview", "NoNewFrame", | 236 TRACE_EVENT_INSTANT0("android_webview", "NoNewFrame", |
236 TRACE_EVENT_SCOPE_THREAD); | 237 TRACE_EVENT_SCOPE_THREAD); |
237 hardware_enabled_ = shared_renderer_state_->HasFrameOnUI(); | 238 hardware_enabled_ = shared_renderer_state_->HasFrameOnUI(); |
238 if (!hardware_enabled_) | 239 if (!hardware_enabled_) |
239 UpdateMemoryPolicy(); | 240 UpdateMemoryPolicy(); |
240 return hardware_enabled_; | 241 return hardware_enabled_; |
241 } | 242 } |
242 | 243 |
243 scoped_ptr<ChildFrame> child_frame = make_scoped_ptr(new ChildFrame( | 244 std::unique_ptr<ChildFrame> child_frame = base::WrapUnique(new ChildFrame( |
244 frame.output_surface_id, std::move(frame.frame), | 245 frame.output_surface_id, std::move(frame.frame), |
245 GetCompositorID(compositor_), viewport_rect_for_tile_priority.IsEmpty(), | 246 GetCompositorID(compositor_), viewport_rect_for_tile_priority.IsEmpty(), |
246 transform_for_tile_priority, offscreen_pre_raster_, | 247 transform_for_tile_priority, offscreen_pre_raster_, |
247 external_draw_constraints_.is_layer)); | 248 external_draw_constraints_.is_layer)); |
248 | 249 |
249 ReturnUnusedResource(shared_renderer_state_->PassUncommittedFrameOnUI()); | 250 ReturnUnusedResource(shared_renderer_state_->PassUncommittedFrameOnUI()); |
250 shared_renderer_state_->SetFrameOnUI(std::move(child_frame)); | 251 shared_renderer_state_->SetFrameOnUI(std::move(child_frame)); |
251 return true; | 252 return true; |
252 } | 253 } |
253 | 254 |
254 void BrowserViewRenderer::OnParentDrawConstraintsUpdated() { | 255 void BrowserViewRenderer::OnParentDrawConstraintsUpdated() { |
255 DCHECK(shared_renderer_state_); | 256 DCHECK(shared_renderer_state_); |
256 PostInvalidate(); | 257 PostInvalidate(); |
257 external_draw_constraints_ = | 258 external_draw_constraints_ = |
258 shared_renderer_state_->GetParentDrawConstraintsOnUI(); | 259 shared_renderer_state_->GetParentDrawConstraintsOnUI(); |
259 UpdateMemoryPolicy(); | 260 UpdateMemoryPolicy(); |
260 } | 261 } |
261 | 262 |
262 void BrowserViewRenderer::ReturnUnusedResource( | 263 void BrowserViewRenderer::ReturnUnusedResource( |
263 scoped_ptr<ChildFrame> child_frame) { | 264 std::unique_ptr<ChildFrame> child_frame) { |
264 if (!child_frame.get() || !child_frame->frame.get()) | 265 if (!child_frame.get() || !child_frame->frame.get()) |
265 return; | 266 return; |
266 | 267 |
267 cc::CompositorFrameAck frame_ack; | 268 cc::CompositorFrameAck frame_ack; |
268 cc::TransferableResource::ReturnResources( | 269 cc::TransferableResource::ReturnResources( |
269 child_frame->frame->delegated_frame_data->resource_list, | 270 child_frame->frame->delegated_frame_data->resource_list, |
270 &frame_ack.resources); | 271 &frame_ack.resources); |
271 content::SynchronousCompositor* compositor = | 272 content::SynchronousCompositor* compositor = |
272 compositor_map_[child_frame->compositor_id]; | 273 compositor_map_[child_frame->compositor_id]; |
273 if (compositor && !frame_ack.resources.empty()) | 274 if (compositor && !frame_ack.resources.empty()) |
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
612 min_page_scale_factor_ = min_page_scale_factor; | 613 min_page_scale_factor_ = min_page_scale_factor; |
613 max_page_scale_factor_ = max_page_scale_factor; | 614 max_page_scale_factor_ = max_page_scale_factor; |
614 | 615 |
615 client_->UpdateScrollState(max_scroll_offset(), scrollable_size_dip, | 616 client_->UpdateScrollState(max_scroll_offset(), scrollable_size_dip, |
616 page_scale_factor, min_page_scale_factor, | 617 page_scale_factor, min_page_scale_factor, |
617 max_page_scale_factor); | 618 max_page_scale_factor); |
618 } | 619 } |
619 SetTotalRootLayerScrollOffset(total_scroll_offset_dip); | 620 SetTotalRootLayerScrollOffset(total_scroll_offset_dip); |
620 } | 621 } |
621 | 622 |
622 scoped_ptr<base::trace_event::ConvertableToTraceFormat> | 623 std::unique_ptr<base::trace_event::ConvertableToTraceFormat> |
623 BrowserViewRenderer::RootLayerStateAsValue( | 624 BrowserViewRenderer::RootLayerStateAsValue( |
624 const gfx::Vector2dF& total_scroll_offset_dip, | 625 const gfx::Vector2dF& total_scroll_offset_dip, |
625 const gfx::SizeF& scrollable_size_dip) { | 626 const gfx::SizeF& scrollable_size_dip) { |
626 scoped_ptr<base::trace_event::TracedValue> state( | 627 std::unique_ptr<base::trace_event::TracedValue> state( |
627 new base::trace_event::TracedValue()); | 628 new base::trace_event::TracedValue()); |
628 | 629 |
629 state->SetDouble("total_scroll_offset_dip.x", total_scroll_offset_dip.x()); | 630 state->SetDouble("total_scroll_offset_dip.x", total_scroll_offset_dip.x()); |
630 state->SetDouble("total_scroll_offset_dip.y", total_scroll_offset_dip.y()); | 631 state->SetDouble("total_scroll_offset_dip.y", total_scroll_offset_dip.y()); |
631 | 632 |
632 state->SetDouble("max_scroll_offset_dip.x", max_scroll_offset_dip_.x()); | 633 state->SetDouble("max_scroll_offset_dip.x", max_scroll_offset_dip_.x()); |
633 state->SetDouble("max_scroll_offset_dip.y", max_scroll_offset_dip_.y()); | 634 state->SetDouble("max_scroll_offset_dip.y", max_scroll_offset_dip_.y()); |
634 | 635 |
635 state->SetDouble("scrollable_size_dip.width", scrollable_size_dip.width()); | 636 state->SetDouble("scrollable_size_dip.width", scrollable_size_dip.width()); |
636 state->SetDouble("scrollable_size_dip.height", scrollable_size_dip.height()); | 637 state->SetDouble("scrollable_size_dip.height", scrollable_size_dip.height()); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
693 base::StringAppendF(&str, | 694 base::StringAppendF(&str, |
694 "overscroll_rounding_error_: %s ", | 695 "overscroll_rounding_error_: %s ", |
695 overscroll_rounding_error_.ToString().c_str()); | 696 overscroll_rounding_error_.ToString().c_str()); |
696 base::StringAppendF( | 697 base::StringAppendF( |
697 &str, "on_new_picture_enable: %d ", on_new_picture_enable_); | 698 &str, "on_new_picture_enable: %d ", on_new_picture_enable_); |
698 base::StringAppendF(&str, "clear_view: %d ", clear_view_); | 699 base::StringAppendF(&str, "clear_view: %d ", clear_view_); |
699 return str; | 700 return str; |
700 } | 701 } |
701 | 702 |
702 } // namespace android_webview | 703 } // namespace android_webview |
OLD | NEW |