12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/search_engines/template_url_service_factory.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/tabs/tab_strip_model.h" 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/common/url_constants.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/test/base/browser_with_test_window_test.h" 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/search_engines/search_terms_data.h" 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/search_engines/template_url_service.h" 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/search_engines/template_url_service_client.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/browser/navigation_entry.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/browser/web_contents.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)typedef BrowserWithTestWindowTest BookmarkTest; 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Verify that the detached bookmark bar is visible on the new tab page. 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(BookmarkTest, DetachedBookmarkBarOnNTP) { 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AddTab(browser(), GURL(chrome::kChromeUINewTabURL)); 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(BookmarkBar::DETACHED, browser()->bookmark_bar_state()); 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Verify that the detached bookmark bar is hidden on custom NTP pages. 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(BookmarkTest, DetachedBookmarkBarOnCustomNTP) { 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Create a empty commited web contents. 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::WebContents* web_contents = content::WebContents::Create( 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::WebContents::CreateParams(browser()->profile())); 28f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) web_contents->GetController().LoadURL(GURL(url::kAboutBlankURL), 29f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) content::Referrer(), 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ui::PAGE_TRANSITION_LINK, 31f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string()); 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Give it a NTP virtual URL. 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::NavigationController* controller = &web_contents->GetController(); 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::NavigationEntry* entry = controller->GetVisibleEntry(); 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) entry->SetVirtualURL(GURL(chrome::kChromeUINewTabURL)); 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Verify that the detached bookmark bar is hidden. 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(BookmarkBar::HIDDEN, browser()->bookmark_bar_state()); 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->AppendWebContents(web_contents, true); 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(BookmarkBar::HIDDEN, browser()->bookmark_bar_state()); 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class BookmarkInstantExtendedTest : public BrowserWithTestWindowTest { 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) BookmarkInstantExtendedTest() { 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual TestingProfile* CreateProfile() OVERRIDE { 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingProfile* profile = BrowserWithTestWindowTest::CreateProfile(); 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // TemplateURLService is normally NULL during testing. Instant extended 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // needs this service so set a custom factory function. 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TemplateURLServiceFactory::GetInstance()->SetTestingFactory( 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) profile, &BookmarkInstantExtendedTest::CreateTemplateURLService); 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return profile; 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 60a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) static KeyedService* CreateTemplateURLService( 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) content::BrowserContext* profile) { 62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return new TemplateURLService( 63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch static_cast<Profile*>(profile)->GetPrefs(), 64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch make_scoped_ptr(new SearchTermsData), NULL, 65116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch scoped_ptr<TemplateURLServiceClient>(), NULL, NULL, base::Closure()); 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(BookmarkInstantExtendedTest); 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Verify that in instant extended mode the detached bookmark bar is visible on 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// the new tab page. 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(BookmarkInstantExtendedTest, DetachedBookmarkBarOnNTP) { 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AddTab(browser(), GURL(chrome::kChromeUINewTabURL)); 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(BookmarkBar::DETACHED, browser()->bookmark_bar_state()); 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 77