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 DISABLED_CommandAgainGoesBackToBookmarksTab
65 #define MAYBE_CommandAgainGoesBackToBookmarksTab CommandAgainGoesBackToBookmarksTab
68 // If this flakes on Mac, use: http://crbug.com/87200
69 IN_PROC_BROWSER_TEST_F(BookmarksTest,
70 MAYBE_CommandAgainGoesBackToBookmarksTab) {
71 ui_test_utils::NavigateToURL(
73 ui_test_utils::GetTestUrl(base::FilePath(),
74 base::FilePath().AppendASCII("simple.html")));
75 ASSERT_EQ(1, browser()->tab_strip_model()->count());
77 // Bring up the bookmarks manager tab.
78 OpenBookmarksManager();
79 ASSERT_EQ(2, browser()->tab_strip_model()->count());
81 AssertIsBookmarksPage(browser()->tab_strip_model()->GetActiveWebContents());
83 // Switch to first tab and run command again.
84 browser()->tab_strip_model()->ActivateTabAt(0, true);
85 chrome::ShowBookmarkManager(browser());
87 // Ensure the bookmarks ui tab is active.
88 ASSERT_EQ(1, browser()->tab_strip_model()->active_index());
89 ASSERT_EQ(2, browser()->tab_strip_model()->count());
92 IN_PROC_BROWSER_TEST_F(BookmarksTest, TwoCommandsOneTab) {
93 content::TestNavigationObserver navigation_observer(
94 browser()->tab_strip_model()->GetActiveWebContents());
95 chrome::ShowBookmarkManager(browser());
96 chrome::ShowBookmarkManager(browser());
97 navigation_observer.Wait();
99 ASSERT_EQ(1, browser()->tab_strip_model()->count());
102 IN_PROC_BROWSER_TEST_F(BookmarksTest, BookmarksLoaded) {
103 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIBookmarksURL));
104 ASSERT_EQ(1, browser()->tab_strip_model()->count());
105 AssertIsBookmarksPage(browser()->tab_strip_model()->GetActiveWebContents());