1ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 2ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// found in the LICENSE file. 4ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 5ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "chrome/browser/ui/views/bookmarks/bookmark_bubble_view.h" 6ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 7ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include <string> 8ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 9ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "base/memory/scoped_ptr.h" 10ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "chrome/browser/bookmarks/bookmark_model_factory.h" 11ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "chrome/browser/signin/fake_signin_manager.h" 12ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "chrome/browser/signin/signin_manager_factory.h" 13ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "chrome/browser/ui/bookmarks/bookmark_bubble_delegate.h" 14ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "chrome/test/base/browser_with_test_window_test.h" 15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/bookmarks/browser/bookmark_utils.h" 16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/bookmarks/test/bookmark_test_helpers.h" 17e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#include "components/signin/core/browser/signin_manager.h" 18ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 19ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochnamespace { 20ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochconst char kTestBookmarkURL[] = "http://www.google.com"; 21ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch} // namespace 22ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 23ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochclass BookmarkBubbleViewTest : public BrowserWithTestWindowTest { 24ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch public: 25ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch BookmarkBubbleViewTest() {} 26ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 27ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // testing::Test: 28ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch virtual void SetUp() OVERRIDE { 29ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch BrowserWithTestWindowTest::SetUp(); 30ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 31ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch profile()->CreateBookmarkModel(true); 32010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) BookmarkModel* bookmark_model = 33010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) BookmarkModelFactory::GetForProfile(profile()); 34010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) test::WaitForBookmarkModelToLoad(bookmark_model); 35ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch bookmarks::AddIfNotBookmarked( 37010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) bookmark_model, GURL(kTestBookmarkURL), base::string16()); 38ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch } 39ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 40ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch virtual void TearDown() OVERRIDE { 41ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Make sure the bubble is destroyed before the profile to avoid a crash. 42ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch bubble_.reset(); 43ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 44ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch BrowserWithTestWindowTest::TearDown(); 45ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch } 46ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 47effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // BrowserWithTestWindowTest: 48effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch virtual TestingProfile* CreateProfile() OVERRIDE { 49effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch TestingProfile::Builder builder; 50effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch builder.AddTestingFactory(SigninManagerFactory::GetInstance(), 51effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch FakeSigninManagerBase::Build); 52effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch return builder.Build().release(); 53effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch } 54effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 55ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch protected: 56ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Creates a bookmark bubble view. 57ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch void CreateBubbleView() { 58ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch scoped_ptr<BookmarkBubbleDelegate> delegate; 59ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch bubble_.reset(new BookmarkBubbleView(NULL, 60ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch NULL, 61ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch delegate.Pass(), 62ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch profile(), 63ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch GURL(kTestBookmarkURL), 64ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch true)); 65ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch } 66ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 67effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch void SetUpSigninManager(const std::string& username) { 68effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch if (username.empty()) 69effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch return; 70effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch SigninManagerBase* signin_manager = static_cast<SigninManagerBase*>( 71effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch SigninManagerFactory::GetForProfile(profile())); 72effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ASSERT_TRUE(signin_manager); 73effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch signin_manager->SetAuthenticatedUsername(username); 74ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch } 75ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 76ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch scoped_ptr<BookmarkBubbleView> bubble_; 77ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 78ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch private: 79ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch DISALLOW_COPY_AND_ASSIGN(BookmarkBubbleViewTest); 80ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}; 81ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 82ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Verifies that the sync promo is not displayed for a signed in user. 83ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochTEST_F(BookmarkBubbleViewTest, SyncPromoSignedIn) { 84effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch SetUpSigninManager("fake_username"); 85ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch CreateBubbleView(); 86ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch bubble_->Init(); 87ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_FALSE(bubble_->sync_promo_view_); 88ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch} 89ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 90ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Verifies that the sync promo is displayed for a user that is not signed in. 91ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochTEST_F(BookmarkBubbleViewTest, SyncPromoNotSignedIn) { 92ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch CreateBubbleView(); 93ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch bubble_->Init(); 94ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#if defined(OS_CHROMEOS) 95ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_FALSE(bubble_->sync_promo_view_); 96ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#else // !defined(OS_CHROMEOS) 97ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch EXPECT_TRUE(bubble_->sync_promo_view_); 98ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#endif 99ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch} 100