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

Unified Diff: chrome/browser/extensions/app_process_apitest.cc

Issue 8401023: Fix flakiness in NewTab() calls of AppApiTest browser_test. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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:
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698