Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(164)

Side by Side Diff: chrome/browser/android/partner_bookmarks_shim_unittest.cc

Issue 10834237: Add the android partner bookmark shim. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove unnecessary conditional. Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 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/android/partner_bookmarks_shim.h"
6
7 #include "base/message_loop.h"
8 #include "base/string16.h"
9 #include "base/utf_string_conversions.h"
10 #include "chrome/browser/bookmarks/bookmark_model.h"
11 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
12 #include "chrome/test/base/testing_profile.h"
13 #include "content/public/browser/browser_thread.h"
14 #include "content/public/test/test_browser_thread.h"
15 #include "googleurl/src/gurl.h"
16 #include "testing/gtest/include/gtest/gtest.h"
17
18 class PartnerBookmarksShimTest : public testing::Test {
19 public:
20 PartnerBookmarksShimTest()
21 : ui_thread_(content::BrowserThread::UI, &message_loop_),
22 file_thread_(content::BrowserThread::FILE, &message_loop_) {
23 }
24
25 TestingProfile* profile() const { return profile_.get(); }
26
27 const BookmarkNode* AddBookmark(const BookmarkNode* parent,
28 const GURL& url,
29 const string16& title) {
30 BookmarkModel* model = BookmarkModelFactory::GetForProfile(profile());
31 if (!parent)
32 parent = model->bookmark_bar_node();
33 return model->AddURL(parent, parent->child_count(), title, url);
34 }
35
36 const BookmarkNode* AddFolder(const BookmarkNode* parent,
37 const string16& title) {
38 BookmarkModel* model = BookmarkModelFactory::GetForProfile(profile());
39 if (!parent)
40 parent = model->bookmark_bar_node();
41 return model->AddFolder(parent, parent->child_count(), title);
42 }
43
44 protected:
45 // testing::Test
46 virtual void SetUp() OVERRIDE {
47 profile_.reset(new TestingProfile());
48 profile_->CreateBookmarkModel(true);
49 profile_->BlockUntilBookmarkModelLoaded();
50 }
51
52 virtual void TearDown() OVERRIDE {
53 profile_.reset(NULL);
54 PartnerBookmarksShim::GetInstance()->Reset();
55 }
56
57 scoped_ptr<TestingProfile> profile_;
58
59 MessageLoopForUI message_loop_;
60 content::TestBrowserThread ui_thread_;
61 content::TestBrowserThread file_thread_;
62
63 DISALLOW_COPY_AND_ASSIGN(PartnerBookmarksShimTest);
64 };
65
66 class TestObserver : public PartnerBookmarksShim::Observer {
67 public:
68 TestObserver()
69 : notified_of_load_(false) {
70 }
71
72 // Called when everything is loaded and attached
73 virtual void PartnerShimLoaded(PartnerBookmarksShim*) OVERRIDE {
74 notified_of_load_ = true;
75 }
76
77 bool IsNotifiedOfLoad() { return notified_of_load_; }
78
79 private:
80 bool notified_of_load_;
81
82 DISALLOW_COPY_AND_ASSIGN(TestObserver);
83 };
84
85 TEST_F(PartnerBookmarksShimTest, GetNodeByID) {
86 // Add a bookmark.
87 GURL bookmark_url("http://www.google.com/");
88 AddBookmark(
89 NULL,
90 bookmark_url,
91 ASCIIToUTF16("bar"));
92 const BookmarkNode* test_folder1 = AddFolder(NULL,
93 ASCIIToUTF16("test_folder1"));
94 const BookmarkNode* test_folder2 = AddFolder(test_folder1,
95 ASCIIToUTF16("test_folder2"));
96 const BookmarkNode* model_bookmark1 = AddBookmark(test_folder2,
97 GURL("http://www.test.com"),
98 ASCIIToUTF16("bar"));
99 const BookmarkNode* model_bookmark2 = AddBookmark(test_folder2,
100 GURL("http://www.foo.com"),
101 ASCIIToUTF16("baz"));
102
103 int64 id = PartnerBookmarksShim::kPartnerBookmarkIdBits;
104 BookmarkNode* root_partner_node = new BookmarkPermanentNode(id++);
105 BookmarkNode* partner_folder1 = new BookmarkNode(id++, GURL());
106 partner_folder1->set_type(BookmarkNode::FOLDER);
107 root_partner_node->Add(partner_folder1, root_partner_node->child_count());
108
109 BookmarkNode* partner_folder2 = new BookmarkNode(id++, GURL());
110 partner_folder2->set_type(BookmarkNode::FOLDER);
111 partner_folder1->Add(partner_folder2, partner_folder1->child_count());
112
113 BookmarkNode* partner_bookmark1 = new BookmarkNode(id++,
114 GURL("http://www.a.com"));
115 partner_bookmark1->set_type(BookmarkNode::URL);
116 partner_folder1->Add(partner_bookmark1, partner_folder1->child_count());
117
118 BookmarkNode* partner_bookmark2 = new BookmarkNode(id++,
119 GURL("http://www.b.com"));
120 partner_bookmark2->set_type(BookmarkNode::URL);
121 partner_folder2->Add(partner_bookmark2, partner_folder2->child_count());
122
123 PartnerBookmarksShim* shim = PartnerBookmarksShim::GetInstance();
124 ASSERT_FALSE(shim->IsLoaded());
125 shim->AttachTo(BookmarkModelFactory::GetForProfile(profile()), test_folder1);
126 shim->SetPartnerBookmarksRoot(root_partner_node);
127 ASSERT_TRUE(shim->IsLoaded());
128
129 ASSERT_EQ(shim->GetNodeByID(model_bookmark1->id()), model_bookmark1);
130 ASSERT_EQ(shim->GetNodeByID(model_bookmark2->id()), model_bookmark2);
131 ASSERT_EQ(shim->GetNodeByID(test_folder2->id()), test_folder2);
132 ASSERT_EQ(shim->GetNodeByID(PartnerBookmarksShim::kPartnerBookmarkIdBits),
133 root_partner_node);
134 ASSERT_EQ(shim->GetNodeByID(PartnerBookmarksShim::kPartnerBookmarkIdBits + 1),
135 partner_folder1);
136 ASSERT_EQ(shim->GetNodeByID(PartnerBookmarksShim::kPartnerBookmarkIdBits + 4),
137 partner_bookmark2);
138 }
139
140 TEST_F(PartnerBookmarksShimTest, ObserverNotifiedOfLoadNoPartnerBookmarks) {
141 TestObserver* observer = new TestObserver();
142 PartnerBookmarksShim* shim = PartnerBookmarksShim::GetInstance();
143 shim->AddObserver(observer);
144 ASSERT_FALSE(observer->IsNotifiedOfLoad());
145 shim->SetPartnerBookmarksRoot(NULL);
146 ASSERT_TRUE(observer->IsNotifiedOfLoad());
147 }
148
149 TEST_F(PartnerBookmarksShimTest, ObserverNotifiedOfLoadWithPartnerBookmarks) {
150 int64 id = PartnerBookmarksShim::kPartnerBookmarkIdBits;
151 BookmarkNode* root_partner_node = new BookmarkPermanentNode(id++);
152 BookmarkNode* partner_bookmark1 = new BookmarkNode(id++,
153 GURL("http://www.a.com"));
154 partner_bookmark1->set_type(BookmarkNode::URL);
155 root_partner_node->Add(partner_bookmark1, root_partner_node->child_count());
156
157 TestObserver* observer = new TestObserver();
158 PartnerBookmarksShim* shim = PartnerBookmarksShim::GetInstance();
159 shim->AddObserver(observer);
160 BookmarkModel* model = BookmarkModelFactory::GetForProfile(profile());
161 shim->AttachTo(model, model->bookmark_bar_node());
162 ASSERT_FALSE(observer->IsNotifiedOfLoad());
163 shim->SetPartnerBookmarksRoot(root_partner_node);
164 ASSERT_TRUE(observer->IsNotifiedOfLoad());
165 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698