bookmarks_ui_browsertest.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/ui/ui_test.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/test/test_timeouts.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_tabstrip.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/chrome_pages.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/url_constants.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/in_process_browser_test.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/ui_test_utils.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_service.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_contents.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/browser_test_utils.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/test_navigation_observer.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BookmarksTest : public InProcessBrowserTest {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  BookmarksTest() {}
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OpenBookmarksManager() {
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    content::TestNavigationObserver navigation_observer(
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        content::NotificationService::AllSources(), NULL, 2);
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Bring up the bookmarks manager tab.
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    chrome::ShowBookmarkManager(browser());
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    navigation_observer.Wait();
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void AssertIsBookmarksPage(content::WebContents* tab) {
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GURL url;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    std::string out;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ASSERT_TRUE(content::ExecuteJavaScriptAndExtractString(
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        tab->GetRenderViewHost(), L"",
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        L"domAutomationController.send(location.protocol)", &out));
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ASSERT_EQ("chrome-extension:", out);
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ASSERT_TRUE(content::ExecuteJavaScriptAndExtractString(
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        tab->GetRenderViewHost(), L"",
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        L"domAutomationController.send(location.pathname)", &out));
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ASSERT_EQ("/main.html", out);
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(BookmarksTest, ShouldRedirectToExtension) {
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIBookmarksURL));
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AssertIsBookmarksPage(chrome::GetActiveWebContents(browser()));
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(BookmarksTest, CommandOpensBookmarksTab) {
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(1, browser()->tab_count());
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Bring up the bookmarks manager tab.
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  OpenBookmarksManager();
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(1, browser()->tab_count());
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AssertIsBookmarksPage(chrome::GetActiveWebContents(browser()));
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// If this flakes on Mac, use: http://crbug.com/87200
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(BookmarksTest, CommandAgainGoesBackToBookmarksTab) {
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ui_test_utils::NavigateToURL(
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      browser(),
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ui_test_utils::GetTestUrl(FilePath(),
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                FilePath().AppendASCII("simple.html")));
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(1, browser()->tab_count());
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Bring up the bookmarks manager tab.
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  OpenBookmarksManager();
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(2, browser()->tab_count());
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AssertIsBookmarksPage(chrome::GetActiveWebContents(browser()));
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Switch to first tab and run command again.
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  chrome::ActivateTabAt(browser(), 0, true);
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  chrome::ShowBookmarkManager(browser());
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Ensure the bookmarks ui tab is active.
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(1, browser()->active_index());
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(2, browser()->tab_count());
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(BookmarksTest, TwoCommandsOneTab) {
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content::TestNavigationObserver navigation_observer(
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      content::NotificationService::AllSources());
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  chrome::ShowBookmarkManager(browser());
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  chrome::ShowBookmarkManager(browser());
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  navigation_observer.Wait();
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(1, browser()->tab_count());
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(BookmarksTest, BookmarksLoaded) {
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIBookmarksURL));
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(1, browser()->tab_count());
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AssertIsBookmarksPage(chrome::GetActiveWebContents(browser()));
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
98