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 "content/browser/renderer_host/render_view_host_impl.h" | 7 #include "content/browser/renderer_host/render_view_host_impl.h" |
8 #include "content/browser/web_contents/web_contents_impl.h" | 8 #include "content/browser/web_contents/web_contents_impl.h" |
9 #include "content/common/browser_plugin/browser_plugin_messages.h" | 9 #include "content/common/browser_plugin/browser_plugin_messages.h" |
10 | 10 |
11 namespace content { | 11 namespace content { |
12 | 12 |
13 class BrowserPluginGuest; | 13 class BrowserPluginGuest; |
14 | 14 |
15 TestBrowserPluginGuest::TestBrowserPluginGuest( | 15 TestBrowserPluginGuest::TestBrowserPluginGuest( |
16 int instance_id, | 16 int instance_id, |
17 WebContentsImpl* web_contents) | 17 WebContentsImpl* web_contents) |
18 : BrowserPluginGuest(instance_id, false, web_contents), | 18 : BrowserPluginGuest(instance_id, false, web_contents), |
19 update_rect_count_(0), | 19 update_rect_count_(0), |
20 focus_observed_(false), | |
21 blur_observed_(false), | |
22 advance_focus_observed_(false), | |
23 input_observed_(false), | 20 input_observed_(false), |
24 load_stop_observed_(false), | 21 load_stop_observed_(false), |
25 ime_cancel_observed_(false) { | 22 ime_cancel_observed_(false) { |
26 } | 23 } |
27 | 24 |
28 TestBrowserPluginGuest::~TestBrowserPluginGuest() { | 25 TestBrowserPluginGuest::~TestBrowserPluginGuest() { |
29 } | 26 } |
30 | 27 |
31 WebContentsImpl* TestBrowserPluginGuest::web_contents() const { | 28 WebContentsImpl* TestBrowserPluginGuest::web_contents() const { |
32 return static_cast<WebContentsImpl*>(BrowserPluginGuest::web_contents()); | 29 return static_cast<WebContentsImpl*>(BrowserPluginGuest::web_contents()); |
33 } | 30 } |
34 | 31 |
35 void TestBrowserPluginGuest::SendMessageToEmbedder(IPC::Message* msg) { | 32 void TestBrowserPluginGuest::SendMessageToEmbedder(IPC::Message* msg) { |
36 if (msg->type() == BrowserPluginMsg_UpdateRect::ID) { | 33 if (msg->type() == BrowserPluginMsg_UpdateRect::ID) { |
37 update_rect_count_++; | 34 update_rect_count_++; |
38 BrowserPluginMsg_UpdateRect::Param param; | 35 BrowserPluginMsg_UpdateRect::Param param; |
39 BrowserPluginMsg_UpdateRect::Read(msg, ¶m); | 36 BrowserPluginMsg_UpdateRect::Read(msg, ¶m); |
40 BrowserPluginMsg_UpdateRect_Params params = param.b; | 37 BrowserPluginMsg_UpdateRect_Params params = param.b; |
41 last_view_size_observed_ = params.view_size; | |
42 if (!expected_auto_view_size_.IsEmpty() && | |
43 expected_auto_view_size_ == params.view_size) { | |
44 if (auto_view_size_message_loop_runner_) | |
45 auto_view_size_message_loop_runner_->Quit(); | |
46 } | |
47 if (send_message_loop_runner_) | 38 if (send_message_loop_runner_) |
48 send_message_loop_runner_->Quit(); | 39 send_message_loop_runner_->Quit(); |
49 } | 40 } |
50 BrowserPluginGuest::SendMessageToEmbedder(msg); | 41 BrowserPluginGuest::SendMessageToEmbedder(msg); |
51 } | 42 } |
52 | 43 |
53 void TestBrowserPluginGuest::WaitForUpdateRectMsg() { | 44 void TestBrowserPluginGuest::WaitForUpdateRectMsg() { |
54 // Check if we already got any UpdateRect message. | 45 // Check if we already got any UpdateRect message. |
55 if (update_rect_count_ > 0) | 46 if (update_rect_count_ > 0) |
56 return; | 47 return; |
57 send_message_loop_runner_ = new MessageLoopRunner(); | 48 send_message_loop_runner_ = new MessageLoopRunner(); |
58 send_message_loop_runner_->Run(); | 49 send_message_loop_runner_->Run(); |
59 } | 50 } |
60 | 51 |
61 void TestBrowserPluginGuest::ResetUpdateRectCount() { | |
62 update_rect_count_ = 0; | |
63 } | |
64 | |
65 void TestBrowserPluginGuest::OnHandleInputEvent( | 52 void TestBrowserPluginGuest::OnHandleInputEvent( |
66 int instance_id, | 53 int instance_id, |
67 const gfx::Rect& guest_window_rect, | 54 const gfx::Rect& guest_window_rect, |
68 const blink::WebInputEvent* event) { | 55 const blink::WebInputEvent* event) { |
69 BrowserPluginGuest::OnHandleInputEvent(instance_id, | 56 BrowserPluginGuest::OnHandleInputEvent(instance_id, |
70 guest_window_rect, | 57 guest_window_rect, |
71 event); | 58 event); |
72 input_observed_ = true; | 59 input_observed_ = true; |
73 if (input_message_loop_runner_) | 60 if (input_message_loop_runner_) |
74 input_message_loop_runner_->Quit(); | 61 input_message_loop_runner_->Quit(); |
75 } | 62 } |
76 | 63 |
77 void TestBrowserPluginGuest::WaitForFocus() { | |
78 if (focus_observed_) { | |
79 focus_observed_ = false; | |
80 return; | |
81 } | |
82 focus_message_loop_runner_ = new MessageLoopRunner(); | |
83 focus_message_loop_runner_->Run(); | |
84 focus_observed_ = false; | |
85 } | |
86 | |
87 void TestBrowserPluginGuest::WaitForBlur() { | |
88 if (blur_observed_) { | |
89 blur_observed_ = false; | |
90 return; | |
91 } | |
92 blur_message_loop_runner_ = new MessageLoopRunner(); | |
93 blur_message_loop_runner_->Run(); | |
94 blur_observed_ = false; | |
95 } | |
96 | |
97 void TestBrowserPluginGuest::WaitForAdvanceFocus() { | |
98 if (advance_focus_observed_) | |
99 return; | |
100 advance_focus_message_loop_runner_ = new MessageLoopRunner(); | |
101 advance_focus_message_loop_runner_->Run(); | |
102 } | |
103 | |
104 void TestBrowserPluginGuest::WaitForInput() { | 64 void TestBrowserPluginGuest::WaitForInput() { |
105 if (input_observed_) { | 65 if (input_observed_) { |
106 input_observed_ = false; | 66 input_observed_ = false; |
107 return; | 67 return; |
108 } | 68 } |
109 | 69 |
110 input_message_loop_runner_ = new MessageLoopRunner(); | 70 input_message_loop_runner_ = new MessageLoopRunner(); |
111 input_message_loop_runner_->Run(); | 71 input_message_loop_runner_->Run(); |
112 input_observed_ = false; | 72 input_observed_ = false; |
113 } | 73 } |
114 | 74 |
115 void TestBrowserPluginGuest::WaitForLoadStop() { | 75 void TestBrowserPluginGuest::WaitForLoadStop() { |
116 if (load_stop_observed_) { | 76 if (load_stop_observed_) { |
117 load_stop_observed_ = false; | 77 load_stop_observed_ = false; |
118 return; | 78 return; |
119 } | 79 } |
120 | 80 |
121 load_stop_message_loop_runner_ = new MessageLoopRunner(); | 81 load_stop_message_loop_runner_ = new MessageLoopRunner(); |
122 load_stop_message_loop_runner_->Run(); | 82 load_stop_message_loop_runner_->Run(); |
123 load_stop_observed_ = false; | 83 load_stop_observed_ = false; |
124 } | 84 } |
125 | 85 |
126 void TestBrowserPluginGuest::WaitForViewSize(const gfx::Size& view_size) { | |
127 if (last_view_size_observed_ == view_size) { | |
128 last_view_size_observed_ = gfx::Size(); | |
129 return; | |
130 } | |
131 | |
132 expected_auto_view_size_ = view_size; | |
133 auto_view_size_message_loop_runner_ = new MessageLoopRunner(); | |
134 auto_view_size_message_loop_runner_->Run(); | |
135 last_view_size_observed_ = gfx::Size(); | |
136 } | |
137 | |
138 void TestBrowserPluginGuest::WaitForImeCancel() { | 86 void TestBrowserPluginGuest::WaitForImeCancel() { |
139 if (ime_cancel_observed_) { | 87 if (ime_cancel_observed_) { |
140 ime_cancel_observed_ = false; | 88 ime_cancel_observed_ = false; |
141 return; | 89 return; |
142 } | 90 } |
143 | 91 |
144 ime_cancel_message_loop_runner_ = new MessageLoopRunner(); | 92 ime_cancel_message_loop_runner_ = new MessageLoopRunner(); |
145 ime_cancel_message_loop_runner_->Run(); | 93 ime_cancel_message_loop_runner_->Run(); |
146 ime_cancel_observed_ = false; | 94 ime_cancel_observed_ = false; |
147 } | 95 } |
148 | 96 |
149 void TestBrowserPluginGuest::OnSetFocus(int instance_id, bool focused) { | |
150 if (focused) { | |
151 focus_observed_ = true; | |
152 if (focus_message_loop_runner_) | |
153 focus_message_loop_runner_->Quit(); | |
154 } else { | |
155 blur_observed_ = true; | |
156 if (blur_message_loop_runner_) | |
157 blur_message_loop_runner_->Quit(); | |
158 } | |
159 BrowserPluginGuest::OnSetFocus(instance_id, focused); | |
160 } | |
161 | |
162 void TestBrowserPluginGuest::OnTakeFocus(bool reverse) { | |
163 advance_focus_observed_ = true; | |
164 if (advance_focus_message_loop_runner_) | |
165 advance_focus_message_loop_runner_->Quit(); | |
166 BrowserPluginGuest::OnTakeFocus(reverse); | |
167 } | |
168 | |
169 void TestBrowserPluginGuest::DidStopLoading( | 97 void TestBrowserPluginGuest::DidStopLoading( |
170 RenderViewHost* render_view_host) { | 98 RenderViewHost* render_view_host) { |
171 BrowserPluginGuest::DidStopLoading(render_view_host); | 99 BrowserPluginGuest::DidStopLoading(render_view_host); |
172 load_stop_observed_ = true; | 100 load_stop_observed_ = true; |
173 if (load_stop_message_loop_runner_) | 101 if (load_stop_message_loop_runner_) |
174 load_stop_message_loop_runner_->Quit(); | 102 load_stop_message_loop_runner_->Quit(); |
175 } | 103 } |
176 | 104 |
177 void TestBrowserPluginGuest::OnImeCancelComposition() { | 105 void TestBrowserPluginGuest::OnImeCancelComposition() { |
178 if (!ime_cancel_observed_) { | 106 if (!ime_cancel_observed_) { |
179 ime_cancel_observed_ = true; | 107 ime_cancel_observed_ = true; |
180 if (ime_cancel_message_loop_runner_) | 108 if (ime_cancel_message_loop_runner_) |
181 ime_cancel_message_loop_runner_->Quit(); | 109 ime_cancel_message_loop_runner_->Quit(); |
182 } | 110 } |
183 BrowserPluginGuest::OnImeCancelComposition(); | 111 BrowserPluginGuest::OnImeCancelComposition(); |
184 } | 112 } |
185 | 113 |
186 } // namespace content | 114 } // namespace content |
OLD | NEW |