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

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

Issue 7012005: Revert "Revert 84829 - Initial implementation of "Synced Bookmarks" folder." (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Trying to set .json eol-style Created 9 years, 7 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
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 <set> 5 #include <set>
6 #include <string> 6 #include <string>
7 7
8 #include "base/base_paths.h" 8 #include "base/base_paths.h"
9 #include "base/command_line.h"
9 #include "base/file_util.h" 10 #include "base/file_util.h"
10 #include "base/hash_tables.h" 11 #include "base/hash_tables.h"
11 #include "base/path_service.h" 12 #include "base/path_service.h"
12 #include "base/string16.h" 13 #include "base/string16.h"
13 #include "base/string_number_conversions.h" 14 #include "base/string_number_conversions.h"
14 #include "base/string_split.h" 15 #include "base/string_split.h"
15 #include "base/string_util.h" 16 #include "base/string_util.h"
16 #include "base/utf_string_conversions.h" 17 #include "base/utf_string_conversions.h"
17 #include "chrome/browser/bookmarks/bookmark_codec.h" 18 #include "chrome/browser/bookmarks/bookmark_codec.h"
18 #include "chrome/browser/bookmarks/bookmark_model.h" 19 #include "chrome/browser/bookmarks/bookmark_model.h"
19 #include "chrome/browser/bookmarks/bookmark_utils.h" 20 #include "chrome/browser/bookmarks/bookmark_utils.h"
20 #include "chrome/browser/history/history_notifications.h" 21 #include "chrome/browser/history/history_notifications.h"
21 #include "chrome/common/chrome_constants.h" 22 #include "chrome/common/chrome_constants.h"
22 #include "chrome/common/chrome_paths.h" 23 #include "chrome/common/chrome_paths.h"
24 #include "chrome/common/chrome_switches.h"
23 #include "chrome/test/model_test_utils.h" 25 #include "chrome/test/model_test_utils.h"
24 #include "chrome/test/testing_browser_process_test.h" 26 #include "chrome/test/testing_browser_process_test.h"
25 #include "chrome/test/testing_profile.h" 27 #include "chrome/test/testing_profile.h"
26 #include "content/browser/browser_thread.h" 28 #include "content/browser/browser_thread.h"
27 #include "content/common/notification_details.h" 29 #include "content/common/notification_details.h"
28 #include "content/common/notification_registrar.h" 30 #include "content/common/notification_registrar.h"
29 #include "content/common/notification_source.h" 31 #include "content/common/notification_source.h"
30 #include "testing/gtest/include/gtest/gtest.h" 32 #include "testing/gtest/include/gtest/gtest.h"
31 #include "ui/base/models/tree_node_iterator.h" 33 #include "ui/base/models/tree_node_iterator.h"
32 #include "ui/base/models/tree_node_model.h" 34 #include "ui/base/models/tree_node_model.h"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 ASSERT_EQ(index1, this->index1); 78 ASSERT_EQ(index1, this->index1);
77 ASSERT_EQ(index2, this->index2); 79 ASSERT_EQ(index2, this->index2);
78 } 80 }
79 81
80 const BookmarkNode* node1; 82 const BookmarkNode* node1;
81 const BookmarkNode* node2; 83 const BookmarkNode* node2;
82 int index1; 84 int index1;
83 int index2; 85 int index2;
84 }; 86 };
85 87
86 BookmarkModelTest() : model(NULL) { 88 BookmarkModelTest() :
87 model.AddObserver(this); 89 model_(NULL),
88 ClearCounts(); 90 original_command_line_(*CommandLine::ForCurrentProcess()) {
91 model_.AddObserver(this);
92 ClearCounts();
89 } 93 }
90 94
95 virtual void TearDown() {
96 *CommandLine::ForCurrentProcess() = original_command_line_;
97 }
91 98
92 void Loaded(BookmarkModel* model) { 99 void Loaded(BookmarkModel* model) {
93 // We never load from the db, so that this should never get invoked. 100 // We never load from the db, so that this should never get invoked.
94 NOTREACHED(); 101 NOTREACHED();
95 } 102 }
96 103
97 virtual void BookmarkNodeMoved(BookmarkModel* model, 104 virtual void BookmarkNodeMoved(BookmarkModel* model,
98 const BookmarkNode* old_parent, 105 const BookmarkNode* old_parent,
99 int old_index, 106 int old_index,
100 const BookmarkNode* new_parent, 107 const BookmarkNode* new_parent,
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 int removed_count, 152 int removed_count,
146 int changed_count, 153 int changed_count,
147 int reordered_count) { 154 int reordered_count) {
148 ASSERT_EQ(added_count, this->added_count); 155 ASSERT_EQ(added_count, this->added_count);
149 ASSERT_EQ(moved_count, this->moved_count); 156 ASSERT_EQ(moved_count, this->moved_count);
150 ASSERT_EQ(removed_count, this->removed_count); 157 ASSERT_EQ(removed_count, this->removed_count);
151 ASSERT_EQ(changed_count, this->changed_count); 158 ASSERT_EQ(changed_count, this->changed_count);
152 ASSERT_EQ(reordered_count, reordered_count_); 159 ASSERT_EQ(reordered_count, reordered_count_);
153 } 160 }
154 161
155 BookmarkModel model; 162 BookmarkModel model_;
163
164 CommandLine original_command_line_;
156 165
157 int moved_count; 166 int moved_count;
158 167
159 int added_count; 168 int added_count;
160 169
161 int removed_count; 170 int removed_count;
162 171
163 int changed_count; 172 int changed_count;
164 173
165 int reordered_count_; 174 int reordered_count_;
166 175
167 ObserverDetails observer_details; 176 ObserverDetails observer_details;
168 }; 177 };
169 178
170 TEST_F(BookmarkModelTest, InitialState) { 179 TEST_F(BookmarkModelTest, InitialState) {
171 const BookmarkNode* bb_node = model.GetBookmarkBarNode(); 180 const BookmarkNode* bb_node = model_.GetBookmarkBarNode();
172 ASSERT_TRUE(bb_node != NULL); 181 ASSERT_TRUE(bb_node != NULL);
173 EXPECT_EQ(0, bb_node->child_count()); 182 EXPECT_EQ(0, bb_node->child_count());
174 EXPECT_EQ(BookmarkNode::BOOKMARK_BAR, bb_node->type()); 183 EXPECT_EQ(BookmarkNode::BOOKMARK_BAR, bb_node->type());
175 184
176 const BookmarkNode* other_node = model.other_node(); 185 const BookmarkNode* other_node = model_.other_node();
177 ASSERT_TRUE(other_node != NULL); 186 ASSERT_TRUE(other_node != NULL);
178 EXPECT_EQ(0, other_node->child_count()); 187 EXPECT_EQ(0, other_node->child_count());
179 EXPECT_EQ(BookmarkNode::OTHER_NODE, other_node->type()); 188 EXPECT_EQ(BookmarkNode::OTHER_NODE, other_node->type());
180 189
190 const BookmarkNode* synced_node = model_.synced_node();
191 ASSERT_TRUE(synced_node != NULL);
192 EXPECT_EQ(0, synced_node->child_count());
193 EXPECT_EQ(BookmarkNode::SYNCED, synced_node->type());
194
181 EXPECT_TRUE(bb_node->id() != other_node->id()); 195 EXPECT_TRUE(bb_node->id() != other_node->id());
196 EXPECT_TRUE(bb_node->id() != synced_node->id());
197 EXPECT_TRUE(other_node->id() != synced_node->id());
182 } 198 }
183 199
184 TEST_F(BookmarkModelTest, AddURL) { 200 TEST_F(BookmarkModelTest, AddURL) {
185 const BookmarkNode* root = model.GetBookmarkBarNode(); 201 const BookmarkNode* root = model_.GetBookmarkBarNode();
186 const string16 title(ASCIIToUTF16("foo")); 202 const string16 title(ASCIIToUTF16("foo"));
187 const GURL url("http://foo.com"); 203 const GURL url("http://foo.com");
188 204
189 const BookmarkNode* new_node = model.AddURL(root, 0, title, url); 205 const BookmarkNode* new_node = model_.AddURL(root, 0, title, url);
190 AssertObserverCount(1, 0, 0, 0, 0); 206 AssertObserverCount(1, 0, 0, 0, 0);
191 observer_details.AssertEquals(root, NULL, 0, -1); 207 observer_details.AssertEquals(root, NULL, 0, -1);
192 208
193 ASSERT_EQ(1, root->child_count()); 209 ASSERT_EQ(1, root->child_count());
194 ASSERT_EQ(title, new_node->GetTitle()); 210 ASSERT_EQ(title, new_node->GetTitle());
195 ASSERT_TRUE(url == new_node->GetURL()); 211 ASSERT_TRUE(url == new_node->GetURL());
196 ASSERT_EQ(BookmarkNode::URL, new_node->type()); 212 ASSERT_EQ(BookmarkNode::URL, new_node->type());
197 ASSERT_TRUE(new_node == model.GetMostRecentlyAddedNodeForURL(url)); 213 ASSERT_TRUE(new_node == model_.GetMostRecentlyAddedNodeForURL(url));
198 214
199 EXPECT_TRUE(new_node->id() != root->id() && 215 EXPECT_TRUE(new_node->id() != root->id() &&
200 new_node->id() != model.other_node()->id()); 216 new_node->id() != model_.other_node()->id() &&
217 new_node->id() != model_.synced_node()->id());
218 }
219
220 TEST_F(BookmarkModelTest, AddURLToSyncedBookmarks) {
221 const BookmarkNode* root = model_.synced_node();
222 const string16 title(ASCIIToUTF16("foo"));
223 const GURL url("http://foo.com");
224
225 const BookmarkNode* new_node = model_.AddURL(root, 0, title, url);
226 AssertObserverCount(1, 0, 0, 0, 0);
227 observer_details.AssertEquals(root, NULL, 0, -1);
228
229 ASSERT_EQ(1, root->child_count());
230 ASSERT_EQ(title, new_node->GetTitle());
231 ASSERT_TRUE(url == new_node->GetURL());
232 ASSERT_EQ(BookmarkNode::URL, new_node->type());
233 ASSERT_TRUE(new_node == model_.GetMostRecentlyAddedNodeForURL(url));
234
235 EXPECT_TRUE(new_node->id() != root->id() &&
236 new_node->id() != model_.other_node()->id() &&
237 new_node->id() != model_.synced_node()->id());
201 } 238 }
202 239
203 TEST_F(BookmarkModelTest, AddFolder) { 240 TEST_F(BookmarkModelTest, AddFolder) {
204 const BookmarkNode* root = model.GetBookmarkBarNode(); 241 const BookmarkNode* root = model_.GetBookmarkBarNode();
205 const string16 title(ASCIIToUTF16("foo")); 242 const string16 title(ASCIIToUTF16("foo"));
206 243
207 const BookmarkNode* new_node = model.AddFolder(root, 0, title); 244 const BookmarkNode* new_node = model_.AddFolder(root, 0, title);
208 AssertObserverCount(1, 0, 0, 0, 0); 245 AssertObserverCount(1, 0, 0, 0, 0);
209 observer_details.AssertEquals(root, NULL, 0, -1); 246 observer_details.AssertEquals(root, NULL, 0, -1);
210 247
211 ASSERT_EQ(1, root->child_count()); 248 ASSERT_EQ(1, root->child_count());
212 ASSERT_EQ(title, new_node->GetTitle()); 249 ASSERT_EQ(title, new_node->GetTitle());
213 ASSERT_EQ(BookmarkNode::FOLDER, new_node->type()); 250 ASSERT_EQ(BookmarkNode::FOLDER, new_node->type());
214 251
215 EXPECT_TRUE(new_node->id() != root->id() && 252 EXPECT_TRUE(new_node->id() != root->id() &&
216 new_node->id() != model.other_node()->id()); 253 new_node->id() != model_.other_node()->id() &&
254 new_node->id() != model_.synced_node()->id());
217 255
218 // Add another folder, just to make sure folder_ids are incremented correctly. 256 // Add another folder, just to make sure folder_ids are incremented correctly.
219 ClearCounts(); 257 ClearCounts();
220 model.AddFolder(root, 0, title); 258 model_.AddFolder(root, 0, title);
221 AssertObserverCount(1, 0, 0, 0, 0); 259 AssertObserverCount(1, 0, 0, 0, 0);
222 observer_details.AssertEquals(root, NULL, 0, -1); 260 observer_details.AssertEquals(root, NULL, 0, -1);
223 } 261 }
224 262
225 TEST_F(BookmarkModelTest, RemoveURL) { 263 TEST_F(BookmarkModelTest, RemoveURL) {
226 const BookmarkNode* root = model.GetBookmarkBarNode(); 264 const BookmarkNode* root = model_.GetBookmarkBarNode();
227 const string16 title(ASCIIToUTF16("foo")); 265 const string16 title(ASCIIToUTF16("foo"));
228 const GURL url("http://foo.com"); 266 const GURL url("http://foo.com");
229 model.AddURL(root, 0, title, url); 267 model_.AddURL(root, 0, title, url);
230 ClearCounts(); 268 ClearCounts();
231 269
232 model.Remove(root, 0); 270 model_.Remove(root, 0);
233 ASSERT_EQ(0, root->child_count()); 271 ASSERT_EQ(0, root->child_count());
234 AssertObserverCount(0, 0, 1, 0, 0); 272 AssertObserverCount(0, 0, 1, 0, 0);
235 observer_details.AssertEquals(root, NULL, 0, -1); 273 observer_details.AssertEquals(root, NULL, 0, -1);
236 274
237 // Make sure there is no mapping for the URL. 275 // Make sure there is no mapping for the URL.
238 ASSERT_TRUE(model.GetMostRecentlyAddedNodeForURL(url) == NULL); 276 ASSERT_TRUE(model_.GetMostRecentlyAddedNodeForURL(url) == NULL);
239 } 277 }
240 278
241 TEST_F(BookmarkModelTest, RemoveFolder) { 279 TEST_F(BookmarkModelTest, RemoveFolder) {
242 const BookmarkNode* root = model.GetBookmarkBarNode(); 280 const BookmarkNode* root = model_.GetBookmarkBarNode();
243 const BookmarkNode* folder = model.AddFolder(root, 0, ASCIIToUTF16("foo")); 281 const BookmarkNode* folder = model_.AddFolder(root, 0, ASCIIToUTF16("foo"));
244 282
245 ClearCounts(); 283 ClearCounts();
246 284
247 // Add a URL as a child. 285 // Add a URL as a child.
248 const string16 title(ASCIIToUTF16("foo")); 286 const string16 title(ASCIIToUTF16("foo"));
249 const GURL url("http://foo.com"); 287 const GURL url("http://foo.com");
250 model.AddURL(folder, 0, title, url); 288 model_.AddURL(folder, 0, title, url);
251 289
252 ClearCounts(); 290 ClearCounts();
253 291
254 // Now remove the folder. 292 // Now remove the folder.
255 model.Remove(root, 0); 293 model_.Remove(root, 0);
256 ASSERT_EQ(0, root->child_count()); 294 ASSERT_EQ(0, root->child_count());
257 AssertObserverCount(0, 0, 1, 0, 0); 295 AssertObserverCount(0, 0, 1, 0, 0);
258 observer_details.AssertEquals(root, NULL, 0, -1); 296 observer_details.AssertEquals(root, NULL, 0, -1);
259 297
260 // Make sure there is no mapping for the URL. 298 // Make sure there is no mapping for the URL.
261 ASSERT_TRUE(model.GetMostRecentlyAddedNodeForURL(url) == NULL); 299 ASSERT_TRUE(model_.GetMostRecentlyAddedNodeForURL(url) == NULL);
262 } 300 }
263 301
264 TEST_F(BookmarkModelTest, SetTitle) { 302 TEST_F(BookmarkModelTest, SetTitle) {
265 const BookmarkNode* root = model.GetBookmarkBarNode(); 303 const BookmarkNode* root = model_.GetBookmarkBarNode();
266 string16 title(ASCIIToUTF16("foo")); 304 string16 title(ASCIIToUTF16("foo"));
267 const GURL url("http://foo.com"); 305 const GURL url("http://foo.com");
268 const BookmarkNode* node = model.AddURL(root, 0, title, url); 306 const BookmarkNode* node = model_.AddURL(root, 0, title, url);
269 307
270 ClearCounts(); 308 ClearCounts();
271 309
272 title = ASCIIToUTF16("foo2"); 310 title = ASCIIToUTF16("foo2");
273 model.SetTitle(node, title); 311 model_.SetTitle(node, title);
274 AssertObserverCount(0, 0, 0, 1, 0); 312 AssertObserverCount(0, 0, 0, 1, 0);
275 observer_details.AssertEquals(node, NULL, -1, -1); 313 observer_details.AssertEquals(node, NULL, -1, -1);
276 EXPECT_EQ(title, node->GetTitle()); 314 EXPECT_EQ(title, node->GetTitle());
277 } 315 }
278 316
279 TEST_F(BookmarkModelTest, SetURL) { 317 TEST_F(BookmarkModelTest, SetURL) {
280 const BookmarkNode* root = model.GetBookmarkBarNode(); 318 const BookmarkNode* root = model_.GetBookmarkBarNode();
281 const string16 title(ASCIIToUTF16("foo")); 319 const string16 title(ASCIIToUTF16("foo"));
282 GURL url("http://foo.com"); 320 GURL url("http://foo.com");
283 const BookmarkNode* node = model.AddURL(root, 0, title, url); 321 const BookmarkNode* node = model_.AddURL(root, 0, title, url);
284 322
285 ClearCounts(); 323 ClearCounts();
286 324
287 url = GURL("http://foo2.com"); 325 url = GURL("http://foo2.com");
288 model.SetURL(node, url); 326 model_.SetURL(node, url);
289 AssertObserverCount(0, 0, 0, 1, 0); 327 AssertObserverCount(0, 0, 0, 1, 0);
290 observer_details.AssertEquals(node, NULL, -1, -1); 328 observer_details.AssertEquals(node, NULL, -1, -1);
291 EXPECT_EQ(url, node->GetURL()); 329 EXPECT_EQ(url, node->GetURL());
292 } 330 }
293 331
294 TEST_F(BookmarkModelTest, Move) { 332 TEST_F(BookmarkModelTest, Move) {
295 const BookmarkNode* root = model.GetBookmarkBarNode(); 333 const BookmarkNode* root = model_.GetBookmarkBarNode();
296 const string16 title(ASCIIToUTF16("foo")); 334 const string16 title(ASCIIToUTF16("foo"));
297 const GURL url("http://foo.com"); 335 const GURL url("http://foo.com");
298 const BookmarkNode* node = model.AddURL(root, 0, title, url); 336 const BookmarkNode* node = model_.AddURL(root, 0, title, url);
299 const BookmarkNode* folder1 = model.AddFolder(root, 0, ASCIIToUTF16("foo")); 337 const BookmarkNode* folder1 = model_.AddFolder(root, 0, ASCIIToUTF16("foo"));
300 ClearCounts(); 338 ClearCounts();
301 339
302 model.Move(node, folder1, 0); 340 model_.Move(node, folder1, 0);
303 341
304 AssertObserverCount(0, 1, 0, 0, 0); 342 AssertObserverCount(0, 1, 0, 0, 0);
305 observer_details.AssertEquals(root, folder1, 1, 0); 343 observer_details.AssertEquals(root, folder1, 1, 0);
306 EXPECT_TRUE(folder1 == node->parent()); 344 EXPECT_TRUE(folder1 == node->parent());
307 EXPECT_EQ(1, root->child_count()); 345 EXPECT_EQ(1, root->child_count());
308 EXPECT_EQ(folder1, root->GetChild(0)); 346 EXPECT_EQ(folder1, root->GetChild(0));
309 EXPECT_EQ(1, folder1->child_count()); 347 EXPECT_EQ(1, folder1->child_count());
310 EXPECT_EQ(node, folder1->GetChild(0)); 348 EXPECT_EQ(node, folder1->GetChild(0));
311 349
312 // And remove the folder. 350 // And remove the folder.
313 ClearCounts(); 351 ClearCounts();
314 model.Remove(root, 0); 352 model_.Remove(root, 0);
315 AssertObserverCount(0, 0, 1, 0, 0); 353 AssertObserverCount(0, 0, 1, 0, 0);
316 observer_details.AssertEquals(root, NULL, 0, -1); 354 observer_details.AssertEquals(root, NULL, 0, -1);
317 EXPECT_TRUE(model.GetMostRecentlyAddedNodeForURL(url) == NULL); 355 EXPECT_TRUE(model_.GetMostRecentlyAddedNodeForURL(url) == NULL);
318 EXPECT_EQ(0, root->child_count()); 356 EXPECT_EQ(0, root->child_count());
319 } 357 }
320 358
321 TEST_F(BookmarkModelTest, Copy) { 359 TEST_F(BookmarkModelTest, Copy) {
322 const BookmarkNode* root = model.GetBookmarkBarNode(); 360 const BookmarkNode* root = model_.GetBookmarkBarNode();
323 static const std::string model_string("a 1:[ b c ] d 2:[ e f g ] h "); 361 static const std::string model_string("a 1:[ b c ] d 2:[ e f g ] h ");
324 model_test_utils::AddNodesFromModelString(model, root, model_string); 362 model_test_utils::AddNodesFromModelString(model_, root, model_string);
325 363
326 // Validate initial model. 364 // Validate initial model.
327 std::string actualModelString = model_test_utils::ModelStringFromNode(root); 365 std::string actualModelString = model_test_utils::ModelStringFromNode(root);
328 EXPECT_EQ(model_string, actualModelString); 366 EXPECT_EQ(model_string, actualModelString);
329 367
330 // Copy 'd' to be after '1:b': URL item from bar to folder. 368 // Copy 'd' to be after '1:b': URL item from bar to folder.
331 const BookmarkNode* nodeToCopy = root->GetChild(2); 369 const BookmarkNode* nodeToCopy = root->GetChild(2);
332 const BookmarkNode* destination = root->GetChild(1); 370 const BookmarkNode* destination = root->GetChild(1);
333 model.Copy(nodeToCopy, destination, 1); 371 model_.Copy(nodeToCopy, destination, 1);
334 actualModelString = model_test_utils::ModelStringFromNode(root); 372 actualModelString = model_test_utils::ModelStringFromNode(root);
335 EXPECT_EQ("a 1:[ b d c ] d 2:[ e f g ] h ", actualModelString); 373 EXPECT_EQ("a 1:[ b d c ] d 2:[ e f g ] h ", actualModelString);
336 374
337 // Copy '1:d' to be after 'a': URL item from folder to bar. 375 // Copy '1:d' to be after 'a': URL item from folder to bar.
338 const BookmarkNode* folder = root->GetChild(1); 376 const BookmarkNode* folder = root->GetChild(1);
339 nodeToCopy = folder->GetChild(1); 377 nodeToCopy = folder->GetChild(1);
340 model.Copy(nodeToCopy, root, 1); 378 model_.Copy(nodeToCopy, root, 1);
341 actualModelString = model_test_utils::ModelStringFromNode(root); 379 actualModelString = model_test_utils::ModelStringFromNode(root);
342 EXPECT_EQ("a d 1:[ b d c ] d 2:[ e f g ] h ", actualModelString); 380 EXPECT_EQ("a d 1:[ b d c ] d 2:[ e f g ] h ", actualModelString);
343 381
344 // Copy '1' to be after '2:e': Folder from bar to folder. 382 // Copy '1' to be after '2:e': Folder from bar to folder.
345 nodeToCopy = root->GetChild(2); 383 nodeToCopy = root->GetChild(2);
346 destination = root->GetChild(4); 384 destination = root->GetChild(4);
347 model.Copy(nodeToCopy, destination, 1); 385 model_.Copy(nodeToCopy, destination, 1);
348 actualModelString = model_test_utils::ModelStringFromNode(root); 386 actualModelString = model_test_utils::ModelStringFromNode(root);
349 EXPECT_EQ("a d 1:[ b d c ] d 2:[ e 1:[ b d c ] f g ] h ", actualModelString); 387 EXPECT_EQ("a d 1:[ b d c ] d 2:[ e 1:[ b d c ] f g ] h ", actualModelString);
350 388
351 // Copy '2:1' to be after '2:f': Folder within same folder. 389 // Copy '2:1' to be after '2:f': Folder within same folder.
352 folder = root->GetChild(4); 390 folder = root->GetChild(4);
353 nodeToCopy = folder->GetChild(1); 391 nodeToCopy = folder->GetChild(1);
354 model.Copy(nodeToCopy, folder, 3); 392 model_.Copy(nodeToCopy, folder, 3);
355 actualModelString = model_test_utils::ModelStringFromNode(root); 393 actualModelString = model_test_utils::ModelStringFromNode(root);
356 EXPECT_EQ("a d 1:[ b d c ] d 2:[ e 1:[ b d c ] f 1:[ b d c ] g ] h ", 394 EXPECT_EQ("a d 1:[ b d c ] d 2:[ e 1:[ b d c ] f 1:[ b d c ] g ] h ",
357 actualModelString); 395 actualModelString);
358 396
359 // Copy first 'd' to be after 'h': URL item within the bar. 397 // Copy first 'd' to be after 'h': URL item within the bar.
360 nodeToCopy = root->GetChild(1); 398 nodeToCopy = root->GetChild(1);
361 model.Copy(nodeToCopy, root, 6); 399 model_.Copy(nodeToCopy, root, 6);
362 actualModelString = model_test_utils::ModelStringFromNode(root); 400 actualModelString = model_test_utils::ModelStringFromNode(root);
363 EXPECT_EQ("a d 1:[ b d c ] d 2:[ e 1:[ b d c ] f 1:[ b d c ] g ] h d ", 401 EXPECT_EQ("a d 1:[ b d c ] d 2:[ e 1:[ b d c ] f 1:[ b d c ] g ] h d ",
364 actualModelString); 402 actualModelString);
365 403
366 // Copy '2' to be after 'a': Folder within the bar. 404 // Copy '2' to be after 'a': Folder within the bar.
367 nodeToCopy = root->GetChild(4); 405 nodeToCopy = root->GetChild(4);
368 model.Copy(nodeToCopy, root, 1); 406 model_.Copy(nodeToCopy, root, 1);
369 actualModelString = model_test_utils::ModelStringFromNode(root); 407 actualModelString = model_test_utils::ModelStringFromNode(root);
370 EXPECT_EQ("a 2:[ e 1:[ b d c ] f 1:[ b d c ] g ] d 1:[ b d c ] " 408 EXPECT_EQ("a 2:[ e 1:[ b d c ] f 1:[ b d c ] g ] d 1:[ b d c ] "
371 "d 2:[ e 1:[ b d c ] f 1:[ b d c ] g ] h d ", 409 "d 2:[ e 1:[ b d c ] f 1:[ b d c ] g ] h d ",
372 actualModelString); 410 actualModelString);
373 } 411 }
374 412
375 // Tests that adding a URL to a folder updates the last modified time. 413 // Tests that adding a URL to a folder updates the last modified time.
376 TEST_F(BookmarkModelTest, ParentForNewNodes) { 414 TEST_F(BookmarkModelTest, ParentForNewNodes) {
377 ASSERT_EQ(model.GetBookmarkBarNode(), model.GetParentForNewNodes()); 415 ASSERT_EQ(model_.GetBookmarkBarNode(), model_.GetParentForNewNodes());
378 416
379 const string16 title(ASCIIToUTF16("foo")); 417 const string16 title(ASCIIToUTF16("foo"));
380 const GURL url("http://foo.com"); 418 const GURL url("http://foo.com");
381 419
382 model.AddURL(model.other_node(), 0, title, url); 420 model_.AddURL(model_.other_node(), 0, title, url);
383 ASSERT_EQ(model.other_node(), model.GetParentForNewNodes()); 421 ASSERT_EQ(model_.other_node(), model_.GetParentForNewNodes());
422 }
423
424 // Tests that adding a URL to a folder updates the last modified time.
425 TEST_F(BookmarkModelTest, ParentForNewSyncedNodes) {
426 ASSERT_EQ(model_.GetBookmarkBarNode(), model_.GetParentForNewNodes());
427
428 const string16 title(ASCIIToUTF16("foo"));
429 const GURL url("http://foo.com");
430
431 model_.AddURL(model_.synced_node(), 0, title, url);
432 ASSERT_EQ(model_.synced_node(), model_.GetParentForNewNodes());
384 } 433 }
385 434
386 // Make sure recently modified stays in sync when adding a URL. 435 // Make sure recently modified stays in sync when adding a URL.
387 TEST_F(BookmarkModelTest, MostRecentlyModifiedFolders) { 436 TEST_F(BookmarkModelTest, MostRecentlyModifiedFolders) {
388 // Add a folder. 437 // Add a folder.
389 const BookmarkNode* folder = model.AddFolder(model.other_node(), 0, 438 const BookmarkNode* folder = model_.AddFolder(model_.other_node(), 0,
390 ASCIIToUTF16("foo")); 439 ASCIIToUTF16("foo"));
391 // Add a URL to it. 440 // Add a URL to it.
392 model.AddURL(folder, 0, ASCIIToUTF16("blah"), GURL("http://foo.com")); 441 model_.AddURL(folder, 0, ASCIIToUTF16("blah"), GURL("http://foo.com"));
393 442
394 // Make sure folder is in the most recently modified. 443 // Make sure folder is in the most recently modified.
395 std::vector<const BookmarkNode*> most_recent_folders = 444 std::vector<const BookmarkNode*> most_recent_folders =
396 bookmark_utils::GetMostRecentlyModifiedFolders(&model, 1); 445 bookmark_utils::GetMostRecentlyModifiedFolders(&model_, 1);
397 ASSERT_EQ(1U, most_recent_folders.size()); 446 ASSERT_EQ(1U, most_recent_folders.size());
398 ASSERT_EQ(folder, most_recent_folders[0]); 447 ASSERT_EQ(folder, most_recent_folders[0]);
399 448
400 // Nuke the folder and do another fetch, making sure folder isn't in the 449 // Nuke the folder and do another fetch, making sure folder isn't in the
401 // returned list. 450 // returned list.
402 model.Remove(folder->parent(), 0); 451 model_.Remove(folder->parent(), 0);
403 most_recent_folders = 452 most_recent_folders =
404 bookmark_utils::GetMostRecentlyModifiedFolders(&model, 1); 453 bookmark_utils::GetMostRecentlyModifiedFolders(&model_, 1);
405 ASSERT_EQ(1U, most_recent_folders.size()); 454 ASSERT_EQ(1U, most_recent_folders.size());
406 ASSERT_TRUE(most_recent_folders[0] != folder); 455 ASSERT_TRUE(most_recent_folders[0] != folder);
407 } 456 }
408 457
409 // Make sure MostRecentlyAddedEntries stays in sync. 458 // Make sure MostRecentlyAddedEntries stays in sync.
410 TEST_F(BookmarkModelTest, MostRecentlyAddedEntries) { 459 TEST_F(BookmarkModelTest, MostRecentlyAddedEntries) {
411 // Add a couple of nodes such that the following holds for the time of the 460 // Add a couple of nodes such that the following holds for the time of the
412 // nodes: n1 > n2 > n3 > n4. 461 // nodes: n1 > n2 > n3 > n4.
413 Time base_time = Time::Now(); 462 Time base_time = Time::Now();
414 BookmarkNode* n1 = AsMutable(model.AddURL(model.GetBookmarkBarNode(), 463 BookmarkNode* n1 = AsMutable(model_.AddURL(model_.GetBookmarkBarNode(),
415 0, 464 0,
416 ASCIIToUTF16("blah"), 465 ASCIIToUTF16("blah"),
417 GURL("http://foo.com/0"))); 466 GURL("http://foo.com/0")));
418 BookmarkNode* n2 = AsMutable(model.AddURL(model.GetBookmarkBarNode(), 467 BookmarkNode* n2 = AsMutable(model_.AddURL(model_.GetBookmarkBarNode(),
419 1, 468 1,
420 ASCIIToUTF16("blah"), 469 ASCIIToUTF16("blah"),
421 GURL("http://foo.com/1"))); 470 GURL("http://foo.com/1")));
422 BookmarkNode* n3 = AsMutable(model.AddURL(model.GetBookmarkBarNode(), 471 BookmarkNode* n3 = AsMutable(model_.AddURL(model_.GetBookmarkBarNode(),
423 2, 472 2,
424 ASCIIToUTF16("blah"), 473 ASCIIToUTF16("blah"),
425 GURL("http://foo.com/2"))); 474 GURL("http://foo.com/2")));
426 BookmarkNode* n4 = AsMutable(model.AddURL(model.GetBookmarkBarNode(), 475 BookmarkNode* n4 = AsMutable(model_.AddURL(model_.GetBookmarkBarNode(),
427 3, 476 3,
428 ASCIIToUTF16("blah"), 477 ASCIIToUTF16("blah"),
429 GURL("http://foo.com/3"))); 478 GURL("http://foo.com/3")));
430 n1->set_date_added(base_time + TimeDelta::FromDays(4)); 479 n1->set_date_added(base_time + TimeDelta::FromDays(4));
431 n2->set_date_added(base_time + TimeDelta::FromDays(3)); 480 n2->set_date_added(base_time + TimeDelta::FromDays(3));
432 n3->set_date_added(base_time + TimeDelta::FromDays(2)); 481 n3->set_date_added(base_time + TimeDelta::FromDays(2));
433 n4->set_date_added(base_time + TimeDelta::FromDays(1)); 482 n4->set_date_added(base_time + TimeDelta::FromDays(1));
434 483
435 // Make sure order is honored. 484 // Make sure order is honored.
436 std::vector<const BookmarkNode*> recently_added; 485 std::vector<const BookmarkNode*> recently_added;
437 bookmark_utils::GetMostRecentlyAddedEntries(&model, 2, &recently_added); 486 bookmark_utils::GetMostRecentlyAddedEntries(&model_, 2, &recently_added);
438 ASSERT_EQ(2U, recently_added.size()); 487 ASSERT_EQ(2U, recently_added.size());
439 ASSERT_TRUE(n1 == recently_added[0]); 488 ASSERT_TRUE(n1 == recently_added[0]);
440 ASSERT_TRUE(n2 == recently_added[1]); 489 ASSERT_TRUE(n2 == recently_added[1]);
441 490
442 // swap 1 and 2, then check again. 491 // swap 1 and 2, then check again.
443 recently_added.clear(); 492 recently_added.clear();
444 SwapDateAdded(n1, n2); 493 SwapDateAdded(n1, n2);
445 bookmark_utils::GetMostRecentlyAddedEntries(&model, 4, &recently_added); 494 bookmark_utils::GetMostRecentlyAddedEntries(&model_, 4, &recently_added);
446 ASSERT_EQ(4U, recently_added.size()); 495 ASSERT_EQ(4U, recently_added.size());
447 ASSERT_TRUE(n2 == recently_added[0]); 496 ASSERT_TRUE(n2 == recently_added[0]);
448 ASSERT_TRUE(n1 == recently_added[1]); 497 ASSERT_TRUE(n1 == recently_added[1]);
449 ASSERT_TRUE(n3 == recently_added[2]); 498 ASSERT_TRUE(n3 == recently_added[2]);
450 ASSERT_TRUE(n4 == recently_added[3]); 499 ASSERT_TRUE(n4 == recently_added[3]);
451 } 500 }
452 501
453 // Makes sure GetMostRecentlyAddedNodeForURL stays in sync. 502 // Makes sure GetMostRecentlyAddedNodeForURL stays in sync.
454 TEST_F(BookmarkModelTest, GetMostRecentlyAddedNodeForURL) { 503 TEST_F(BookmarkModelTest, GetMostRecentlyAddedNodeForURL) {
455 // Add a couple of nodes such that the following holds for the time of the 504 // Add a couple of nodes such that the following holds for the time of the
456 // nodes: n1 > n2 505 // nodes: n1 > n2
457 Time base_time = Time::Now(); 506 Time base_time = Time::Now();
458 const GURL url("http://foo.com/0"); 507 const GURL url("http://foo.com/0");
459 BookmarkNode* n1 = AsMutable(model.AddURL( 508 BookmarkNode* n1 = AsMutable(model_.AddURL(
460 model.GetBookmarkBarNode(), 0, ASCIIToUTF16("blah"), url)); 509 model_.GetBookmarkBarNode(), 0, ASCIIToUTF16("blah"), url));
461 BookmarkNode* n2 = AsMutable(model.AddURL( 510 BookmarkNode* n2 = AsMutable(model_.AddURL(
462 model.GetBookmarkBarNode(), 1, ASCIIToUTF16("blah"), url)); 511 model_.GetBookmarkBarNode(), 1, ASCIIToUTF16("blah"), url));
463 n1->set_date_added(base_time + TimeDelta::FromDays(4)); 512 n1->set_date_added(base_time + TimeDelta::FromDays(4));
464 n2->set_date_added(base_time + TimeDelta::FromDays(3)); 513 n2->set_date_added(base_time + TimeDelta::FromDays(3));
465 514
466 // Make sure order is honored. 515 // Make sure order is honored.
467 ASSERT_EQ(n1, model.GetMostRecentlyAddedNodeForURL(url)); 516 ASSERT_EQ(n1, model_.GetMostRecentlyAddedNodeForURL(url));
468 517
469 // swap 1 and 2, then check again. 518 // swap 1 and 2, then check again.
470 SwapDateAdded(n1, n2); 519 SwapDateAdded(n1, n2);
471 ASSERT_EQ(n2, model.GetMostRecentlyAddedNodeForURL(url)); 520 ASSERT_EQ(n2, model_.GetMostRecentlyAddedNodeForURL(url));
472 } 521 }
473 522
474 // Makes sure GetBookmarks removes duplicates. 523 // Makes sure GetBookmarks removes duplicates.
475 TEST_F(BookmarkModelTest, GetBookmarksWithDups) { 524 TEST_F(BookmarkModelTest, GetBookmarksWithDups) {
476 const GURL url("http://foo.com/0"); 525 const GURL url("http://foo.com/0");
477 model.AddURL(model.GetBookmarkBarNode(), 0, ASCIIToUTF16("blah"), url); 526 model_.AddURL(model_.GetBookmarkBarNode(), 0, ASCIIToUTF16("blah"), url);
478 model.AddURL(model.GetBookmarkBarNode(), 1, ASCIIToUTF16("blah"), url); 527 model_.AddURL(model_.GetBookmarkBarNode(), 1, ASCIIToUTF16("blah"), url);
479 528
480 std::vector<GURL> urls; 529 std::vector<GURL> urls;
481 model.GetBookmarks(&urls); 530 model_.GetBookmarks(&urls);
482 EXPECT_EQ(1U, urls.size()); 531 EXPECT_EQ(1U, urls.size());
483 ASSERT_TRUE(urls[0] == url); 532 ASSERT_TRUE(urls[0] == url);
484 } 533 }
485 534
486 TEST_F(BookmarkModelTest, HasBookmarks) { 535 TEST_F(BookmarkModelTest, HasBookmarks) {
487 const GURL url("http://foo.com/"); 536 const GURL url("http://foo.com/");
488 model.AddURL(model.GetBookmarkBarNode(), 0, ASCIIToUTF16("bar"), url); 537 model_.AddURL(model_.GetBookmarkBarNode(), 0, ASCIIToUTF16("bar"), url);
489 538
490 EXPECT_TRUE(model.HasBookmarks()); 539 EXPECT_TRUE(model_.HasBookmarks());
491 } 540 }
492 541
493 namespace { 542 namespace {
494 543
495 // NotificationObserver implementation used in verifying we've received the 544 // NotificationObserver implementation used in verifying we've received the
496 // NOTIFY_URLS_STARRED method correctly. 545 // NOTIFY_URLS_STARRED method correctly.
497 class StarredListener : public NotificationObserver { 546 class StarredListener : public NotificationObserver {
498 public: 547 public:
499 StarredListener() : notification_count_(0), details_(false) { 548 StarredListener() : notification_count_(0), details_(false) {
500 registrar_.Add(this, NotificationType::URLS_STARRED, Source<Profile>(NULL)); 549 registrar_.Add(this, NotificationType::URLS_STARRED, Source<Profile>(NULL));
(...skipping 19 matching lines...) Expand all
520 569
521 DISALLOW_COPY_AND_ASSIGN(StarredListener); 570 DISALLOW_COPY_AND_ASSIGN(StarredListener);
522 }; 571 };
523 572
524 } // namespace 573 } // namespace
525 574
526 // Makes sure NOTIFY_URLS_STARRED is sent correctly. 575 // Makes sure NOTIFY_URLS_STARRED is sent correctly.
527 TEST_F(BookmarkModelTest, NotifyURLsStarred) { 576 TEST_F(BookmarkModelTest, NotifyURLsStarred) {
528 StarredListener listener; 577 StarredListener listener;
529 const GURL url("http://foo.com/0"); 578 const GURL url("http://foo.com/0");
530 const BookmarkNode* n1 = model.AddURL( 579 const BookmarkNode* n1 = model_.AddURL(
531 model.GetBookmarkBarNode(), 0, ASCIIToUTF16("blah"), url); 580 model_.GetBookmarkBarNode(), 0, ASCIIToUTF16("blah"), url);
532 581
533 // Starred notification should be sent. 582 // Starred notification should be sent.
534 EXPECT_EQ(1, listener.notification_count_); 583 EXPECT_EQ(1, listener.notification_count_);
535 ASSERT_TRUE(listener.details_.starred); 584 ASSERT_TRUE(listener.details_.starred);
536 ASSERT_EQ(1U, listener.details_.changed_urls.size()); 585 ASSERT_EQ(1U, listener.details_.changed_urls.size());
537 EXPECT_TRUE(url == *(listener.details_.changed_urls.begin())); 586 EXPECT_TRUE(url == *(listener.details_.changed_urls.begin()));
538 listener.notification_count_ = 0; 587 listener.notification_count_ = 0;
539 listener.details_.changed_urls.clear(); 588 listener.details_.changed_urls.clear();
540 589
541 // Add another bookmark for the same URL. This should not send any 590 // Add another bookmark for the same URL. This should not send any
542 // notification. 591 // notification.
543 const BookmarkNode* n2 = model.AddURL( 592 const BookmarkNode* n2 = model_.AddURL(
544 model.GetBookmarkBarNode(), 1, ASCIIToUTF16("blah"), url); 593 model_.GetBookmarkBarNode(), 1, ASCIIToUTF16("blah"), url);
545 594
546 EXPECT_EQ(0, listener.notification_count_); 595 EXPECT_EQ(0, listener.notification_count_);
547 596
548 // Remove n2. 597 // Remove n2.
549 model.Remove(n2->parent(), 1); 598 model_.Remove(n2->parent(), 1);
550 n2 = NULL; 599 n2 = NULL;
551 600
552 // Shouldn't have received any notification as n1 still exists with the same 601 // Shouldn't have received any notification as n1 still exists with the same
553 // URL. 602 // URL.
554 EXPECT_EQ(0, listener.notification_count_); 603 EXPECT_EQ(0, listener.notification_count_);
555 604
556 EXPECT_TRUE(model.GetMostRecentlyAddedNodeForURL(url) == n1); 605 EXPECT_TRUE(model_.GetMostRecentlyAddedNodeForURL(url) == n1);
557 606
558 // Remove n1. 607 // Remove n1.
559 model.Remove(n1->parent(), 0); 608 model_.Remove(n1->parent(), 0);
560 609
561 // Now we should get the notification. 610 // Now we should get the notification.
562 EXPECT_EQ(1, listener.notification_count_); 611 EXPECT_EQ(1, listener.notification_count_);
563 ASSERT_FALSE(listener.details_.starred); 612 ASSERT_FALSE(listener.details_.starred);
564 ASSERT_EQ(1U, listener.details_.changed_urls.size()); 613 ASSERT_EQ(1U, listener.details_.changed_urls.size());
565 EXPECT_TRUE(url == *(listener.details_.changed_urls.begin())); 614 EXPECT_TRUE(url == *(listener.details_.changed_urls.begin()));
566 } 615 }
567 616
568 namespace { 617 namespace {
569 618
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
753 802
754 // Creates a set of nodes in the bookmark bar model, then recreates the 803 // Creates a set of nodes in the bookmark bar model, then recreates the
755 // bookmark bar model which triggers loading from the db and checks the loaded 804 // bookmark bar model which triggers loading from the db and checks the loaded
756 // structure to make sure it is what we first created. 805 // structure to make sure it is what we first created.
757 TEST_F(BookmarkModelTestWithProfile, CreateAndRestore) { 806 TEST_F(BookmarkModelTestWithProfile, CreateAndRestore) {
758 struct TestData { 807 struct TestData {
759 // Structure of the children of the bookmark bar model node. 808 // Structure of the children of the bookmark bar model node.
760 const std::string bbn_contents; 809 const std::string bbn_contents;
761 // Structure of the children of the other node. 810 // Structure of the children of the other node.
762 const std::string other_contents; 811 const std::string other_contents;
812 // Structure of the children of the synced node.
813 const std::string synced_contents;
763 } data[] = { 814 } data[] = {
764 // See PopulateNodeFromString for a description of these strings. 815 // See PopulateNodeFromString for a description of these strings.
765 { "", "" }, 816 { "", "" },
766 { "a", "b" }, 817 { "a", "b" },
767 { "a [ b ]", "" }, 818 { "a [ b ]", "" },
768 { "", "[ b ] a [ c [ d e [ f ] ] ]" }, 819 { "", "[ b ] a [ c [ d e [ f ] ] ]" },
769 { "a [ b ]", "" }, 820 { "a [ b ]", "" },
770 { "a b c [ d e [ f ] ]", "g h i [ j k [ l ] ]"}, 821 { "a b c [ d e [ f ] ]", "g h i [ j k [ l ] ]"},
771 }; 822 };
772 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(data); ++i) { 823 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(data); ++i) {
773 // Recreate the profile. We need to reset with NULL first so that the last 824 // Recreate the profile. We need to reset with NULL first so that the last
774 // HistoryService releases the locks on the files it creates and we can 825 // HistoryService releases the locks on the files it creates and we can
775 // delete them. 826 // delete them.
776 profile_.reset(NULL); 827 profile_.reset(NULL);
777 profile_.reset(new TestingProfile()); 828 profile_.reset(new TestingProfile());
778 profile_->CreateBookmarkModel(true); 829 profile_->CreateBookmarkModel(true);
779 profile_->CreateHistoryService(true, false); 830 profile_->CreateHistoryService(true, false);
780 BlockTillBookmarkModelLoaded(); 831 BlockTillBookmarkModelLoaded();
781 832
782 TestNode bbn; 833 TestNode bbn;
783 PopulateNodeFromString(data[i].bbn_contents, &bbn); 834 PopulateNodeFromString(data[i].bbn_contents, &bbn);
784 PopulateBookmarkNode(&bbn, bb_model_, bb_model_->GetBookmarkBarNode()); 835 PopulateBookmarkNode(&bbn, bb_model_, bb_model_->GetBookmarkBarNode());
785 836
786 TestNode other; 837 TestNode other;
787 PopulateNodeFromString(data[i].other_contents, &other); 838 PopulateNodeFromString(data[i].other_contents, &other);
788 PopulateBookmarkNode(&other, bb_model_, bb_model_->other_node()); 839 PopulateBookmarkNode(&other, bb_model_, bb_model_->other_node());
789 840
841 TestNode synced;
842 PopulateNodeFromString(data[i].synced_contents, &synced);
843 PopulateBookmarkNode(&synced, bb_model_, bb_model_->synced_node());
844
790 profile_->CreateBookmarkModel(false); 845 profile_->CreateBookmarkModel(false);
791 BlockTillBookmarkModelLoaded(); 846 BlockTillBookmarkModelLoaded();
792 847
793 VerifyModelMatchesNode(&bbn, bb_model_->GetBookmarkBarNode()); 848 VerifyModelMatchesNode(&bbn, bb_model_->GetBookmarkBarNode());
794 VerifyModelMatchesNode(&other, bb_model_->other_node()); 849 VerifyModelMatchesNode(&other, bb_model_->other_node());
850 VerifyModelMatchesNode(&synced, bb_model_->synced_node());
795 VerifyNoDuplicateIDs(bb_model_); 851 VerifyNoDuplicateIDs(bb_model_);
796 } 852 }
797 } 853 }
798 854
799 // Test class that creates a BookmarkModel with a real history backend. 855 // Test class that creates a BookmarkModel with a real history backend.
800 class BookmarkModelTestWithProfile2 : public BookmarkModelTestWithProfile { 856 class BookmarkModelTestWithProfile2 : public BookmarkModelTestWithProfile {
801 public: 857 public:
802 virtual void SetUp() { 858 virtual void SetUp() {
803 profile_.reset(new TestingProfile()); 859 profile_.reset(new TestingProfile());
804 } 860 }
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
854 ASSERT_TRUE(child->is_folder()); 910 ASSERT_TRUE(child->is_folder());
855 ASSERT_EQ(ASCIIToUTF16("OF1"), child->GetTitle()); 911 ASSERT_EQ(ASCIIToUTF16("OF1"), child->GetTitle());
856 ASSERT_EQ(0, child->child_count()); 912 ASSERT_EQ(0, child->child_count());
857 913
858 child = parent->GetChild(1); 914 child = parent->GetChild(1);
859 ASSERT_EQ(BookmarkNode::URL, child->type()); 915 ASSERT_EQ(BookmarkNode::URL, child->type());
860 ASSERT_EQ(ASCIIToUTF16("About Google"), child->GetTitle()); 916 ASSERT_EQ(ASCIIToUTF16("About Google"), child->GetTitle());
861 ASSERT_TRUE(child->GetURL() == 917 ASSERT_TRUE(child->GetURL() ==
862 GURL("http://www.google.com/intl/en/about.html")); 918 GURL("http://www.google.com/intl/en/about.html"));
863 919
920 parent = bb_model_->synced_node();
921 ASSERT_EQ(0, parent->child_count());
922
864 ASSERT_TRUE(bb_model_->IsBookmarked(GURL("http://www.google.com"))); 923 ASSERT_TRUE(bb_model_->IsBookmarked(GURL("http://www.google.com")));
865 } 924 }
866 925
867 void VerifyUniqueIDs() { 926 void VerifyUniqueIDs() {
868 std::set<int64> ids; 927 std::set<int64> ids;
869 bool has_unique = true; 928 bool has_unique = true;
870 VerifyUniqueIDImpl(bb_model_->GetBookmarkBarNode(), &ids, &has_unique); 929 VerifyUniqueIDImpl(bb_model_->GetBookmarkBarNode(), &ids, &has_unique);
871 VerifyUniqueIDImpl(bb_model_->other_node(), &ids, &has_unique); 930 VerifyUniqueIDImpl(bb_model_->other_node(), &ids, &has_unique);
872 ASSERT_TRUE(has_unique); 931 ASSERT_TRUE(has_unique);
873 } 932 }
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
963 // This won't actually delete the URL, rather it'll empty out the visits. 1022 // This won't actually delete the URL, rather it'll empty out the visits.
964 // This triggers blocking on the BookmarkModel. 1023 // This triggers blocking on the BookmarkModel.
965 profile_->GetHistoryService(Profile::EXPLICIT_ACCESS)->DeleteURL(url); 1024 profile_->GetHistoryService(Profile::EXPLICIT_ACCESS)->DeleteURL(url);
966 } 1025 }
967 1026
968 TEST_F(BookmarkModelTest, Sort) { 1027 TEST_F(BookmarkModelTest, Sort) {
969 // Populate the bookmark bar node with nodes for 'B', 'a', 'd' and 'C'. 1028 // Populate the bookmark bar node with nodes for 'B', 'a', 'd' and 'C'.
970 // 'C' and 'a' are folders. 1029 // 'C' and 'a' are folders.
971 TestNode bbn; 1030 TestNode bbn;
972 PopulateNodeFromString("B [ a ] d [ a ]", &bbn); 1031 PopulateNodeFromString("B [ a ] d [ a ]", &bbn);
973 const BookmarkNode* parent = model.GetBookmarkBarNode(); 1032 const BookmarkNode* parent = model_.GetBookmarkBarNode();
974 PopulateBookmarkNode(&bbn, &model, parent); 1033 PopulateBookmarkNode(&bbn, &model_, parent);
975 1034
976 BookmarkNode* child1 = AsMutable(parent->GetChild(1)); 1035 BookmarkNode* child1 = AsMutable(parent->GetChild(1));
977 child1->set_title(ASCIIToUTF16("a")); 1036 child1->set_title(ASCIIToUTF16("a"));
978 delete child1->Remove(child1->GetChild(0)); 1037 delete child1->Remove(child1->GetChild(0));
979 BookmarkNode* child3 = AsMutable(parent->GetChild(3)); 1038 BookmarkNode* child3 = AsMutable(parent->GetChild(3));
980 child3->set_title(ASCIIToUTF16("C")); 1039 child3->set_title(ASCIIToUTF16("C"));
981 delete child3->Remove(child3->GetChild(0)); 1040 delete child3->Remove(child3->GetChild(0));
982 1041
983 ClearCounts(); 1042 ClearCounts();
984 1043
985 // Sort the children of the bookmark bar node. 1044 // Sort the children of the bookmark bar node.
986 model.SortChildren(parent); 1045 model_.SortChildren(parent);
987 1046
988 // Make sure we were notified. 1047 // Make sure we were notified.
989 AssertObserverCount(0, 0, 0, 0, 1); 1048 AssertObserverCount(0, 0, 0, 0, 1);
990 1049
991 // Make sure the order matches (remember, 'a' and 'C' are folders and 1050 // Make sure the order matches (remember, 'a' and 'C' are folders and
992 // come first). 1051 // come first).
993 EXPECT_EQ(parent->GetChild(0)->GetTitle(), ASCIIToUTF16("a")); 1052 EXPECT_EQ(parent->GetChild(0)->GetTitle(), ASCIIToUTF16("a"));
994 EXPECT_EQ(parent->GetChild(1)->GetTitle(), ASCIIToUTF16("C")); 1053 EXPECT_EQ(parent->GetChild(1)->GetTitle(), ASCIIToUTF16("C"));
995 EXPECT_EQ(parent->GetChild(2)->GetTitle(), ASCIIToUTF16("B")); 1054 EXPECT_EQ(parent->GetChild(2)->GetTitle(), ASCIIToUTF16("B"));
996 EXPECT_EQ(parent->GetChild(3)->GetTitle(), ASCIIToUTF16("d")); 1055 EXPECT_EQ(parent->GetChild(3)->GetTitle(), ASCIIToUTF16("d"));
997 } 1056 }
1057
1058 TEST_F(BookmarkModelTest, NodeVisibility) {
1059 EXPECT_TRUE(model_.GetBookmarkBarNode()->IsVisible());
1060 EXPECT_TRUE(model_.other_node()->IsVisible());
1061 // Sync node invisible by default
1062 EXPECT_FALSE(model_.synced_node()->IsVisible());
1063
1064 // Arbitrary node should be visible
1065 TestNode bbn;
1066 PopulateNodeFromString("B", &bbn);
1067 const BookmarkNode* parent = model_.GetBookmarkBarNode();
1068 PopulateBookmarkNode(&bbn, &model_, parent);
1069 EXPECT_TRUE(parent->GetChild(0)->IsVisible());
1070 }
1071
1072 TEST_F(BookmarkModelTest, SyncNodeVisibileIfFlagSet) {
1073 CommandLine::ForCurrentProcess()->AppendSwitch(
1074 switches::kEnableSyncedBookmarksFolder);
1075 EXPECT_TRUE(model_.synced_node()->IsVisible());
1076 }
1077
1078 TEST_F(BookmarkModelTest, SyncNodeVisibileWithChildren) {
1079 const BookmarkNode* root = model_.synced_node();
1080 const string16 title(ASCIIToUTF16("foo"));
1081 const GURL url("http://foo.com");
1082
1083 model_.AddURL(root, 0, title, url);
1084 EXPECT_TRUE(model_.synced_node()->IsVisible());
1085 }
OLDNEW
« no previous file with comments | « chrome/browser/bookmarks/bookmark_model_test_utils.cc ('k') | chrome/browser/bookmarks/bookmark_storage.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698