Home | History | Annotate | Download | only in bookmarks
      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 
     15 typedef BrowserWithTestWindowTest BookmarkTest;
     16 
     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());
     21 }
     22 
     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),
     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 
     44 class 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.
     73 TEST_F(BookmarkInstantExtendedTest, DetachedBookmarkBarOnNTP) {
     74   AddTab(browser(), GURL(chrome::kChromeUINewTabURL));
     75   EXPECT_EQ(BookmarkBar::DETACHED, browser()->bookmark_bar_state());
     76 }
     77