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
3 // found in the LICENSE file.
5 #include "base/test/test_timeouts.h"
6 #include "chrome/browser/ui/browser.h"
7 #include "chrome/browser/ui/chrome_pages.h"
8 #include "chrome/browser/ui/tabs/tab_strip_model.h"
9 #include "chrome/common/url_constants.h"
10 #include "chrome/test/base/in_process_browser_test.h"
11 #include "chrome/test/base/ui_test_utils.h"
12 #include "content/public/browser/notification_service.h"
13 #include "content/public/browser/web_contents.h"
14 #include "content/public/test/browser_test_utils.h"
15 #include "content/public/test/test_navigation_observer.h"
17 class BookmarksTest : public InProcessBrowserTest {
21 void OpenBookmarksManager() {
22 content::TestNavigationObserver navigation_observer(
23 browser()->tab_strip_model()->GetActiveWebContents(), 2);
24 navigation_observer.StartWatchingNewWebContents();
26 // Bring up the bookmarks manager tab.
27 chrome::ShowBookmarkManager(browser());
28 navigation_observer.Wait();
31 void AssertIsBookmarksPage(content::WebContents* tab) {
34 ASSERT_TRUE(content::ExecuteScriptAndExtractString(
36 "domAutomationController.send(location.protocol)",
38 ASSERT_EQ("chrome-extension:", out);
39 ASSERT_TRUE(content::ExecuteScriptAndExtractString(
41 "domAutomationController.send(location.pathname)",
43 ASSERT_EQ("/main.html", out);
47 IN_PROC_BROWSER_TEST_F(BookmarksTest, ShouldRedirectToExtension) {
48 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIBookmarksURL));
49 AssertIsBookmarksPage(browser()->tab_strip_model()->GetActiveWebContents());
52 IN_PROC_BROWSER_TEST_F(BookmarksTest, CommandOpensBookmarksTab) {
53 ASSERT_EQ(1, browser()->tab_strip_model()->count());
55 // Bring up the bookmarks manager tab.
56 OpenBookmarksManager();
57 ASSERT_EQ(1, browser()->tab_strip_model()->count());
58 AssertIsBookmarksPage(browser()->tab_strip_model()->GetActiveWebContents());
61 // TODO(linux_aura): http://crbug.com/163931
62 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_AURA)
63 #define MAYBE_CommandAgainGoesBackToBookmarksTab \
64 DISABLED_CommandAgainGoesBackToBookmarksTab
65 // Flaky on Mac: http://crbug.com/87200
66 #elif defined(OS_MACOSX)
67 #define MAYBE_CommandAgainGoesBackToBookmarksTab \
68 DISABLED_CommandAgainGoesBackToBookmarksTab
70 #define MAYBE_CommandAgainGoesBackToBookmarksTab \
71 CommandAgainGoesBackToBookmarksTab
74 IN_PROC_BROWSER_TEST_F(BookmarksTest,
75 MAYBE_CommandAgainGoesBackToBookmarksTab) {
76 ui_test_utils::NavigateToURL(
78 ui_test_utils::GetTestUrl(base::FilePath(),
79 base::FilePath().AppendASCII("simple.html")));
80 ASSERT_EQ(1, browser()->tab_strip_model()->count());
82 // Bring up the bookmarks manager tab.
83 OpenBookmarksManager();
84 ASSERT_EQ(2, browser()->tab_strip_model()->count());
86 AssertIsBookmarksPage(browser()->tab_strip_model()->GetActiveWebContents());
88 // Switch to first tab and run command again.
89 browser()->tab_strip_model()->ActivateTabAt(0, true);
90 chrome::ShowBookmarkManager(browser());
92 // Ensure the bookmarks ui tab is active.
93 ASSERT_EQ(1, browser()->tab_strip_model()->active_index());
94 ASSERT_EQ(2, browser()->tab_strip_model()->count());
97 IN_PROC_BROWSER_TEST_F(BookmarksTest, TwoCommandsOneTab) {
98 content::TestNavigationObserver navigation_observer(
99 browser()->tab_strip_model()->GetActiveWebContents());
100 chrome::ShowBookmarkManager(browser());
101 chrome::ShowBookmarkManager(browser());
102 navigation_observer.Wait();
104 ASSERT_EQ(1, browser()->tab_strip_model()->count());
107 IN_PROC_BROWSER_TEST_F(BookmarksTest, BookmarksLoaded) {
108 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIBookmarksURL));
109 ASSERT_EQ(1, browser()->tab_strip_model()->count());
110 AssertIsBookmarksPage(browser()->tab_strip_model()->GetActiveWebContents());