Chromium Code Reviews| 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 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 94 // returning a null or incorrectly sized backing-store from GetBackingStore. | 94 // returning a null or incorrectly sized backing-store from GetBackingStore. |
| 95 // This timeout impacts the "choppiness" of our window resize perf. | 95 // This timeout impacts the "choppiness" of our window resize perf. |
| 96 const int kPaintMsgTimeoutMS = 50; | 96 const int kPaintMsgTimeoutMS = 50; |
| 97 | 97 |
| 98 typedef std::pair<int32, int32> RenderWidgetHostID; | 98 typedef std::pair<int32, int32> RenderWidgetHostID; |
| 99 typedef base::hash_map<RenderWidgetHostID, RenderWidgetHostImpl*> | 99 typedef base::hash_map<RenderWidgetHostID, RenderWidgetHostImpl*> |
| 100 RoutingIDWidgetMap; | 100 RoutingIDWidgetMap; |
| 101 base::LazyInstance<RoutingIDWidgetMap> g_routing_id_widget_map = | 101 base::LazyInstance<RoutingIDWidgetMap> g_routing_id_widget_map = |
| 102 LAZY_INSTANCE_INITIALIZER; | 102 LAZY_INSTANCE_INITIALIZER; |
| 103 | 103 |
| 104 int GetInputRouterViewFlagsFromCompositorFrameMetadata( | |
| 105 const cc::CompositorFrameMetadata metadata) { | |
| 106 int view_flags = InputRouter::VIEW_FLAGS_NONE; | |
| 107 | |
| 108 if (metadata.min_page_scale_factor == metadata.max_page_scale_factor) | |
| 109 view_flags |= InputRouter::FIXED_PAGE_SCALE; | |
| 110 | |
| 111 const float window_width_dip = | |
| 112 std::ceil(metadata.page_scale_factor * metadata.viewport_size.width()); | |
|
johnme
2014/01/15 02:15:09
Can you confirm that metadata.viewport_size.width
jdduke (slow)
2014/01/15 03:06:49
I'll double check (under basic testing the |window
jdduke (slow)
2014/01/15 21:28:50
Confirmed.
| |
| 113 const float content_width_css = metadata.root_layer_size.width(); | |
|
johnme
2014/01/15 02:15:09
Can you confirm that metadata.root_layer_size.widt
jdduke (slow)
2014/01/15 03:06:49
Again, I'll double check. The only difference betw
jdduke (slow)
2014/01/15 21:28:50
Confirmed.
| |
| 114 if (content_width_css <= window_width_dip) | |
| 115 view_flags |= InputRouter::MOBILE_VIEWPORT; | |
| 116 | |
| 117 return view_flags; | |
| 118 } | |
| 119 | |
| 104 // Implements the RenderWidgetHostIterator interface. It keeps a list of | 120 // Implements the RenderWidgetHostIterator interface. It keeps a list of |
| 105 // RenderWidgetHosts, and makes sure it returns a live RenderWidgetHost at each | 121 // RenderWidgetHosts, and makes sure it returns a live RenderWidgetHost at each |
| 106 // iteration (or NULL if there isn't any left). | 122 // iteration (or NULL if there isn't any left). |
| 107 class RenderWidgetHostIteratorImpl : public RenderWidgetHostIterator { | 123 class RenderWidgetHostIteratorImpl : public RenderWidgetHostIterator { |
| 108 public: | 124 public: |
| 109 RenderWidgetHostIteratorImpl() | 125 RenderWidgetHostIteratorImpl() |
| 110 : current_index_(0) { | 126 : current_index_(0) { |
| 111 } | 127 } |
| 112 | 128 |
| 113 virtual ~RenderWidgetHostIteratorImpl() { | 129 virtual ~RenderWidgetHostIteratorImpl() { |
| (...skipping 1378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1492 | 1508 |
| 1493 bool RenderWidgetHostImpl::OnSwapCompositorFrame( | 1509 bool RenderWidgetHostImpl::OnSwapCompositorFrame( |
| 1494 const IPC::Message& message) { | 1510 const IPC::Message& message) { |
| 1495 ViewHostMsg_SwapCompositorFrame::Param param; | 1511 ViewHostMsg_SwapCompositorFrame::Param param; |
| 1496 if (!ViewHostMsg_SwapCompositorFrame::Read(&message, ¶m)) | 1512 if (!ViewHostMsg_SwapCompositorFrame::Read(&message, ¶m)) |
| 1497 return false; | 1513 return false; |
| 1498 scoped_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame); | 1514 scoped_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame); |
| 1499 uint32 output_surface_id = param.a; | 1515 uint32 output_surface_id = param.a; |
| 1500 param.b.AssignTo(frame.get()); | 1516 param.b.AssignTo(frame.get()); |
| 1501 | 1517 |
| 1502 bool fixed_page_scale = | 1518 input_router_->OnViewUpdated( |
| 1503 frame->metadata.min_page_scale_factor == | 1519 GetInputRouterViewFlagsFromCompositorFrameMetadata(frame->metadata)); |
| 1504 frame->metadata.max_page_scale_factor; | |
| 1505 int updated_view_flags = fixed_page_scale ? InputRouter::FIXED_PAGE_SCALE | |
| 1506 : InputRouter::VIEW_FLAGS_NONE; | |
| 1507 input_router_->OnViewUpdated(updated_view_flags); | |
| 1508 | 1520 |
| 1509 if (view_) { | 1521 if (view_) { |
| 1510 view_->OnSwapCompositorFrame(output_surface_id, frame.Pass()); | 1522 view_->OnSwapCompositorFrame(output_surface_id, frame.Pass()); |
| 1511 view_->DidReceiveRendererFrame(); | 1523 view_->DidReceiveRendererFrame(); |
| 1512 } else { | 1524 } else { |
| 1513 cc::CompositorFrameAck ack; | 1525 cc::CompositorFrameAck ack; |
| 1514 if (frame->gl_frame_data) { | 1526 if (frame->gl_frame_data) { |
| 1515 ack.gl_frame_data = frame->gl_frame_data.Pass(); | 1527 ack.gl_frame_data = frame->gl_frame_data.Pass(); |
| 1516 ack.gl_frame_data->sync_point = 0; | 1528 ack.gl_frame_data->sync_point = 0; |
| 1517 } else if (frame->delegated_frame_data) { | 1529 } else if (frame->delegated_frame_data) { |
| (...skipping 950 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2468 continue; | 2480 continue; |
| 2469 } | 2481 } |
| 2470 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(rwh); | 2482 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(rwh); |
| 2471 if (rwhi_set.insert(rwhi).second) | 2483 if (rwhi_set.insert(rwhi).second) |
| 2472 rwhi->FrameSwapped(latency_info); | 2484 rwhi->FrameSwapped(latency_info); |
| 2473 } | 2485 } |
| 2474 } | 2486 } |
| 2475 } | 2487 } |
| 2476 | 2488 |
| 2477 } // namespace content | 2489 } // namespace content |
| OLD | NEW |