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

Side by Side Diff: content/browser/browser_plugin/browser_plugin_host_browsertest.cc

Issue 15505003: GTTF: Convert most tests in content to use EmbeddedTestServer. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: clang Created 7 years, 7 months 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 "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/string_util.h" 8 #include "base/string_util.h"
9 #include "base/strings/string_split.h" 9 #include "base/strings/string_split.h"
10 #include "base/test/test_timeouts.h" 10 #include "base/test/test_timeouts.h"
(...skipping 11 matching lines...) Expand all
22 #include "content/public/browser/notification_types.h" 22 #include "content/public/browser/notification_types.h"
23 #include "content/public/browser/render_view_host_observer.h" 23 #include "content/public/browser/render_view_host_observer.h"
24 #include "content/public/browser/render_widget_host_view.h" 24 #include "content/public/browser/render_widget_host_view.h"
25 #include "content/public/common/content_switches.h" 25 #include "content/public/common/content_switches.h"
26 #include "content/public/test/browser_test_utils.h" 26 #include "content/public/test/browser_test_utils.h"
27 #include "content/public/test/test_utils.h" 27 #include "content/public/test/test_utils.h"
28 #include "content/shell/shell.h" 28 #include "content/shell/shell.h"
29 #include "content/test/content_browser_test.h" 29 #include "content/test/content_browser_test.h"
30 #include "content/test/content_browser_test_utils.h" 30 #include "content/test/content_browser_test_utils.h"
31 #include "net/base/net_util.h" 31 #include "net/base/net_util.h"
32 #include "net/test/embedded_test_server/embedded_test_server.h"
33 #include "net/test/embedded_test_server/http_response.h"
34 #include "net/test/embedded_test_server/http_request.h"
32 #include "net/test/spawned_test_server/spawned_test_server.h" 35 #include "net/test/spawned_test_server/spawned_test_server.h"
33 #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h" 36 #include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h"
34 #include "webkit/glue/webdropdata.h" 37 #include "webkit/glue/webdropdata.h"
35 38
36 using WebKit::WebInputEvent; 39 using WebKit::WebInputEvent;
37 using WebKit::WebMouseEvent; 40 using WebKit::WebMouseEvent;
38 using content::BrowserPluginEmbedder; 41 using content::BrowserPluginEmbedder;
39 using content::BrowserPluginGuest; 42 using content::BrowserPluginGuest;
40 using content::BrowserPluginHostFactory; 43 using content::BrowserPluginHostFactory;
41 using content::WebContentsImpl; 44 using content::WebContentsImpl;
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 305
303 // This helper method does the following: 306 // This helper method does the following:
304 // 1. Start the test server and navigate the shell to |embedder_url|. 307 // 1. Start the test server and navigate the shell to |embedder_url|.
305 // 2. Execute custom pre-navigation |embedder_code| if provided. 308 // 2. Execute custom pre-navigation |embedder_code| if provided.
306 // 3. Navigate the guest to the |guest_url|. 309 // 3. Navigate the guest to the |guest_url|.
307 // 4. Verify that the guest has been created and has completed loading. 310 // 4. Verify that the guest has been created and has completed loading.
308 void StartBrowserPluginTest(const std::string& embedder_url, 311 void StartBrowserPluginTest(const std::string& embedder_url,
309 const std::string& guest_url, 312 const std::string& guest_url,
310 bool is_guest_data_url, 313 bool is_guest_data_url,
311 const std::string& embedder_code) { 314 const std::string& embedder_code) {
312 ASSERT_TRUE(test_server()->Start()); 315 ASSERT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
313 GURL test_url(test_server()->GetURL(embedder_url)); 316 GURL test_url(embedded_test_server()->GetURL(embedder_url));
314 NavigateToURL(shell(), test_url); 317 NavigateToURL(shell(), test_url);
315 318
316 WebContentsImpl* embedder_web_contents = static_cast<WebContentsImpl*>( 319 WebContentsImpl* embedder_web_contents = static_cast<WebContentsImpl*>(
317 shell()->web_contents()); 320 shell()->web_contents());
318 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 321 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
319 embedder_web_contents->GetRenderViewHost()); 322 embedder_web_contents->GetRenderViewHost());
320 // Focus the embedder. 323 // Focus the embedder.
321 rvh->Focus(); 324 rvh->Focus();
322 325
323 // Allow the test to do some operations on the embedder before we perform 326 // Allow the test to do some operations on the embedder before we perform
324 // the first navigation of the guest. 327 // the first navigation of the guest.
325 if (!embedder_code.empty()) 328 if (!embedder_code.empty())
326 ExecuteSyncJSFunction(rvh, embedder_code); 329 ExecuteSyncJSFunction(rvh, embedder_code);
327 330
328 if (!is_guest_data_url) { 331 if (!is_guest_data_url) {
329 test_url = test_server()->GetURL(guest_url); 332 test_url = embedded_test_server()->GetURL(guest_url);
330 ExecuteSyncJSFunction( 333 ExecuteSyncJSFunction(
331 rvh, base::StringPrintf("SetSrc('%s');", test_url.spec().c_str())); 334 rvh, base::StringPrintf("SetSrc('%s');", test_url.spec().c_str()));
332 } else { 335 } else {
333 ExecuteSyncJSFunction( 336 ExecuteSyncJSFunction(
334 rvh, base::StringPrintf("SetSrc('%s');", guest_url.c_str())); 337 rvh, base::StringPrintf("SetSrc('%s');", guest_url.c_str()));
335 } 338 }
336 339
337 // Wait to make sure embedder is created/attached to WebContents. 340 // Wait to make sure embedder is created/attached to WebContents.
338 TestBrowserPluginHostFactory::GetInstance()->WaitForGuestManagerCreation(); 341 TestBrowserPluginHostFactory::GetInstance()->WaitForGuestManagerCreation();
339 342
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
381 #define MAYBE_GuestUnresponsive DISABLED_GuestUnresponsive 384 #define MAYBE_GuestUnresponsive DISABLED_GuestUnresponsive
382 #else 385 #else
383 #define MAYBE_GuestUnresponsive GuestUnresponsive 386 #define MAYBE_GuestUnresponsive GuestUnresponsive
384 #endif 387 #endif
385 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, 388 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest,
386 MAYBE_GuestUnresponsive) { 389 MAYBE_GuestUnresponsive) {
387 // Override the hang timeout for guest to be very small. 390 // Override the hang timeout for guest to be very small.
388 content::BrowserPluginGuest::set_factory_for_testing( 391 content::BrowserPluginGuest::set_factory_for_testing(
389 TestShortHangTimeoutGuestFactory::GetInstance()); 392 TestShortHangTimeoutGuestFactory::GetInstance());
390 const char kEmbedderURL[] = 393 const char kEmbedderURL[] =
391 "files/browser_plugin_embedder_guest_unresponsive.html"; 394 "/browser_plugin_embedder_guest_unresponsive.html";
392 StartBrowserPluginTest( 395 StartBrowserPluginTest(
393 kEmbedderURL, kHTMLForGuestBusyLoop, true, std::string()); 396 kEmbedderURL, kHTMLForGuestBusyLoop, true, std::string());
394 // Wait until the busy loop starts. 397 // Wait until the busy loop starts.
395 { 398 {
396 const string16 expected_title = ASCIIToUTF16("start"); 399 const string16 expected_title = ASCIIToUTF16("start");
397 content::TitleWatcher title_watcher(test_guest()->web_contents(), 400 content::TitleWatcher title_watcher(test_guest()->web_contents(),
398 expected_title); 401 expected_title);
399 // Hang the guest for a length of time. 402 // Hang the guest for a length of time.
400 int spin_time = 10 * TestTimeouts::tiny_timeout().InMilliseconds(); 403 int spin_time = 10 * TestTimeouts::tiny_timeout().InMilliseconds();
401 ExecuteSyncJSFunction( 404 ExecuteSyncJSFunction(
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 // This test ensures that if guest isn't there and we resize the guest (from 440 // This test ensures that if guest isn't there and we resize the guest (from
438 // js), it remembers the size correctly. 441 // js), it remembers the size correctly.
439 // 442 //
440 // Initially we load an embedder with a guest without a src attribute (which has 443 // Initially we load an embedder with a guest without a src attribute (which has
441 // dimension 640x480), resize it to 100x200, and then we set the source to a 444 // dimension 640x480), resize it to 100x200, and then we set the source to a
442 // sample guest. In the end we verify that the correct size has been set. 445 // sample guest. In the end we verify that the correct size has been set.
443 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, NavigateAfterResize) { 446 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, NavigateAfterResize) {
444 const gfx::Size nxt_size = gfx::Size(100, 200); 447 const gfx::Size nxt_size = gfx::Size(100, 200);
445 const std::string embedder_code = base::StringPrintf( 448 const std::string embedder_code = base::StringPrintf(
446 "SetSize(%d, %d);", nxt_size.width(), nxt_size.height()); 449 "SetSize(%d, %d);", nxt_size.width(), nxt_size.height());
447 const char kEmbedderURL[] = "files/browser_plugin_embedder.html"; 450 const char kEmbedderURL[] = "/browser_plugin_embedder.html";
448 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuest, true, embedder_code); 451 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuest, true, embedder_code);
449 452
450 // Wait for the guest to receive a damage buffer of size 100x200. 453 // Wait for the guest to receive a damage buffer of size 100x200.
451 // This means the guest will be painted properly at that size. 454 // This means the guest will be painted properly at that size.
452 test_guest()->WaitForDamageBufferWithSize(nxt_size); 455 test_guest()->WaitForDamageBufferWithSize(nxt_size);
453 } 456 }
454 457
455 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, AdvanceFocus) { 458 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, AdvanceFocus) {
456 const char kEmbedderURL[] = "files/browser_plugin_focus.html"; 459 const char kEmbedderURL[] = "/browser_plugin_focus.html";
457 const char* kGuestURL = "files/browser_plugin_focus_child.html"; 460 const char* kGuestURL = "/browser_plugin_focus_child.html";
458 StartBrowserPluginTest(kEmbedderURL, kGuestURL, false, std::string()); 461 StartBrowserPluginTest(kEmbedderURL, kGuestURL, false, std::string());
459 462
460 SimulateMouseClick(test_embedder()->web_contents(), 0, 463 SimulateMouseClick(test_embedder()->web_contents(), 0,
461 WebKit::WebMouseEvent::ButtonLeft); 464 WebKit::WebMouseEvent::ButtonLeft);
462 BrowserPluginHostTest::SimulateTabKeyPress(test_embedder()->web_contents()); 465 BrowserPluginHostTest::SimulateTabKeyPress(test_embedder()->web_contents());
463 // Wait until we focus into the guest. 466 // Wait until we focus into the guest.
464 test_guest()->WaitForFocus(); 467 test_guest()->WaitForFocus();
465 468
466 // TODO(fsamuel): A third Tab key press should not be necessary. 469 // TODO(fsamuel): A third Tab key press should not be necessary.
467 // The browser plugin will take keyboard focus but it will not 470 // The browser plugin will take keyboard focus but it will not
(...skipping 10 matching lines...) Expand all
478 // a RenderViewHost swap in the web_contents. We verify that the embedder in the 481 // a RenderViewHost swap in the web_contents. We verify that the embedder in the
479 // web_contents gets cleared properly. 482 // web_contents gets cleared properly.
480 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, EmbedderChangedAfterSwap) { 483 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, EmbedderChangedAfterSwap) {
481 net::SpawnedTestServer https_server( 484 net::SpawnedTestServer https_server(
482 net::SpawnedTestServer::TYPE_HTTPS, 485 net::SpawnedTestServer::TYPE_HTTPS,
483 net::SpawnedTestServer::kLocalhost, 486 net::SpawnedTestServer::kLocalhost,
484 base::FilePath(FILE_PATH_LITERAL("content/test/data"))); 487 base::FilePath(FILE_PATH_LITERAL("content/test/data")));
485 ASSERT_TRUE(https_server.Start()); 488 ASSERT_TRUE(https_server.Start());
486 489
487 // 1. Load an embedder page with one guest in it. 490 // 1. Load an embedder page with one guest in it.
488 const char kEmbedderURL[] = "files/browser_plugin_embedder.html"; 491 const char kEmbedderURL[] = "/browser_plugin_embedder.html";
489 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuest, true, std::string()); 492 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuest, true, std::string());
490 493
491 // 2. Navigate to a URL in https, so we trigger a RenderViewHost swap. 494 // 2. Navigate to a URL in https, so we trigger a RenderViewHost swap.
492 GURL test_https_url(https_server.GetURL( 495 GURL test_https_url(https_server.GetURL(
493 "files/browser_plugin_title_change.html")); 496 "files/browser_plugin_title_change.html"));
494 content::WindowedNotificationObserver swap_observer( 497 content::WindowedNotificationObserver swap_observer(
495 content::NOTIFICATION_WEB_CONTENTS_SWAPPED, 498 content::NOTIFICATION_WEB_CONTENTS_SWAPPED,
496 content::Source<WebContents>(test_embedder()->web_contents())); 499 content::Source<WebContents>(test_embedder()->web_contents()));
497 NavigateToURL(shell(), test_https_url); 500 NavigateToURL(shell(), test_https_url);
498 swap_observer.Wait(); 501 swap_observer.Wait();
499 502
500 TestBrowserPluginEmbedder* test_embedder_after_swap = 503 TestBrowserPluginEmbedder* test_embedder_after_swap =
501 static_cast<TestBrowserPluginEmbedder*>( 504 static_cast<TestBrowserPluginEmbedder*>(
502 static_cast<WebContentsImpl*>(shell()->web_contents())-> 505 static_cast<WebContentsImpl*>(shell()->web_contents())->
503 GetBrowserPluginEmbedder()); 506 GetBrowserPluginEmbedder());
504 // Verify we have a no embedder in web_contents (since the new page doesn't 507 // Verify we have a no embedder in web_contents (since the new page doesn't
505 // have any browser plugin). 508 // have any browser plugin).
506 ASSERT_TRUE(!test_embedder_after_swap); 509 ASSERT_TRUE(!test_embedder_after_swap);
507 ASSERT_NE(test_embedder(), test_embedder_after_swap); 510 ASSERT_NE(test_embedder(), test_embedder_after_swap);
508 } 511 }
509 512
510 // This test opens two pages in http and there is no RenderViewHost swap, 513 // This test opens two pages in http and there is no RenderViewHost swap,
511 // therefore the embedder created on first page navigation stays the same in 514 // therefore the embedder created on first page navigation stays the same in
512 // web_contents. 515 // web_contents.
513 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, EmbedderSameAfterNav) { 516 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, EmbedderSameAfterNav) {
514 const char kEmbedderURL[] = "files/browser_plugin_embedder.html"; 517 const char kEmbedderURL[] = "/browser_plugin_embedder.html";
515 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuest, true, std::string()); 518 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuest, true, std::string());
516 WebContentsImpl* embedder_web_contents = test_embedder()->web_contents(); 519 WebContentsImpl* embedder_web_contents = test_embedder()->web_contents();
517 520
518 // Navigate to another page in same host and port, so RenderViewHost swap 521 // Navigate to another page in same host and port, so RenderViewHost swap
519 // does not happen and existing embedder doesn't change in web_contents. 522 // does not happen and existing embedder doesn't change in web_contents.
520 GURL test_url_new(test_server()->GetURL( 523 GURL test_url_new(embedded_test_server()->GetURL(
521 "files/browser_plugin_title_change.html")); 524 "/browser_plugin_title_change.html"));
522 const string16 expected_title = ASCIIToUTF16("done"); 525 const string16 expected_title = ASCIIToUTF16("done");
523 content::TitleWatcher title_watcher(shell()->web_contents(), expected_title); 526 content::TitleWatcher title_watcher(shell()->web_contents(), expected_title);
524 NavigateToURL(shell(), test_url_new); 527 NavigateToURL(shell(), test_url_new);
525 LOG(INFO) << "Start waiting for title"; 528 LOG(INFO) << "Start waiting for title";
526 string16 actual_title = title_watcher.WaitAndGetTitle(); 529 string16 actual_title = title_watcher.WaitAndGetTitle();
527 EXPECT_EQ(expected_title, actual_title); 530 EXPECT_EQ(expected_title, actual_title);
528 LOG(INFO) << "Done navigating to second page"; 531 LOG(INFO) << "Done navigating to second page";
529 532
530 TestBrowserPluginEmbedder* test_embedder_after_nav = 533 TestBrowserPluginEmbedder* test_embedder_after_nav =
531 static_cast<TestBrowserPluginEmbedder*>( 534 static_cast<TestBrowserPluginEmbedder*>(
532 embedder_web_contents->GetBrowserPluginEmbedder()); 535 embedder_web_contents->GetBrowserPluginEmbedder());
533 // Embedder must not change in web_contents. 536 // Embedder must not change in web_contents.
534 ASSERT_EQ(test_embedder_after_nav, test_embedder()); 537 ASSERT_EQ(test_embedder_after_nav, test_embedder());
535 } 538 }
536 539
537 // This test verifies that hiding the embedder also hides the guest. 540 // This test verifies that hiding the embedder also hides the guest.
538 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, BrowserPluginVisibilityChanged) { 541 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, BrowserPluginVisibilityChanged) {
539 const char kEmbedderURL[] = "files/browser_plugin_embedder.html"; 542 const char kEmbedderURL[] = "/browser_plugin_embedder.html";
540 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuest, true, std::string()); 543 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuest, true, std::string());
541 544
542 // Hide the Browser Plugin. 545 // Hide the Browser Plugin.
543 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 546 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
544 test_embedder()->web_contents()->GetRenderViewHost()); 547 test_embedder()->web_contents()->GetRenderViewHost());
545 ExecuteSyncJSFunction( 548 ExecuteSyncJSFunction(
546 rvh, "document.getElementById('plugin').style.visibility = 'hidden'"); 549 rvh, "document.getElementById('plugin').style.visibility = 'hidden'");
547 550
548 // Make sure that the guest is hidden. 551 // Make sure that the guest is hidden.
549 test_guest()->WaitUntilHidden(); 552 test_guest()->WaitUntilHidden();
550 } 553 }
551 554
552 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, EmbedderVisibilityChanged) { 555 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, EmbedderVisibilityChanged) {
553 const char kEmbedderURL[] = "files/browser_plugin_embedder.html"; 556 const char kEmbedderURL[] = "/browser_plugin_embedder.html";
554 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuest, true, std::string()); 557 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuest, true, std::string());
555 558
556 // Hide the embedder. 559 // Hide the embedder.
557 test_embedder()->web_contents()->WasHidden(); 560 test_embedder()->web_contents()->WasHidden();
558 561
559 // Make sure that hiding the embedder also hides the guest. 562 // Make sure that hiding the embedder also hides the guest.
560 test_guest()->WaitUntilHidden(); 563 test_guest()->WaitUntilHidden();
561 } 564 }
562 565
563 // This test verifies that calling the reload method reloads the guest. 566 // This test verifies that calling the reload method reloads the guest.
564 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, ReloadGuest) { 567 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, ReloadGuest) {
565 const char kEmbedderURL[] = "files/browser_plugin_embedder.html"; 568 const char kEmbedderURL[] = "/browser_plugin_embedder.html";
566 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuest, true, std::string()); 569 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuest, true, std::string());
567 570
568 test_guest()->ResetUpdateRectCount(); 571 test_guest()->ResetUpdateRectCount();
569 572
570 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 573 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
571 test_embedder()->web_contents()->GetRenderViewHost()); 574 test_embedder()->web_contents()->GetRenderViewHost());
572 ExecuteSyncJSFunction(rvh, "document.getElementById('plugin').reload()"); 575 ExecuteSyncJSFunction(rvh, "document.getElementById('plugin').reload()");
573 test_guest()->WaitForReload(); 576 test_guest()->WaitForReload();
574 } 577 }
575 578
576 // This test verifies that calling the stop method forwards the stop request 579 // This test verifies that calling the stop method forwards the stop request
577 // to the guest's WebContents. 580 // to the guest's WebContents.
578 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, StopGuest) { 581 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, StopGuest) {
579 const char kEmbedderURL[] = "files/browser_plugin_embedder.html"; 582 const char kEmbedderURL[] = "/browser_plugin_embedder.html";
580 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuest, true, std::string()); 583 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuest, true, std::string());
581 584
582 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 585 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
583 test_embedder()->web_contents()->GetRenderViewHost()); 586 test_embedder()->web_contents()->GetRenderViewHost());
584 ExecuteSyncJSFunction(rvh, "document.getElementById('plugin').stop()"); 587 ExecuteSyncJSFunction(rvh, "document.getElementById('plugin').stop()");
585 test_guest()->WaitForStop(); 588 test_guest()->WaitForStop();
586 } 589 }
587 590
588 // Verifies that installing/uninstalling touch-event handlers in the guest 591 // Verifies that installing/uninstalling touch-event handlers in the guest
589 // plugin correctly updates the touch-event handling state in the embedder. 592 // plugin correctly updates the touch-event handling state in the embedder.
590 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, AcceptTouchEvents) { 593 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, AcceptTouchEvents) {
591 const char kEmbedderURL[] = "files/browser_plugin_embedder.html"; 594 const char kEmbedderURL[] = "/browser_plugin_embedder.html";
592 StartBrowserPluginTest( 595 StartBrowserPluginTest(
593 kEmbedderURL, kHTMLForGuestTouchHandler, true, std::string()); 596 kEmbedderURL, kHTMLForGuestTouchHandler, true, std::string());
594 597
595 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 598 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
596 test_embedder()->web_contents()->GetRenderViewHost()); 599 test_embedder()->web_contents()->GetRenderViewHost());
597 // The embedder should not have any touch event handlers at this point. 600 // The embedder should not have any touch event handlers at this point.
598 EXPECT_FALSE(rvh->has_touch_handler()); 601 EXPECT_FALSE(rvh->has_touch_handler());
599 602
600 // Install the touch handler in the guest. This should cause the embedder to 603 // Install the touch handler in the guest. This should cause the embedder to
601 // start listening for touch events too. 604 // start listening for touch events too.
602 RenderViewHostMessageObserver observer(rvh, 605 RenderViewHostMessageObserver observer(rvh,
603 ViewHostMsg_HasTouchEventHandlers::ID); 606 ViewHostMsg_HasTouchEventHandlers::ID);
604 ExecuteSyncJSFunction(test_guest()->web_contents()->GetRenderViewHost(), 607 ExecuteSyncJSFunction(test_guest()->web_contents()->GetRenderViewHost(),
605 "InstallTouchHandler();"); 608 "InstallTouchHandler();");
606 observer.WaitUntilMessageReceived(); 609 observer.WaitUntilMessageReceived();
607 EXPECT_TRUE(rvh->has_touch_handler()); 610 EXPECT_TRUE(rvh->has_touch_handler());
608 611
609 // Uninstalling the touch-handler in guest should cause the embedder to stop 612 // Uninstalling the touch-handler in guest should cause the embedder to stop
610 // listening for touch events. 613 // listening for touch events.
611 observer.ResetState(); 614 observer.ResetState();
612 ExecuteSyncJSFunction(test_guest()->web_contents()->GetRenderViewHost(), 615 ExecuteSyncJSFunction(test_guest()->web_contents()->GetRenderViewHost(),
613 "UninstallTouchHandler();"); 616 "UninstallTouchHandler();");
614 observer.WaitUntilMessageReceived(); 617 observer.WaitUntilMessageReceived();
615 EXPECT_FALSE(rvh->has_touch_handler()); 618 EXPECT_FALSE(rvh->has_touch_handler());
616 } 619 }
617 620
618 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, Renavigate) { 621 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, Renavigate) {
619 const char kEmbedderURL[] = "files/browser_plugin_embedder.html"; 622 const char kEmbedderURL[] = "/browser_plugin_embedder.html";
620 StartBrowserPluginTest( 623 StartBrowserPluginTest(
621 kEmbedderURL, GetHTMLForGuestWithTitle("P1"), true, std::string()); 624 kEmbedderURL, GetHTMLForGuestWithTitle("P1"), true, std::string());
622 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 625 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
623 test_embedder()->web_contents()->GetRenderViewHost()); 626 test_embedder()->web_contents()->GetRenderViewHost());
624 627
625 // Navigate to P2 and verify that the navigation occurred. 628 // Navigate to P2 and verify that the navigation occurred.
626 { 629 {
627 const string16 expected_title = ASCIIToUTF16("P2"); 630 const string16 expected_title = ASCIIToUTF16("P2");
628 content::TitleWatcher title_watcher(test_guest()->web_contents(), 631 content::TitleWatcher title_watcher(test_guest()->web_contents(),
629 expected_title); 632 expected_title);
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
705 content::ExecuteScriptAndGetValue(rvh, "CanGoBack()"); 708 content::ExecuteScriptAndGetValue(rvh, "CanGoBack()");
706 bool result = true; 709 bool result = true;
707 ASSERT_TRUE(value->GetAsBoolean(&result)); 710 ASSERT_TRUE(value->GetAsBoolean(&result));
708 EXPECT_FALSE(result); 711 EXPECT_FALSE(result);
709 } 712 }
710 } 713 }
711 714
712 // This tests verifies that reloading the embedder does not crash the browser 715 // This tests verifies that reloading the embedder does not crash the browser
713 // and that the guest is reset. 716 // and that the guest is reset.
714 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, ReloadEmbedder) { 717 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, ReloadEmbedder) {
715 const char kEmbedderURL[] = "files/browser_plugin_embedder.html"; 718 const char kEmbedderURL[] = "/browser_plugin_embedder.html";
716 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuest, true, std::string()); 719 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuest, true, std::string());
717 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 720 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
718 test_embedder()->web_contents()->GetRenderViewHost()); 721 test_embedder()->web_contents()->GetRenderViewHost());
719 722
720 // Change the title of the page to 'modified' so that we know that 723 // Change the title of the page to 'modified' so that we know that
721 // the page has successfully reloaded when it goes back to 'embedder' 724 // the page has successfully reloaded when it goes back to 'embedder'
722 // in the next step. 725 // in the next step.
723 { 726 {
724 const string16 expected_title = ASCIIToUTF16("modified"); 727 const string16 expected_title = ASCIIToUTF16("modified");
725 content::TitleWatcher title_watcher(test_embedder()->web_contents(), 728 content::TitleWatcher title_watcher(test_embedder()->web_contents(),
(...skipping 30 matching lines...) Expand all
756 static_cast<TestBrowserPluginGuest*>( 759 static_cast<TestBrowserPluginGuest*>(
757 test_guest_web_contents->GetBrowserPluginGuest()); 760 test_guest_web_contents->GetBrowserPluginGuest());
758 ASSERT_TRUE(new_test_guest != NULL); 761 ASSERT_TRUE(new_test_guest != NULL);
759 762
760 // Wait for the guest to send an UpdateRectMsg, meaning it is ready. 763 // Wait for the guest to send an UpdateRectMsg, meaning it is ready.
761 new_test_guest->WaitForUpdateRectMsg(); 764 new_test_guest->WaitForUpdateRectMsg();
762 } 765 }
763 } 766 }
764 767
765 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, TerminateGuest) { 768 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, TerminateGuest) {
766 const char kEmbedderURL[] = "files/browser_plugin_embedder.html"; 769 const char kEmbedderURL[] = "/browser_plugin_embedder.html";
767 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuest, true, std::string()); 770 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuest, true, std::string());
768 771
769 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 772 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
770 test_embedder()->web_contents()->GetRenderViewHost()); 773 test_embedder()->web_contents()->GetRenderViewHost());
771 ExecuteSyncJSFunction(rvh, "document.getElementById('plugin').terminate()"); 774 ExecuteSyncJSFunction(rvh, "document.getElementById('plugin').terminate()");
772 775
773 // Expect the guest to crash. 776 // Expect the guest to crash.
774 test_guest()->WaitForExit(); 777 test_guest()->WaitForExit();
775 } 778 }
776 779
777 // This test verifies that the guest is responsive after crashing and going back 780 // This test verifies that the guest is responsive after crashing and going back
778 // to a previous navigation entry. 781 // to a previous navigation entry.
779 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, BackAfterTerminateGuest) { 782 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, BackAfterTerminateGuest) {
780 const char* kEmbedderURL = "files/browser_plugin_embedder.html"; 783 const char* kEmbedderURL = "/browser_plugin_embedder.html";
781 StartBrowserPluginTest( 784 StartBrowserPluginTest(
782 kEmbedderURL, GetHTMLForGuestWithTitle("P1"), true, std::string()); 785 kEmbedderURL, GetHTMLForGuestWithTitle("P1"), true, std::string());
783 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 786 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
784 test_embedder()->web_contents()->GetRenderViewHost()); 787 test_embedder()->web_contents()->GetRenderViewHost());
785 788
786 // Navigate to P2 and verify that the navigation occurred. 789 // Navigate to P2 and verify that the navigation occurred.
787 { 790 {
788 const string16 expected_title = ASCIIToUTF16("P2"); 791 const string16 expected_title = ASCIIToUTF16("P2");
789 content::TitleWatcher title_watcher(test_guest()->web_contents(), 792 content::TitleWatcher title_watcher(test_guest()->web_contents(),
790 expected_title); 793 expected_title);
(...skipping 22 matching lines...) Expand all
813 string16 actual_title = title_watcher.WaitAndGetTitle(); 816 string16 actual_title = title_watcher.WaitAndGetTitle();
814 EXPECT_EQ(expected_title, actual_title); 817 EXPECT_EQ(expected_title, actual_title);
815 } 818 }
816 // Send an input event and verify that the guest receives the input. 819 // Send an input event and verify that the guest receives the input.
817 SimulateMouseClick(test_embedder()->web_contents(), 0, 820 SimulateMouseClick(test_embedder()->web_contents(), 0,
818 WebKit::WebMouseEvent::ButtonLeft); 821 WebKit::WebMouseEvent::ButtonLeft);
819 test_guest()->WaitForInput(); 822 test_guest()->WaitForInput();
820 } 823 }
821 824
822 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, LoadStart) { 825 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, LoadStart) {
823 const char kEmbedderURL[] = "files/browser_plugin_embedder.html"; 826 const char kEmbedderURL[] = "/browser_plugin_embedder.html";
824 StartBrowserPluginTest(kEmbedderURL, "about:blank", true, std::string()); 827 StartBrowserPluginTest(kEmbedderURL, "about:blank", true, std::string());
825 828
826 const string16 expected_title = ASCIIToUTF16(kHTMLForGuest); 829 const string16 expected_title = ASCIIToUTF16(kHTMLForGuest);
827 content::TitleWatcher title_watcher(test_embedder()->web_contents(), 830 content::TitleWatcher title_watcher(test_embedder()->web_contents(),
828 expected_title); 831 expected_title);
829 // Renavigate the guest to |kHTMLForGuest|. 832 // Renavigate the guest to |kHTMLForGuest|.
830 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 833 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
831 test_embedder()->web_contents()->GetRenderViewHost()); 834 test_embedder()->web_contents()->GetRenderViewHost());
832 ExecuteSyncJSFunction(rvh, 835 ExecuteSyncJSFunction(rvh,
833 base::StringPrintf("SetSrc('%s');", kHTMLForGuest)); 836 base::StringPrintf("SetSrc('%s');", kHTMLForGuest));
834 837
835 string16 actual_title = title_watcher.WaitAndGetTitle(); 838 string16 actual_title = title_watcher.WaitAndGetTitle();
836 EXPECT_EQ(expected_title, actual_title); 839 EXPECT_EQ(expected_title, actual_title);
837 } 840 }
838 841
842 namespace {
843
844 class EmptyHttpResponse : public net::test_server::HttpResponse {
845 public:
846 virtual std::string ToResponseString() const OVERRIDE {
847 return std::string();
848 }
849 };
850
851 // Handles |request| by serving an empty response.
852 scoped_ptr<net::test_server::HttpResponse> EmptyResponseHandler(
853 const std::string& path,
854 const net::test_server::HttpRequest& request) {
855 if (StartsWithASCII(path, request.relative_url, true)) {
856 return scoped_ptr<net::test_server::HttpResponse>(
857 new EmptyHttpResponse);
858 }
859
860 return scoped_ptr<net::test_server::HttpResponse>(NULL);
861 }
862
863 // Handles |request| by serving a redirect response.
864 scoped_ptr<net::test_server::HttpResponse> RedirectResponseHandler(
865 const std::string& path,
866 const GURL& redirect_target,
867 const net::test_server::HttpRequest& request) {
868 if (!StartsWithASCII(path, request.relative_url, true))
869 return scoped_ptr<net::test_server::HttpResponse>(NULL);
870
871 scoped_ptr<net::test_server::BasicHttpResponse> http_response(
872 new net::test_server::BasicHttpResponse);
873 http_response->set_code(net::test_server::MOVED);
874 http_response->AddCustomHeader("Location", redirect_target.spec());
875 return http_response.PassAs<net::test_server::HttpResponse>();
876 }
877
878 } // namespace
879
839 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, LoadAbort) { 880 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, LoadAbort) {
840 const char kEmbedderURL[] = "files/browser_plugin_embedder.html"; 881 const char kEmbedderURL[] = "/browser_plugin_embedder.html";
841 StartBrowserPluginTest(kEmbedderURL, "about:blank", true, std::string()); 882 StartBrowserPluginTest(kEmbedderURL, "about:blank", true, std::string());
842 883
843 { 884 {
844 // Navigate the guest to "close-socket". 885 // Navigate the guest to "close-socket".
886 const char kEmptyResponsePath[] = "/close-socket";
887 embedded_test_server()->RegisterRequestHandler(
888 base::Bind(&EmptyResponseHandler, kEmptyResponsePath));
845 const string16 expected_title = ASCIIToUTF16("ERR_EMPTY_RESPONSE"); 889 const string16 expected_title = ASCIIToUTF16("ERR_EMPTY_RESPONSE");
846 content::TitleWatcher title_watcher(test_embedder()->web_contents(), 890 content::TitleWatcher title_watcher(test_embedder()->web_contents(),
847 expected_title); 891 expected_title);
848 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 892 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
849 test_embedder()->web_contents()->GetRenderViewHost()); 893 test_embedder()->web_contents()->GetRenderViewHost());
850 GURL test_url = test_server()->GetURL("close-socket"); 894 GURL test_url = embedded_test_server()->GetURL(kEmptyResponsePath);
851 ExecuteSyncJSFunction( 895 ExecuteSyncJSFunction(
852 rvh, base::StringPrintf("SetSrc('%s');", test_url.spec().c_str())); 896 rvh, base::StringPrintf("SetSrc('%s');", test_url.spec().c_str()));
853 string16 actual_title = title_watcher.WaitAndGetTitle(); 897 string16 actual_title = title_watcher.WaitAndGetTitle();
854 EXPECT_EQ(expected_title, actual_title); 898 EXPECT_EQ(expected_title, actual_title);
855 } 899 }
856 900
857 { 901 {
858 // Navigate the guest to an illegal chrome:// URL. 902 // Navigate the guest to an illegal chrome:// URL.
859 GURL test_url("chrome://newtab"); 903 GURL test_url("chrome://newtab");
860 ChildProcessSecurityPolicyImpl* policy = 904 ChildProcessSecurityPolicyImpl* policy =
(...skipping 22 matching lines...) Expand all
883 test_embedder()->web_contents()->GetRenderViewHost()); 927 test_embedder()->web_contents()->GetRenderViewHost());
884 GURL test_url("file://foo"); 928 GURL test_url("file://foo");
885 ExecuteSyncJSFunction( 929 ExecuteSyncJSFunction(
886 rvh, base::StringPrintf("SetSrc('%s');", test_url.spec().c_str())); 930 rvh, base::StringPrintf("SetSrc('%s');", test_url.spec().c_str()));
887 string16 actual_title = title_watcher.WaitAndGetTitle(); 931 string16 actual_title = title_watcher.WaitAndGetTitle();
888 EXPECT_EQ(expected_title, actual_title); 932 EXPECT_EQ(expected_title, actual_title);
889 } 933 }
890 } 934 }
891 935
892 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, LoadRedirect) { 936 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, LoadRedirect) {
893 const char kEmbedderURL[] = "files/browser_plugin_embedder.html"; 937 const char kEmbedderURL[] = "/browser_plugin_embedder.html";
894 StartBrowserPluginTest(kEmbedderURL, "about:blank", true, std::string()); 938 StartBrowserPluginTest(kEmbedderURL, "about:blank", true, std::string());
895 939
896 const string16 expected_title = ASCIIToUTF16("redirected"); 940 const string16 expected_title = ASCIIToUTF16("redirected");
897 content::TitleWatcher title_watcher(test_embedder()->web_contents(), 941 content::TitleWatcher title_watcher(test_embedder()->web_contents(),
898 expected_title); 942 expected_title);
899 943
900 // Navigate with a redirect and wait until the title changes. 944 // Navigate with a redirect and wait until the title changes.
901 GURL redirect_url(test_server()->GetURL( 945 const char kRedirectResponsePath[] = "/server-redirect";
902 "server-redirect?files/title1.html")); 946 embedded_test_server()->RegisterRequestHandler(
947 base::Bind(&RedirectResponseHandler,
948 kRedirectResponsePath,
949 embedded_test_server()->GetURL("/title1.html")));
950 GURL redirect_url(embedded_test_server()->GetURL(kRedirectResponsePath));
903 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 951 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
904 test_embedder()->web_contents()->GetRenderViewHost()); 952 test_embedder()->web_contents()->GetRenderViewHost());
905 ExecuteSyncJSFunction( 953 ExecuteSyncJSFunction(
906 rvh, base::StringPrintf("SetSrc('%s');", redirect_url.spec().c_str())); 954 rvh, base::StringPrintf("SetSrc('%s');", redirect_url.spec().c_str()));
907 955
908 string16 actual_title = title_watcher.WaitAndGetTitle(); 956 string16 actual_title = title_watcher.WaitAndGetTitle();
909 EXPECT_EQ(expected_title, actual_title); 957 EXPECT_EQ(expected_title, actual_title);
910 958
911 // Verify that we heard a loadRedirect during the navigation. 959 // Verify that we heard a loadRedirect during the navigation.
912 scoped_ptr<base::Value> value = 960 scoped_ptr<base::Value> value =
913 content::ExecuteScriptAndGetValue(rvh, "redirectOldUrl"); 961 content::ExecuteScriptAndGetValue(rvh, "redirectOldUrl");
914 std::string result; 962 std::string result;
915 EXPECT_TRUE(value->GetAsString(&result)); 963 EXPECT_TRUE(value->GetAsString(&result));
916 EXPECT_EQ(redirect_url.spec().c_str(), result); 964 EXPECT_EQ(redirect_url.spec().c_str(), result);
917 965
918 value = content::ExecuteScriptAndGetValue(rvh, "redirectNewUrl"); 966 value = content::ExecuteScriptAndGetValue(rvh, "redirectNewUrl");
919 EXPECT_TRUE(value->GetAsString(&result)); 967 EXPECT_TRUE(value->GetAsString(&result));
920 EXPECT_EQ(test_server()->GetURL("files/title1.html").spec().c_str(), result); 968 EXPECT_EQ(embedded_test_server()->GetURL("/title1.html").spec().c_str(),
969 result);
921 } 970 }
922 971
923 // Always failing in the win7_aura try bot. See http://crbug.com/181107. 972 // Always failing in the win7_aura try bot. See http://crbug.com/181107.
924 #if defined(OS_WIN) && defined(USE_AURA) 973 #if defined(OS_WIN) && defined(USE_AURA)
925 #define MAYBE_AcceptDragEvents DISABLED_AcceptDragEvents 974 #define MAYBE_AcceptDragEvents DISABLED_AcceptDragEvents
926 #else 975 #else
927 #define MAYBE_AcceptDragEvents AcceptDragEvents 976 #define MAYBE_AcceptDragEvents AcceptDragEvents
928 #endif 977 #endif
929 978
930 // Tests that a drag-n-drop over the browser plugin in the embedder happens 979 // Tests that a drag-n-drop over the browser plugin in the embedder happens
931 // correctly. 980 // correctly.
932 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, MAYBE_AcceptDragEvents) { 981 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, MAYBE_AcceptDragEvents) {
933 const char kEmbedderURL[] = "files/browser_plugin_dragging.html"; 982 const char kEmbedderURL[] = "/browser_plugin_dragging.html";
934 StartBrowserPluginTest( 983 StartBrowserPluginTest(
935 kEmbedderURL, kHTMLForGuestAcceptDrag, true, std::string()); 984 kEmbedderURL, kHTMLForGuestAcceptDrag, true, std::string());
936 985
937 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 986 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
938 test_embedder()->web_contents()->GetRenderViewHost()); 987 test_embedder()->web_contents()->GetRenderViewHost());
939 988
940 // Get a location in the embedder outside of the plugin. 989 // Get a location in the embedder outside of the plugin.
941 base::ListValue *start, *end; 990 base::ListValue *start, *end;
942 scoped_ptr<base::Value> value = 991 scoped_ptr<base::Value> value =
943 content::ExecuteScriptAndGetValue(rvh, "dragLocation()"); 992 content::ExecuteScriptAndGetValue(rvh, "dragLocation()");
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
979 // 2. The guest receives and replies to the message using the event object's 1028 // 2. The guest receives and replies to the message using the event object's
980 // source object: event.source.postMessage('foobar', '*') 1029 // source object: event.source.postMessage('foobar', '*')
981 // 3. The embedder receives the message and uses the event's source 1030 // 3. The embedder receives the message and uses the event's source
982 // object to do one final reply: 'stop' 1031 // object to do one final reply: 'stop'
983 // 4. The guest receives the final 'stop' message. 1032 // 4. The guest receives the final 'stop' message.
984 // 5. The guest acks the 'stop' message with a 'stop_ack' message. 1033 // 5. The guest acks the 'stop' message with a 'stop_ack' message.
985 // 6. The embedder changes its title to 'main guest' when it sees the 'stop_ack' 1034 // 6. The embedder changes its title to 'main guest' when it sees the 'stop_ack'
986 // message. 1035 // message.
987 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, PostMessage) { 1036 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, PostMessage) {
988 const char* kTesting = "testing123"; 1037 const char* kTesting = "testing123";
989 const char* kEmbedderURL = "files/browser_plugin_embedder.html"; 1038 const char* kEmbedderURL = "/browser_plugin_embedder.html";
990 const char* kGuestURL = "files/browser_plugin_post_message_guest.html"; 1039 const char* kGuestURL = "/browser_plugin_post_message_guest.html";
991 StartBrowserPluginTest(kEmbedderURL, kGuestURL, false, std::string()); 1040 StartBrowserPluginTest(kEmbedderURL, kGuestURL, false, std::string());
992 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 1041 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
993 test_embedder()->web_contents()->GetRenderViewHost()); 1042 test_embedder()->web_contents()->GetRenderViewHost());
994 { 1043 {
995 const string16 expected_title = ASCIIToUTF16("main guest"); 1044 const string16 expected_title = ASCIIToUTF16("main guest");
996 content::TitleWatcher title_watcher(test_embedder()->web_contents(), 1045 content::TitleWatcher title_watcher(test_embedder()->web_contents(),
997 expected_title); 1046 expected_title);
998 1047
999 // By the time we get here 'contentWindow' should be ready because the 1048 // By the time we get here 'contentWindow' should be ready because the
1000 // guest has completed loading. 1049 // guest has completed loading.
1001 ExecuteSyncJSFunction( 1050 ExecuteSyncJSFunction(
1002 rvh, base::StringPrintf("PostMessage('%s, false');", kTesting)); 1051 rvh, base::StringPrintf("PostMessage('%s, false');", kTesting));
1003 1052
1004 // The title will be updated to "main guest" at the last stage of the 1053 // The title will be updated to "main guest" at the last stage of the
1005 // process described above. 1054 // process described above.
1006 string16 actual_title = title_watcher.WaitAndGetTitle(); 1055 string16 actual_title = title_watcher.WaitAndGetTitle();
1007 EXPECT_EQ(expected_title, actual_title); 1056 EXPECT_EQ(expected_title, actual_title);
1008 } 1057 }
1009 } 1058 }
1010 1059
1011 // This is the same as BrowserPluginHostTest.PostMessage but also 1060 // This is the same as BrowserPluginHostTest.PostMessage but also
1012 // posts a message to an iframe. 1061 // posts a message to an iframe.
1013 // TODO(fsamuel): This test should replace the previous test once postMessage 1062 // TODO(fsamuel): This test should replace the previous test once postMessage
1014 // iframe targeting is fixed (see http://crbug.com/153701). 1063 // iframe targeting is fixed (see http://crbug.com/153701).
1015 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, DISABLED_PostMessageToIFrame) { 1064 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, DISABLED_PostMessageToIFrame) {
1016 const char* kTesting = "testing123"; 1065 const char* kTesting = "testing123";
1017 const char* kEmbedderURL = "files/browser_plugin_embedder.html"; 1066 const char* kEmbedderURL = "/browser_plugin_embedder.html";
1018 const char* kGuestURL = "files/browser_plugin_post_message_guest.html"; 1067 const char* kGuestURL = "/browser_plugin_post_message_guest.html";
1019 StartBrowserPluginTest(kEmbedderURL, kGuestURL, false, std::string()); 1068 StartBrowserPluginTest(kEmbedderURL, kGuestURL, false, std::string());
1020 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 1069 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
1021 test_embedder()->web_contents()->GetRenderViewHost()); 1070 test_embedder()->web_contents()->GetRenderViewHost());
1022 { 1071 {
1023 const string16 expected_title = ASCIIToUTF16("main guest"); 1072 const string16 expected_title = ASCIIToUTF16("main guest");
1024 content::TitleWatcher title_watcher(test_embedder()->web_contents(), 1073 content::TitleWatcher title_watcher(test_embedder()->web_contents(),
1025 expected_title); 1074 expected_title);
1026 1075
1027 ExecuteSyncJSFunction( 1076 ExecuteSyncJSFunction(
1028 rvh, base::StringPrintf("PostMessage('%s, false');", kTesting)); 1077 rvh, base::StringPrintf("PostMessage('%s, false');", kTesting));
1029 1078
1030 // The title will be updated to "main guest" at the last stage of the 1079 // The title will be updated to "main guest" at the last stage of the
1031 // process described above. 1080 // process described above.
1032 string16 actual_title = title_watcher.WaitAndGetTitle(); 1081 string16 actual_title = title_watcher.WaitAndGetTitle();
1033 EXPECT_EQ(expected_title, actual_title); 1082 EXPECT_EQ(expected_title, actual_title);
1034 } 1083 }
1035 { 1084 {
1036 content::TitleWatcher ready_watcher(test_embedder()->web_contents(), 1085 content::TitleWatcher ready_watcher(test_embedder()->web_contents(),
1037 ASCIIToUTF16("ready")); 1086 ASCIIToUTF16("ready"));
1038 1087
1039 RenderViewHostImpl* guest_rvh = static_cast<RenderViewHostImpl*>( 1088 RenderViewHostImpl* guest_rvh = static_cast<RenderViewHostImpl*>(
1040 test_guest()->web_contents()->GetRenderViewHost()); 1089 test_guest()->web_contents()->GetRenderViewHost());
1041 GURL test_url = test_server()->GetURL( 1090 GURL test_url = embedded_test_server()->GetURL(
1042 "files/browser_plugin_post_message_guest.html"); 1091 "/browser_plugin_post_message_guest.html");
1043 ExecuteSyncJSFunction( 1092 ExecuteSyncJSFunction(
1044 guest_rvh, 1093 guest_rvh,
1045 base::StringPrintf( 1094 base::StringPrintf(
1046 "CreateChildFrame('%s');", test_url.spec().c_str())); 1095 "CreateChildFrame('%s');", test_url.spec().c_str()));
1047 1096
1048 string16 actual_title = ready_watcher.WaitAndGetTitle(); 1097 string16 actual_title = ready_watcher.WaitAndGetTitle();
1049 EXPECT_EQ(ASCIIToUTF16("ready"), actual_title); 1098 EXPECT_EQ(ASCIIToUTF16("ready"), actual_title);
1050 1099
1051 content::TitleWatcher iframe_watcher(test_embedder()->web_contents(), 1100 content::TitleWatcher iframe_watcher(test_embedder()->web_contents(),
1052 ASCIIToUTF16("iframe")); 1101 ASCIIToUTF16("iframe"));
1053 ExecuteSyncJSFunction( 1102 ExecuteSyncJSFunction(
1054 rvh, base::StringPrintf("PostMessage('%s', true);", kTesting)); 1103 rvh, base::StringPrintf("PostMessage('%s', true);", kTesting));
1055 1104
1056 // The title will be updated to "iframe" at the last stage of the 1105 // The title will be updated to "iframe" at the last stage of the
1057 // process described above. 1106 // process described above.
1058 actual_title = iframe_watcher.WaitAndGetTitle(); 1107 actual_title = iframe_watcher.WaitAndGetTitle();
1059 EXPECT_EQ(ASCIIToUTF16("iframe"), actual_title); 1108 EXPECT_EQ(ASCIIToUTF16("iframe"), actual_title);
1060 } 1109 }
1061 } 1110 }
1062 1111
1063 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, LoadStop) { 1112 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, LoadStop) {
1064 const char* kEmbedderURL = "files/browser_plugin_embedder.html"; 1113 const char* kEmbedderURL = "/browser_plugin_embedder.html";
1065 StartBrowserPluginTest(kEmbedderURL, "about:blank", true, std::string()); 1114 StartBrowserPluginTest(kEmbedderURL, "about:blank", true, std::string());
1066 1115
1067 const string16 expected_title = ASCIIToUTF16("loadStop"); 1116 const string16 expected_title = ASCIIToUTF16("loadStop");
1068 content::TitleWatcher title_watcher( 1117 content::TitleWatcher title_watcher(
1069 test_embedder()->web_contents(), expected_title); 1118 test_embedder()->web_contents(), expected_title);
1070 // Renavigate the guest to |kHTMLForGuest|. 1119 // Renavigate the guest to |kHTMLForGuest|.
1071 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 1120 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
1072 test_embedder()->web_contents()->GetRenderViewHost()); 1121 test_embedder()->web_contents()->GetRenderViewHost());
1073 ExecuteSyncJSFunction(rvh, 1122 ExecuteSyncJSFunction(rvh,
1074 base::StringPrintf("SetSrc('%s');", kHTMLForGuest)); 1123 base::StringPrintf("SetSrc('%s');", kHTMLForGuest));
1075 1124
1076 string16 actual_title = title_watcher.WaitAndGetTitle(); 1125 string16 actual_title = title_watcher.WaitAndGetTitle();
1077 EXPECT_EQ(expected_title, actual_title); 1126 EXPECT_EQ(expected_title, actual_title);
1078 } 1127 }
1079 1128
1080 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, LoadCommit) { 1129 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, LoadCommit) {
1081 const char* kEmbedderURL = "files/browser_plugin_embedder.html"; 1130 const char* kEmbedderURL = "/browser_plugin_embedder.html";
1082 StartBrowserPluginTest(kEmbedderURL, "about:blank", true, std::string()); 1131 StartBrowserPluginTest(kEmbedderURL, "about:blank", true, std::string());
1083 1132
1084 const string16 expected_title = ASCIIToUTF16( 1133 const string16 expected_title = ASCIIToUTF16(
1085 base::StringPrintf("loadCommit:%s", kHTMLForGuest)); 1134 base::StringPrintf("loadCommit:%s", kHTMLForGuest));
1086 content::TitleWatcher title_watcher( 1135 content::TitleWatcher title_watcher(
1087 test_embedder()->web_contents(), expected_title); 1136 test_embedder()->web_contents(), expected_title);
1088 // Renavigate the guest to |kHTMLForGuest|. 1137 // Renavigate the guest to |kHTMLForGuest|.
1089 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 1138 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
1090 test_embedder()->web_contents()->GetRenderViewHost()); 1139 test_embedder()->web_contents()->GetRenderViewHost());
1091 ExecuteSyncJSFunction(rvh, 1140 ExecuteSyncJSFunction(rvh,
1092 base::StringPrintf("SetSrc('%s');", kHTMLForGuest)); 1141 base::StringPrintf("SetSrc('%s');", kHTMLForGuest));
1093 1142
1094 string16 actual_title = title_watcher.WaitAndGetTitle(); 1143 string16 actual_title = title_watcher.WaitAndGetTitle();
1095 EXPECT_EQ(expected_title, actual_title); 1144 EXPECT_EQ(expected_title, actual_title);
1096 scoped_ptr<base::Value> is_top_level = 1145 scoped_ptr<base::Value> is_top_level =
1097 content::ExecuteScriptAndGetValue(rvh, "commitIsTopLevel"); 1146 content::ExecuteScriptAndGetValue(rvh, "commitIsTopLevel");
1098 bool top_level_bool = false; 1147 bool top_level_bool = false;
1099 EXPECT_TRUE(is_top_level->GetAsBoolean(&top_level_bool)); 1148 EXPECT_TRUE(is_top_level->GetAsBoolean(&top_level_bool));
1100 EXPECT_EQ(true, top_level_bool); 1149 EXPECT_EQ(true, top_level_bool);
1101 } 1150 }
1102 1151
1103 // This test verifies that if a browser plugin is hidden before navigation, 1152 // This test verifies that if a browser plugin is hidden before navigation,
1104 // the guest starts off hidden. 1153 // the guest starts off hidden.
1105 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, HiddenBeforeNavigation) { 1154 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, HiddenBeforeNavigation) {
1106 const char* kEmbedderURL = "files/browser_plugin_embedder.html"; 1155 const char* kEmbedderURL = "/browser_plugin_embedder.html";
1107 const std::string embedder_code = 1156 const std::string embedder_code =
1108 "document.getElementById('plugin').style.visibility = 'hidden'"; 1157 "document.getElementById('plugin').style.visibility = 'hidden'";
1109 StartBrowserPluginTest( 1158 StartBrowserPluginTest(
1110 kEmbedderURL, kHTMLForGuest, true, embedder_code); 1159 kEmbedderURL, kHTMLForGuest, true, embedder_code);
1111 EXPECT_FALSE(test_guest()->visible()); 1160 EXPECT_FALSE(test_guest()->visible());
1112 } 1161 }
1113 1162
1114 // This test verifies that if we lose the guest, and get a new one, 1163 // This test verifies that if we lose the guest, and get a new one,
1115 // the new guest will inherit the visibility state of the old guest. 1164 // the new guest will inherit the visibility state of the old guest.
1116 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, VisibilityPreservation) { 1165 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, VisibilityPreservation) {
1117 const char* kEmbedderURL = "files/browser_plugin_embedder.html"; 1166 const char* kEmbedderURL = "/browser_plugin_embedder.html";
1118 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuest, true, std::string()); 1167 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuest, true, std::string());
1119 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 1168 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
1120 test_embedder()->web_contents()->GetRenderViewHost()); 1169 test_embedder()->web_contents()->GetRenderViewHost());
1121 // Hide the BrowserPlugin. 1170 // Hide the BrowserPlugin.
1122 ExecuteSyncJSFunction( 1171 ExecuteSyncJSFunction(
1123 rvh, "document.getElementById('plugin').style.visibility = 'hidden';"); 1172 rvh, "document.getElementById('plugin').style.visibility = 'hidden';");
1124 test_guest()->WaitUntilHidden(); 1173 test_guest()->WaitUntilHidden();
1125 // Kill the current guest. 1174 // Kill the current guest.
1126 ExecuteSyncJSFunction(rvh, "document.getElementById('plugin').terminate();"); 1175 ExecuteSyncJSFunction(rvh, "document.getElementById('plugin').terminate();");
1127 test_guest()->WaitForExit(); 1176 test_guest()->WaitForExit();
1128 // Get a new guest. 1177 // Get a new guest.
1129 ExecuteSyncJSFunction(rvh, "document.getElementById('plugin').reload();"); 1178 ExecuteSyncJSFunction(rvh, "document.getElementById('plugin').reload();");
1130 test_guest()->WaitForLoadStop(); 1179 test_guest()->WaitForLoadStop();
1131 // Verify that the guest is told to hide. 1180 // Verify that the guest is told to hide.
1132 test_guest()->WaitUntilHidden(); 1181 test_guest()->WaitUntilHidden();
1133 } 1182 }
1134 1183
1135 // This test verifies that if a browser plugin is focused before navigation then 1184 // This test verifies that if a browser plugin is focused before navigation then
1136 // the guest starts off focused. 1185 // the guest starts off focused.
1137 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, FocusBeforeNavigation) { 1186 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, FocusBeforeNavigation) {
1138 const char* kEmbedderURL = "files/browser_plugin_embedder.html"; 1187 const char* kEmbedderURL = "/browser_plugin_embedder.html";
1139 const std::string embedder_code = 1188 const std::string embedder_code =
1140 "document.getElementById('plugin').focus();"; 1189 "document.getElementById('plugin').focus();";
1141 StartBrowserPluginTest( 1190 StartBrowserPluginTest(
1142 kEmbedderURL, kHTMLForGuest, true, embedder_code); 1191 kEmbedderURL, kHTMLForGuest, true, embedder_code);
1143 RenderViewHostImpl* guest_rvh = static_cast<RenderViewHostImpl*>( 1192 RenderViewHostImpl* guest_rvh = static_cast<RenderViewHostImpl*>(
1144 test_guest()->web_contents()->GetRenderViewHost()); 1193 test_guest()->web_contents()->GetRenderViewHost());
1145 // Verify that the guest is focused. 1194 // Verify that the guest is focused.
1146 scoped_ptr<base::Value> value = 1195 scoped_ptr<base::Value> value =
1147 content::ExecuteScriptAndGetValue(guest_rvh, "document.hasFocus()"); 1196 content::ExecuteScriptAndGetValue(guest_rvh, "document.hasFocus()");
1148 bool result = false; 1197 bool result = false;
1149 ASSERT_TRUE(value->GetAsBoolean(&result)); 1198 ASSERT_TRUE(value->GetAsBoolean(&result));
1150 EXPECT_TRUE(result); 1199 EXPECT_TRUE(result);
1151 } 1200 }
1152 1201
1153 // This test verifies that if we lose the guest, and get a new one, 1202 // This test verifies that if we lose the guest, and get a new one,
1154 // the new guest will inherit the focus state of the old guest. 1203 // the new guest will inherit the focus state of the old guest.
1155 // crbug.com/170249 1204 // crbug.com/170249
1156 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, DISABLED_FocusPreservation) { 1205 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, DISABLED_FocusPreservation) {
1157 const char* kEmbedderURL = "files/browser_plugin_embedder.html"; 1206 const char* kEmbedderURL = "/browser_plugin_embedder.html";
1158 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuest, true, std::string()); 1207 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuest, true, std::string());
1159 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 1208 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
1160 test_embedder()->web_contents()->GetRenderViewHost()); 1209 test_embedder()->web_contents()->GetRenderViewHost());
1161 RenderViewHostImpl* guest_rvh = static_cast<RenderViewHostImpl*>( 1210 RenderViewHostImpl* guest_rvh = static_cast<RenderViewHostImpl*>(
1162 test_guest()->web_contents()->GetRenderViewHost()); 1211 test_guest()->web_contents()->GetRenderViewHost());
1163 { 1212 {
1164 // Focus the BrowserPlugin. This will have the effect of also focusing the 1213 // Focus the BrowserPlugin. This will have the effect of also focusing the
1165 // current guest. 1214 // current guest.
1166 ExecuteSyncJSFunction(rvh, "document.getElementById('plugin').focus();"); 1215 ExecuteSyncJSFunction(rvh, "document.getElementById('plugin').focus();");
1167 // Verify that key presses go to the guest. 1216 // Verify that key presses go to the guest.
(...skipping 18 matching lines...) Expand all
1186 // Verify that the guest is focused. 1235 // Verify that the guest is focused.
1187 scoped_ptr<base::Value> value = 1236 scoped_ptr<base::Value> value =
1188 content::ExecuteScriptAndGetValue(guest_rvh, "document.hasFocus()"); 1237 content::ExecuteScriptAndGetValue(guest_rvh, "document.hasFocus()");
1189 bool result = false; 1238 bool result = false;
1190 ASSERT_TRUE(value->GetAsBoolean(&result)); 1239 ASSERT_TRUE(value->GetAsBoolean(&result));
1191 EXPECT_TRUE(result); 1240 EXPECT_TRUE(result);
1192 } 1241 }
1193 } 1242 }
1194 1243
1195 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, FocusTracksEmbedder) { 1244 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, FocusTracksEmbedder) {
1196 const char* kEmbedderURL = "files/browser_plugin_embedder.html"; 1245 const char* kEmbedderURL = "/browser_plugin_embedder.html";
1197 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuest, true, std::string()); 1246 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuest, true, std::string());
1198 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 1247 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
1199 test_embedder()->web_contents()->GetRenderViewHost()); 1248 test_embedder()->web_contents()->GetRenderViewHost());
1200 RenderViewHostImpl* guest_rvh = static_cast<RenderViewHostImpl*>( 1249 RenderViewHostImpl* guest_rvh = static_cast<RenderViewHostImpl*>(
1201 test_guest()->web_contents()->GetRenderViewHost()); 1250 test_guest()->web_contents()->GetRenderViewHost());
1202 { 1251 {
1203 // Focus the BrowserPlugin. This will have the effect of also focusing the 1252 // Focus the BrowserPlugin. This will have the effect of also focusing the
1204 // current guest. 1253 // current guest.
1205 ExecuteSyncJSFunction(rvh, "document.getElementById('plugin').focus();"); 1254 ExecuteSyncJSFunction(rvh, "document.getElementById('plugin').focus();");
1206 // Verify that key presses go to the guest. 1255 // Verify that key presses go to the guest.
1207 SimulateSpaceKeyPress(test_embedder()->web_contents()); 1256 SimulateSpaceKeyPress(test_embedder()->web_contents());
1208 test_guest()->WaitForInput(); 1257 test_guest()->WaitForInput();
1209 // Verify that the guest is focused. 1258 // Verify that the guest is focused.
1210 scoped_ptr<base::Value> value = 1259 scoped_ptr<base::Value> value =
1211 content::ExecuteScriptAndGetValue(guest_rvh, "document.hasFocus()"); 1260 content::ExecuteScriptAndGetValue(guest_rvh, "document.hasFocus()");
1212 bool result = false; 1261 bool result = false;
1213 ASSERT_TRUE(value->GetAsBoolean(&result)); 1262 ASSERT_TRUE(value->GetAsBoolean(&result));
1214 EXPECT_TRUE(result); 1263 EXPECT_TRUE(result);
1215 } 1264 }
1216 // Blur the embedder. 1265 // Blur the embedder.
1217 test_embedder()->web_contents()->GetRenderViewHost()->Blur(); 1266 test_embedder()->web_contents()->GetRenderViewHost()->Blur();
1218 test_guest()->WaitForBlur(); 1267 test_guest()->WaitForBlur();
1219 } 1268 }
1220 1269
1221 // This test verifies that if a browser plugin is in autosize mode before 1270 // This test verifies that if a browser plugin is in autosize mode before
1222 // navigation then the guest starts auto-sized. 1271 // navigation then the guest starts auto-sized.
1223 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, AutoSizeBeforeNavigation) { 1272 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, AutoSizeBeforeNavigation) {
1224 const char* kEmbedderURL = "files/browser_plugin_embedder.html"; 1273 const char* kEmbedderURL = "/browser_plugin_embedder.html";
1225 const std::string embedder_code = 1274 const std::string embedder_code =
1226 "document.getElementById('plugin').minwidth = 300;" 1275 "document.getElementById('plugin').minwidth = 300;"
1227 "document.getElementById('plugin').minheight = 200;" 1276 "document.getElementById('plugin').minheight = 200;"
1228 "document.getElementById('plugin').maxwidth = 600;" 1277 "document.getElementById('plugin').maxwidth = 600;"
1229 "document.getElementById('plugin').maxheight = 400;" 1278 "document.getElementById('plugin').maxheight = 400;"
1230 "document.getElementById('plugin').autosize = true;"; 1279 "document.getElementById('plugin').autosize = true;";
1231 StartBrowserPluginTest( 1280 StartBrowserPluginTest(
1232 kEmbedderURL, kHTMLForGuestWithSize, true, embedder_code); 1281 kEmbedderURL, kHTMLForGuestWithSize, true, embedder_code);
1233 // Verify that the guest has been auto-sized. 1282 // Verify that the guest has been auto-sized.
1234 test_guest()->WaitForViewSize(gfx::Size(300, 400)); 1283 test_guest()->WaitForViewSize(gfx::Size(300, 400));
1235 } 1284 }
1236 1285
1237 // This test verifies that enabling autosize resizes the guest and triggers 1286 // This test verifies that enabling autosize resizes the guest and triggers
1238 // a 'sizechanged' event. 1287 // a 'sizechanged' event.
1239 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, AutoSizeAfterNavigation) { 1288 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, AutoSizeAfterNavigation) {
1240 const char* kEmbedderURL = "files/browser_plugin_embedder.html"; 1289 const char* kEmbedderURL = "/browser_plugin_embedder.html";
1241 StartBrowserPluginTest( 1290 StartBrowserPluginTest(
1242 kEmbedderURL, kHTMLForGuestWithSize, true, std::string()); 1291 kEmbedderURL, kHTMLForGuestWithSize, true, std::string());
1243 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 1292 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
1244 test_embedder()->web_contents()->GetRenderViewHost()); 1293 test_embedder()->web_contents()->GetRenderViewHost());
1245 1294
1246 { 1295 {
1247 const string16 expected_title = ASCIIToUTF16("AutoSize(300, 400)"); 1296 const string16 expected_title = ASCIIToUTF16("AutoSize(300, 400)");
1248 content::TitleWatcher title_watcher(test_embedder()->web_contents(), 1297 content::TitleWatcher title_watcher(test_embedder()->web_contents(),
1249 expected_title); 1298 expected_title);
1250 ExecuteSyncJSFunction( 1299 ExecuteSyncJSFunction(
(...skipping 19 matching lines...) Expand all
1270 { 1319 {
1271 // Turn off autoSize and verify that the guest resizes to fit the container. 1320 // Turn off autoSize and verify that the guest resizes to fit the container.
1272 ExecuteSyncJSFunction( 1321 ExecuteSyncJSFunction(
1273 rvh, "document.getElementById('plugin').autosize = null;"); 1322 rvh, "document.getElementById('plugin').autosize = null;");
1274 test_guest()->WaitForViewSize(gfx::Size(640, 480)); 1323 test_guest()->WaitForViewSize(gfx::Size(640, 480));
1275 } 1324 }
1276 } 1325 }
1277 1326
1278 // Test for regression http://crbug.com/162961. 1327 // Test for regression http://crbug.com/162961.
1279 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, GetRenderViewHostAtPositionTest) { 1328 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, GetRenderViewHostAtPositionTest) {
1280 const char kEmbedderURL[] = "files/browser_plugin_embedder.html"; 1329 const char kEmbedderURL[] = "/browser_plugin_embedder.html";
1281 const std::string embedder_code = 1330 const std::string embedder_code =
1282 base::StringPrintf("SetSize(%d, %d);", 100, 100); 1331 base::StringPrintf("SetSize(%d, %d);", 100, 100);
1283 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuestWithSize, true, 1332 StartBrowserPluginTest(kEmbedderURL, kHTMLForGuestWithSize, true,
1284 embedder_code); 1333 embedder_code);
1285 // Check for render view host at position (150, 150) that is outside the 1334 // Check for render view host at position (150, 150) that is outside the
1286 // bounds of our guest, so this would respond with the render view host of the 1335 // bounds of our guest, so this would respond with the render view host of the
1287 // embedder. 1336 // embedder.
1288 test_embedder()->WaitForRenderViewHostAtPosition(150, 150); 1337 test_embedder()->WaitForRenderViewHostAtPosition(150, 150);
1289 ASSERT_EQ(test_embedder()->web_contents()->GetRenderViewHost(), 1338 ASSERT_EQ(test_embedder()->web_contents()->GetRenderViewHost(),
1290 test_embedder()->last_rvh_at_position_response()); 1339 test_embedder()->last_rvh_at_position_response());
1291 } 1340 }
1292 1341
1293 // Flaky on Win Aura Tests (1) bot. See http://crbug.com/233087. 1342 // Flaky on Win Aura Tests (1) bot. See http://crbug.com/233087.
1294 #if defined(OS_WIN) && defined(USE_AURA) 1343 #if defined(OS_WIN) && defined(USE_AURA)
1295 #define MAYBE_ChangeWindowName DISABLED_ChangeWindowName 1344 #define MAYBE_ChangeWindowName DISABLED_ChangeWindowName
1296 #else 1345 #else
1297 #define MAYBE_ChangeWindowName ChangeWindowName 1346 #define MAYBE_ChangeWindowName ChangeWindowName
1298 #endif 1347 #endif
1299 1348
1300 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, MAYBE_ChangeWindowName) { 1349 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, MAYBE_ChangeWindowName) {
1301 const char kEmbedderURL[] = "files/browser_plugin_naming_embedder.html"; 1350 const char kEmbedderURL[] = "/browser_plugin_naming_embedder.html";
1302 const char* kGuestURL = "files/browser_plugin_naming_guest.html"; 1351 const char* kGuestURL = "/browser_plugin_naming_guest.html";
1303 StartBrowserPluginTest(kEmbedderURL, kGuestURL, false, std::string()); 1352 StartBrowserPluginTest(kEmbedderURL, kGuestURL, false, std::string());
1304 1353
1305 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 1354 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
1306 test_embedder()->web_contents()->GetRenderViewHost()); 1355 test_embedder()->web_contents()->GetRenderViewHost());
1307 // Verify that the plugin's name is properly initialized. 1356 // Verify that the plugin's name is properly initialized.
1308 { 1357 {
1309 scoped_ptr<base::Value> value = content::ExecuteScriptAndGetValue( 1358 scoped_ptr<base::Value> value = content::ExecuteScriptAndGetValue(
1310 rvh, "document.getElementById('plugin').name"); 1359 rvh, "document.getElementById('plugin').name");
1311 std::string result; 1360 std::string result;
1312 EXPECT_TRUE(value->GetAsString(&result)); 1361 EXPECT_TRUE(value->GetAsString(&result));
(...skipping 25 matching lines...) Expand all
1338 "document.getElementById('plugin').name = 'foobar';"); 1387 "document.getElementById('plugin').name = 'foobar';");
1339 string16 actual_title = title_watcher.WaitAndGetTitle(); 1388 string16 actual_title = title_watcher.WaitAndGetTitle();
1340 EXPECT_EQ(expected_title, actual_title); 1389 EXPECT_EQ(expected_title, actual_title);
1341 1390
1342 } 1391 }
1343 } 1392 }
1344 1393
1345 // This test verifies that all autosize attributes can be removed 1394 // This test verifies that all autosize attributes can be removed
1346 // without crashing the plugin, or throwing errors. 1395 // without crashing the plugin, or throwing errors.
1347 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, RemoveAutosizeAttributes) { 1396 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, RemoveAutosizeAttributes) {
1348 const char* kEmbedderURL = "files/browser_plugin_embedder.html"; 1397 const char* kEmbedderURL = "/browser_plugin_embedder.html";
1349 const std::string embedder_code = 1398 const std::string embedder_code =
1350 "document.getElementById('plugin').minwidth = 300;" 1399 "document.getElementById('plugin').minwidth = 300;"
1351 "document.getElementById('plugin').minheight = 200;" 1400 "document.getElementById('plugin').minheight = 200;"
1352 "document.getElementById('plugin').maxwidth = 600;" 1401 "document.getElementById('plugin').maxwidth = 600;"
1353 "document.getElementById('plugin').maxheight = 400;" 1402 "document.getElementById('plugin').maxheight = 400;"
1354 "document.getElementById('plugin').name = 'name';" 1403 "document.getElementById('plugin').name = 'name';"
1355 "document.getElementById('plugin').src = 'foo';" 1404 "document.getElementById('plugin').src = 'foo';"
1356 "document.getElementById('plugin').autosize = '';"; 1405 "document.getElementById('plugin').autosize = '';";
1357 StartBrowserPluginTest( 1406 StartBrowserPluginTest(
1358 kEmbedderURL, kHTMLForGuestWithSize, true, embedder_code); 1407 kEmbedderURL, kHTMLForGuestWithSize, true, embedder_code);
1359 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 1408 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
1360 test_embedder()->web_contents()->GetRenderViewHost()); 1409 test_embedder()->web_contents()->GetRenderViewHost());
1361 RemoveAttributes(rvh, "maxheight, maxwidth, minheight, minwidth, autosize"); 1410 RemoveAttributes(rvh, "maxheight, maxwidth, minheight, minwidth, autosize");
1362 1411
1363 // Verify that the guest resizes to fit the container (and hasn't crashed). 1412 // Verify that the guest resizes to fit the container (and hasn't crashed).
1364 test_guest()->WaitForViewSize(gfx::Size(640, 480)); 1413 test_guest()->WaitForViewSize(gfx::Size(640, 480));
1365 EXPECT_TRUE(IsAttributeNull(rvh, "maxheight")); 1414 EXPECT_TRUE(IsAttributeNull(rvh, "maxheight"));
1366 EXPECT_TRUE(IsAttributeNull(rvh, "maxwidth")); 1415 EXPECT_TRUE(IsAttributeNull(rvh, "maxwidth"));
1367 EXPECT_TRUE(IsAttributeNull(rvh, "minheight")); 1416 EXPECT_TRUE(IsAttributeNull(rvh, "minheight"));
1368 EXPECT_TRUE(IsAttributeNull(rvh, "minwidth")); 1417 EXPECT_TRUE(IsAttributeNull(rvh, "minwidth"));
1369 EXPECT_TRUE(IsAttributeNull(rvh, "autosize")); 1418 EXPECT_TRUE(IsAttributeNull(rvh, "autosize"));
1370 } 1419 }
1371 1420
1372 // This test verifies that autosize works when some of the parameters are unset. 1421 // This test verifies that autosize works when some of the parameters are unset.
1373 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, PartialAutosizeAttributes) { 1422 IN_PROC_BROWSER_TEST_F(BrowserPluginHostTest, PartialAutosizeAttributes) {
1374 const char* kEmbedderURL = "files/browser_plugin_embedder.html"; 1423 const char* kEmbedderURL = "/browser_plugin_embedder.html";
1375 const std::string embedder_code = 1424 const std::string embedder_code =
1376 "document.getElementById('plugin').minwidth = 300;" 1425 "document.getElementById('plugin').minwidth = 300;"
1377 "document.getElementById('plugin').minheight = 200;" 1426 "document.getElementById('plugin').minheight = 200;"
1378 "document.getElementById('plugin').maxwidth = 700;" 1427 "document.getElementById('plugin').maxwidth = 700;"
1379 "document.getElementById('plugin').maxheight = 600;" 1428 "document.getElementById('plugin').maxheight = 600;"
1380 "document.getElementById('plugin').autosize = '';"; 1429 "document.getElementById('plugin').autosize = '';";
1381 StartBrowserPluginTest( 1430 StartBrowserPluginTest(
1382 kEmbedderURL, kHTMLForGuestWithSize, true, embedder_code); 1431 kEmbedderURL, kHTMLForGuestWithSize, true, embedder_code);
1383 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 1432 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
1384 test_embedder()->web_contents()->GetRenderViewHost()); 1433 test_embedder()->web_contents()->GetRenderViewHost());
(...skipping 24 matching lines...) Expand all
1409 const string16 expected_title = ASCIIToUTF16("AutoSize(640, 480)"); 1458 const string16 expected_title = ASCIIToUTF16("AutoSize(640, 480)");
1410 content::TitleWatcher title_watcher(test_embedder()->web_contents(), 1459 content::TitleWatcher title_watcher(test_embedder()->web_contents(),
1411 expected_title); 1460 expected_title);
1412 RemoveAttributes(rvh, "maxwidth"); 1461 RemoveAttributes(rvh, "maxwidth");
1413 string16 actual_title = title_watcher.WaitAndGetTitle(); 1462 string16 actual_title = title_watcher.WaitAndGetTitle();
1414 EXPECT_EQ(expected_title, actual_title); 1463 EXPECT_EQ(expected_title, actual_title);
1415 } 1464 }
1416 } 1465 }
1417 1466
1418 } // namespace content 1467 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698