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

Side by Side Diff: chrome/browser/bookmarks/bookmark_utils_unittest.cc

Issue 242693003: Introduce BookmarkClient interface to abstract embedder (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 6 years, 8 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/bookmarks/bookmark_utils.h" 5 #include "chrome/browser/bookmarks/bookmark_utils.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
11 #include "chrome/browser/bookmarks/base_bookmark_model_observer.h" 11 #include "chrome/browser/bookmarks/base_bookmark_model_observer.h"
12 #include "chrome/browser/bookmarks/bookmark_model.h" 12 #include "chrome/browser/bookmarks/bookmark_model.h"
13 #include "chrome/browser/bookmarks/bookmark_node_data.h" 13 #include "chrome/browser/bookmarks/bookmark_node_data.h"
14 #include "chrome/browser/bookmarks/bookmark_test_helpers.h"
14 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
15 #include "ui/base/clipboard/clipboard.h" 16 #include "ui/base/clipboard/clipboard.h"
16 #include "ui/base/clipboard/scoped_clipboard_writer.h" 17 #include "ui/base/clipboard/scoped_clipboard_writer.h"
17 18
18 using base::ASCIIToUTF16; 19 using base::ASCIIToUTF16;
19 using std::string; 20 using std::string;
20 21
21 namespace bookmark_utils { 22 namespace bookmark_utils {
22 namespace { 23 namespace {
23 24
(...skipping 17 matching lines...) Expand all
41 void ExpectGroupedChangeCount(int expected_beginning_count, 42 void ExpectGroupedChangeCount(int expected_beginning_count,
42 int expected_ended_count) { 43 int expected_ended_count) {
43 // The undo framework is not used under Android. Thus the group change 44 // The undo framework is not used under Android. Thus the group change
44 // events will not be fired and so should not be tested for Android. 45 // events will not be fired and so should not be tested for Android.
45 #if !defined(OS_ANDROID) 46 #if !defined(OS_ANDROID)
46 EXPECT_EQ(grouped_changes_beginning_count_, expected_beginning_count); 47 EXPECT_EQ(grouped_changes_beginning_count_, expected_beginning_count);
47 EXPECT_EQ(grouped_changes_ended_count_, expected_ended_count); 48 EXPECT_EQ(grouped_changes_ended_count_, expected_ended_count);
48 #endif 49 #endif
49 } 50 }
50 51
52 protected:
53 test::TestBookmarkClient client_;
54
51 private: 55 private:
52 // BaseBookmarkModelObserver: 56 // BaseBookmarkModelObserver:
53 virtual void BookmarkModelChanged() OVERRIDE {} 57 virtual void BookmarkModelChanged() OVERRIDE {}
54 58
55 virtual void GroupedBookmarkChangesBeginning(BookmarkModel* model) OVERRIDE { 59 virtual void GroupedBookmarkChangesBeginning(BookmarkModel* model) OVERRIDE {
56 ++grouped_changes_beginning_count_; 60 ++grouped_changes_beginning_count_;
57 } 61 }
58 62
59 virtual void GroupedBookmarkChangesEnded(BookmarkModel* model) OVERRIDE { 63 virtual void GroupedBookmarkChangesEnded(BookmarkModel* model) OVERRIDE {
60 ++grouped_changes_ended_count_; 64 ++grouped_changes_ended_count_;
61 } 65 }
62 66
63 int grouped_changes_beginning_count_; 67 int grouped_changes_beginning_count_;
64 int grouped_changes_ended_count_; 68 int grouped_changes_ended_count_;
65 69
66 // Clipboard requires a message loop. 70 // Clipboard requires a message loop.
67 base::MessageLoopForUI loop_; 71 base::MessageLoopForUI loop_;
68 72
69 DISALLOW_COPY_AND_ASSIGN(BookmarkUtilsTest); 73 DISALLOW_COPY_AND_ASSIGN(BookmarkUtilsTest);
70 }; 74 };
71 75
72 TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesWordPhraseQuery) { 76 TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesWordPhraseQuery) {
73 BookmarkModel model(NULL); 77 scoped_ptr<BookmarkModel> model(client_.CreateModel());
74 const BookmarkNode* node1 = model.AddURL(model.other_node(), 78 const BookmarkNode* node1 = model->AddURL(model->other_node(),
75 0, 79 0,
76 ASCIIToUTF16("foo bar"), 80 ASCIIToUTF16("foo bar"),
77 GURL("http://www.google.com")); 81 GURL("http://www.google.com"));
78 const BookmarkNode* node2 = model.AddURL(model.other_node(), 82 const BookmarkNode* node2 = model->AddURL(model->other_node(),
79 0, 83 0,
80 ASCIIToUTF16("baz buz"), 84 ASCIIToUTF16("baz buz"),
81 GURL("http://www.cnn.com")); 85 GURL("http://www.cnn.com"));
82 const BookmarkNode* folder1 = model.AddFolder(model.other_node(), 86 const BookmarkNode* folder1 =
83 0, 87 model->AddFolder(model->other_node(), 0, ASCIIToUTF16("foo"));
84 ASCIIToUTF16("foo"));
85 std::vector<const BookmarkNode*> nodes; 88 std::vector<const BookmarkNode*> nodes;
86 QueryFields query; 89 QueryFields query;
87 query.word_phrase_query.reset(new base::string16); 90 query.word_phrase_query.reset(new base::string16);
88 // No nodes are returned for empty string. 91 // No nodes are returned for empty string.
89 *query.word_phrase_query = ASCIIToUTF16(""); 92 *query.word_phrase_query = ASCIIToUTF16("");
90 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 93 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
91 EXPECT_TRUE(nodes.empty()); 94 EXPECT_TRUE(nodes.empty());
92 nodes.clear(); 95 nodes.clear();
93 96
94 // No nodes are returned for space-only string. 97 // No nodes are returned for space-only string.
95 *query.word_phrase_query = ASCIIToUTF16(" "); 98 *query.word_phrase_query = ASCIIToUTF16(" ");
96 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 99 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
97 EXPECT_TRUE(nodes.empty()); 100 EXPECT_TRUE(nodes.empty());
98 nodes.clear(); 101 nodes.clear();
99 102
100 // Node "foo bar" and folder "foo" are returned in search results. 103 // Node "foo bar" and folder "foo" are returned in search results.
101 *query.word_phrase_query = ASCIIToUTF16("foo"); 104 *query.word_phrase_query = ASCIIToUTF16("foo");
102 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 105 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
103 ASSERT_EQ(2U, nodes.size()); 106 ASSERT_EQ(2U, nodes.size());
104 EXPECT_TRUE(nodes[0] == folder1); 107 EXPECT_TRUE(nodes[0] == folder1);
105 EXPECT_TRUE(nodes[1] == node1); 108 EXPECT_TRUE(nodes[1] == node1);
106 nodes.clear(); 109 nodes.clear();
107 110
108 // Ensure url matches return in search results. 111 // Ensure url matches return in search results.
109 *query.word_phrase_query = ASCIIToUTF16("cnn"); 112 *query.word_phrase_query = ASCIIToUTF16("cnn");
110 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 113 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
111 ASSERT_EQ(1U, nodes.size()); 114 ASSERT_EQ(1U, nodes.size());
112 EXPECT_TRUE(nodes[0] == node2); 115 EXPECT_TRUE(nodes[0] == node2);
113 nodes.clear(); 116 nodes.clear();
114 117
115 // Ensure folder "foo" is not returned in more specific search. 118 // Ensure folder "foo" is not returned in more specific search.
116 *query.word_phrase_query = ASCIIToUTF16("foo bar"); 119 *query.word_phrase_query = ASCIIToUTF16("foo bar");
117 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 120 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
118 ASSERT_EQ(1U, nodes.size()); 121 ASSERT_EQ(1U, nodes.size());
119 EXPECT_TRUE(nodes[0] == node1); 122 EXPECT_TRUE(nodes[0] == node1);
120 nodes.clear(); 123 nodes.clear();
121 124
122 // Bookmark Bar and Other Bookmarks are not returned in search results. 125 // Bookmark Bar and Other Bookmarks are not returned in search results.
123 *query.word_phrase_query = ASCIIToUTF16("Bookmark"); 126 *query.word_phrase_query = ASCIIToUTF16("Bookmark");
124 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 127 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
125 ASSERT_EQ(0U, nodes.size()); 128 ASSERT_EQ(0U, nodes.size());
126 nodes.clear(); 129 nodes.clear();
127 } 130 }
128 131
129 // Check exact matching against a URL query. 132 // Check exact matching against a URL query.
130 TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesUrl) { 133 TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesUrl) {
131 BookmarkModel model(NULL); 134 scoped_ptr<BookmarkModel> model(client_.CreateModel());
132 const BookmarkNode* node1 = model.AddURL(model.other_node(), 135 const BookmarkNode* node1 = model->AddURL(model->other_node(),
133 0, 136 0,
134 ASCIIToUTF16("Google"), 137 ASCIIToUTF16("Google"),
135 GURL("https://www.google.com/")); 138 GURL("https://www.google.com/"));
136 model.AddURL(model.other_node(), 139 model->AddURL(model->other_node(),
137 0, 140 0,
138 ASCIIToUTF16("Google Calendar"), 141 ASCIIToUTF16("Google Calendar"),
139 GURL("https://www.google.com/calendar")); 142 GURL("https://www.google.com/calendar"));
140 143
141 model.AddFolder(model.other_node(), 0, ASCIIToUTF16("Folder")); 144 model->AddFolder(model->other_node(), 0, ASCIIToUTF16("Folder"));
142 145
143 std::vector<const BookmarkNode*> nodes; 146 std::vector<const BookmarkNode*> nodes;
144 QueryFields query; 147 QueryFields query;
145 query.url.reset(new base::string16); 148 query.url.reset(new base::string16);
146 *query.url = ASCIIToUTF16("https://www.google.com/"); 149 *query.url = ASCIIToUTF16("https://www.google.com/");
147 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 150 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
148 ASSERT_EQ(1U, nodes.size()); 151 ASSERT_EQ(1U, nodes.size());
149 EXPECT_TRUE(nodes[0] == node1); 152 EXPECT_TRUE(nodes[0] == node1);
150 nodes.clear(); 153 nodes.clear();
151 154
152 *query.url = ASCIIToUTF16("calendar"); 155 *query.url = ASCIIToUTF16("calendar");
153 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 156 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
154 ASSERT_EQ(0U, nodes.size()); 157 ASSERT_EQ(0U, nodes.size());
155 nodes.clear(); 158 nodes.clear();
156 159
157 // Empty URL should not match folders. 160 // Empty URL should not match folders.
158 *query.url = ASCIIToUTF16(""); 161 *query.url = ASCIIToUTF16("");
159 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 162 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
160 ASSERT_EQ(0U, nodes.size()); 163 ASSERT_EQ(0U, nodes.size());
161 nodes.clear(); 164 nodes.clear();
162 } 165 }
163 166
164 // Check exact matching against a title query. 167 // Check exact matching against a title query.
165 TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesTitle) { 168 TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesTitle) {
166 BookmarkModel model(NULL); 169 scoped_ptr<BookmarkModel> model(client_.CreateModel());
167 const BookmarkNode* node1 = model.AddURL(model.other_node(), 170 const BookmarkNode* node1 = model->AddURL(model->other_node(),
168 0, 171 0,
169 ASCIIToUTF16("Google"), 172 ASCIIToUTF16("Google"),
170 GURL("https://www.google.com/")); 173 GURL("https://www.google.com/"));
171 model.AddURL(model.other_node(), 174 model->AddURL(model->other_node(),
172 0, 175 0,
173 ASCIIToUTF16("Google Calendar"), 176 ASCIIToUTF16("Google Calendar"),
174 GURL("https://www.google.com/calendar")); 177 GURL("https://www.google.com/calendar"));
175 178
176 const BookmarkNode* folder1 = 179 const BookmarkNode* folder1 =
177 model.AddFolder(model.other_node(), 0, ASCIIToUTF16("Folder")); 180 model->AddFolder(model->other_node(), 0, ASCIIToUTF16("Folder"));
178 181
179 std::vector<const BookmarkNode*> nodes; 182 std::vector<const BookmarkNode*> nodes;
180 QueryFields query; 183 QueryFields query;
181 query.title.reset(new base::string16); 184 query.title.reset(new base::string16);
182 *query.title = ASCIIToUTF16("Google"); 185 *query.title = ASCIIToUTF16("Google");
183 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 186 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
184 ASSERT_EQ(1U, nodes.size()); 187 ASSERT_EQ(1U, nodes.size());
185 EXPECT_TRUE(nodes[0] == node1); 188 EXPECT_TRUE(nodes[0] == node1);
186 nodes.clear(); 189 nodes.clear();
187 190
188 *query.title = ASCIIToUTF16("Calendar"); 191 *query.title = ASCIIToUTF16("Calendar");
189 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 192 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
190 ASSERT_EQ(0U, nodes.size()); 193 ASSERT_EQ(0U, nodes.size());
191 nodes.clear(); 194 nodes.clear();
192 195
193 // Title should match folders. 196 // Title should match folders.
194 *query.title = ASCIIToUTF16("Folder"); 197 *query.title = ASCIIToUTF16("Folder");
195 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 198 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
196 ASSERT_EQ(1U, nodes.size()); 199 ASSERT_EQ(1U, nodes.size());
197 EXPECT_TRUE(nodes[0] == folder1); 200 EXPECT_TRUE(nodes[0] == folder1);
198 nodes.clear(); 201 nodes.clear();
199 } 202 }
200 203
201 // Check matching against a query with multiple predicates. 204 // Check matching against a query with multiple predicates.
202 TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesConjunction) { 205 TEST_F(BookmarkUtilsTest, GetBookmarksMatchingPropertiesConjunction) {
203 BookmarkModel model(NULL); 206 scoped_ptr<BookmarkModel> model(client_.CreateModel());
204 const BookmarkNode* node1 = model.AddURL(model.other_node(), 207 const BookmarkNode* node1 = model->AddURL(model->other_node(),
205 0, 208 0,
206 ASCIIToUTF16("Google"), 209 ASCIIToUTF16("Google"),
207 GURL("https://www.google.com/")); 210 GURL("https://www.google.com/"));
208 model.AddURL(model.other_node(), 211 model->AddURL(model->other_node(),
209 0, 212 0,
210 ASCIIToUTF16("Google Calendar"), 213 ASCIIToUTF16("Google Calendar"),
211 GURL("https://www.google.com/calendar")); 214 GURL("https://www.google.com/calendar"));
212 215
213 model.AddFolder(model.other_node(), 0, ASCIIToUTF16("Folder")); 216 model->AddFolder(model->other_node(), 0, ASCIIToUTF16("Folder"));
214 217
215 std::vector<const BookmarkNode*> nodes; 218 std::vector<const BookmarkNode*> nodes;
216 QueryFields query; 219 QueryFields query;
217 220
218 // Test all fields matching. 221 // Test all fields matching.
219 query.word_phrase_query.reset(new base::string16(ASCIIToUTF16("www"))); 222 query.word_phrase_query.reset(new base::string16(ASCIIToUTF16("www")));
220 query.url.reset(new base::string16(ASCIIToUTF16("https://www.google.com/"))); 223 query.url.reset(new base::string16(ASCIIToUTF16("https://www.google.com/")));
221 query.title.reset(new base::string16(ASCIIToUTF16("Google"))); 224 query.title.reset(new base::string16(ASCIIToUTF16("Google")));
222 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 225 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
223 ASSERT_EQ(1U, nodes.size()); 226 ASSERT_EQ(1U, nodes.size());
224 EXPECT_TRUE(nodes[0] == node1); 227 EXPECT_TRUE(nodes[0] == node1);
225 nodes.clear(); 228 nodes.clear();
226 229
227 scoped_ptr<base::string16>* fields[] = { 230 scoped_ptr<base::string16>* fields[] = {
228 &query.word_phrase_query, &query.url, &query.title }; 231 &query.word_phrase_query, &query.url, &query.title };
229 232
230 // Test two fields matching. 233 // Test two fields matching.
231 for (size_t i = 0; i < arraysize(fields); i++) { 234 for (size_t i = 0; i < arraysize(fields); i++) {
232 scoped_ptr<base::string16> original_value(fields[i]->release()); 235 scoped_ptr<base::string16> original_value(fields[i]->release());
233 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 236 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
234 ASSERT_EQ(1U, nodes.size()); 237 ASSERT_EQ(1U, nodes.size());
235 EXPECT_TRUE(nodes[0] == node1); 238 EXPECT_TRUE(nodes[0] == node1);
236 nodes.clear(); 239 nodes.clear();
237 fields[i]->reset(original_value.release()); 240 fields[i]->reset(original_value.release());
238 } 241 }
239 242
240 // Test two fields matching with one non-matching field. 243 // Test two fields matching with one non-matching field.
241 for (size_t i = 0; i < arraysize(fields); i++) { 244 for (size_t i = 0; i < arraysize(fields); i++) {
242 scoped_ptr<base::string16> original_value(fields[i]->release()); 245 scoped_ptr<base::string16> original_value(fields[i]->release());
243 fields[i]->reset(new base::string16(ASCIIToUTF16("fjdkslafjkldsa"))); 246 fields[i]->reset(new base::string16(ASCIIToUTF16("fjdkslafjkldsa")));
244 GetBookmarksMatchingProperties(&model, query, 100, string(), &nodes); 247 GetBookmarksMatchingProperties(model.get(), query, 100, string(), &nodes);
245 ASSERT_EQ(0U, nodes.size()); 248 ASSERT_EQ(0U, nodes.size());
246 nodes.clear(); 249 nodes.clear();
247 fields[i]->reset(original_value.release()); 250 fields[i]->reset(original_value.release());
248 } 251 }
249 } 252 }
250 253
251 TEST_F(BookmarkUtilsTest, CopyPaste) { 254 TEST_F(BookmarkUtilsTest, CopyPaste) {
252 BookmarkModel model(NULL); 255 scoped_ptr<BookmarkModel> model(client_.CreateModel());
253 const BookmarkNode* node = model.AddURL(model.other_node(), 256 const BookmarkNode* node = model->AddURL(model->other_node(),
254 0, 257 0,
255 ASCIIToUTF16("foo bar"), 258 ASCIIToUTF16("foo bar"),
256 GURL("http://www.google.com")); 259 GURL("http://www.google.com"));
257 260
258 // Copy a node to the clipboard. 261 // Copy a node to the clipboard.
259 std::vector<const BookmarkNode*> nodes; 262 std::vector<const BookmarkNode*> nodes;
260 nodes.push_back(node); 263 nodes.push_back(node);
261 CopyToClipboard(&model, nodes, false); 264 CopyToClipboard(model.get(), nodes, false);
262 265
263 // And make sure we can paste a bookmark from the clipboard. 266 // And make sure we can paste a bookmark from the clipboard.
264 EXPECT_TRUE(CanPasteFromClipboard(model.bookmark_bar_node())); 267 EXPECT_TRUE(CanPasteFromClipboard(model->bookmark_bar_node()));
265 268
266 // Write some text to the clipboard. 269 // Write some text to the clipboard.
267 { 270 {
268 ui::ScopedClipboardWriter clipboard_writer( 271 ui::ScopedClipboardWriter clipboard_writer(
269 ui::Clipboard::GetForCurrentThread(), 272 ui::Clipboard::GetForCurrentThread(),
270 ui::CLIPBOARD_TYPE_COPY_PASTE); 273 ui::CLIPBOARD_TYPE_COPY_PASTE);
271 clipboard_writer.WriteText(ASCIIToUTF16("foo")); 274 clipboard_writer.WriteText(ASCIIToUTF16("foo"));
272 } 275 }
273 276
274 // Now we shouldn't be able to paste from the clipboard. 277 // Now we shouldn't be able to paste from the clipboard.
275 EXPECT_FALSE(CanPasteFromClipboard(model.bookmark_bar_node())); 278 EXPECT_FALSE(CanPasteFromClipboard(model->bookmark_bar_node()));
276 } 279 }
277 280
278 TEST_F(BookmarkUtilsTest, CutToClipboard) { 281 TEST_F(BookmarkUtilsTest, CutToClipboard) {
279 BookmarkModel model(NULL); 282 scoped_ptr<BookmarkModel> model(client_.CreateModel());
280 model.AddObserver(this); 283 model->AddObserver(this);
281 284
282 base::string16 title(ASCIIToUTF16("foo")); 285 base::string16 title(ASCIIToUTF16("foo"));
283 GURL url("http://foo.com"); 286 GURL url("http://foo.com");
284 const BookmarkNode* n1 = model.AddURL(model.other_node(), 0, title, url); 287 const BookmarkNode* n1 = model->AddURL(model->other_node(), 0, title, url);
285 const BookmarkNode* n2 = model.AddURL(model.other_node(), 1, title, url); 288 const BookmarkNode* n2 = model->AddURL(model->other_node(), 1, title, url);
286 289
287 // Cut the nodes to the clipboard. 290 // Cut the nodes to the clipboard.
288 std::vector<const BookmarkNode*> nodes; 291 std::vector<const BookmarkNode*> nodes;
289 nodes.push_back(n1); 292 nodes.push_back(n1);
290 nodes.push_back(n2); 293 nodes.push_back(n2);
291 CopyToClipboard(&model, nodes, true); 294 CopyToClipboard(model.get(), nodes, true);
292 295
293 // Make sure the nodes were removed. 296 // Make sure the nodes were removed.
294 EXPECT_EQ(0, model.other_node()->child_count()); 297 EXPECT_EQ(0, model->other_node()->child_count());
295 298
296 // Make sure observers were notified the set of changes should be grouped. 299 // Make sure observers were notified the set of changes should be grouped.
297 ExpectGroupedChangeCount(1, 1); 300 ExpectGroupedChangeCount(1, 1);
298 301
299 // And make sure we can paste from the clipboard. 302 // And make sure we can paste from the clipboard.
300 EXPECT_TRUE(CanPasteFromClipboard(model.other_node())); 303 EXPECT_TRUE(CanPasteFromClipboard(model->other_node()));
301 } 304 }
302 305
303 TEST_F(BookmarkUtilsTest, GetParentForNewNodes) { 306 TEST_F(BookmarkUtilsTest, GetParentForNewNodes) {
304 BookmarkModel model(NULL); 307 scoped_ptr<BookmarkModel> model(client_.CreateModel());
305 // This tests the case where selection contains one item and that item is a 308 // This tests the case where selection contains one item and that item is a
306 // folder. 309 // folder.
307 std::vector<const BookmarkNode*> nodes; 310 std::vector<const BookmarkNode*> nodes;
308 nodes.push_back(model.bookmark_bar_node()); 311 nodes.push_back(model->bookmark_bar_node());
309 int index = -1; 312 int index = -1;
310 const BookmarkNode* real_parent = GetParentForNewNodes( 313 const BookmarkNode* real_parent =
311 model.bookmark_bar_node(), nodes, &index); 314 GetParentForNewNodes(model->bookmark_bar_node(), nodes, &index);
312 EXPECT_EQ(real_parent, model.bookmark_bar_node()); 315 EXPECT_EQ(real_parent, model->bookmark_bar_node());
313 EXPECT_EQ(0, index); 316 EXPECT_EQ(0, index);
314 317
315 nodes.clear(); 318 nodes.clear();
316 319
317 // This tests the case where selection contains one item and that item is an 320 // This tests the case where selection contains one item and that item is an
318 // url. 321 // url.
319 const BookmarkNode* page1 = model.AddURL(model.bookmark_bar_node(), 322 const BookmarkNode* page1 = model->AddURL(model->bookmark_bar_node(),
320 0, 323 0,
321 ASCIIToUTF16("Google"), 324 ASCIIToUTF16("Google"),
322 GURL("http://google.com")); 325 GURL("http://google.com"));
323 nodes.push_back(page1); 326 nodes.push_back(page1);
324 real_parent = GetParentForNewNodes(model.bookmark_bar_node(), nodes, &index); 327 real_parent = GetParentForNewNodes(model->bookmark_bar_node(), nodes, &index);
325 EXPECT_EQ(real_parent, model.bookmark_bar_node()); 328 EXPECT_EQ(real_parent, model->bookmark_bar_node());
326 EXPECT_EQ(1, index); 329 EXPECT_EQ(1, index);
327 330
328 // This tests the case where selection has more than one item. 331 // This tests the case where selection has more than one item.
329 const BookmarkNode* folder1 = model.AddFolder(model.bookmark_bar_node(), 1, 332 const BookmarkNode* folder1 =
330 ASCIIToUTF16("Folder 1")); 333 model->AddFolder(model->bookmark_bar_node(), 1, ASCIIToUTF16("Folder 1"));
331 nodes.push_back(folder1); 334 nodes.push_back(folder1);
332 real_parent = GetParentForNewNodes(model.bookmark_bar_node(), nodes, &index); 335 real_parent = GetParentForNewNodes(model->bookmark_bar_node(), nodes, &index);
333 EXPECT_EQ(real_parent, model.bookmark_bar_node()); 336 EXPECT_EQ(real_parent, model->bookmark_bar_node());
334 EXPECT_EQ(2, index); 337 EXPECT_EQ(2, index);
335 338
336 // This tests the case where selection doesn't contain any items. 339 // This tests the case where selection doesn't contain any items.
337 nodes.clear(); 340 nodes.clear();
338 real_parent = GetParentForNewNodes(model.bookmark_bar_node(), nodes, &index); 341 real_parent = GetParentForNewNodes(model->bookmark_bar_node(), nodes, &index);
339 EXPECT_EQ(real_parent, model.bookmark_bar_node()); 342 EXPECT_EQ(real_parent, model->bookmark_bar_node());
340 EXPECT_EQ(2, index); 343 EXPECT_EQ(2, index);
341 } 344 }
342 345
343 // Verifies that meta info is copied when nodes are cloned. 346 // Verifies that meta info is copied when nodes are cloned.
344 TEST_F(BookmarkUtilsTest, CloneMetaInfo) { 347 TEST_F(BookmarkUtilsTest, CloneMetaInfo) {
345 BookmarkModel model(NULL); 348 scoped_ptr<BookmarkModel> model(client_.CreateModel());
346 // Add a node containing meta info. 349 // Add a node containing meta info.
347 const BookmarkNode* node = model.AddURL(model.other_node(), 350 const BookmarkNode* node = model->AddURL(model->other_node(),
348 0, 351 0,
349 ASCIIToUTF16("foo bar"), 352 ASCIIToUTF16("foo bar"),
350 GURL("http://www.google.com")); 353 GURL("http://www.google.com"));
351 model.SetNodeMetaInfo(node, "somekey", "somevalue"); 354 model->SetNodeMetaInfo(node, "somekey", "somevalue");
352 model.SetNodeMetaInfo(node, "someotherkey", "someothervalue"); 355 model->SetNodeMetaInfo(node, "someotherkey", "someothervalue");
353 356
354 // Clone node to a different folder. 357 // Clone node to a different folder.
355 const BookmarkNode* folder = model.AddFolder(model.bookmark_bar_node(), 0, 358 const BookmarkNode* folder =
356 ASCIIToUTF16("Folder")); 359 model->AddFolder(model->bookmark_bar_node(), 0, ASCIIToUTF16("Folder"));
357 std::vector<BookmarkNodeData::Element> elements; 360 std::vector<BookmarkNodeData::Element> elements;
358 BookmarkNodeData::Element node_data(node); 361 BookmarkNodeData::Element node_data(node);
359 elements.push_back(node_data); 362 elements.push_back(node_data);
360 EXPECT_EQ(0, folder->child_count()); 363 EXPECT_EQ(0, folder->child_count());
361 CloneBookmarkNode(&model, elements, folder, 0, false); 364 CloneBookmarkNode(model.get(), elements, folder, 0, false);
362 ASSERT_EQ(1, folder->child_count()); 365 ASSERT_EQ(1, folder->child_count());
363 366
364 // Verify that the cloned node contains the same meta info. 367 // Verify that the cloned node contains the same meta info.
365 const BookmarkNode* clone = folder->GetChild(0); 368 const BookmarkNode* clone = folder->GetChild(0);
366 ASSERT_TRUE(clone->GetMetaInfoMap()); 369 ASSERT_TRUE(clone->GetMetaInfoMap());
367 EXPECT_EQ(2u, clone->GetMetaInfoMap()->size()); 370 EXPECT_EQ(2u, clone->GetMetaInfoMap()->size());
368 std::string value; 371 std::string value;
369 EXPECT_TRUE(clone->GetMetaInfo("somekey", &value)); 372 EXPECT_TRUE(clone->GetMetaInfo("somekey", &value));
370 EXPECT_EQ("somevalue", value); 373 EXPECT_EQ("somevalue", value);
371 EXPECT_TRUE(clone->GetMetaInfo("someotherkey", &value)); 374 EXPECT_TRUE(clone->GetMetaInfo("someotherkey", &value));
372 EXPECT_EQ("someothervalue", value); 375 EXPECT_EQ("someothervalue", value);
373 } 376 }
374 377
375 } // namespace 378 } // namespace
376 } // namespace bookmark_utils 379 } // namespace bookmark_utils
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698