OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/utility/importer/firefox_importer.h" | 5 #include "chrome/utility/importer/firefox_importer.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include <set> | 8 #include <set> |
9 | 9 |
10 #include "base/files/file_enumerator.h" | 10 #include "base/files/file_enumerator.h" |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 void FirefoxImporter::ImportBookmarks() { | 198 void FirefoxImporter::ImportBookmarks() { |
199 base::FilePath file = source_path_.AppendASCII("places.sqlite"); | 199 base::FilePath file = source_path_.AppendASCII("places.sqlite"); |
200 if (!base::PathExists(file)) | 200 if (!base::PathExists(file)) |
201 return; | 201 return; |
202 | 202 |
203 sql::Connection db; | 203 sql::Connection db; |
204 if (!db.Open(file)) | 204 if (!db.Open(file)) |
205 return; | 205 return; |
206 | 206 |
207 // Get the bookmark folders that we are interested in. | 207 // Get the bookmark folders that we are interested in. |
208 int toolbar_folder_id = -1; | 208 int toolbar_folder_id = LoadNodeIDByGUID(&db, "toolbar_____"); |
209 int menu_folder_id = -1; | 209 int menu_folder_id = LoadNodeIDByGUID(&db, "menu________"); |
210 int unsorted_folder_id = -1; | 210 int unsorted_folder_id = LoadNodeIDByGUID(&db, "unfiled_____"); |
211 LoadRootNodeID(&db, &toolbar_folder_id, &menu_folder_id, &unsorted_folder_id); | |
212 | 211 |
213 // Load livemark IDs. | 212 // Load livemark IDs. |
214 std::set<int> livemark_id; | 213 std::set<int> livemark_id; |
215 LoadLivemarkIDs(&db, &livemark_id); | 214 LoadLivemarkIDs(&db, &livemark_id); |
216 | 215 |
217 // Load the default bookmarks. | 216 // Load the default bookmarks. |
218 std::set<GURL> default_urls; | 217 std::set<GURL> default_urls; |
219 LoadDefaultBookmarks(app_path_, &default_urls); | 218 LoadDefaultBookmarks(app_path_, &default_urls); |
220 | 219 |
221 BookmarkList list; | 220 BookmarkList list; |
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
640 size_t end_of_parent = file_data.find("</SearchPlugin>"); | 639 size_t end_of_parent = file_data.find("</SearchPlugin>"); |
641 if (end_of_parent != std::string::npos && !alias.empty()) | 640 if (end_of_parent != std::string::npos && !alias.empty()) |
642 file_data.insert(end_of_parent, "<Alias>" + alias + "</Alias> \n"); | 641 file_data.insert(end_of_parent, "<Alias>" + alias + "</Alias> \n"); |
643 } | 642 } |
644 search_engine_data->push_back(file_data); | 643 search_engine_data->push_back(file_data); |
645 } | 644 } |
646 } | 645 } |
647 } | 646 } |
648 } | 647 } |
649 | 648 |
650 void FirefoxImporter::LoadRootNodeID(sql::Connection* db, | 649 int FirefoxImporter::LoadNodeIDByGUID(sql::Connection* db, |
651 int* toolbar_folder_id, | 650 const std::string& GUID) { |
652 int* menu_folder_id, | 651 const char query[] = |
653 int* unsorted_folder_id) { | 652 "SELECT id " |
654 static const char kToolbarFolderName[] = "toolbar"; | 653 "FROM moz_bookmarks " |
655 static const char kMenuFolderName[] = "menu"; | 654 "WHERE guid == ?"; |
656 static const char kUnsortedFolderName[] = "unfiled"; | 655 sql::Statement s(db->GetUniqueStatement(query)); |
| 656 s.BindString(0, GUID); |
657 | 657 |
658 const char query[] = "SELECT root_name, folder_id FROM moz_bookmarks_roots"; | 658 if (!s.Step()) |
659 sql::Statement s(db->GetUniqueStatement(query)); | 659 return -1; |
660 | 660 return s.ColumnInt(0); |
661 while (s.Step()) { | |
662 std::string folder = s.ColumnString(0); | |
663 int id = s.ColumnInt(1); | |
664 if (folder == kToolbarFolderName) | |
665 *toolbar_folder_id = id; | |
666 else if (folder == kMenuFolderName) | |
667 *menu_folder_id = id; | |
668 else if (folder == kUnsortedFolderName) | |
669 *unsorted_folder_id = id; | |
670 } | |
671 } | 661 } |
672 | 662 |
673 void FirefoxImporter::LoadLivemarkIDs(sql::Connection* db, | 663 void FirefoxImporter::LoadLivemarkIDs(sql::Connection* db, |
674 std::set<int>* livemark) { | 664 std::set<int>* livemark) { |
675 static const char kFeedAnnotation[] = "livemark/feedURI"; | 665 static const char kFeedAnnotation[] = "livemark/feedURI"; |
676 livemark->clear(); | 666 livemark->clear(); |
677 | 667 |
678 const char query[] = | 668 const char query[] = |
679 "SELECT b.item_id " | 669 "SELECT b.item_id " |
680 "FROM moz_anno_attributes a " | 670 "FROM moz_anno_attributes a " |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
785 | 775 |
786 if (!importer::ReencodeFavicon(&data[0], data.size(), &usage.png_data)) | 776 if (!importer::ReencodeFavicon(&data[0], data.size(), &usage.png_data)) |
787 continue; // Unable to decode. | 777 continue; // Unable to decode. |
788 | 778 |
789 usage.urls = i->second; | 779 usage.urls = i->second; |
790 favicons->push_back(usage); | 780 favicons->push_back(usage); |
791 } | 781 } |
792 s.Reset(true); | 782 s.Reset(true); |
793 } | 783 } |
794 } | 784 } |
OLD | NEW |