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 "base/command_line.h" | 5 #include "base/command_line.h" |
6 #include "base/memory/singleton.h" | 6 #include "base/memory/singleton.h" |
7 #include "base/run_loop.h" | 7 #include "base/run_loop.h" |
8 #include "base/test/test_timeouts.h" | 8 #include "base/test/test_timeouts.h" |
9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
10 #include "content/browser/browser_plugin/browser_plugin_guest.h" | 10 #include "content/browser/browser_plugin/browser_plugin_guest.h" |
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
327 // Override the hang timeout for guest to be very small. | 327 // Override the hang timeout for guest to be very small. |
328 content::BrowserPluginGuest::set_factory_for_testing( | 328 content::BrowserPluginGuest::set_factory_for_testing( |
329 TestShortHangTimeoutGuestFactory::GetInstance()); | 329 TestShortHangTimeoutGuestFactory::GetInstance()); |
330 const char kEmbedderURL[] = "files/browser_plugin_embedder_crash.html"; | 330 const char kEmbedderURL[] = "files/browser_plugin_embedder_crash.html"; |
331 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuestInfiniteLoop, true, ""); | 331 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuestInfiniteLoop, true, ""); |
332 | 332 |
333 ExecuteSyncJSFunction(test_guest()->web_contents()->GetRenderViewHost(), | 333 ExecuteSyncJSFunction(test_guest()->web_contents()->GetRenderViewHost(), |
334 ASCIIToUTF16("StartInfiniteLoop();")); | 334 ASCIIToUTF16("StartInfiniteLoop();")); |
335 | 335 |
336 // Send a mouse event to the guest. | 336 // Send a mouse event to the guest. |
337 SimulateMouseClick(test_embedder()->web_contents()); | 337 SimulateMouseClick(test_embedder()->web_contents(), 0, |
| 338 WebKit::WebMouseEvent::ButtonLeft); |
338 | 339 |
339 // Expect the guest to crash. | 340 // Expect the guest to crash. |
340 test_guest()->WaitForCrashed(); | 341 test_guest()->WaitForCrashed(); |
341 } | 342 } |
342 | 343 |
343 // This test ensures that if guest isn't there and we resize the guest (from | 344 // This test ensures that if guest isn't there and we resize the guest (from |
344 // js), it remembers the size correctly. | 345 // js), it remembers the size correctly. |
345 // | 346 // |
346 // Initially we load an embedder with a guest without a src attribute (which has | 347 // Initially we load an embedder with a guest without a src attribute (which has |
347 // dimension 640x480), resize it to 100x200, and then we set the source to a | 348 // dimension 640x480), resize it to 100x200, and then we set the source to a |
348 // sample guest. In the end we verify that the correct size has been set. | 349 // sample guest. In the end we verify that the correct size has been set. |
349 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, NavigateAfterResize) { | 350 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, NavigateAfterResize) { |
350 const gfx::Size nxt_size = gfx::Size(100, 200); | 351 const gfx::Size nxt_size = gfx::Size(100, 200); |
351 const std::string embedder_code = | 352 const std::string embedder_code = |
352 StringPrintf("SetSize(%d, %d);", nxt_size.width(), nxt_size.height()); | 353 StringPrintf("SetSize(%d, %d);", nxt_size.width(), nxt_size.height()); |
353 const char kEmbedderURL[] = "files/browser_plugin_embedder.html"; | 354 const char kEmbedderURL[] = "files/browser_plugin_embedder.html"; |
354 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuest, true, embedder_code); | 355 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuest, true, embedder_code); |
355 | 356 |
356 // Wait for the guest to receive a damage buffer of size 100x200. | 357 // Wait for the guest to receive a damage buffer of size 100x200. |
357 // This means the guest will be painted properly at that size. | 358 // This means the guest will be painted properly at that size. |
358 test_guest()->WaitForDamageBufferWithSize(nxt_size); | 359 test_guest()->WaitForDamageBufferWithSize(nxt_size); |
359 } | 360 } |
360 | 361 |
361 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, AdvanceFocus) { | 362 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, AdvanceFocus) { |
362 const char kEmbedderURL[] = "files/browser_plugin_focus.html"; | 363 const char kEmbedderURL[] = "files/browser_plugin_focus.html"; |
363 const char* kGuestURL = "files/browser_plugin_focus_child.html"; | 364 const char* kGuestURL = "files/browser_plugin_focus_child.html"; |
364 StartBrowserPluginTest(kEmbedderURL, kGuestURL, false, ""); | 365 StartBrowserPluginTest(kEmbedderURL, kGuestURL, false, ""); |
365 | 366 |
366 SimulateMouseClick(test_embedder()->web_contents()); | 367 SimulateMouseClick(test_embedder()->web_contents(), 0, |
| 368 WebKit::WebMouseEvent::ButtonLeft); |
367 BrowserPluginHostTest::SimulateTabKeyPress(test_embedder()->web_contents()); | 369 BrowserPluginHostTest::SimulateTabKeyPress(test_embedder()->web_contents()); |
368 // Wait until we focus into the guest. | 370 // Wait until we focus into the guest. |
369 test_guest()->WaitForFocus(); | 371 test_guest()->WaitForFocus(); |
370 | 372 |
371 // TODO(fsamuel): A third Tab key press should not be necessary. | 373 // TODO(fsamuel): A third Tab key press should not be necessary. |
372 // The browser plugin will take keyboard focus but it will not | 374 // The browser plugin will take keyboard focus but it will not |
373 // focus an initial element. The initial element is dependent | 375 // focus an initial element. The initial element is dependent |
374 // upon tab direction which WebKit does not propagate to the plugin. | 376 // upon tab direction which WebKit does not propagate to the plugin. |
375 // See http://crbug.com/147644. | 377 // See http://crbug.com/147644. |
376 BrowserPluginHostTest::SimulateTabKeyPress(test_embedder()->web_contents()); | 378 BrowserPluginHostTest::SimulateTabKeyPress(test_embedder()->web_contents()); |
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
707 const string16 expected_title = ASCIIToUTF16("P1"); | 709 const string16 expected_title = ASCIIToUTF16("P1"); |
708 content::TitleWatcher title_watcher(test_guest()->web_contents(), | 710 content::TitleWatcher title_watcher(test_guest()->web_contents(), |
709 expected_title); | 711 expected_title); |
710 | 712 |
711 ExecuteSyncJSFunction(rvh, ASCIIToUTF16("Back();")); | 713 ExecuteSyncJSFunction(rvh, ASCIIToUTF16("Back();")); |
712 | 714 |
713 string16 actual_title = title_watcher.WaitAndGetTitle(); | 715 string16 actual_title = title_watcher.WaitAndGetTitle(); |
714 EXPECT_EQ(expected_title, actual_title); | 716 EXPECT_EQ(expected_title, actual_title); |
715 } | 717 } |
716 // Send an input event and verify that the guest receives the input. | 718 // Send an input event and verify that the guest receives the input. |
717 SimulateMouseClick(test_embedder()->web_contents()); | 719 SimulateMouseClick(test_embedder()->web_contents(), 0, |
| 720 WebKit::WebMouseEvent::ButtonLeft); |
718 test_guest()->WaitForInput(); | 721 test_guest()->WaitForInput(); |
719 } | 722 } |
720 | 723 |
721 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, LoadStart) { | 724 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, LoadStart) { |
722 const char kEmbedderURL[] = "files/browser_plugin_embedder.html"; | 725 const char kEmbedderURL[] = "files/browser_plugin_embedder.html"; |
723 StartBrowserPluginTest(kEmbedderURL, "about:blank", true, ""); | 726 StartBrowserPluginTest(kEmbedderURL, "about:blank", true, ""); |
724 | 727 |
725 const string16 expected_title = ASCIIToUTF16(kHTMLForGuest); | 728 const string16 expected_title = ASCIIToUTF16(kHTMLForGuest); |
726 content::TitleWatcher title_watcher(test_embedder()->web_contents(), | 729 content::TitleWatcher title_watcher(test_embedder()->web_contents(), |
727 expected_title); | 730 expected_title); |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
916 ASCIIToUTF16(StringPrintf("PostMessage('%s', true);", kTesting))); | 919 ASCIIToUTF16(StringPrintf("PostMessage('%s', true);", kTesting))); |
917 | 920 |
918 // The title will be updated to "iframe" at the last stage of the | 921 // The title will be updated to "iframe" at the last stage of the |
919 // process described above. | 922 // process described above. |
920 actual_title = iframe_watcher.WaitAndGetTitle(); | 923 actual_title = iframe_watcher.WaitAndGetTitle(); |
921 EXPECT_EQ(ASCIIToUTF16("iframe"), actual_title); | 924 EXPECT_EQ(ASCIIToUTF16("iframe"), actual_title); |
922 } | 925 } |
923 } | 926 } |
924 | 927 |
925 } // namespace content | 928 } // namespace content |
OLD | NEW |