OLD | NEW |
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 "chrome/browser/bookmarks/bookmark_model.h" | 5 #include "chrome/browser/bookmarks/bookmark_model.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <functional> | 8 #include <functional> |
9 | 9 |
10 #include "base/callback.h" | 10 #include "base/callback.h" |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
187 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, | 187 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, |
188 BookmarkImportBeginning(this)); | 188 BookmarkImportBeginning(this)); |
189 } | 189 } |
190 | 190 |
191 void BookmarkModel::EndImportMode() { | 191 void BookmarkModel::EndImportMode() { |
192 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, | 192 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, |
193 BookmarkImportEnding(this)); | 193 BookmarkImportEnding(this)); |
194 } | 194 } |
195 | 195 |
196 void BookmarkModel::Remove(const BookmarkNode* parent, int index) { | 196 void BookmarkModel::Remove(const BookmarkNode* parent, int index) { |
197 if (!loaded_ || !IsValidIndex(parent, index, false) || is_root(parent)) { | 197 if (!loaded_ || !IsValidIndex(parent, index, false) || is_root_node(parent)) { |
198 NOTREACHED(); | 198 NOTREACHED(); |
199 return; | 199 return; |
200 } | 200 } |
201 RemoveAndDeleteNode(AsMutable(parent->GetChild(index))); | 201 RemoveAndDeleteNode(AsMutable(parent->GetChild(index))); |
202 } | 202 } |
203 | 203 |
204 void BookmarkModel::Move(const BookmarkNode* node, | 204 void BookmarkModel::Move(const BookmarkNode* node, |
205 const BookmarkNode* new_parent, | 205 const BookmarkNode* new_parent, |
206 int index) { | 206 int index) { |
207 if (!loaded_ || !node || !IsValidIndex(new_parent, index, true) || | 207 if (!loaded_ || !node || !IsValidIndex(new_parent, index, true) || |
208 is_root(new_parent) || is_permanent_node(node)) { | 208 is_root_node(new_parent) || is_permanent_node(node)) { |
209 NOTREACHED(); | 209 NOTREACHED(); |
210 return; | 210 return; |
211 } | 211 } |
212 | 212 |
213 if (new_parent->HasAncestor(node)) { | 213 if (new_parent->HasAncestor(node)) { |
214 // Can't make an ancestor of the node be a child of the node. | 214 // Can't make an ancestor of the node be a child of the node. |
215 NOTREACHED(); | 215 NOTREACHED(); |
216 return; | 216 return; |
217 } | 217 } |
218 | 218 |
(...skipping 18 matching lines...) Expand all Loading... |
237 | 237 |
238 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, | 238 FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, |
239 BookmarkNodeMoved(this, old_parent, old_index, | 239 BookmarkNodeMoved(this, old_parent, old_index, |
240 new_parent, index)); | 240 new_parent, index)); |
241 } | 241 } |
242 | 242 |
243 void BookmarkModel::Copy(const BookmarkNode* node, | 243 void BookmarkModel::Copy(const BookmarkNode* node, |
244 const BookmarkNode* new_parent, | 244 const BookmarkNode* new_parent, |
245 int index) { | 245 int index) { |
246 if (!loaded_ || !node || !IsValidIndex(new_parent, index, true) || | 246 if (!loaded_ || !node || !IsValidIndex(new_parent, index, true) || |
247 is_root(new_parent) || is_permanent_node(node)) { | 247 is_root_node(new_parent) || is_permanent_node(node)) { |
248 NOTREACHED(); | 248 NOTREACHED(); |
249 return; | 249 return; |
250 } | 250 } |
251 | 251 |
252 if (new_parent->HasAncestor(node)) { | 252 if (new_parent->HasAncestor(node)) { |
253 // Can't make an ancestor of the node be a child of the node. | 253 // Can't make an ancestor of the node be a child of the node. |
254 NOTREACHED(); | 254 NOTREACHED(); |
255 return; | 255 return; |
256 } | 256 } |
257 | 257 |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
393 } | 393 } |
394 | 394 |
395 const BookmarkNode* BookmarkModel::GetNodeByID(int64 id) { | 395 const BookmarkNode* BookmarkModel::GetNodeByID(int64 id) { |
396 // TODO(sky): TreeNode needs a method that visits all nodes using a predicate. | 396 // TODO(sky): TreeNode needs a method that visits all nodes using a predicate. |
397 return GetNodeByID(&root_, id); | 397 return GetNodeByID(&root_, id); |
398 } | 398 } |
399 | 399 |
400 const BookmarkNode* BookmarkModel::AddFolder(const BookmarkNode* parent, | 400 const BookmarkNode* BookmarkModel::AddFolder(const BookmarkNode* parent, |
401 int index, | 401 int index, |
402 const string16& title) { | 402 const string16& title) { |
403 if (!loaded_ || parent == &root_ || !IsValidIndex(parent, index, true)) { | 403 if (!loaded_ || is_root_node(parent) || !IsValidIndex(parent, index, true)) { |
404 // Can't add to the root. | 404 // Can't add to the root. |
405 NOTREACHED(); | 405 NOTREACHED(); |
406 return NULL; | 406 return NULL; |
407 } | 407 } |
408 | 408 |
409 BookmarkNode* new_node = new BookmarkNode(generate_next_node_id(), GURL()); | 409 BookmarkNode* new_node = new BookmarkNode(generate_next_node_id(), GURL()); |
410 new_node->set_date_folder_modified(Time::Now()); | 410 new_node->set_date_folder_modified(Time::Now()); |
411 new_node->set_title(title); | 411 new_node->set_title(title); |
412 new_node->set_type(BookmarkNode::FOLDER); | 412 new_node->set_type(BookmarkNode::FOLDER); |
413 | 413 |
414 return AddNode(AsMutable(parent), index, new_node, false); | 414 return AddNode(AsMutable(parent), index, new_node, false); |
415 } | 415 } |
416 | 416 |
417 const BookmarkNode* BookmarkModel::AddURL(const BookmarkNode* parent, | 417 const BookmarkNode* BookmarkModel::AddURL(const BookmarkNode* parent, |
418 int index, | 418 int index, |
419 const string16& title, | 419 const string16& title, |
420 const GURL& url) { | 420 const GURL& url) { |
421 return AddURLWithCreationTime(parent, index, title, url, Time::Now()); | 421 return AddURLWithCreationTime(parent, index, title, url, Time::Now()); |
422 } | 422 } |
423 | 423 |
424 const BookmarkNode* BookmarkModel::AddURLWithCreationTime( | 424 const BookmarkNode* BookmarkModel::AddURLWithCreationTime( |
425 const BookmarkNode* parent, | 425 const BookmarkNode* parent, |
426 int index, | 426 int index, |
427 const string16& title, | 427 const string16& title, |
428 const GURL& url, | 428 const GURL& url, |
429 const Time& creation_time) { | 429 const Time& creation_time) { |
430 if (!loaded_ || !url.is_valid() || is_root(parent) || | 430 if (!loaded_ || !url.is_valid() || is_root_node(parent) || |
431 !IsValidIndex(parent, index, true)) { | 431 !IsValidIndex(parent, index, true)) { |
432 NOTREACHED(); | 432 NOTREACHED(); |
433 return NULL; | 433 return NULL; |
434 } | 434 } |
435 | 435 |
436 bool was_bookmarked = IsBookmarked(url); | 436 bool was_bookmarked = IsBookmarked(url); |
437 | 437 |
438 SetDateFolderModified(parent, creation_time); | 438 SetDateFolderModified(parent, creation_time); |
439 | 439 |
440 BookmarkNode* new_node = new BookmarkNode(generate_next_node_id(), url); | 440 BookmarkNode* new_node = new BookmarkNode(generate_next_node_id(), url); |
441 new_node->set_title(title); | 441 new_node->set_title(title); |
442 new_node->set_date_added(creation_time); | 442 new_node->set_date_added(creation_time); |
443 new_node->set_type(BookmarkNode::URL); | 443 new_node->set_type(BookmarkNode::URL); |
444 | 444 |
445 { | 445 { |
446 // Only hold the lock for the duration of the insert. | 446 // Only hold the lock for the duration of the insert. |
447 base::AutoLock url_lock(url_lock_); | 447 base::AutoLock url_lock(url_lock_); |
448 nodes_ordered_by_url_set_.insert(new_node); | 448 nodes_ordered_by_url_set_.insert(new_node); |
449 } | 449 } |
450 | 450 |
451 return AddNode(AsMutable(parent), index, new_node, was_bookmarked); | 451 return AddNode(AsMutable(parent), index, new_node, was_bookmarked); |
452 } | 452 } |
453 | 453 |
454 void BookmarkModel::SortChildren(const BookmarkNode* parent) { | 454 void BookmarkModel::SortChildren(const BookmarkNode* parent) { |
455 if (!parent || !parent->is_folder() || is_root(parent) || | 455 if (!parent || !parent->is_folder() || is_root_node(parent) || |
456 parent->child_count() <= 1) { | 456 parent->child_count() <= 1) { |
457 return; | 457 return; |
458 } | 458 } |
459 | 459 |
460 UErrorCode error = U_ZERO_ERROR; | 460 UErrorCode error = U_ZERO_ERROR; |
461 scoped_ptr<icu::Collator> collator( | 461 scoped_ptr<icu::Collator> collator( |
462 icu::Collator::createInstance( | 462 icu::Collator::createInstance( |
463 icu::Locale(g_browser_process->GetApplicationLocale().c_str()), | 463 icu::Locale(g_browser_process->GetApplicationLocale().c_str()), |
464 error)); | 464 error)); |
465 if (U_FAILURE(error)) | 465 if (U_FAILURE(error)) |
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
825 | 825 |
826 void BookmarkModel::SetFileChanged() { | 826 void BookmarkModel::SetFileChanged() { |
827 file_changed_ = true; | 827 file_changed_ = true; |
828 } | 828 } |
829 | 829 |
830 BookmarkLoadDetails* BookmarkModel::CreateLoadDetails() { | 830 BookmarkLoadDetails* BookmarkModel::CreateLoadDetails() { |
831 BookmarkNode* bb_node = CreatePermanentNode(BookmarkNode::BOOKMARK_BAR); | 831 BookmarkNode* bb_node = CreatePermanentNode(BookmarkNode::BOOKMARK_BAR); |
832 BookmarkNode* other_node = CreatePermanentNode(BookmarkNode::OTHER_NODE); | 832 BookmarkNode* other_node = CreatePermanentNode(BookmarkNode::OTHER_NODE); |
833 BookmarkNode* synced_node = CreatePermanentNode(BookmarkNode::SYNCED); | 833 BookmarkNode* synced_node = CreatePermanentNode(BookmarkNode::SYNCED); |
834 return new BookmarkLoadDetails(bb_node, other_node, synced_node, | 834 return new BookmarkLoadDetails(bb_node, other_node, synced_node, |
835 new BookmarkIndex(profile()), next_node_id_); | 835 new BookmarkIndex(profile_), next_node_id_); |
836 } | 836 } |
OLD | NEW |