| 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 350ad5c22d7952cf966c4239a8ce1fe8d9caaced..7bad301d8efc2d95e525baf7711d8cd07afae52d 100644
|
| --- a/chrome/browser/ui/browser_navigator_browsertest.cc
|
| +++ b/chrome/browser/ui/browser_navigator_browsertest.cc
|
| @@ -2,14 +2,16 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "chrome/browser/browser_list.h"
|
| -#include "chrome/browser/browser_window.h"
|
| +#include "base/command_line.h"
|
| #include "chrome/browser/profile.h"
|
| #include "chrome/browser/tab_contents/tab_contents.h"
|
| #include "chrome/browser/tab_contents/tab_contents_view.h"
|
| #include "chrome/browser/tabs/tab_strip_model.h"
|
| #include "chrome/browser/ui/browser.h"
|
| +#include "chrome/browser/ui/browser_list.h"
|
| #include "chrome/browser/ui/browser_navigator.h"
|
| +#include "chrome/browser/ui/browser_window.h"
|
| +#include "chrome/common/chrome_switches.h"
|
| #include "chrome/test/in_process_browser_test.h"
|
| #include "chrome/test/ui_test_utils.h"
|
| #include "ipc/ipc_message.h"
|
| @@ -57,6 +59,11 @@ class BrowserNavigatorTest : public InProcessBrowserTest {
|
| EXPECT_EQ(1u, BrowserList::size());
|
| EXPECT_EQ(old_url, browser()->GetSelectedTabContents()->GetURL());
|
| }
|
| +
|
| + // TODO(jhawkins): Remove once tabbed options are enabled by default.
|
| + virtual void SetUpCommandLine(CommandLine* command_line) {
|
| + command_line->AppendSwitch(switches::kEnableTabbedOptions);
|
| + }
|
| };
|
|
|
| // This test verifies that when a navigation occurs within a tab, the tab count
|
| @@ -463,5 +470,98 @@ IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest, NullBrowser_NewWindow) {
|
| EXPECT_EQ(1, p.browser->tab_count());
|
| }
|
|
|
| +// This test verifies that constructing params with disposition = SINGLETON_TAB
|
| +// and |ignore_paths| = true opens a new tab navigated to the specified URL if no
|
| +// previous tab with that URL (minus the path) exists.
|
| +IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest,
|
| + Disposition_SingletonTabNew_IgnorePath) {
|
| + GURL url("http://www.google.com/");
|
| + browser()->AddSelectedTabWithURL(url, PageTransition::LINK);
|
| +
|
| + // We should have one browser with 2 tabs, the 2nd selected.
|
| + EXPECT_EQ(1u, BrowserList::size());
|
| + EXPECT_EQ(2, browser()->tab_count());
|
| + EXPECT_EQ(1, browser()->selected_index());
|
| +
|
| + // Navigate to a new singleton tab with a sub-page.
|
| + browser::NavigateParams p(MakeNavigateParams());
|
| + p.disposition = SINGLETON_TAB;
|
| + p.url = GURL("chrome://settings/advanced");
|
| + p.show_window = true;
|
| + p.ignore_path = true;
|
| + browser::Navigate(&p);
|
| +
|
| + // The last tab should now be selected and navigated to the sub-page of the
|
| + // URL.
|
| + EXPECT_EQ(browser(), p.browser);
|
| + EXPECT_EQ(3, browser()->tab_count());
|
| + EXPECT_EQ(2, browser()->selected_index());
|
| + EXPECT_EQ(GURL("chrome://settings/advanced"),
|
| + browser()->GetSelectedTabContents()->GetURL());
|
| +}
|
| +
|
| +// This test verifies that constructing params with disposition = SINGLETON_TAB
|
| +// and |ignore_paths| = true opens an existing tab with the matching URL (minus
|
| +// the path) which is navigated to the specified URL.
|
| +IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest,
|
| + Disposition_SingletonTabExisting_IgnorePath) {
|
| + GURL singleton_url1("chrome://settings");
|
| + GURL url("http://www.google.com/");
|
| + browser()->AddSelectedTabWithURL(singleton_url1, PageTransition::LINK);
|
| + browser()->AddSelectedTabWithURL(url, PageTransition::LINK);
|
| +
|
| + // We should have one browser with 3 tabs, the 3rd selected.
|
| + EXPECT_EQ(1u, BrowserList::size());
|
| + EXPECT_EQ(3, browser()->tab_count());
|
| + EXPECT_EQ(2, browser()->selected_index());
|
| +
|
| + // Navigate to singleton_url1.
|
| + browser::NavigateParams p(MakeNavigateParams());
|
| + p.disposition = SINGLETON_TAB;
|
| + p.url = GURL("chrome://settings/advanced");
|
| + p.show_window = true;
|
| + p.ignore_path = true;
|
| + browser::Navigate(&p);
|
| +
|
| + // The middle tab should now be selected and navigated to the sub-page of the
|
| + // URL.
|
| + EXPECT_EQ(browser(), p.browser);
|
| + EXPECT_EQ(3, browser()->tab_count());
|
| + EXPECT_EQ(1, browser()->selected_index());
|
| + EXPECT_EQ(GURL("chrome://settings/advanced"),
|
| + browser()->GetSelectedTabContents()->GetURL());
|
| +}
|
| +
|
| +// This test verifies that constructing params with disposition = SINGLETON_TAB
|
| +// and |ignore_paths| = true opens an existing tab with the matching URL (minus
|
| +// the path) which is navigated to the specified URL.
|
| +IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest,
|
| + Disposition_SingletonTabExistingSubPath_IgnorePath) {
|
| + GURL singleton_url1("chrome://settings/advanced");
|
| + GURL url("http://www.google.com/");
|
| + browser()->AddSelectedTabWithURL(singleton_url1, PageTransition::LINK);
|
| + browser()->AddSelectedTabWithURL(url, PageTransition::LINK);
|
| +
|
| + // We should have one browser with 3 tabs, the 3rd selected.
|
| + EXPECT_EQ(1u, BrowserList::size());
|
| + EXPECT_EQ(3, browser()->tab_count());
|
| + EXPECT_EQ(2, browser()->selected_index());
|
| +
|
| + // Navigate to singleton_url1.
|
| + browser::NavigateParams p(MakeNavigateParams());
|
| + p.disposition = SINGLETON_TAB;
|
| + p.url = GURL("chrome://settings/personal");
|
| + p.show_window = true;
|
| + p.ignore_path = true;
|
| + browser::Navigate(&p);
|
| +
|
| + // The middle tab should now be selected and navigated to the sub-page of the
|
| + // URL.
|
| + EXPECT_EQ(browser(), p.browser);
|
| + EXPECT_EQ(3, browser()->tab_count());
|
| + EXPECT_EQ(1, browser()->selected_index());
|
| + EXPECT_EQ(GURL("chrome://settings/personal"),
|
| + browser()->GetSelectedTabContents()->GetURL());
|
| +}
|
|
|
| } // namespace
|
|
|