Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / webui / bookmarks_ui_browsertest.cc
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 DISABLED_CommandAgainGoesBackToBookmarksTab
64 #else
65 #define MAYBE_CommandAgainGoesBackToBookmarksTab CommandAgainGoesBackToBookmarksTab
66 #endif
67
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(
72       browser(),
73       ui_test_utils::GetTestUrl(base::FilePath(),
74                                 base::FilePath().AppendASCII("simple.html")));
75   ASSERT_EQ(1, browser()->tab_strip_model()->count());
76
77   // Bring up the bookmarks manager tab.
78   OpenBookmarksManager();
79   ASSERT_EQ(2, browser()->tab_strip_model()->count());
80
81   AssertIsBookmarksPage(browser()->tab_strip_model()->GetActiveWebContents());
82
83   // Switch to first tab and run command again.
84  browser()->tab_strip_model()->ActivateTabAt(0, true);
85   chrome::ShowBookmarkManager(browser());
86
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());
90 }
91
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();
98
99   ASSERT_EQ(1, browser()->tab_strip_model()->count());
100 }
101
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());
106 }