| 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 |