| Index: chrome/browser/extensions/app_process_apitest.cc
|
| diff --git a/chrome/browser/extensions/app_process_apitest.cc b/chrome/browser/extensions/app_process_apitest.cc
|
| index 4382c4db875ef20b9b47e6b51d5e71957d2c5b5f..0719038aed9ab39bfa94894fe9ba805922c232b0 100644
|
| --- a/chrome/browser/extensions/app_process_apitest.cc
|
| +++ b/chrome/browser/extensions/app_process_apitest.cc
|
| @@ -78,15 +78,9 @@ static void NavigateTabHelper(TabContents* contents, const GURL& url) {
|
| EXPECT_EQ(url, contents->controller().GetLastCommittedEntry()->url());
|
| }
|
|
|
| -#if defined(OS_WIN)
|
| -// AppProcess sometimes hangs on Windows
|
| -// http://crbug.com/88316
|
| -#define MAYBE_AppProcess DISABLED_AppProcess
|
| -#else
|
| -#define MAYBE_AppProcess AppProcess
|
| -#endif
|
| -
|
| -IN_PROC_BROWSER_TEST_F(AppApiTest, MAYBE_AppProcess) {
|
| +IN_PROC_BROWSER_TEST_F(AppApiTest, AppProcess) {
|
| + LOG(INFO) << "Start of test.";
|
| +
|
| CommandLine::ForCurrentProcess()->AppendSwitch(
|
| switches::kDisablePopupBlocking);
|
|
|
| @@ -98,6 +92,8 @@ IN_PROC_BROWSER_TEST_F(AppApiTest, MAYBE_AppProcess) {
|
|
|
| ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("app_process")));
|
|
|
| + LOG(INFO) << "Loaded extension.";
|
| +
|
| // Open two tabs in the app, one outside it.
|
| GURL base_url = GetTestBaseURL("app_process");
|
|
|
| @@ -110,13 +106,24 @@ IN_PROC_BROWSER_TEST_F(AppApiTest, MAYBE_AppProcess) {
|
| EXPECT_TRUE(extension_process_manager->IsExtensionProcess(
|
| browser()->GetTabContentsAt(1)->render_view_host()->process()->id()));
|
| EXPECT_FALSE(browser()->GetTabContentsAt(1)->web_ui());
|
| - browser()->NewTab();
|
| - ui_test_utils::NavigateToURL(browser(), base_url.Resolve("path2/empty.html"));
|
| + LOG(INFO) << "Nav 1.";
|
| +
|
| + ui_test_utils::NavigateToURLWithDisposition(
|
| + browser(), base_url.Resolve("path2/empty.html"), NEW_FOREGROUND_TAB,
|
| + ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
|
| EXPECT_TRUE(extension_process_manager->IsExtensionProcess(
|
| browser()->GetTabContentsAt(2)->render_view_host()->process()->id()));
|
| EXPECT_FALSE(browser()->GetTabContentsAt(2)->web_ui());
|
| + LOG(INFO) << "Nav 2.";
|
| +
|
| + ui_test_utils::WindowedNotificationObserver tab_added_observer(
|
| + content::NOTIFICATION_TAB_ADDED,
|
| + content::NotificationService::AllSources());
|
| browser()->NewTab();
|
| + tab_added_observer.Wait();
|
| + LOG(INFO) << "New tab.";
|
| ui_test_utils::NavigateToURL(browser(), base_url.Resolve("path3/empty.html"));
|
| + LOG(INFO) << "Nav 3.";
|
| EXPECT_FALSE(extension_process_manager->IsExtensionProcess(
|
| browser()->GetTabContentsAt(3)->render_view_host()->process()->id()));
|
| EXPECT_FALSE(browser()->GetTabContentsAt(3)->web_ui());
|
| @@ -137,21 +144,26 @@ IN_PROC_BROWSER_TEST_F(AppApiTest, MAYBE_AppProcess) {
|
| ASSERT_EQ(1u, BrowserList::GetBrowserCount(browser()->profile()));
|
| WindowOpenHelper(browser(), host,
|
| base_url.Resolve("path1/empty.html"), true);
|
| + LOG(INFO) << "WindowOpenHelper 1.";
|
| WindowOpenHelper(browser(), host,
|
| base_url.Resolve("path2/empty.html"), true);
|
| + LOG(INFO) << "WindowOpenHelper 2.";
|
| // TODO(creis): This should open in a new process (i.e., false for the last
|
| // argument), but we temporarily avoid swapping processes away from an app
|
| // until we're able to support cross-process postMessage calls.
|
| // See crbug.com/59285.
|
| WindowOpenHelper(browser(), host,
|
| base_url.Resolve("path3/empty.html"), true);
|
| + LOG(INFO) << "WindowOpenHelper 3.";
|
|
|
| // Now let's have these pages navigate, into or out of the extension web
|
| // extent. They should switch processes.
|
| const GURL& app_url(base_url.Resolve("path1/empty.html"));
|
| const GURL& non_app_url(base_url.Resolve("path3/empty.html"));
|
| NavigateTabHelper(browser()->GetTabContentsAt(2), non_app_url);
|
| + LOG(INFO) << "NavigateTabHelper 1.";
|
| NavigateTabHelper(browser()->GetTabContentsAt(3), app_url);
|
| + LOG(INFO) << "NavigateTabHelper 2.";
|
| // TODO(creis): This should swap out of the app's process (i.e., EXPECT_NE),
|
| // but we temporarily avoid swapping away from an app in case the window
|
| // tries to send a postMessage to the app. See crbug.com/59285.
|
| @@ -163,6 +175,7 @@ IN_PROC_BROWSER_TEST_F(AppApiTest, MAYBE_AppProcess) {
|
| // If one of the popup tabs navigates back to the app, window.opener should
|
| // be valid.
|
| NavigateTabHelper(browser()->GetTabContentsAt(6), app_url);
|
| + LOG(INFO) << "NavigateTabHelper 3.";
|
| EXPECT_EQ(host->process(),
|
| browser()->GetTabContentsAt(6)->render_view_host()->process());
|
| bool windowOpenerValid = false;
|
| @@ -171,19 +184,15 @@ IN_PROC_BROWSER_TEST_F(AppApiTest, MAYBE_AppProcess) {
|
| L"window.domAutomationController.send(window.opener != null)",
|
| &windowOpenerValid));
|
| ASSERT_TRUE(windowOpenerValid);
|
| -}
|
|
|
| -
|
| -#if defined(OS_WIN)
|
| -// Seems to timeout sometimes on Windows: http://crbug.com/89766
|
| -#define MAYBE_AppProcessInstances FLAKY_AppProcessInstances
|
| -#else
|
| -#define MAYBE_AppProcessInstances AppProcessInstances
|
| -#endif
|
| + LOG(INFO) << "End of test.";
|
| +}
|
|
|
| // Test that hosted apps without the background permission use a process per app
|
| // instance model, such that separate instances are in separate processes.
|
| -IN_PROC_BROWSER_TEST_F(AppApiTest, MAYBE_AppProcessInstances) {
|
| +IN_PROC_BROWSER_TEST_F(AppApiTest, AppProcessInstances) {
|
| + LOG(INFO) << "Start of test.";
|
| +
|
| CommandLine::ForCurrentProcess()->AppendSwitch(
|
| switches::kDisablePopupBlocking);
|
|
|
| @@ -205,11 +214,19 @@ IN_PROC_BROWSER_TEST_F(AppApiTest, MAYBE_AppProcessInstances) {
|
| ui_test_utils::NavigateToURLWithDisposition(
|
| browser(), base_url.Resolve("path1/empty.html"), NEW_FOREGROUND_TAB,
|
| ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION);
|
| + LOG(INFO) << "Nav 1.";
|
| EXPECT_TRUE(extension_process_manager->IsExtensionProcess(
|
| browser()->GetTabContentsAt(1)->render_view_host()->process()->id()));
|
| EXPECT_FALSE(browser()->GetTabContentsAt(1)->web_ui());
|
| +
|
| + ui_test_utils::WindowedNotificationObserver tab_added_observer(
|
| + content::NOTIFICATION_TAB_ADDED,
|
| + content::NotificationService::AllSources());
|
| browser()->NewTab();
|
| + tab_added_observer.Wait();
|
| + LOG(INFO) << "New tab.";
|
| ui_test_utils::NavigateToURL(browser(), base_url.Resolve("path2/empty.html"));
|
| + LOG(INFO) << "Nav 2.";
|
| EXPECT_TRUE(extension_process_manager->IsExtensionProcess(
|
| browser()->GetTabContentsAt(2)->render_view_host()->process()->id()));
|
| EXPECT_FALSE(browser()->GetTabContentsAt(2)->web_ui());
|
| @@ -227,8 +244,10 @@ IN_PROC_BROWSER_TEST_F(AppApiTest, MAYBE_AppProcessInstances) {
|
| ASSERT_EQ(1u, BrowserList::GetBrowserCount(browser()->profile()));
|
| WindowOpenHelper(browser(), host1,
|
| base_url.Resolve("path1/empty.html"), true);
|
| + LOG(INFO) << "WindowOpenHelper 1.";
|
| WindowOpenHelper(browser(), host2,
|
| base_url.Resolve("path2/empty.html"), true);
|
| + LOG(INFO) << "End of test.";
|
| }
|
|
|
| // Tests that app process switching works properly in the following scenario:
|
|
|