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/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 
     14 typedef BrowserWithTestWindowTest BookmarkTest;
     15 
     16 // Verify that the detached bookmark bar is visible on the new tab page.
     17 TEST_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.
     23 TEST_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 
     42 class 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.
     69 TEST_F(BookmarkInstantExtendedTest, DetachedBookmarkBarOnNTP) {
     70   AddTab(browser(), GURL(chrome::kChromeUINewTabURL));
     71   EXPECT_EQ(BookmarkBar::DETACHED, browser()->bookmark_bar_state());
     72 }
     73