Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(504)

Side by Side Diff: content/renderer/browser_plugin/browser_plugin_browsertest.cc

Issue 11565024: Browser Plugin: Reduce code repetition in BrowserPluginManager. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Use switch statement instead of set. Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/browser_plugin/browser_plugin_browsertest.h" 5 #include "content/renderer/browser_plugin/browser_plugin_browsertest.h"
6 6
7 #include "base/file_path.h" 7 #include "base/file_path.h"
8 #include "base/file_util.h" 8 #include "base/file_util.h"
9 #include "base/memory/singleton.h" 9 #include "base/memory/singleton.h"
10 #include "base/path_service.h" 10 #include "base/path_service.h"
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 // This test verifies that an initial resize occurs when we instantiate the 120 // This test verifies that an initial resize occurs when we instantiate the
121 // browser plugin. This test also verifies that the browser plugin is waiting 121 // browser plugin. This test also verifies that the browser plugin is waiting
122 // for a BrowserPluginMsg_UpdateRect in response. We issue an UpdateRect, and 122 // for a BrowserPluginMsg_UpdateRect in response. We issue an UpdateRect, and
123 // we observe an UpdateRect_ACK, with the |pending_damage_buffer_| reset, 123 // we observe an UpdateRect_ACK, with the |pending_damage_buffer_| reset,
124 // indiciating that the BrowserPlugin is not waiting for any more UpdateRects to 124 // indiciating that the BrowserPlugin is not waiting for any more UpdateRects to
125 // satisfy its resize request. 125 // satisfy its resize request.
126 TEST_F(BrowserPluginTest, InitialResize) { 126 TEST_F(BrowserPluginTest, InitialResize) {
127 LoadHTML(GetHTMLForBrowserPluginObject().c_str()); 127 LoadHTML(GetHTMLForBrowserPluginObject().c_str());
128 // Verify that the information based on ResizeGuest is correct, and 128 // Verify that the information based on ResizeGuest is correct, and
129 // use its TransportDIB::Id to paint. 129 // use its TransportDIB::Id to paint.
130 const IPC::Message* msg = 130 int instance_id = 0;
131 browser_plugin_manager()->sink().GetUniqueMessageMatching( 131 {
132 BrowserPluginHostMsg_ResizeGuest::ID); 132 const IPC::Message* msg =
133 ASSERT_TRUE(msg); 133 browser_plugin_manager()->sink().GetUniqueMessageMatching(
134 int instance_id = -1; 134 BrowserPluginHostMsg_ResizeGuest::ID);
135 BrowserPluginHostMsg_ResizeGuest_Params params; 135 ASSERT_TRUE(msg);
136 BrowserPluginHostMsg_ResizeGuest::Read(msg, &instance_id, &params); 136 BrowserPluginHostMsg_ResizeGuest_Params params;
137 EXPECT_EQ(640, params.view_size.width()); 137 BrowserPluginHostMsg_ResizeGuest::Read(msg, &instance_id, &params);
138 EXPECT_EQ(480, params.view_size.height()); 138 EXPECT_EQ(640, params.view_size.width());
139 EXPECT_EQ(480, params.view_size.height());
140 }
139 141
140 MockBrowserPlugin* browser_plugin = 142 MockBrowserPlugin* browser_plugin =
141 static_cast<MockBrowserPlugin*>( 143 static_cast<MockBrowserPlugin*>(
142 browser_plugin_manager()->GetBrowserPlugin(instance_id)); 144 browser_plugin_manager()->GetBrowserPlugin(instance_id));
143 ASSERT_TRUE(browser_plugin); 145 ASSERT_TRUE(browser_plugin);
144 // Now the browser plugin is expecting a UpdateRect resize. 146 // Now the browser plugin is expecting a UpdateRect resize.
145 EXPECT_TRUE(browser_plugin->pending_damage_buffer_); 147 EXPECT_TRUE(browser_plugin->pending_damage_buffer_);
146 148
147 // Send the BrowserPlugin an UpdateRect equal to its container size with 149 // Send the BrowserPlugin an UpdateRect equal to its container size with
148 // the same damage buffer. That should clear |pending_damage_buffer_|. 150 // the same damage buffer. That should clear |pending_damage_buffer_|.
149 BrowserPluginMsg_UpdateRect_Params update_rect_params; 151 BrowserPluginMsg_UpdateRect_Params update_rect_params;
150 update_rect_params.damage_buffer_identifier = 152 update_rect_params.damage_buffer_identifier =
151 #if defined(OS_MACOSX) 153 #if defined(OS_MACOSX)
152 browser_plugin->pending_damage_buffer_->id(); 154 browser_plugin->pending_damage_buffer_->id();
153 #else 155 #else
154 browser_plugin->pending_damage_buffer_->handle(); 156 browser_plugin->pending_damage_buffer_->handle();
155 #endif 157 #endif
156 update_rect_params.view_size = gfx::Size(640, 480); 158 update_rect_params.view_size = gfx::Size(640, 480);
157 update_rect_params.scale_factor = 1.0f; 159 update_rect_params.scale_factor = 1.0f;
158 update_rect_params.is_resize_ack = true; 160 update_rect_params.is_resize_ack = true;
159 browser_plugin->UpdateRect(0, update_rect_params); 161 BrowserPluginMsg_UpdateRect msg(0, instance_id, 0, update_rect_params);
162 browser_plugin->OnMessageReceived(msg);
160 EXPECT_FALSE(browser_plugin->pending_damage_buffer_); 163 EXPECT_FALSE(browser_plugin->pending_damage_buffer_);
161 } 164 }
162 165
163 // Verify that the src attribute on the browser plugin works as expected. 166 // Verify that the src attribute on the browser plugin works as expected.
164 TEST_F(BrowserPluginTest, SrcAttribute) { 167 TEST_F(BrowserPluginTest, SrcAttribute) {
165 LoadHTML(GetHTMLForBrowserPluginObject().c_str()); 168 LoadHTML(GetHTMLForBrowserPluginObject().c_str());
166 // Verify that we're reporting the correct URL to navigate to based on the 169 // Verify that we're reporting the correct URL to navigate to based on the
167 // src attribute. 170 // src attribute.
168 { 171 {
169 // Ensure we get a CreateGuest on the initial navigation. 172 // Ensure we get a CreateGuest on the initial navigation.
170 const IPC::Message* create_msg = 173 const IPC::Message* create_msg =
171 browser_plugin_manager()->sink().GetUniqueMessageMatching( 174 browser_plugin_manager()->sink().GetUniqueMessageMatching(
172 BrowserPluginHostMsg_CreateGuest::ID); 175 BrowserPluginHostMsg_CreateGuest::ID);
173 ASSERT_TRUE(create_msg); 176 ASSERT_TRUE(create_msg);
174 177
175 const IPC::Message* msg = 178 const IPC::Message* msg =
176 browser_plugin_manager()->sink().GetUniqueMessageMatching( 179 browser_plugin_manager()->sink().GetUniqueMessageMatching(
177 BrowserPluginHostMsg_NavigateGuest::ID); 180 BrowserPluginHostMsg_NavigateGuest::ID);
178 ASSERT_TRUE(msg); 181 ASSERT_TRUE(msg);
179 182
180 int instance_id = -1; 183 int instance_id = 0;
181 std::string src; 184 std::string src;
182 BrowserPluginHostMsg_NavigateGuest::Read(msg, &instance_id, &src); 185 BrowserPluginHostMsg_NavigateGuest::Read(msg, &instance_id, &src);
183 EXPECT_EQ("foo", src); 186 EXPECT_EQ("foo", src);
184 } 187 }
185 188
186 browser_plugin_manager()->sink().ClearMessages(); 189 browser_plugin_manager()->sink().ClearMessages();
187 // Navigate to bar and observe the associated 190 // Navigate to bar and observe the associated
188 // BrowserPluginHostMsg_NavigateGuest message. 191 // BrowserPluginHostMsg_NavigateGuest message.
189 // Verify that the src attribute is updated as well. 192 // Verify that the src attribute is updated as well.
190 ExecuteJavaScript("document.getElementById('browserplugin').src = 'bar'"); 193 ExecuteJavaScript("document.getElementById('browserplugin').src = 'bar'");
191 { 194 {
192 // Verify that we do not get a CreateGuest on subsequent navigations. 195 // Verify that we do not get a CreateGuest on subsequent navigations.
193 const IPC::Message* create_msg = 196 const IPC::Message* create_msg =
194 browser_plugin_manager()->sink().GetUniqueMessageMatching( 197 browser_plugin_manager()->sink().GetUniqueMessageMatching(
195 BrowserPluginHostMsg_CreateGuest::ID); 198 BrowserPluginHostMsg_CreateGuest::ID);
196 ASSERT_FALSE(create_msg); 199 ASSERT_FALSE(create_msg);
197 200
198 const IPC::Message* msg = 201 const IPC::Message* msg =
199 browser_plugin_manager()->sink().GetUniqueMessageMatching( 202 browser_plugin_manager()->sink().GetUniqueMessageMatching(
200 BrowserPluginHostMsg_NavigateGuest::ID); 203 BrowserPluginHostMsg_NavigateGuest::ID);
201 ASSERT_TRUE(msg); 204 ASSERT_TRUE(msg);
202 205
203 int instance_id = -1; 206 int instance_id = 0;
204 std::string src; 207 std::string src;
205 BrowserPluginHostMsg_NavigateGuest::Read(msg, &instance_id, &src); 208 BrowserPluginHostMsg_NavigateGuest::Read(msg, &instance_id, &src);
206 EXPECT_EQ("bar", src); 209 EXPECT_EQ("bar", src);
207 std::string src_value = 210 std::string src_value =
208 ExecuteScriptAndReturnString( 211 ExecuteScriptAndReturnString(
209 "document.getElementById('browserplugin').src"); 212 "document.getElementById('browserplugin').src");
210 EXPECT_EQ("bar", src_value); 213 EXPECT_EQ("bar", src_value);
211 } 214 }
212 } 215 }
213 216
214 TEST_F(BrowserPluginTest, ResizeFlowControl) { 217 TEST_F(BrowserPluginTest, ResizeFlowControl) {
215 LoadHTML(GetHTMLForBrowserPluginObject().c_str()); 218 LoadHTML(GetHTMLForBrowserPluginObject().c_str());
216 int instance_id = -1; 219 int instance_id = 0;
217 { 220 {
218 // Ensure we get a NavigateGuest on the initial navigation and grab the 221 // Ensure we get a NavigateGuest on the initial navigation and grab the
219 // BrowserPlugin's instance_id from there. 222 // BrowserPlugin's instance_id from there.
220 std::string src; 223 std::string src;
221 const IPC::Message* nav_msg = 224 const IPC::Message* nav_msg =
222 browser_plugin_manager()->sink().GetUniqueMessageMatching( 225 browser_plugin_manager()->sink().GetUniqueMessageMatching(
223 BrowserPluginHostMsg_NavigateGuest::ID); 226 BrowserPluginHostMsg_NavigateGuest::ID);
224 ASSERT_TRUE(nav_msg); 227 ASSERT_TRUE(nav_msg);
225 BrowserPluginHostMsg_NavigateGuest::Read(nav_msg, &instance_id, &src); 228 BrowserPluginHostMsg_NavigateGuest::Read(nav_msg, &instance_id, &src);
226 } 229 }
(...skipping 12 matching lines...) Expand all
239 update_rect_params.is_resize_ack = true; 242 update_rect_params.is_resize_ack = true;
240 // By sending the damage buffer handle back to BrowserPlugin on UpdateRect, 243 // By sending the damage buffer handle back to BrowserPlugin on UpdateRect,
241 // then the BrowserPlugin knows that the browser process has received and 244 // then the BrowserPlugin knows that the browser process has received and
242 // has begun to use the pending_damage_buffer. 245 // has begun to use the pending_damage_buffer.
243 update_rect_params.damage_buffer_identifier = 246 update_rect_params.damage_buffer_identifier =
244 #if defined(OS_MACOSX) 247 #if defined(OS_MACOSX)
245 browser_plugin->pending_damage_buffer_->id(); 248 browser_plugin->pending_damage_buffer_->id();
246 #else 249 #else
247 browser_plugin->pending_damage_buffer_->handle(); 250 browser_plugin->pending_damage_buffer_->handle();
248 #endif 251 #endif
249 browser_plugin->UpdateRect(0, update_rect_params); 252 BrowserPluginMsg_UpdateRect msg(0, instance_id, 0, update_rect_params);
253 browser_plugin->OnMessageReceived(msg);
250 EXPECT_EQ(NULL, browser_plugin->pending_damage_buffer_); 254 EXPECT_EQ(NULL, browser_plugin->pending_damage_buffer_);
251 } 255 }
252 256
253 browser_plugin_manager()->sink().ClearMessages(); 257 browser_plugin_manager()->sink().ClearMessages();
254 258
255 // Resize the browser plugin three times. 259 // Resize the browser plugin three times.
256 ExecuteJavaScript("document.getElementById('browserplugin').width = '641px'"); 260 ExecuteJavaScript("document.getElementById('browserplugin').width = '641px'");
257 ProcessPendingMessages(); 261 ProcessPendingMessages();
258 ExecuteJavaScript("document.getElementById('browserplugin').width = '642px'"); 262 ExecuteJavaScript("document.getElementById('browserplugin').width = '642px'");
259 ProcessPendingMessages(); 263 ProcessPendingMessages();
(...skipping 21 matching lines...) Expand all
281 BrowserPluginMsg_UpdateRect_Params update_rect_params; 285 BrowserPluginMsg_UpdateRect_Params update_rect_params;
282 update_rect_params.view_size = gfx::Size(641, 480); 286 update_rect_params.view_size = gfx::Size(641, 480);
283 update_rect_params.scale_factor = 1.0f; 287 update_rect_params.scale_factor = 1.0f;
284 update_rect_params.is_resize_ack = true; 288 update_rect_params.is_resize_ack = true;
285 update_rect_params.damage_buffer_identifier = 289 update_rect_params.damage_buffer_identifier =
286 #if defined(OS_MACOSX) 290 #if defined(OS_MACOSX)
287 browser_plugin->pending_damage_buffer_->id(); 291 browser_plugin->pending_damage_buffer_->id();
288 #else 292 #else
289 browser_plugin->pending_damage_buffer_->handle(); 293 browser_plugin->pending_damage_buffer_->handle();
290 #endif 294 #endif
291 browser_plugin->UpdateRect(0, update_rect_params); 295 BrowserPluginMsg_UpdateRect msg(0, instance_id, 0, update_rect_params);
296 browser_plugin->OnMessageReceived(msg);
292 // This tells us that the BrowserPlugin is still expecting another 297 // This tells us that the BrowserPlugin is still expecting another
293 // UpdateRect with the most recent size. 298 // UpdateRect with the most recent size.
294 EXPECT_TRUE(browser_plugin->pending_damage_buffer_); 299 EXPECT_TRUE(browser_plugin->pending_damage_buffer_);
295 } 300 }
296 // Send the BrowserPlugin another UpdateRect, but this time with a size 301 // Send the BrowserPlugin another UpdateRect, but this time with a size
297 // that matches the size of the container. 302 // that matches the size of the container.
298 { 303 {
299 BrowserPluginMsg_UpdateRect_Params update_rect_params; 304 BrowserPluginMsg_UpdateRect_Params update_rect_params;
300 update_rect_params.view_size = gfx::Size(643, 480); 305 update_rect_params.view_size = gfx::Size(643, 480);
301 update_rect_params.scale_factor = 1.0f; 306 update_rect_params.scale_factor = 1.0f;
302 update_rect_params.is_resize_ack = true; 307 update_rect_params.is_resize_ack = true;
303 update_rect_params.damage_buffer_identifier = 308 update_rect_params.damage_buffer_identifier =
304 #if defined(OS_MACOSX) 309 #if defined(OS_MACOSX)
305 browser_plugin->pending_damage_buffer_->id(); 310 browser_plugin->pending_damage_buffer_->id();
306 #else 311 #else
307 browser_plugin->pending_damage_buffer_->handle(); 312 browser_plugin->pending_damage_buffer_->handle();
308 #endif 313 #endif
309 browser_plugin->UpdateRect(0, update_rect_params); 314 BrowserPluginMsg_UpdateRect msg(0, instance_id, 0, update_rect_params);
315 browser_plugin->OnMessageReceived(msg);
310 // The BrowserPlugin has finally received an UpdateRect that satisifes 316 // The BrowserPlugin has finally received an UpdateRect that satisifes
311 // its current size, and so it is happy. 317 // its current size, and so it is happy.
312 EXPECT_FALSE(browser_plugin->pending_damage_buffer_); 318 EXPECT_FALSE(browser_plugin->pending_damage_buffer_);
313 } 319 }
314 } 320 }
315 321
316 TEST_F(BrowserPluginTest, GuestCrash) { 322 TEST_F(BrowserPluginTest, GuestCrash) {
317 LoadHTML(GetHTMLForBrowserPluginObject().c_str()); 323 LoadHTML(GetHTMLForBrowserPluginObject().c_str());
318 324
319 // Grab the BrowserPlugin's instance ID from its resize message. 325 // Grab the BrowserPlugin's instance ID from its resize message.
320 const IPC::Message* msg = 326 int instance_id = 0;
321 browser_plugin_manager()->sink().GetFirstMessageMatching( 327 {
322 BrowserPluginHostMsg_ResizeGuest::ID); 328 const IPC::Message* msg =
323 ASSERT_TRUE(msg); 329 browser_plugin_manager()->sink().GetFirstMessageMatching(
324 int instance_id = -1; 330 BrowserPluginHostMsg_ResizeGuest::ID);
325 BrowserPluginHostMsg_ResizeGuest_Params params; 331 ASSERT_TRUE(msg);
326 BrowserPluginHostMsg_ResizeGuest::Read(msg, &instance_id, &params); 332 BrowserPluginHostMsg_ResizeGuest_Params params;
327 333 BrowserPluginHostMsg_ResizeGuest::Read(msg, &instance_id, &params);
334 }
328 MockBrowserPlugin* browser_plugin = 335 MockBrowserPlugin* browser_plugin =
329 static_cast<MockBrowserPlugin*>( 336 static_cast<MockBrowserPlugin*>(
330 browser_plugin_manager()->GetBrowserPlugin(instance_id)); 337 browser_plugin_manager()->GetBrowserPlugin(instance_id));
331 ASSERT_TRUE(browser_plugin); 338 ASSERT_TRUE(browser_plugin);
332 339
333 WebKit::WebCursorInfo cursor_info; 340 WebKit::WebCursorInfo cursor_info;
334 // Send an event and verify that the event is deported. 341 // Send an event and verify that the event is deported.
335 browser_plugin->handleInputEvent(WebKit::WebMouseEvent(), 342 browser_plugin->handleInputEvent(WebKit::WebMouseEvent(),
336 cursor_info); 343 cursor_info);
337 EXPECT_TRUE(browser_plugin_manager()->sink().GetUniqueMessageMatching( 344 EXPECT_TRUE(browser_plugin_manager()->sink().GetUniqueMessageMatching(
338 BrowserPluginHostMsg_HandleInputEvent::ID)); 345 BrowserPluginHostMsg_HandleInputEvent::ID));
339 browser_plugin_manager()->sink().ClearMessages(); 346 browser_plugin_manager()->sink().ClearMessages();
340 347
341 const char* kAddEventListener = 348 const char* kAddEventListener =
342 "var msg;" 349 "var msg;"
343 "function exitListener(e) {" 350 "function exitListener(e) {"
344 " msg = JSON.parse(e.detail).reason;" 351 " msg = JSON.parse(e.detail).reason;"
345 "}" 352 "}"
346 "document.getElementById('browserplugin')." 353 "document.getElementById('browserplugin')."
347 " addEventListener('-internal-exit', exitListener);"; 354 " addEventListener('-internal-exit', exitListener);";
348 355
349 ExecuteJavaScript(kAddEventListener); 356 ExecuteJavaScript(kAddEventListener);
350 357
351 // Pretend that the guest has terminated normally. 358 // Pretend that the guest has terminated normally.
352 browser_plugin->GuestGone(0, base::TERMINATION_STATUS_NORMAL_TERMINATION); 359 {
360 BrowserPluginMsg_GuestGone msg(
361 0, 0, 0, base::TERMINATION_STATUS_NORMAL_TERMINATION);
362 browser_plugin->OnMessageReceived(msg);
363 }
353 364
354 // Verify that our event listener has fired. 365 // Verify that our event listener has fired.
355 EXPECT_EQ("normal", ExecuteScriptAndReturnString("msg")); 366 EXPECT_EQ("normal", ExecuteScriptAndReturnString("msg"));
356 367
357 // Pretend that the guest has crashed. 368 // Pretend that the guest has crashed.
358 browser_plugin->GuestGone(0, base::TERMINATION_STATUS_PROCESS_CRASHED); 369 {
370 BrowserPluginMsg_GuestGone msg(
371 0, 0, 0, base::TERMINATION_STATUS_PROCESS_CRASHED);
372 browser_plugin->OnMessageReceived(msg);
373 }
359 374
360 // Verify that our event listener has fired. 375 // Verify that our event listener has fired.
361 EXPECT_EQ("crashed", ExecuteScriptAndReturnString("msg")); 376 EXPECT_EQ("crashed", ExecuteScriptAndReturnString("msg"));
362 377
363 // Send an event and verify that events are no longer deported. 378 // Send an event and verify that events are no longer deported.
364 browser_plugin->handleInputEvent(WebKit::WebMouseEvent(), 379 browser_plugin->handleInputEvent(WebKit::WebMouseEvent(),
365 cursor_info); 380 cursor_info);
366 EXPECT_FALSE(browser_plugin_manager()->sink().GetUniqueMessageMatching( 381 EXPECT_FALSE(browser_plugin_manager()->sink().GetUniqueMessageMatching(
367 BrowserPluginHostMsg_HandleInputEvent::ID)); 382 BrowserPluginHostMsg_HandleInputEvent::ID));
368 } 383 }
(...skipping 27 matching lines...) Expand all
396 const char* kGoogleURL = "http://www.google.com/"; 411 const char* kGoogleURL = "http://www.google.com/";
397 const char* kGoogleNewsURL = "http://news.google.com/"; 412 const char* kGoogleNewsURL = "http://news.google.com/";
398 413
399 LoadHTML(GetHTMLForBrowserPluginObject().c_str()); 414 LoadHTML(GetHTMLForBrowserPluginObject().c_str());
400 ExecuteJavaScript(kAddEventListener); 415 ExecuteJavaScript(kAddEventListener);
401 // Grab the BrowserPlugin's instance ID from its resize message. 416 // Grab the BrowserPlugin's instance ID from its resize message.
402 const IPC::Message* msg = 417 const IPC::Message* msg =
403 browser_plugin_manager()->sink().GetFirstMessageMatching( 418 browser_plugin_manager()->sink().GetFirstMessageMatching(
404 BrowserPluginHostMsg_ResizeGuest::ID); 419 BrowserPluginHostMsg_ResizeGuest::ID);
405 ASSERT_TRUE(msg); 420 ASSERT_TRUE(msg);
406 int instance_id = -1; 421 int instance_id = 0;
407 BrowserPluginHostMsg_ResizeGuest_Params params; 422 BrowserPluginHostMsg_ResizeGuest_Params params;
408 BrowserPluginHostMsg_ResizeGuest::Read(msg, &instance_id, &params); 423 BrowserPluginHostMsg_ResizeGuest::Read(msg, &instance_id, &params);
409 424
410 MockBrowserPlugin* browser_plugin = 425 MockBrowserPlugin* browser_plugin =
411 static_cast<MockBrowserPlugin*>( 426 static_cast<MockBrowserPlugin*>(
412 browser_plugin_manager()->GetBrowserPlugin(instance_id)); 427 browser_plugin_manager()->GetBrowserPlugin(instance_id));
413 ASSERT_TRUE(browser_plugin); 428 ASSERT_TRUE(browser_plugin);
414 429
415 { 430 {
416 BrowserPluginMsg_LoadCommit_Params navigate_params; 431 BrowserPluginMsg_LoadCommit_Params navigate_params;
417 navigate_params.is_top_level = true; 432 navigate_params.is_top_level = true;
418 navigate_params.url = GURL(kGoogleURL); 433 navigate_params.url = GURL(kGoogleURL);
419 navigate_params.process_id = 1337; 434 navigate_params.process_id = 1337;
420 browser_plugin->LoadCommit(navigate_params); 435 BrowserPluginMsg_LoadCommit msg(0, instance_id, navigate_params);
436 browser_plugin->OnMessageReceived(msg);
421 EXPECT_EQ(kGoogleURL, ExecuteScriptAndReturnString("url")); 437 EXPECT_EQ(kGoogleURL, ExecuteScriptAndReturnString("url"));
422 EXPECT_EQ(kGoogleURL, ExecuteScriptAndReturnString(kGetSrc)); 438 EXPECT_EQ(kGoogleURL, ExecuteScriptAndReturnString(kGetSrc));
423 EXPECT_EQ(1337, ExecuteScriptAndReturnInt(kGetProcessID)); 439 EXPECT_EQ(1337, ExecuteScriptAndReturnInt(kGetProcessID));
424 } 440 }
425 ExecuteJavaScript(kRemoveEventListener); 441 ExecuteJavaScript(kRemoveEventListener);
426 { 442 {
427 BrowserPluginMsg_LoadCommit_Params navigate_params; 443 BrowserPluginMsg_LoadCommit_Params navigate_params;
428 navigate_params.is_top_level = false; 444 navigate_params.is_top_level = false;
429 navigate_params.url = GURL(kGoogleNewsURL); 445 navigate_params.url = GURL(kGoogleNewsURL);
430 navigate_params.process_id = 42; 446 navigate_params.process_id = 42;
431 browser_plugin->LoadCommit(navigate_params); 447 BrowserPluginMsg_LoadCommit msg(0, instance_id, navigate_params);
448 browser_plugin->OnMessageReceived(msg);
432 // The URL variable should not change because we've removed the event 449 // The URL variable should not change because we've removed the event
433 // listener. 450 // listener.
434 EXPECT_EQ(kGoogleURL, ExecuteScriptAndReturnString("url")); 451 EXPECT_EQ(kGoogleURL, ExecuteScriptAndReturnString("url"));
435 // The src attribute should not change if this is a top-level navigation. 452 // The src attribute should not change if this is a top-level navigation.
436 EXPECT_EQ(kGoogleURL, ExecuteScriptAndReturnString(kGetSrc)); 453 EXPECT_EQ(kGoogleURL, ExecuteScriptAndReturnString(kGetSrc));
437 EXPECT_EQ(42, ExecuteScriptAndReturnInt(kGetProcessID)); 454 EXPECT_EQ(42, ExecuteScriptAndReturnInt(kGetProcessID));
438 } 455 }
439 } 456 }
440 457
441 TEST_F(BrowserPluginTest, StopMethod) { 458 TEST_F(BrowserPluginTest, StopMethod) {
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
563 "document.getElementById('browserplugin').src"); 580 "document.getElementById('browserplugin').src");
564 EXPECT_STREQ("", src_value.c_str()); 581 EXPECT_STREQ("", src_value.c_str());
565 582
566 ExecuteJavaScript("document.getElementById('browserplugin').src = 'bar'"); 583 ExecuteJavaScript("document.getElementById('browserplugin').src = 'bar'");
567 { 584 {
568 const IPC::Message* create_msg = 585 const IPC::Message* create_msg =
569 browser_plugin_manager()->sink().GetUniqueMessageMatching( 586 browser_plugin_manager()->sink().GetUniqueMessageMatching(
570 BrowserPluginHostMsg_CreateGuest::ID); 587 BrowserPluginHostMsg_CreateGuest::ID);
571 ASSERT_TRUE(create_msg); 588 ASSERT_TRUE(create_msg);
572 589
573 int create_instance_id = -1; 590 int create_instance_id = 0;
574 BrowserPluginHostMsg_CreateGuest_Params params; 591 BrowserPluginHostMsg_CreateGuest_Params params;
575 BrowserPluginHostMsg_CreateGuest::Read( 592 BrowserPluginHostMsg_CreateGuest::Read(
576 create_msg, 593 create_msg,
577 &create_instance_id, 594 &create_instance_id,
578 &params); 595 &params);
579 EXPECT_STREQ("storage", params.storage_partition_id.c_str()); 596 EXPECT_STREQ("storage", params.storage_partition_id.c_str());
580 EXPECT_FALSE(params.persist_storage); 597 EXPECT_FALSE(params.persist_storage);
581 598
582 const IPC::Message* msg = 599 const IPC::Message* msg =
583 browser_plugin_manager()->sink().GetUniqueMessageMatching( 600 browser_plugin_manager()->sink().GetUniqueMessageMatching(
584 BrowserPluginHostMsg_NavigateGuest::ID); 601 BrowserPluginHostMsg_NavigateGuest::ID);
585 ASSERT_TRUE(msg); 602 ASSERT_TRUE(msg);
586 603
587 int instance_id = -1; 604 int instance_id = 0;
588 std::string src; 605 std::string src;
589 BrowserPluginHostMsg_NavigateGuest::Read(msg, &instance_id, &src); 606 BrowserPluginHostMsg_NavigateGuest::Read(msg, &instance_id, &src);
590 EXPECT_STREQ("bar", src.c_str()); 607 EXPECT_STREQ("bar", src.c_str());
591 EXPECT_EQ(create_instance_id, instance_id); 608 EXPECT_EQ(create_instance_id, instance_id);
592 } 609 }
593 610
594 // Setting the partition should throw an exception and the value should not 611 // Setting the partition should throw an exception and the value should not
595 // change. 612 // change.
596 ExecuteJavaScript( 613 ExecuteJavaScript(
597 "try {" 614 "try {"
(...skipping 28 matching lines...) Expand all
626 const char* kGetProcessID = 643 const char* kGetProcessID =
627 "document.getElementById('browserplugin').getProcessId()"; 644 "document.getElementById('browserplugin').getProcessId()";
628 645
629 LoadHTML(GetHTMLForBrowserPluginObject().c_str()); 646 LoadHTML(GetHTMLForBrowserPluginObject().c_str());
630 ExecuteJavaScript(kAddEventListener); 647 ExecuteJavaScript(kAddEventListener);
631 // Grab the BrowserPlugin's instance ID from its resize message. 648 // Grab the BrowserPlugin's instance ID from its resize message.
632 const IPC::Message* msg = 649 const IPC::Message* msg =
633 browser_plugin_manager()->sink().GetFirstMessageMatching( 650 browser_plugin_manager()->sink().GetFirstMessageMatching(
634 BrowserPluginHostMsg_ResizeGuest::ID); 651 BrowserPluginHostMsg_ResizeGuest::ID);
635 ASSERT_TRUE(msg); 652 ASSERT_TRUE(msg);
636 int instance_id = -1; 653 int instance_id = 0;
637 BrowserPluginHostMsg_ResizeGuest_Params params; 654 BrowserPluginHostMsg_ResizeGuest_Params params;
638 BrowserPluginHostMsg_ResizeGuest::Read(msg, &instance_id, &params); 655 BrowserPluginHostMsg_ResizeGuest::Read(msg, &instance_id, &params);
639 656
640 MockBrowserPlugin* browser_plugin = 657 MockBrowserPlugin* browser_plugin =
641 static_cast<MockBrowserPlugin*>( 658 static_cast<MockBrowserPlugin*>(
642 browser_plugin_manager()->GetBrowserPlugin(instance_id)); 659 browser_plugin_manager()->GetBrowserPlugin(instance_id));
643 ASSERT_TRUE(browser_plugin); 660 ASSERT_TRUE(browser_plugin);
644 661
645 { 662 {
646 BrowserPluginMsg_LoadCommit_Params navigate_params; 663 BrowserPluginMsg_LoadCommit_Params navigate_params;
647 navigate_params.url = GURL(kGoogleURL); 664 navigate_params.url = GURL(kGoogleURL);
648 navigate_params.process_id = 1337; 665 navigate_params.process_id = 1337;
649 browser_plugin->LoadCommit(navigate_params); 666 BrowserPluginMsg_LoadCommit msg(0, instance_id, navigate_params);
667 browser_plugin->OnMessageReceived(msg);
650 EXPECT_EQ(kGoogleURL, ExecuteScriptAndReturnString("url")); 668 EXPECT_EQ(kGoogleURL, ExecuteScriptAndReturnString("url"));
651 EXPECT_EQ(1337, ExecuteScriptAndReturnInt(kGetProcessID)); 669 EXPECT_EQ(1337, ExecuteScriptAndReturnInt(kGetProcessID));
652 } 670 }
653 { 671 {
654 BrowserPluginMsg_LoadCommit_Params navigate_params; 672 BrowserPluginMsg_LoadCommit_Params navigate_params;
655 navigate_params.url = GURL(kGoogleNewsURL); 673 navigate_params.url = GURL(kGoogleNewsURL);
656 navigate_params.process_id = 42; 674 navigate_params.process_id = 42;
657 browser_plugin->LoadCommit(navigate_params); 675 BrowserPluginMsg_LoadCommit msg(0, instance_id, navigate_params);
676 browser_plugin->OnMessageReceived(msg);
658 // The URL variable should not change because we've removed the event 677 // The URL variable should not change because we've removed the event
659 // listener. 678 // listener.
660 EXPECT_EQ(kGoogleURL, ExecuteScriptAndReturnString("url")); 679 EXPECT_EQ(kGoogleURL, ExecuteScriptAndReturnString("url"));
661 EXPECT_EQ(42, ExecuteScriptAndReturnInt(kGetProcessID)); 680 EXPECT_EQ(42, ExecuteScriptAndReturnInt(kGetProcessID));
662 } 681 }
663 } 682 }
664 683
665 // This test verifies that multiple event listeners fire that are registered 684 // This test verifies that multiple event listeners fire that are registered
666 // on a single event type. 685 // on a single event type.
667 TEST_F(BrowserPluginTest, MultipleEventListeners) { 686 TEST_F(BrowserPluginTest, MultipleEventListeners) {
(...skipping 13 matching lines...) Expand all
681 const char* kGetProcessID = 700 const char* kGetProcessID =
682 "document.getElementById('browserplugin').getProcessId()"; 701 "document.getElementById('browserplugin').getProcessId()";
683 702
684 LoadHTML(GetHTMLForBrowserPluginObject().c_str()); 703 LoadHTML(GetHTMLForBrowserPluginObject().c_str());
685 ExecuteJavaScript(kAddEventListener); 704 ExecuteJavaScript(kAddEventListener);
686 // Grab the BrowserPlugin's instance ID from its resize message. 705 // Grab the BrowserPlugin's instance ID from its resize message.
687 const IPC::Message* msg = 706 const IPC::Message* msg =
688 browser_plugin_manager()->sink().GetFirstMessageMatching( 707 browser_plugin_manager()->sink().GetFirstMessageMatching(
689 BrowserPluginHostMsg_ResizeGuest::ID); 708 BrowserPluginHostMsg_ResizeGuest::ID);
690 ASSERT_TRUE(msg); 709 ASSERT_TRUE(msg);
691 int instance_id = -1; 710 int instance_id = 0;
692 BrowserPluginHostMsg_ResizeGuest_Params params; 711 BrowserPluginHostMsg_ResizeGuest_Params params;
693 BrowserPluginHostMsg_ResizeGuest::Read(msg, &instance_id, &params); 712 BrowserPluginHostMsg_ResizeGuest::Read(msg, &instance_id, &params);
694 713
695 MockBrowserPlugin* browser_plugin = 714 MockBrowserPlugin* browser_plugin =
696 static_cast<MockBrowserPlugin*>( 715 static_cast<MockBrowserPlugin*>(
697 browser_plugin_manager()->GetBrowserPlugin(instance_id)); 716 browser_plugin_manager()->GetBrowserPlugin(instance_id));
698 ASSERT_TRUE(browser_plugin); 717 ASSERT_TRUE(browser_plugin);
699 718
700 { 719 {
701 BrowserPluginMsg_LoadCommit_Params navigate_params; 720 BrowserPluginMsg_LoadCommit_Params navigate_params;
702 navigate_params.url = GURL(kGoogleURL); 721 navigate_params.url = GURL(kGoogleURL);
703 navigate_params.process_id = 1337; 722 navigate_params.process_id = 1337;
704 browser_plugin->LoadCommit(navigate_params); 723 BrowserPluginMsg_LoadCommit msg(0, instance_id, navigate_params);
724 browser_plugin->OnMessageReceived(msg);
705 EXPECT_EQ(2, ExecuteScriptAndReturnInt("count")); 725 EXPECT_EQ(2, ExecuteScriptAndReturnInt("count"));
706 EXPECT_EQ(1337, ExecuteScriptAndReturnInt(kGetProcessID)); 726 EXPECT_EQ(1337, ExecuteScriptAndReturnInt(kGetProcessID));
707 } 727 }
708 } 728 }
709 729
710 TEST_F(BrowserPluginTest, RemoveBrowserPluginOnExit) { 730 TEST_F(BrowserPluginTest, RemoveBrowserPluginOnExit) {
711 LoadHTML(GetHTMLForBrowserPluginObject().c_str()); 731 LoadHTML(GetHTMLForBrowserPluginObject().c_str());
712 732
713 // Grab the BrowserPlugin's instance ID from its resize message. 733 // Grab the BrowserPlugin's instance ID from its resize message.
714 const IPC::Message* msg = 734 int instance_id = 0;
715 browser_plugin_manager()->sink().GetFirstMessageMatching( 735 {
716 BrowserPluginHostMsg_ResizeGuest::ID); 736 const IPC::Message* msg =
717 ASSERT_TRUE(msg); 737 browser_plugin_manager()->sink().GetFirstMessageMatching(
718 int instance_id = -1; 738 BrowserPluginHostMsg_ResizeGuest::ID);
719 BrowserPluginHostMsg_ResizeGuest_Params params; 739 ASSERT_TRUE(msg);
720 BrowserPluginHostMsg_ResizeGuest::Read(msg, &instance_id, &params); 740 BrowserPluginHostMsg_ResizeGuest_Params params;
741 BrowserPluginHostMsg_ResizeGuest::Read(msg, &instance_id, &params);
742 }
721 743
722 MockBrowserPlugin* browser_plugin = 744 MockBrowserPlugin* browser_plugin =
723 static_cast<MockBrowserPlugin*>( 745 static_cast<MockBrowserPlugin*>(
724 browser_plugin_manager()->GetBrowserPlugin(instance_id)); 746 browser_plugin_manager()->GetBrowserPlugin(instance_id));
725 ASSERT_TRUE(browser_plugin); 747 ASSERT_TRUE(browser_plugin);
726 748
727 const char* kAddEventListener = 749 const char* kAddEventListener =
728 "function exitListener(e) {" 750 "function exitListener(e) {"
729 " if (JSON.parse(e.detail).reason == 'killed') {" 751 " if (JSON.parse(e.detail).reason == 'killed') {"
730 " var bp = document.getElementById('browserplugin');" 752 " var bp = document.getElementById('browserplugin');"
731 " bp.parentNode.removeChild(bp);" 753 " bp.parentNode.removeChild(bp);"
732 " }" 754 " }"
733 "}" 755 "}"
734 "document.getElementById('browserplugin')." 756 "document.getElementById('browserplugin')."
735 " addEventListener('-internal-exit', exitListener);"; 757 " addEventListener('-internal-exit', exitListener);";
736 758
737 ExecuteJavaScript(kAddEventListener); 759 ExecuteJavaScript(kAddEventListener);
738 760
739 // Pretend that the guest has crashed. 761 // Pretend that the guest has crashed.
740 browser_plugin->GuestGone(0, base::TERMINATION_STATUS_PROCESS_WAS_KILLED); 762 BrowserPluginMsg_GuestGone msg(
763 0, instance_id, 0, base::TERMINATION_STATUS_PROCESS_WAS_KILLED);
764 browser_plugin->OnMessageReceived(msg);
741 765
742 ProcessPendingMessages(); 766 ProcessPendingMessages();
743 767
744 EXPECT_EQ(NULL, browser_plugin_manager()->GetBrowserPlugin(instance_id)); 768 EXPECT_EQ(NULL, browser_plugin_manager()->GetBrowserPlugin(instance_id));
745 } 769 }
746 770
747 TEST_F(BrowserPluginTest, AutoSizeAttributes) { 771 TEST_F(BrowserPluginTest, AutoSizeAttributes) {
748 std::string html = StringPrintf(kHTMLForSourcelessPluginObject, 772 std::string html = StringPrintf(kHTMLForSourcelessPluginObject,
749 content::kBrowserPluginMimeType); 773 content::kBrowserPluginMimeType);
750 LoadHTML(html.c_str()); 774 LoadHTML(html.c_str());
751 const char* kSetAutoSizeParametersAndNavigate = 775 const char* kSetAutoSizeParametersAndNavigate =
752 "var browserplugin = document.getElementById('browserplugin');" 776 "var browserplugin = document.getElementById('browserplugin');"
753 "browserplugin.autoSize = true;" 777 "browserplugin.autoSize = true;"
754 "browserplugin.minWidth = 42;" 778 "browserplugin.minWidth = 42;"
755 "browserplugin.minHeight = 43;" 779 "browserplugin.minHeight = 43;"
756 "browserplugin.maxWidth = 1337;" 780 "browserplugin.maxWidth = 1337;"
757 "browserplugin.maxHeight = 1338;" 781 "browserplugin.maxHeight = 1338;"
758 "browserplugin.src = 'foobar';"; 782 "browserplugin.src = 'foobar';";
759 const char* kDisableAutoSize = 783 const char* kDisableAutoSize =
760 "document.getElementById('browserplugin').autoSize = false;"; 784 "document.getElementById('browserplugin').autoSize = false;";
761 785
762 int instance_id = -1; 786 int instance_id = 0;
763 // Set some autosize parameters before navigating then navigate. 787 // Set some autosize parameters before navigating then navigate.
764 // Verify that the BrowserPluginHostMsg_CreateGuest message contains 788 // Verify that the BrowserPluginHostMsg_CreateGuest message contains
765 // the correct autosize parameters. 789 // the correct autosize parameters.
766 ExecuteJavaScript(kSetAutoSizeParametersAndNavigate); 790 ExecuteJavaScript(kSetAutoSizeParametersAndNavigate);
767 ProcessPendingMessages(); 791 ProcessPendingMessages();
768 { 792 {
769 const IPC::Message* create_msg = 793 const IPC::Message* create_msg =
770 browser_plugin_manager()->sink().GetUniqueMessageMatching( 794 browser_plugin_manager()->sink().GetUniqueMessageMatching(
771 BrowserPluginHostMsg_CreateGuest::ID); 795 BrowserPluginHostMsg_CreateGuest::ID);
772 ASSERT_TRUE(create_msg); 796 ASSERT_TRUE(create_msg);
(...skipping 30 matching lines...) Expand all
803 BrowserPluginMsg_UpdateRect_Params update_rect_params; 827 BrowserPluginMsg_UpdateRect_Params update_rect_params;
804 update_rect_params.damage_buffer_identifier = 828 update_rect_params.damage_buffer_identifier =
805 #if defined(OS_MACOSX) 829 #if defined(OS_MACOSX)
806 browser_plugin->pending_damage_buffer_->id(); 830 browser_plugin->pending_damage_buffer_->id();
807 #else 831 #else
808 browser_plugin->pending_damage_buffer_->handle(); 832 browser_plugin->pending_damage_buffer_->handle();
809 #endif 833 #endif
810 update_rect_params.view_size = gfx::Size(1337, 1338); 834 update_rect_params.view_size = gfx::Size(1337, 1338);
811 update_rect_params.scale_factor = 1.0f; 835 update_rect_params.scale_factor = 1.0f;
812 update_rect_params.is_resize_ack = true; 836 update_rect_params.is_resize_ack = true;
813 browser_plugin->UpdateRect(0, update_rect_params); 837 BrowserPluginMsg_UpdateRect msg(0, instance_id, 0, update_rect_params);
838 browser_plugin->OnMessageReceived(msg);
814 839
815 // Verify that the autosize state has been updated. 840 // Verify that the autosize state has been updated.
816 { 841 {
817 const IPC::Message* auto_size_msg = 842 const IPC::Message* auto_size_msg =
818 browser_plugin_manager()->sink().GetUniqueMessageMatching( 843 browser_plugin_manager()->sink().GetUniqueMessageMatching(
819 BrowserPluginHostMsg_UpdateRect_ACK::ID); 844 BrowserPluginHostMsg_UpdateRect_ACK::ID);
820 ASSERT_TRUE(auto_size_msg); 845 ASSERT_TRUE(auto_size_msg);
821 846
822 int instance_id = -1; 847 int instance_id = 0;
823 int message_id = 0; 848 int message_id = 0;
824 BrowserPluginHostMsg_AutoSize_Params auto_size_params; 849 BrowserPluginHostMsg_AutoSize_Params auto_size_params;
825 BrowserPluginHostMsg_ResizeGuest_Params resize_params; 850 BrowserPluginHostMsg_ResizeGuest_Params resize_params;
826 BrowserPluginHostMsg_UpdateRect_ACK::Read(auto_size_msg, 851 BrowserPluginHostMsg_UpdateRect_ACK::Read(auto_size_msg,
827 &instance_id, 852 &instance_id,
828 &message_id, 853 &message_id,
829 &auto_size_params, 854 &auto_size_params,
830 &resize_params); 855 &resize_params);
831 EXPECT_FALSE(auto_size_params.enable); 856 EXPECT_FALSE(auto_size_params.enable);
832 EXPECT_EQ(42, auto_size_params.min_size.width()); 857 EXPECT_EQ(42, auto_size_params.min_size.width());
833 EXPECT_EQ(43, auto_size_params.min_size.height()); 858 EXPECT_EQ(43, auto_size_params.min_size.height());
834 EXPECT_EQ(1337, auto_size_params.max_size.width()); 859 EXPECT_EQ(1337, auto_size_params.max_size.width());
835 EXPECT_EQ(1338, auto_size_params.max_size.height()); 860 EXPECT_EQ(1338, auto_size_params.max_size.height());
836 } 861 }
837 } 862 }
838 863
839 } // namespace content 864 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/browser_plugin/browser_plugin.cc ('k') | content/renderer/browser_plugin/browser_plugin_manager_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698