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/browser_plugin/test_browser_plugin_guest.h" | 5 #include "content/browser/browser_plugin/test_browser_plugin_guest.h" |
6 | 6 |
7 #include "base/test/test_timeouts.h" | 7 #include "base/test/test_timeouts.h" |
8 #include "content/browser/renderer_host/render_view_host_impl.h" | 8 #include "content/browser/renderer_host/render_view_host_impl.h" |
9 #include "content/browser/web_contents/web_contents_impl.h" | 9 #include "content/browser/web_contents/web_contents_impl.h" |
10 #include "content/common/browser_plugin/browser_plugin_messages.h" | 10 #include "content/common/browser_plugin/browser_plugin_messages.h" |
11 | 11 |
12 namespace content { | 12 namespace content { |
13 | 13 |
14 class BrowserPluginGuest; | 14 class BrowserPluginGuest; |
15 | 15 |
16 TestBrowserPluginGuest::TestBrowserPluginGuest( | 16 TestBrowserPluginGuest::TestBrowserPluginGuest( |
17 int instance_id, | 17 int instance_id, |
18 WebContentsImpl* web_contents) | 18 WebContentsImpl* web_contents) |
19 : BrowserPluginGuest(instance_id, false, web_contents, NULL), | 19 : BrowserPluginGuest(instance_id, false, web_contents, NULL), |
20 update_rect_count_(0), | 20 update_rect_count_(0), |
21 damage_buffer_call_count_(0), | |
22 exit_observed_(false), | 21 exit_observed_(false), |
23 focus_observed_(false), | 22 focus_observed_(false), |
24 blur_observed_(false), | 23 blur_observed_(false), |
25 advance_focus_observed_(false), | 24 advance_focus_observed_(false), |
26 was_hidden_observed_(false), | 25 was_hidden_observed_(false), |
27 set_damage_buffer_observed_(false), | |
28 input_observed_(false), | 26 input_observed_(false), |
29 load_stop_observed_(false), | 27 load_stop_observed_(false), |
30 ime_cancel_observed_(false), | 28 ime_cancel_observed_(false) { |
31 waiting_for_damage_buffer_with_size_(false), | |
32 last_damage_buffer_size_(gfx::Size()) { | |
33 } | 29 } |
34 | 30 |
35 TestBrowserPluginGuest::~TestBrowserPluginGuest() { | 31 TestBrowserPluginGuest::~TestBrowserPluginGuest() { |
36 } | 32 } |
37 | 33 |
38 WebContentsImpl* TestBrowserPluginGuest::web_contents() const { | 34 WebContentsImpl* TestBrowserPluginGuest::web_contents() const { |
39 return static_cast<WebContentsImpl*>(BrowserPluginGuest::web_contents()); | 35 return static_cast<WebContentsImpl*>(BrowserPluginGuest::web_contents()); |
40 } | 36 } |
41 | 37 |
42 void TestBrowserPluginGuest::SendMessageToEmbedder(IPC::Message* msg) { | 38 void TestBrowserPluginGuest::SendMessageToEmbedder(IPC::Message* msg) { |
(...skipping 19 matching lines...) Expand all Loading... |
62 if (update_rect_count_ > 0) | 58 if (update_rect_count_ > 0) |
63 return; | 59 return; |
64 send_message_loop_runner_ = new MessageLoopRunner(); | 60 send_message_loop_runner_ = new MessageLoopRunner(); |
65 send_message_loop_runner_->Run(); | 61 send_message_loop_runner_->Run(); |
66 } | 62 } |
67 | 63 |
68 void TestBrowserPluginGuest::ResetUpdateRectCount() { | 64 void TestBrowserPluginGuest::ResetUpdateRectCount() { |
69 update_rect_count_ = 0; | 65 update_rect_count_ = 0; |
70 } | 66 } |
71 | 67 |
72 void TestBrowserPluginGuest::WaitForDamageBufferWithSize( | |
73 const gfx::Size& size) { | |
74 if (damage_buffer_call_count_ > 0 && last_damage_buffer_size_ == size) | |
75 return; | |
76 | |
77 expected_damage_buffer_size_ = size; | |
78 waiting_for_damage_buffer_with_size_ = true; | |
79 damage_buffer_message_loop_runner_ = new MessageLoopRunner(); | |
80 damage_buffer_message_loop_runner_->Run(); | |
81 } | |
82 | |
83 void TestBrowserPluginGuest::RenderProcessGone(base::TerminationStatus status) { | 68 void TestBrowserPluginGuest::RenderProcessGone(base::TerminationStatus status) { |
84 exit_observed_ = true; | 69 exit_observed_ = true; |
85 if (status != base::TERMINATION_STATUS_NORMAL_TERMINATION && | 70 if (status != base::TERMINATION_STATUS_NORMAL_TERMINATION && |
86 status != base::TERMINATION_STATUS_STILL_RUNNING) | 71 status != base::TERMINATION_STATUS_STILL_RUNNING) |
87 VLOG(0) << "Guest crashed status: " << status; | 72 VLOG(0) << "Guest crashed status: " << status; |
88 if (crash_message_loop_runner_) | 73 if (crash_message_loop_runner_) |
89 crash_message_loop_runner_->Quit(); | 74 crash_message_loop_runner_->Quit(); |
90 BrowserPluginGuest::RenderProcessGone(status); | 75 BrowserPluginGuest::RenderProcessGone(status); |
91 } | 76 } |
92 | 77 |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 if (ime_cancel_observed_) { | 171 if (ime_cancel_observed_) { |
187 ime_cancel_observed_ = false; | 172 ime_cancel_observed_ = false; |
188 return; | 173 return; |
189 } | 174 } |
190 | 175 |
191 ime_cancel_message_loop_runner_ = new MessageLoopRunner(); | 176 ime_cancel_message_loop_runner_ = new MessageLoopRunner(); |
192 ime_cancel_message_loop_runner_->Run(); | 177 ime_cancel_message_loop_runner_->Run(); |
193 ime_cancel_observed_ = false; | 178 ime_cancel_observed_ = false; |
194 } | 179 } |
195 | 180 |
| 181 void TestBrowserPluginGuest::WaitForResizeGuest(const gfx::Size& view_size) { |
| 182 if (last_size_observed_in_resize_ == view_size) { |
| 183 last_size_observed_in_resize_ = gfx::Size(); |
| 184 return; |
| 185 } |
| 186 |
| 187 expected_view_size_in_resize_ = view_size; |
| 188 resize_guest_message_loop_runner_ = new MessageLoopRunner(); |
| 189 resize_guest_message_loop_runner_->Run(); |
| 190 last_size_observed_in_resize_ = gfx::Size(); |
| 191 } |
| 192 |
196 void TestBrowserPluginGuest::OnSetFocus(int instance_id, bool focused) { | 193 void TestBrowserPluginGuest::OnSetFocus(int instance_id, bool focused) { |
197 if (focused) { | 194 if (focused) { |
198 focus_observed_ = true; | 195 focus_observed_ = true; |
199 if (focus_message_loop_runner_) | 196 if (focus_message_loop_runner_) |
200 focus_message_loop_runner_->Quit(); | 197 focus_message_loop_runner_->Quit(); |
201 } else { | 198 } else { |
202 blur_observed_ = true; | 199 blur_observed_ = true; |
203 if (blur_message_loop_runner_) | 200 if (blur_message_loop_runner_) |
204 blur_message_loop_runner_->Quit(); | 201 blur_message_loop_runner_->Quit(); |
205 } | 202 } |
206 BrowserPluginGuest::OnSetFocus(instance_id, focused); | 203 BrowserPluginGuest::OnSetFocus(instance_id, focused); |
207 } | 204 } |
208 | 205 |
209 void TestBrowserPluginGuest::OnTakeFocus(bool reverse) { | 206 void TestBrowserPluginGuest::OnTakeFocus(bool reverse) { |
210 advance_focus_observed_ = true; | 207 advance_focus_observed_ = true; |
211 if (advance_focus_message_loop_runner_) | 208 if (advance_focus_message_loop_runner_) |
212 advance_focus_message_loop_runner_->Quit(); | 209 advance_focus_message_loop_runner_->Quit(); |
213 BrowserPluginGuest::OnTakeFocus(reverse); | 210 BrowserPluginGuest::OnTakeFocus(reverse); |
214 } | 211 } |
215 | 212 |
216 void TestBrowserPluginGuest::SetDamageBuffer( | |
217 const BrowserPluginHostMsg_ResizeGuest_Params& params) { | |
218 ++damage_buffer_call_count_; | |
219 last_damage_buffer_size_ = params.view_rect.size(); | |
220 | |
221 if (waiting_for_damage_buffer_with_size_ && | |
222 expected_damage_buffer_size_ == params.view_rect.size() && | |
223 damage_buffer_message_loop_runner_) { | |
224 damage_buffer_message_loop_runner_->Quit(); | |
225 waiting_for_damage_buffer_with_size_ = false; | |
226 } | |
227 | |
228 BrowserPluginGuest::SetDamageBuffer(params); | |
229 } | |
230 | |
231 void TestBrowserPluginGuest::DidStopLoading( | 213 void TestBrowserPluginGuest::DidStopLoading( |
232 RenderViewHost* render_view_host) { | 214 RenderViewHost* render_view_host) { |
233 BrowserPluginGuest::DidStopLoading(render_view_host); | 215 BrowserPluginGuest::DidStopLoading(render_view_host); |
234 load_stop_observed_ = true; | 216 load_stop_observed_ = true; |
235 if (load_stop_message_loop_runner_) | 217 if (load_stop_message_loop_runner_) |
236 load_stop_message_loop_runner_->Quit(); | 218 load_stop_message_loop_runner_->Quit(); |
237 } | 219 } |
238 | 220 |
239 void TestBrowserPluginGuest::OnImeCancelComposition() { | 221 void TestBrowserPluginGuest::OnImeCancelComposition() { |
240 if (!ime_cancel_observed_) { | 222 if (!ime_cancel_observed_) { |
241 ime_cancel_observed_ = true; | 223 ime_cancel_observed_ = true; |
242 if (ime_cancel_message_loop_runner_) | 224 if (ime_cancel_message_loop_runner_) |
243 ime_cancel_message_loop_runner_->Quit(); | 225 ime_cancel_message_loop_runner_->Quit(); |
244 } | 226 } |
245 BrowserPluginGuest::OnImeCancelComposition(); | 227 BrowserPluginGuest::OnImeCancelComposition(); |
246 } | 228 } |
247 | 229 |
| 230 void TestBrowserPluginGuest::OnResizeGuest( |
| 231 int instance_id, |
| 232 const BrowserPluginHostMsg_ResizeGuest_Params& params) { |
| 233 last_size_observed_in_resize_ = params.view_rect.size(); |
| 234 if (last_size_observed_in_resize_ == expected_view_size_in_resize_ && |
| 235 resize_guest_message_loop_runner_) { |
| 236 resize_guest_message_loop_runner_->Quit(); |
| 237 } |
| 238 |
| 239 BrowserPluginGuest::OnResizeGuest(instance_id, params); |
| 240 } |
| 241 |
248 void TestBrowserPluginGuest::WasHidden() { | 242 void TestBrowserPluginGuest::WasHidden() { |
249 was_hidden_observed_ = true; | 243 was_hidden_observed_ = true; |
250 if (was_hidden_message_loop_runner_) | 244 if (was_hidden_message_loop_runner_) |
251 was_hidden_message_loop_runner_->Quit(); | 245 was_hidden_message_loop_runner_->Quit(); |
252 } | 246 } |
253 | 247 |
254 } // namespace content | 248 } // namespace content |
OLD | NEW |