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.
5 #include "chrome/browser/search_engines/template_url_service_factory.h"
6 #include "chrome/browser/ui/tabs/tab_strip_model.h"
7 #include "chrome/common/url_constants.h"
8 #include "chrome/test/base/browser_with_test_window_test.h"
9 #include "components/search_engines/search_terms_data.h"
10 #include "components/search_engines/template_url_service.h"
11 #include "components/search_engines/template_url_service_client.h"
12 #include "content/public/browser/navigation_entry.h"
13 #include "content/public/browser/web_contents.h"
15 typedef BrowserWithTestWindowTest BookmarkTest
;
17 // Verify that the detached bookmark bar is visible on the new tab page.
18 TEST_F(BookmarkTest
, DetachedBookmarkBarOnNTP
) {
19 AddTab(browser(), GURL(chrome::kChromeUINewTabURL
));
20 EXPECT_EQ(BookmarkBar::DETACHED
, browser()->bookmark_bar_state());
23 // Verify that the detached bookmark bar is hidden on custom NTP pages.
24 TEST_F(BookmarkTest
, DetachedBookmarkBarOnCustomNTP
) {
25 // Create a empty commited web contents.
26 content::WebContents
* web_contents
= content::WebContents::Create(
27 content::WebContents::CreateParams(browser()->profile()));
28 web_contents
->GetController().LoadURL(GURL(url::kAboutBlankURL
),
30 ui::PAGE_TRANSITION_LINK
,
33 // Give it a NTP virtual URL.
34 content::NavigationController
* controller
= &web_contents
->GetController();
35 content::NavigationEntry
* entry
= controller
->GetVisibleEntry();
36 entry
->SetVirtualURL(GURL(chrome::kChromeUINewTabURL
));
38 // Verify that the detached bookmark bar is hidden.
39 EXPECT_EQ(BookmarkBar::HIDDEN
, browser()->bookmark_bar_state());
40 browser()->tab_strip_model()->AppendWebContents(web_contents
, true);
41 EXPECT_EQ(BookmarkBar::HIDDEN
, browser()->bookmark_bar_state());
44 class BookmarkInstantExtendedTest
: public BrowserWithTestWindowTest
{
46 BookmarkInstantExtendedTest() {
50 TestingProfile
* CreateProfile() override
{
51 TestingProfile
* profile
= BrowserWithTestWindowTest::CreateProfile();
52 // TemplateURLService is normally NULL during testing. Instant extended
53 // needs this service so set a custom factory function.
54 TemplateURLServiceFactory::GetInstance()->SetTestingFactory(
55 profile
, &BookmarkInstantExtendedTest::CreateTemplateURLService
);
60 static KeyedService
* CreateTemplateURLService(
61 content::BrowserContext
* profile
) {
62 return new TemplateURLService(
63 static_cast<Profile
*>(profile
)->GetPrefs(),
64 make_scoped_ptr(new SearchTermsData
), NULL
,
65 scoped_ptr
<TemplateURLServiceClient
>(), NULL
, NULL
, base::Closure());
68 DISALLOW_COPY_AND_ASSIGN(BookmarkInstantExtendedTest
);
71 // Verify that in instant extended mode the detached bookmark bar is visible on
73 TEST_F(BookmarkInstantExtendedTest
, DetachedBookmarkBarOnNTP
) {
74 AddTab(browser(), GURL(chrome::kChromeUINewTabURL
));
75 EXPECT_EQ(BookmarkBar::DETACHED
, browser()->bookmark_bar_state());