Home | History | Annotate | Download | only in webui
      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.
      4 
      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"
     16 
     17 class BookmarksTest : public InProcessBrowserTest {
     18  public:
     19   BookmarksTest() {}
     20 
     21   void OpenBookmarksManager() {
     22     content::TestNavigationObserver navigation_observer(
     23         browser()->tab_strip_model()->GetActiveWebContents(), 2);
     24     navigation_observer.StartWatchingNewWebContents();
     25 
     26     // Bring up the bookmarks manager tab.
     27     chrome::ShowBookmarkManager(browser());
     28     navigation_observer.Wait();
     29   }
     30 
     31   void AssertIsBookmarksPage(content::WebContents* tab) {
     32     GURL url;
     33     std::string out;
     34     ASSERT_TRUE(content::ExecuteScriptAndExtractString(
     35         tab,
     36         "domAutomationController.send(location.protocol)",
     37         &out));
     38     ASSERT_EQ("chrome-extension:", out);
     39     ASSERT_TRUE(content::ExecuteScriptAndExtractString(
     40         tab,
     41         "domAutomationController.send(location.pathname)",
     42         &out));
     43     ASSERT_EQ("/main.html", out);
     44   }
     45 };
     46 
     47 IN_PROC_BROWSER_TEST_F(BookmarksTest, ShouldRedirectToExtension) {
     48   ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIBookmarksURL));
     49   AssertIsBookmarksPage(browser()->tab_strip_model()->GetActiveWebContents());
     50 }
     51 
     52 IN_PROC_BROWSER_TEST_F(BookmarksTest, CommandOpensBookmarksTab) {
     53   ASSERT_EQ(1, browser()->tab_strip_model()->count());
     54 
     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());
     59 }
     60 
     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
     69 #else
     70 #define MAYBE_CommandAgainGoesBackToBookmarksTab \
     71   CommandAgainGoesBackToBookmarksTab
     72 #endif
     73 
     74 IN_PROC_BROWSER_TEST_F(BookmarksTest,
     75                        MAYBE_CommandAgainGoesBackToBookmarksTab) {
     76   ui_test_utils::NavigateToURL(
     77       browser(),
     78       ui_test_utils::GetTestUrl(base::FilePath(),
     79                                 base::FilePath().AppendASCII("simple.html")));
     80   ASSERT_EQ(1, browser()->tab_strip_model()->count());
     81 
     82   // Bring up the bookmarks manager tab.
     83   OpenBookmarksManager();
     84   ASSERT_EQ(2, browser()->tab_strip_model()->count());
     85 
     86   AssertIsBookmarksPage(browser()->tab_strip_model()->GetActiveWebContents());
     87 
     88   // Switch to first tab and run command again.
     89  browser()->tab_strip_model()->ActivateTabAt(0, true);
     90   chrome::ShowBookmarkManager(browser());
     91 
     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());
     95 }
     96 
     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();
    103 
    104   ASSERT_EQ(1, browser()->tab_strip_model()->count());
    105 }
    106 
    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());
    111 }
    112