bookmark_bar_view_unittest.cc revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 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/ui/views/bookmarks/bookmark_bar_view.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "apps/app_launcher.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_service.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/profiles/profile.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/search/search.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/search_engines/template_url_service.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/search_engines/template_url_service_factory.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/common/pref_names.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/common/url_constants.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/test/base/browser_with_test_window_test.h" 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/test/base/scoped_testing_local_state.h" 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/test/base/testing_browser_process.h" 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/test/base/ui_test_utils.h" 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/views/controls/button/text_button.h" 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)typedef BrowserWithTestWindowTest BookmarkBarViewTest; 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Verify that the apps shortcut is never visible without instant extended. 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(BookmarkBarViewTest, NoAppsShortcutWithoutInstantExtended) { 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedTestingLocalState local_state(TestingBrowserProcess::GetGlobal()); 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) profile()->CreateBookmarkModel(true); 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ui_test_utils::WaitForBookmarkModelToLoad(profile()); 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) BookmarkBarView bookmark_bar_view(browser(), NULL); 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bookmark_bar_view.set_owned_by_client(); 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(bookmark_bar_view.apps_page_shortcut_->visible()); 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->profile()->GetPrefs()->SetBoolean( 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kShowAppsShortcutInBookmarkBar, true); 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(bookmark_bar_view.apps_page_shortcut_->visible()); 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class BookmarkBarViewInstantExtendedTest : public BrowserWithTestWindowTest { 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) BookmarkBarViewInstantExtendedTest() { 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) chrome::EnableInstantExtendedAPIForTesting(); 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual TestingProfile* CreateProfile() OVERRIDE { 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingProfile* profile = BrowserWithTestWindowTest::CreateProfile(); 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // TemplateURLService is normally NULL during testing. Instant extended 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // needs this service so set a custom factory function. 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TemplateURLServiceFactory::GetInstance()->SetTestingFactory( 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) profile, &BookmarkBarViewInstantExtendedTest::CreateTemplateURLService); 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return profile; 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) static ProfileKeyedService* CreateTemplateURLService( 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) content::BrowserContext* profile) { 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return new TemplateURLService(static_cast<Profile*>(profile)); 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(BookmarkBarViewInstantExtendedTest); 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Verify that in instant extended mode the visibility of the apps shortcut 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// button properly follows the pref value. 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(BookmarkBarViewInstantExtendedTest, AppsShortcutVisibility) { 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedTestingLocalState local_state(TestingBrowserProcess::GetGlobal()); 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) profile()->CreateBookmarkModel(true); 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ui_test_utils::WaitForBookmarkModelToLoad(profile()); 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) BookmarkBarView bookmark_bar_view(browser(), NULL); 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bookmark_bar_view.set_owned_by_client(); 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->profile()->GetPrefs()->SetBoolean( 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kShowAppsShortcutInBookmarkBar, false); 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(bookmark_bar_view.apps_page_shortcut_->visible()); 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Try to make the Apps shortcut visible. Its visibility depends on whether 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // the app launcher is enabled. 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->profile()->GetPrefs()->SetBoolean( 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kShowAppsShortcutInBookmarkBar, true); 77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (apps::WasAppLauncherEnabled()) { 78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FALSE(bookmark_bar_view.apps_page_shortcut_->visible()); 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } else { 80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_TRUE(bookmark_bar_view.apps_page_shortcut_->visible()); 81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 82c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Make sure we can also properly transition from true to false. 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->profile()->GetPrefs()->SetBoolean( 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kShowAppsShortcutInBookmarkBar, false); 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(bookmark_bar_view.apps_page_shortcut_->visible()); 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 88