OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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/history/starred_url_database.h" | 5 #include "chrome/browser/history/starred_url_database.h" |
6 | 6 |
7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/json_writer.h" | 9 #include "base/json_writer.h" |
10 #include "base/scoped_vector.h" | 10 #include "base/scoped_vector.h" |
11 #include "base/stl_util-inl.h" | 11 #include "base/stl_util-inl.h" |
(...skipping 526 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
538 } | 538 } |
539 | 539 |
540 bool StarredURLDatabase::MigrateBookmarksToFileImpl(const FilePath& path) { | 540 bool StarredURLDatabase::MigrateBookmarksToFileImpl(const FilePath& path) { |
541 std::vector<history::StarredEntry> entries; | 541 std::vector<history::StarredEntry> entries; |
542 if (!GetAllStarredEntries(&entries)) | 542 if (!GetAllStarredEntries(&entries)) |
543 return false; | 543 return false; |
544 | 544 |
545 // Create the bookmark bar and other folder nodes. | 545 // Create the bookmark bar and other folder nodes. |
546 history::StarredEntry entry; | 546 history::StarredEntry entry; |
547 entry.type = history::StarredEntry::BOOKMARK_BAR; | 547 entry.type = history::StarredEntry::BOOKMARK_BAR; |
548 BookmarkNode bookmark_bar_node(0, GURL()); | 548 BookmarkNode bookmark_bar_node(NULL, GURL()); |
549 bookmark_bar_node.Reset(entry); | 549 bookmark_bar_node.Reset(entry); |
550 entry.type = history::StarredEntry::OTHER; | 550 entry.type = history::StarredEntry::OTHER; |
551 BookmarkNode other_node(0, GURL()); | 551 BookmarkNode other_node(NULL, GURL()); |
552 other_node.Reset(entry); | 552 other_node.Reset(entry); |
553 | 553 |
554 std::map<history::UIStarID, history::StarID> group_id_to_id_map; | 554 std::map<history::UIStarID, history::StarID> group_id_to_id_map; |
555 typedef std::map<history::StarID, BookmarkNode*> IDToNodeMap; | 555 typedef std::map<history::StarID, BookmarkNode*> IDToNodeMap; |
556 IDToNodeMap id_to_node_map; | 556 IDToNodeMap id_to_node_map; |
557 | 557 |
558 history::UIStarID other_folder_group_id = 0; | 558 history::UIStarID other_folder_group_id = 0; |
559 history::StarID other_folder_id = 0; | 559 history::StarID other_folder_id = 0; |
560 | 560 |
561 // Iterate through the entries building a mapping between group_id and id. | 561 // Iterate through the entries building a mapping between group_id and id. |
(...skipping 28 matching lines...) Expand all Loading... |
590 continue; | 590 continue; |
591 } | 591 } |
592 | 592 |
593 BookmarkNode* node = id_to_node_map[i->id]; | 593 BookmarkNode* node = id_to_node_map[i->id]; |
594 if (!node) { | 594 if (!node) { |
595 // Creating a node results in creating the parent. As such, it is | 595 // Creating a node results in creating the parent. As such, it is |
596 // possible for the node representing a group to have been created before | 596 // possible for the node representing a group to have been created before |
597 // encountering the details. | 597 // encountering the details. |
598 | 598 |
599 // The created nodes are owned by the root node. | 599 // The created nodes are owned by the root node. |
600 node = new BookmarkNode(0, i->url); | 600 node = new BookmarkNode(NULL, i->url); |
601 id_to_node_map[i->id] = node; | 601 id_to_node_map[i->id] = node; |
602 } | 602 } |
603 node->Reset(*i); | 603 node->Reset(*i); |
604 | 604 |
605 DCHECK(group_id_to_id_map.find(i->parent_group_id) != | 605 DCHECK(group_id_to_id_map.find(i->parent_group_id) != |
606 group_id_to_id_map.end()); | 606 group_id_to_id_map.end()); |
607 history::StarID parent_id = group_id_to_id_map[i->parent_group_id]; | 607 history::StarID parent_id = group_id_to_id_map[i->parent_group_id]; |
608 BookmarkNode* parent = id_to_node_map[parent_id]; | 608 BookmarkNode* parent = id_to_node_map[parent_id]; |
609 if (!parent) { | 609 if (!parent) { |
610 // Haven't encountered the parent yet, create it now. | 610 // Haven't encountered the parent yet, create it now. |
611 parent = new BookmarkNode(0, GURL()); | 611 parent = new BookmarkNode(NULL, GURL()); |
612 id_to_node_map[parent_id] = parent; | 612 id_to_node_map[parent_id] = parent; |
613 } | 613 } |
614 | 614 |
615 // Add the node to its parent. |entries| is ordered by parent then | 615 // Add the node to its parent. |entries| is ordered by parent then |
616 // visual order so that we know we maintain visual order by always adding | 616 // visual order so that we know we maintain visual order by always adding |
617 // to the end. | 617 // to the end. |
618 parent->Add(parent->GetChildCount(), node); | 618 parent->Add(parent->GetChildCount(), node); |
619 } | 619 } |
620 | 620 |
621 // Save to file. | 621 // Save to file. |
622 BookmarkCodec encoder; | 622 BookmarkCodec encoder; |
623 scoped_ptr<Value> encoded_bookmarks( | 623 scoped_ptr<Value> encoded_bookmarks( |
624 encoder.Encode(&bookmark_bar_node, &other_node)); | 624 encoder.Encode(&bookmark_bar_node, &other_node)); |
625 std::string content; | 625 std::string content; |
626 JSONWriter::Write(encoded_bookmarks.get(), true, &content); | 626 JSONWriter::Write(encoded_bookmarks.get(), true, &content); |
627 | 627 |
628 return (file_util::WriteFile(path, content.c_str(), | 628 return (file_util::WriteFile(path, content.c_str(), |
629 static_cast<int>(content.length())) != -1); | 629 static_cast<int>(content.length())) != -1); |
630 } | 630 } |
631 | 631 |
632 } // namespace history | 632 } // namespace history |
OLD | NEW |