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/renderer/render_widget.h" | 5 #include "content/renderer/render_widget.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/debug/trace_event.h" | 9 #include "base/debug/trace_event.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
69 using WebKit::WebTextDirection; | 69 using WebKit::WebTextDirection; |
70 using WebKit::WebTouchEvent; | 70 using WebKit::WebTouchEvent; |
71 using WebKit::WebVector; | 71 using WebKit::WebVector; |
72 using WebKit::WebWidget; | 72 using WebKit::WebWidget; |
73 using content::RenderThread; | 73 using content::RenderThread; |
74 | 74 |
75 static const float kStandardDPI = 160; | 75 static const float kStandardDPI = 160; |
76 | 76 |
77 RenderWidget::RenderWidget(WebKit::WebPopupType popup_type, | 77 RenderWidget::RenderWidget(WebKit::WebPopupType popup_type, |
78 const WebKit::WebScreenInfo& screen_info, | 78 const WebKit::WebScreenInfo& screen_info, |
79 bool swapped_out) | 79 bool swapped_out, |
80 bool disable_input_throttle) | |
80 : routing_id_(MSG_ROUTING_NONE), | 81 : routing_id_(MSG_ROUTING_NONE), |
81 surface_id_(0), | 82 surface_id_(0), |
82 webwidget_(NULL), | 83 webwidget_(NULL), |
83 opener_id_(MSG_ROUTING_NONE), | 84 opener_id_(MSG_ROUTING_NONE), |
84 host_window_(0), | 85 host_window_(0), |
85 host_window_set_(false), | 86 host_window_set_(false), |
86 current_paint_buf_(NULL), | 87 current_paint_buf_(NULL), |
87 next_paint_flags_(0), | 88 next_paint_flags_(0), |
88 filtered_time_per_frame_(0.0f), | 89 filtered_time_per_frame_(0.0f), |
89 update_reply_pending_(false), | 90 update_reply_pending_(false), |
(...skipping 11 matching lines...) Expand all Loading... | |
101 input_method_is_active_(false), | 102 input_method_is_active_(false), |
102 text_input_type_(ui::TEXT_INPUT_TYPE_NONE), | 103 text_input_type_(ui::TEXT_INPUT_TYPE_NONE), |
103 can_compose_inline_(true), | 104 can_compose_inline_(true), |
104 popup_type_(popup_type), | 105 popup_type_(popup_type), |
105 pending_window_rect_count_(0), | 106 pending_window_rect_count_(0), |
106 suppress_next_char_events_(false), | 107 suppress_next_char_events_(false), |
107 is_accelerated_compositing_active_(false), | 108 is_accelerated_compositing_active_(false), |
108 animation_update_pending_(false), | 109 animation_update_pending_(false), |
109 invalidation_task_posted_(false), | 110 invalidation_task_posted_(false), |
110 screen_info_(screen_info), | 111 screen_info_(screen_info), |
111 device_scale_factor_(1) { | 112 device_scale_factor_(1), |
113 disable_input_throttle_(disable_input_throttle) { | |
112 if (!swapped_out) | 114 if (!swapped_out) |
113 RenderProcess::current()->AddRefProcess(); | 115 RenderProcess::current()->AddRefProcess(); |
114 DCHECK(RenderThread::Get()); | 116 DCHECK(RenderThread::Get()); |
115 has_disable_gpu_vsync_switch_ = CommandLine::ForCurrentProcess()->HasSwitch( | 117 has_disable_gpu_vsync_switch_ = CommandLine::ForCurrentProcess()->HasSwitch( |
116 switches::kDisableGpuVsync); | 118 switches::kDisableGpuVsync); |
117 #if defined(OS_CHROMEOS) || defined(OS_MACOSX) | 119 #if defined(OS_CHROMEOS) || defined(OS_MACOSX) |
118 device_scale_factor_ = screen_info.verticalDPI / kStandardDPI; | 120 device_scale_factor_ = screen_info.verticalDPI / kStandardDPI; |
119 // Unless an explicit scale factor was provided for testing, ensure the scale | 121 // Unless an explicit scale factor was provided for testing, ensure the scale |
120 // is integral. | 122 // is integral. |
121 if (!CommandLine::ForCurrentProcess()->HasSwitch( | 123 if (!CommandLine::ForCurrentProcess()->HasSwitch( |
(...skipping 14 matching lines...) Expand all Loading... | |
136 if (!is_swapped_out_) | 138 if (!is_swapped_out_) |
137 RenderProcess::current()->ReleaseProcess(); | 139 RenderProcess::current()->ReleaseProcess(); |
138 } | 140 } |
139 | 141 |
140 // static | 142 // static |
141 RenderWidget* RenderWidget::Create(int32 opener_id, | 143 RenderWidget* RenderWidget::Create(int32 opener_id, |
142 WebKit::WebPopupType popup_type, | 144 WebKit::WebPopupType popup_type, |
143 const WebKit::WebScreenInfo& screen_info) { | 145 const WebKit::WebScreenInfo& screen_info) { |
144 DCHECK(opener_id != MSG_ROUTING_NONE); | 146 DCHECK(opener_id != MSG_ROUTING_NONE); |
145 scoped_refptr<RenderWidget> widget( | 147 scoped_refptr<RenderWidget> widget( |
146 new RenderWidget(popup_type, screen_info, false)); | 148 new RenderWidget(popup_type, screen_info, false, false)); |
darin (slow to review)
2012/08/07 21:54:39
nit: it is unfortunate to have methods with lists
Fady Samuel
2012/08/07 22:17:22
Done.
| |
147 widget->Init(opener_id); // adds reference | 149 widget->Init(opener_id); // adds reference |
148 return widget; | 150 return widget; |
149 } | 151 } |
150 | 152 |
151 // static | 153 // static |
152 WebWidget* RenderWidget::CreateWebWidget(RenderWidget* render_widget) { | 154 WebWidget* RenderWidget::CreateWebWidget(RenderWidget* render_widget) { |
153 switch (render_widget->popup_type_) { | 155 switch (render_widget->popup_type_) { |
154 case WebKit::WebPopupTypeNone: // Nothing to create. | 156 case WebKit::WebPopupTypeNone: // Nothing to create. |
155 break; | 157 break; |
156 case WebKit::WebPopupTypeSelect: | 158 case WebKit::WebPopupTypeSelect: |
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
576 suppress_next_char_events_ = true; | 578 suppress_next_char_events_ = true; |
577 | 579 |
578 IPC::Message* response = | 580 IPC::Message* response = |
579 new ViewHostMsg_HandleInputEvent_ACK(routing_id_, input_event->type, | 581 new ViewHostMsg_HandleInputEvent_ACK(routing_id_, input_event->type, |
580 processed); | 582 processed); |
581 bool event_type_gets_rate_limited = | 583 bool event_type_gets_rate_limited = |
582 input_event->type == WebInputEvent::MouseMove || | 584 input_event->type == WebInputEvent::MouseMove || |
583 input_event->type == WebInputEvent::MouseWheel || | 585 input_event->type == WebInputEvent::MouseWheel || |
584 WebInputEvent::isTouchEventType(input_event->type); | 586 WebInputEvent::isTouchEventType(input_event->type); |
585 bool is_input_throttled = | 587 bool is_input_throttled = |
586 (webwidget_ ? webwidget_->isInputThrottled() : false) || | 588 !disable_input_throttle_ && |
587 paint_aggregator_.HasPendingUpdate(); | 589 ((webwidget_ ? webwidget_->isInputThrottled() : false) || |
590 paint_aggregator_.HasPendingUpdate()); | |
588 | 591 |
589 if (event_type_gets_rate_limited && is_input_throttled && !is_hidden_) { | 592 if (event_type_gets_rate_limited && is_input_throttled && !is_hidden_) { |
590 // We want to rate limit the input events in this case, so we'll wait for | 593 // We want to rate limit the input events in this case, so we'll wait for |
591 // painting to finish before ACKing this message. | 594 // painting to finish before ACKing this message. |
592 if (pending_input_event_ack_.get()) { | 595 if (pending_input_event_ack_.get()) { |
593 // As two different kinds of events could cause us to postpone an ack | 596 // As two different kinds of events could cause us to postpone an ack |
594 // we send it now, if we have one pending. The Browser should never | 597 // we send it now, if we have one pending. The Browser should never |
595 // send us the same kind of event we are delaying the ack for. | 598 // send us the same kind of event we are delaying the ack for. |
596 Send(pending_input_event_ack_.release()); | 599 Send(pending_input_event_ack_.release()); |
597 } | 600 } |
(...skipping 1195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1793 Send(new ViewHostMsg_BeginSmoothScroll(routing_id_, down, scroll_far)); | 1796 Send(new ViewHostMsg_BeginSmoothScroll(routing_id_, down, scroll_far)); |
1794 } | 1797 } |
1795 | 1798 |
1796 bool RenderWidget::WillHandleMouseEvent(const WebKit::WebMouseEvent& event) { | 1799 bool RenderWidget::WillHandleMouseEvent(const WebKit::WebMouseEvent& event) { |
1797 return false; | 1800 return false; |
1798 } | 1801 } |
1799 | 1802 |
1800 bool RenderWidget::WebWidgetHandlesCompositorScheduling() const { | 1803 bool RenderWidget::WebWidgetHandlesCompositorScheduling() const { |
1801 return false; | 1804 return false; |
1802 } | 1805 } |
OLD | NEW |