bookmark_unittest.cc revision 90dce4d38c5ff5333bea97d859d4e484e27edf0c
1// Copyright (c) 2013 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 "chrome/browser/search/search.h"
6#include "chrome/browser/search_engines/template_url_service.h"
7#include "chrome/browser/search_engines/template_url_service_factory.h"
8#include "chrome/browser/ui/tabs/tab_strip_model.h"
9#include "chrome/common/url_constants.h"
10#include "chrome/test/base/browser_with_test_window_test.h"
11#include "content/public/browser/navigation_entry.h"
12#include "content/public/browser/web_contents.h"
13
14typedef BrowserWithTestWindowTest BookmarkTest;
15
16// Verify that the detached bookmark bar is visible on the new tab page.
17TEST_F(BookmarkTest, DetachedBookmarkBarOnNTP) {
18  AddTab(browser(), GURL(chrome::kChromeUINewTabURL));
19  EXPECT_EQ(BookmarkBar::DETACHED, browser()->bookmark_bar_state());
20}
21
22// Verify that the detached bookmark bar is hidden on custom NTP pages.
23TEST_F(BookmarkTest, DetachedBookmarkBarOnCustomNTP) {
24  // Create a empty commited web contents.
25  content::WebContents* web_contents = content::WebContents::Create(
26      content::WebContents::CreateParams(browser()->profile()));
27  web_contents->GetController().LoadURL(
28        GURL(content::kAboutBlankURL), content::Referrer(),
29        content::PAGE_TRANSITION_LINK, std::string());
30
31  // Give it a NTP virtual URL.
32  content::NavigationController* controller = &web_contents->GetController();
33  content::NavigationEntry* entry = controller->GetVisibleEntry();
34  entry->SetVirtualURL(GURL(chrome::kChromeUINewTabURL));
35
36  // Verify that the detached bookmark bar is hidden.
37  EXPECT_EQ(BookmarkBar::HIDDEN, browser()->bookmark_bar_state());
38  browser()->tab_strip_model()->AppendWebContents(web_contents, true);
39  EXPECT_EQ(BookmarkBar::HIDDEN, browser()->bookmark_bar_state());
40}
41
42class BookmarkInstantExtendedTest : public BrowserWithTestWindowTest {
43 public:
44  BookmarkInstantExtendedTest() {
45    chrome::EnableInstantExtendedAPIForTesting();
46  }
47
48 protected:
49  virtual TestingProfile* CreateProfile() OVERRIDE {
50    TestingProfile* profile = BrowserWithTestWindowTest::CreateProfile();
51    // TemplateURLService is normally NULL during testing. Instant extended
52    // needs this service so set a custom factory function.
53    TemplateURLServiceFactory::GetInstance()->SetTestingFactory(
54        profile, &BookmarkInstantExtendedTest::CreateTemplateURLService);
55    return profile;
56  }
57
58 private:
59  static BrowserContextKeyedService* CreateTemplateURLService(
60      content::BrowserContext* profile) {
61    return new TemplateURLService(static_cast<Profile*>(profile));
62  }
63
64  DISALLOW_COPY_AND_ASSIGN(BookmarkInstantExtendedTest);
65};
66
67// Verify that in instant extended mode the detached bookmark bar is visible on
68// the new tab page.
69TEST_F(BookmarkInstantExtendedTest, DetachedBookmarkBarOnNTP) {
70  AddTab(browser(), GURL(chrome::kChromeUINewTabURL));
71  EXPECT_EQ(BookmarkBar::DETACHED, browser()->bookmark_bar_state());
72}
73