| 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_impl.h" | 5 #include "content/browser/renderer_host/render_widget_host_impl.h" |
| 6 | 6 |
| 7 #include <math.h> | 7 #include <math.h> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 111 | 111 |
| 112 const float window_width_dip = | 112 const float window_width_dip = |
| 113 std::ceil(metadata.page_scale_factor * metadata.viewport_size.width()); | 113 std::ceil(metadata.page_scale_factor * metadata.viewport_size.width()); |
| 114 const float content_width_css = metadata.root_layer_size.width(); | 114 const float content_width_css = metadata.root_layer_size.width(); |
| 115 if (content_width_css <= window_width_dip) | 115 if (content_width_css <= window_width_dip) |
| 116 view_flags |= InputRouter::MOBILE_VIEWPORT; | 116 view_flags |= InputRouter::MOBILE_VIEWPORT; |
| 117 | 117 |
| 118 return view_flags; | 118 return view_flags; |
| 119 } | 119 } |
| 120 | 120 |
| 121 // TODO(jdduke): Remove when all platforms use CompositorFrameMetadata directly |
| 122 // and ViewHostMsg_SelectionBounds_Params is no long necessary. |
| 123 bool GetSelectionBounds(const cc::CompositorFrameMetadata& metadata, |
| 124 ViewHostMsg_SelectionBounds_Params* bounds) { |
| 125 if (metadata.start_selection_handle.type == cc::SelectionHandle::IGNORED) |
| 126 return false; |
| 127 ViewHostMsg_SelectionBounds_Params params; |
| 128 bounds->anchor_rect = metadata.start_selection_handle.bounds; |
| 129 bounds->focus_rect = metadata.end_selection_handle.bounds; |
| 130 if (metadata.start_selection_handle.type == cc::SelectionHandle::CENTER) |
| 131 bounds->focus_rect = bounds->anchor_rect; |
| 132 // TODO(jdduke): Determine from data. |
| 133 bounds->anchor_dir = blink::WebTextDirectionDefault; |
| 134 bounds->focus_dir = blink::WebTextDirectionDefault; |
| 135 bounds->is_anchor_first = |
| 136 metadata.start_selection_handle.type == cc::SelectionHandle::LEFT; |
| 137 bounds->is_anchor_visible = metadata.start_selection_handle.visible; |
| 138 bounds->is_focus_visible = metadata.end_selection_handle.visible; |
| 139 return true; |
| 140 } |
| 141 |
| 121 // Implements the RenderWidgetHostIterator interface. It keeps a list of | 142 // Implements the RenderWidgetHostIterator interface. It keeps a list of |
| 122 // RenderWidgetHosts, and makes sure it returns a live RenderWidgetHost at each | 143 // RenderWidgetHosts, and makes sure it returns a live RenderWidgetHost at each |
| 123 // iteration (or NULL if there isn't any left). | 144 // iteration (or NULL if there isn't any left). |
| 124 class RenderWidgetHostIteratorImpl : public RenderWidgetHostIterator { | 145 class RenderWidgetHostIteratorImpl : public RenderWidgetHostIterator { |
| 125 public: | 146 public: |
| 126 RenderWidgetHostIteratorImpl() | 147 RenderWidgetHostIteratorImpl() |
| 127 : current_index_(0) { | 148 : current_index_(0) { |
| 128 } | 149 } |
| 129 | 150 |
| 130 virtual ~RenderWidgetHostIteratorImpl() { | 151 virtual ~RenderWidgetHostIteratorImpl() { |
| (...skipping 1345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1476 uint32 output_surface_id = param.a; | 1497 uint32 output_surface_id = param.a; |
| 1477 param.b.AssignTo(frame.get()); | 1498 param.b.AssignTo(frame.get()); |
| 1478 | 1499 |
| 1479 for (size_t i = 0; i < frame->metadata.latency_info.size(); i++) | 1500 for (size_t i = 0; i < frame->metadata.latency_info.size(); i++) |
| 1480 AddLatencyInfoComponentIds(&frame->metadata.latency_info[i]); | 1501 AddLatencyInfoComponentIds(&frame->metadata.latency_info[i]); |
| 1481 | 1502 |
| 1482 input_router_->OnViewUpdated( | 1503 input_router_->OnViewUpdated( |
| 1483 GetInputRouterViewFlagsFromCompositorFrameMetadata(frame->metadata)); | 1504 GetInputRouterViewFlagsFromCompositorFrameMetadata(frame->metadata)); |
| 1484 | 1505 |
| 1485 if (view_) { | 1506 if (view_) { |
| 1507 ViewHostMsg_SelectionBounds_Params bounds; |
| 1508 if (GetSelectionBounds(frame->metadata, &bounds)) |
| 1509 OnSelectionBoundsChanged(bounds); |
| 1510 |
| 1486 view_->OnSwapCompositorFrame(output_surface_id, frame.Pass()); | 1511 view_->OnSwapCompositorFrame(output_surface_id, frame.Pass()); |
| 1487 view_->DidReceiveRendererFrame(); | 1512 view_->DidReceiveRendererFrame(); |
| 1488 } else { | 1513 } else { |
| 1489 cc::CompositorFrameAck ack; | 1514 cc::CompositorFrameAck ack; |
| 1490 if (frame->gl_frame_data) { | 1515 if (frame->gl_frame_data) { |
| 1491 ack.gl_frame_data = frame->gl_frame_data.Pass(); | 1516 ack.gl_frame_data = frame->gl_frame_data.Pass(); |
| 1492 ack.gl_frame_data->sync_point = 0; | 1517 ack.gl_frame_data->sync_point = 0; |
| 1493 } else if (frame->delegated_frame_data) { | 1518 } else if (frame->delegated_frame_data) { |
| 1494 cc::TransferableResource::ReturnResources( | 1519 cc::TransferableResource::ReturnResources( |
| 1495 frame->delegated_frame_data->resource_list, | 1520 frame->delegated_frame_data->resource_list, |
| (...skipping 831 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2327 } | 2352 } |
| 2328 } | 2353 } |
| 2329 | 2354 |
| 2330 SkBitmap::Config RenderWidgetHostImpl::PreferredReadbackFormat() { | 2355 SkBitmap::Config RenderWidgetHostImpl::PreferredReadbackFormat() { |
| 2331 if (view_) | 2356 if (view_) |
| 2332 return view_->PreferredReadbackFormat(); | 2357 return view_->PreferredReadbackFormat(); |
| 2333 return SkBitmap::kARGB_8888_Config; | 2358 return SkBitmap::kARGB_8888_Config; |
| 2334 } | 2359 } |
| 2335 | 2360 |
| 2336 } // namespace content | 2361 } // namespace content |
| OLD | NEW |