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