Index: chrome/browser/ui/browser_navigator_browsertest.cc |
diff --git a/chrome/browser/ui/browser_navigator_browsertest.cc b/chrome/browser/ui/browser_navigator_browsertest.cc |
index f775223d4157372d4ca593fd57f9f237f712f44b..3fdf22f023df6185f8741c2659885d45e5763aa0 100644 |
--- a/chrome/browser/ui/browser_navigator_browsertest.cc |
+++ b/chrome/browser/ui/browser_navigator_browsertest.cc |
@@ -261,6 +261,30 @@ IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewPopup) { |
} |
// This test verifies that navigating with WindowOpenDisposition = NEW_POPUP |
+// from a normal popup results in a new Browser with TYPE_POPUP. |
+IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, Disposition_NewPopupFromPopup) { |
+ // Open a popup. |
+ browser::NavigateParams p1(MakeNavigateParams()); |
+ p1.disposition = NEW_POPUP; |
+ browser::Navigate(&p1); |
+ // Open another popup. |
+ browser::NavigateParams p2(MakeNavigateParams(p1.browser)); |
+ p2.disposition = NEW_POPUP; |
+ browser::Navigate(&p2); |
+ |
+ // Navigate() should have opened a new normal popup window. |
+ EXPECT_NE(p1.browser, p2.browser); |
+ EXPECT_EQ(Browser::TYPE_POPUP, p2.browser->type()); |
+ |
+ // We should have three windows, the browser() provided by the framework, |
+ // the first popup window, and the second popup window. |
+ EXPECT_EQ(3u, BrowserList::size()); |
+ EXPECT_EQ(1, browser()->tab_count()); |
+ EXPECT_EQ(1, p1.browser->tab_count()); |
+ EXPECT_EQ(1, p2.browser->tab_count()); |
+} |
+ |
+// This test verifies that navigating with WindowOpenDisposition = NEW_POPUP |
// from an app frame results in a new Browser with TYPE_APP_POPUP. |
IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, |
Disposition_NewPopupFromAppWindow) { |
@@ -284,6 +308,35 @@ IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, |
} |
// This test verifies that navigating with WindowOpenDisposition = NEW_POPUP |
+// from an app popup results in a new Browser also of TYPE_APP_POPUP. |
+IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, |
+ Disposition_NewPopupFromAppPopup) { |
+ Browser* app_browser = CreateEmptyBrowserForType(Browser::TYPE_APP, |
+ browser()->profile()); |
+ // Open an app popup. |
+ browser::NavigateParams p1(MakeNavigateParams(app_browser)); |
+ p1.disposition = NEW_POPUP; |
+ browser::Navigate(&p1); |
+ // Now open another app popup. |
+ browser::NavigateParams p2(MakeNavigateParams(p1.browser)); |
+ p2.disposition = NEW_POPUP; |
+ browser::Navigate(&p2); |
+ |
+ // Navigate() should have opened a new popup app window. |
+ EXPECT_NE(browser(), p1.browser); |
+ EXPECT_NE(p1.browser, p2.browser); |
+ EXPECT_EQ(Browser::TYPE_APP_POPUP, p2.browser->type()); |
+ |
+ // We should now have four windows, the app window, the first app popup, |
+ // the second app popup, and the original browser() provided by the framework. |
+ EXPECT_EQ(4u, BrowserList::size()); |
+ EXPECT_EQ(1, browser()->tab_count()); |
+ EXPECT_EQ(1, app_browser->tab_count()); |
+ EXPECT_EQ(1, p1.browser->tab_count()); |
+ EXPECT_EQ(1, p2.browser->tab_count()); |
+} |
+ |
+// This test verifies that navigating with WindowOpenDisposition = NEW_POPUP |
// from an extension app tab results in a new Browser with TYPE_APP_POPUP. |
IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, |
Disposition_NewPopupFromExtensionApp) { |