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_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" 14 15typedef BrowserWithTestWindowTest BookmarkTest; 16 17// Verify that the detached bookmark bar is visible on the new tab page. 18TEST_F(BookmarkTest, DetachedBookmarkBarOnNTP) { 19 AddTab(browser(), GURL(chrome::kChromeUINewTabURL)); 20 EXPECT_EQ(BookmarkBar::DETACHED, browser()->bookmark_bar_state()); 21} 22 23// Verify that the detached bookmark bar is hidden on custom NTP pages. 24TEST_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), 29 content::Referrer(), 30 ui::PAGE_TRANSITION_LINK, 31 std::string()); 32 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)); 37 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()); 42} 43 44class BookmarkInstantExtendedTest : public BrowserWithTestWindowTest { 45 public: 46 BookmarkInstantExtendedTest() { 47 } 48 49 protected: 50 virtual 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); 56 return profile; 57 } 58 59 private: 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()); 66 } 67 68 DISALLOW_COPY_AND_ASSIGN(BookmarkInstantExtendedTest); 69}; 70 71// Verify that in instant extended mode the detached bookmark bar is visible on 72// the new tab page. 73TEST_F(BookmarkInstantExtendedTest, DetachedBookmarkBarOnNTP) { 74 AddTab(browser(), GURL(chrome::kChromeUINewTabURL)); 75 EXPECT_EQ(BookmarkBar::DETACHED, browser()->bookmark_bar_state()); 76} 77