bookmark_bar_view_unittest.cc revision cedac228d2dd51db4b79ea1e72c7f249408ee061
1// Copyright 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/ui/views/bookmarks/bookmark_bar_view.h" 6 7#include "base/prefs/pref_service.h" 8#include "chrome/browser/bookmarks/bookmark_model_factory.h" 9#include "chrome/browser/profiles/profile.h" 10#include "chrome/browser/search_engines/template_url_service.h" 11#include "chrome/browser/search_engines/template_url_service_factory.h" 12#include "chrome/browser/ui/app_list/app_list_util.h" 13#include "chrome/common/pref_names.h" 14#include "chrome/common/url_constants.h" 15#include "chrome/test/base/browser_with_test_window_test.h" 16#include "chrome/test/base/scoped_testing_local_state.h" 17#include "chrome/test/base/testing_browser_process.h" 18#include "components/bookmarks/test/bookmark_test_helpers.h" 19#include "ui/views/controls/button/text_button.h" 20 21class BookmarkBarViewInstantExtendedTest : public BrowserWithTestWindowTest { 22 public: 23 BookmarkBarViewInstantExtendedTest() { 24 } 25 26 protected: 27 virtual TestingProfile* CreateProfile() OVERRIDE { 28 TestingProfile* profile = BrowserWithTestWindowTest::CreateProfile(); 29 // TemplateURLService is normally NULL during testing. Instant extended 30 // needs this service so set a custom factory function. 31 TemplateURLServiceFactory::GetInstance()->SetTestingFactory( 32 profile, &BookmarkBarViewInstantExtendedTest::CreateTemplateURLService); 33 return profile; 34 } 35 36 private: 37 static KeyedService* CreateTemplateURLService( 38 content::BrowserContext* profile) { 39 return new TemplateURLService(static_cast<Profile*>(profile)); 40 } 41 42 DISALLOW_COPY_AND_ASSIGN(BookmarkBarViewInstantExtendedTest); 43}; 44 45// Verify that in instant extended mode the visibility of the apps shortcut 46// button properly follows the pref value. 47TEST_F(BookmarkBarViewInstantExtendedTest, AppsShortcutVisibility) { 48 ScopedTestingLocalState local_state(TestingBrowserProcess::GetGlobal()); 49 profile()->CreateBookmarkModel(true); 50 test::WaitForBookmarkModelToLoad( 51 BookmarkModelFactory::GetForProfile(profile())); 52 BookmarkBarView bookmark_bar_view(browser(), NULL); 53 bookmark_bar_view.set_owned_by_client(); 54 browser()->profile()->GetPrefs()->SetBoolean( 55 prefs::kShowAppsShortcutInBookmarkBar, false); 56 EXPECT_FALSE(bookmark_bar_view.apps_page_shortcut_->visible()); 57 58 // Try to make the Apps shortcut visible. Its visibility depends on whether 59 // the app launcher is enabled. 60 browser()->profile()->GetPrefs()->SetBoolean( 61 prefs::kShowAppsShortcutInBookmarkBar, true); 62 if (IsAppLauncherEnabled()) { 63 EXPECT_FALSE(bookmark_bar_view.apps_page_shortcut_->visible()); 64 } else { 65 EXPECT_TRUE(bookmark_bar_view.apps_page_shortcut_->visible()); 66 } 67 68 // Make sure we can also properly transition from true to false. 69 browser()->profile()->GetPrefs()->SetBoolean( 70 prefs::kShowAppsShortcutInBookmarkBar, false); 71 EXPECT_FALSE(bookmark_bar_view.apps_page_shortcut_->visible()); 72} 73