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 "chrome/browser/extensions/extension_browsertest.h" | 5 #include "chrome/browser/extensions/extension_browsertest.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/file_path.h" | 10 #include "base/file_path.h" |
(...skipping 535 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
546 } | 546 } |
547 | 547 |
548 void ExtensionBrowserTest::OpenWindow(content::WebContents* contents, | 548 void ExtensionBrowserTest::OpenWindow(content::WebContents* contents, |
549 const GURL& url, | 549 const GURL& url, |
550 bool newtab_process_should_equal_opener, | 550 bool newtab_process_should_equal_opener, |
551 content::WebContents** newtab_result) { | 551 content::WebContents** newtab_result) { |
552 content::WindowedNotificationObserver observer( | 552 content::WindowedNotificationObserver observer( |
553 content::NOTIFICATION_LOAD_STOP, | 553 content::NOTIFICATION_LOAD_STOP, |
554 content::NotificationService::AllSources()); | 554 content::NotificationService::AllSources()); |
555 ASSERT_TRUE(content::ExecuteJavaScript( | 555 ASSERT_TRUE(content::ExecuteJavaScript( |
556 contents->GetRenderViewHost(), | 556 contents->GetRenderViewHost(), L"", |
557 "", | 557 L"window.open('" + UTF8ToWide(url.spec()) + L"');")); |
558 "window.open('" + url.spec() + "');")); | |
559 | 558 |
560 // The above window.open call is not user-initiated, so it will create | 559 // The above window.open call is not user-initiated, so it will create |
561 // a popup window instead of a new tab in current window. | 560 // a popup window instead of a new tab in current window. |
562 // The stop notification will come from the new tab. | 561 // The stop notification will come from the new tab. |
563 observer.Wait(); | 562 observer.Wait(); |
564 content::NavigationController* controller = | 563 content::NavigationController* controller = |
565 content::Source<content::NavigationController>(observer.source()).ptr(); | 564 content::Source<content::NavigationController>(observer.source()).ptr(); |
566 content::WebContents* newtab = controller->GetWebContents(); | 565 content::WebContents* newtab = controller->GetWebContents(); |
567 ASSERT_TRUE(newtab); | 566 ASSERT_TRUE(newtab); |
568 EXPECT_EQ(url, controller->GetLastCommittedEntry()->GetURL()); | 567 EXPECT_EQ(url, controller->GetLastCommittedEntry()->GetURL()); |
569 if (newtab_process_should_equal_opener) | 568 if (newtab_process_should_equal_opener) |
570 EXPECT_EQ(contents->GetRenderProcessHost(), newtab->GetRenderProcessHost()); | 569 EXPECT_EQ(contents->GetRenderProcessHost(), newtab->GetRenderProcessHost()); |
571 else | 570 else |
572 EXPECT_NE(contents->GetRenderProcessHost(), newtab->GetRenderProcessHost()); | 571 EXPECT_NE(contents->GetRenderProcessHost(), newtab->GetRenderProcessHost()); |
573 | 572 |
574 if (newtab_result) | 573 if (newtab_result) |
575 *newtab_result = newtab; | 574 *newtab_result = newtab; |
576 } | 575 } |
577 | 576 |
578 void ExtensionBrowserTest::NavigateInRenderer(content::WebContents* contents, | 577 void ExtensionBrowserTest::NavigateInRenderer(content::WebContents* contents, |
579 const GURL& url) { | 578 const GURL& url) { |
580 bool result = false; | 579 bool result = false; |
581 content::WindowedNotificationObserver observer( | 580 content::WindowedNotificationObserver observer( |
582 content::NOTIFICATION_LOAD_STOP, | 581 content::NOTIFICATION_LOAD_STOP, |
583 content::NotificationService::AllSources()); | 582 content::NotificationService::AllSources()); |
584 ASSERT_TRUE(content::ExecuteJavaScriptAndExtractBool( | 583 ASSERT_TRUE(content::ExecuteJavaScriptAndExtractBool( |
585 contents->GetRenderViewHost(), | 584 contents->GetRenderViewHost(), L"", |
586 "", | 585 L"window.addEventListener('unload', function() {" |
587 "window.addEventListener('unload', function() {" | 586 L" window.domAutomationController.send(true);" |
588 " window.domAutomationController.send(true);" | 587 L"}, false);" |
589 "}, false);" | 588 L"window.location = '" + UTF8ToWide(url.spec()) + L"';", |
590 "window.location = '" + url.spec() + "';", | |
591 &result)); | 589 &result)); |
592 ASSERT_TRUE(result); | 590 ASSERT_TRUE(result); |
593 observer.Wait(); | 591 observer.Wait(); |
594 EXPECT_EQ(url, contents->GetController().GetLastCommittedEntry()->GetURL()); | 592 EXPECT_EQ(url, contents->GetController().GetLastCommittedEntry()->GetURL()); |
595 } | 593 } |
596 | 594 |
597 extensions::ExtensionHost* ExtensionBrowserTest::FindHostWithPath( | 595 extensions::ExtensionHost* ExtensionBrowserTest::FindHostWithPath( |
598 ExtensionProcessManager* manager, | 596 ExtensionProcessManager* manager, |
599 const std::string& path, | 597 const std::string& path, |
600 int expected_hosts) { | 598 int expected_hosts) { |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
692 case content::NOTIFICATION_LOAD_STOP: | 690 case content::NOTIFICATION_LOAD_STOP: |
693 VLOG(1) << "Got LOAD_STOP notification."; | 691 VLOG(1) << "Got LOAD_STOP notification."; |
694 MessageLoopForUI::current()->Quit(); | 692 MessageLoopForUI::current()->Quit(); |
695 break; | 693 break; |
696 | 694 |
697 default: | 695 default: |
698 NOTREACHED(); | 696 NOTREACHED(); |
699 break; | 697 break; |
700 } | 698 } |
701 } | 699 } |
OLD | NEW |