| 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 <Cocoa/Cocoa.h> | 5 #include <Cocoa/Cocoa.h> |
| 6 | 6 |
| 7 #include "chrome/browser/importer/safari_importer.h" | 7 #include "chrome/browser/importer/safari_importer.h" |
| 8 | 8 |
| 9 #include <map> | 9 #include <map> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 54 DCHECK(services_supported); | 54 DCHECK(services_supported); |
| 55 *services_supported = importer::NONE; | 55 *services_supported = importer::NONE; |
| 56 | 56 |
| 57 // Import features are toggled by the following: | 57 // Import features are toggled by the following: |
| 58 // bookmarks import: existence of ~/Library/Safari/Bookmarks.plist file. | 58 // bookmarks import: existence of ~/Library/Safari/Bookmarks.plist file. |
| 59 // history import: existence of ~/Library/Safari/History.plist file. | 59 // history import: existence of ~/Library/Safari/History.plist file. |
| 60 FilePath safari_dir = library_dir.Append("Safari"); | 60 FilePath safari_dir = library_dir.Append("Safari"); |
| 61 FilePath bookmarks_path = safari_dir.Append("Bookmarks.plist"); | 61 FilePath bookmarks_path = safari_dir.Append("Bookmarks.plist"); |
| 62 FilePath history_path = safari_dir.Append("History.plist"); | 62 FilePath history_path = safari_dir.Append("History.plist"); |
| 63 | 63 |
| 64 using file_util::PathExists; | 64 if (file_util::PathExists(bookmarks_path)) |
| 65 if (PathExists(bookmarks_path)) | |
| 66 *services_supported |= importer::FAVORITES; | 65 *services_supported |= importer::FAVORITES; |
| 67 if (PathExists(history_path)) | 66 if (file_util::PathExists(history_path)) |
| 68 *services_supported |= importer::HISTORY; | 67 *services_supported |= importer::HISTORY; |
| 69 | 68 |
| 70 return *services_supported != importer::NONE; | 69 return *services_supported != importer::NONE; |
| 71 } | 70 } |
| 72 | 71 |
| 73 void SafariImporter::StartImport(const importer::ProfileInfo& profile_info, | 72 void SafariImporter::StartImport(const importer::ProfileInfo& profile_info, |
| 74 uint16 services_supported, | 73 uint16 services_supported, |
| 75 ImporterBridge* bridge) { | 74 ImporterBridge* bridge) { |
| 76 bridge_ = bridge; | 75 bridge_ = bridge; |
| 77 // The order here is important! | 76 // The order here is important! |
| (...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 339 // Load the plist file. | 338 // Load the plist file. |
| 340 NSDictionary* history_dict = [NSDictionary | 339 NSDictionary* history_dict = [NSDictionary |
| 341 dictionaryWithContentsOfFile:history_plist]; | 340 dictionaryWithContentsOfFile:history_plist]; |
| 342 if (!history_dict) | 341 if (!history_dict) |
| 343 return; | 342 return; |
| 344 | 343 |
| 345 NSArray* safari_history_items = [history_dict | 344 NSArray* safari_history_items = [history_dict |
| 346 objectForKey:@"WebHistoryDates"]; | 345 objectForKey:@"WebHistoryDates"]; |
| 347 | 346 |
| 348 for (NSDictionary* history_item in safari_history_items) { | 347 for (NSDictionary* history_item in safari_history_items) { |
| 349 using base::SysNSStringToUTF8; | |
| 350 using base::SysNSStringToUTF16; | |
| 351 NSString* url_ns = [history_item objectForKey:@""]; | 348 NSString* url_ns = [history_item objectForKey:@""]; |
| 352 if (!url_ns) | 349 if (!url_ns) |
| 353 continue; | 350 continue; |
| 354 | 351 |
| 355 GURL url(SysNSStringToUTF8(url_ns)); | 352 GURL url(base::SysNSStringToUTF8(url_ns)); |
| 356 | 353 |
| 357 if (!CanImportSafariURL(url)) | 354 if (!CanImportSafariURL(url)) |
| 358 continue; | 355 continue; |
| 359 | 356 |
| 360 history::URLRow row(url); | 357 history::URLRow row(url); |
| 361 NSString* title_ns = [history_item objectForKey:@"title"]; | 358 NSString* title_ns = [history_item objectForKey:@"title"]; |
| 362 | 359 |
| 363 // Sometimes items don't have a title, in which case we just substitue | 360 // Sometimes items don't have a title, in which case we just substitue |
| 364 // the url. | 361 // the url. |
| 365 if (!title_ns) | 362 if (!title_ns) |
| 366 title_ns = url_ns; | 363 title_ns = url_ns; |
| 367 | 364 |
| 368 row.set_title(SysNSStringToUTF16(title_ns)); | 365 row.set_title(base::SysNSStringToUTF16(title_ns)); |
| 369 int visit_count = [[history_item objectForKey:@"visitCount"] | 366 int visit_count = [[history_item objectForKey:@"visitCount"] |
| 370 intValue]; | 367 intValue]; |
| 371 row.set_visit_count(visit_count); | 368 row.set_visit_count(visit_count); |
| 372 // Include imported URLs in autocompletion - don't hide them. | 369 // Include imported URLs in autocompletion - don't hide them. |
| 373 row.set_hidden(0); | 370 row.set_hidden(0); |
| 374 // Item was never typed before in the omnibox. | 371 // Item was never typed before in the omnibox. |
| 375 row.set_typed_count(0); | 372 row.set_typed_count(0); |
| 376 | 373 |
| 377 NSString* last_visit_str = [history_item objectForKey:@"lastVisitedDate"]; | 374 NSString* last_visit_str = [history_item objectForKey:@"lastVisitedDate"]; |
| 378 // The last visit time should always be in the history item, but if not | 375 // The last visit time should always be in the history item, but if not |
| 379 /// just continue without this item. | 376 /// just continue without this item. |
| 380 DCHECK(last_visit_str); | 377 DCHECK(last_visit_str); |
| 381 if (!last_visit_str) | 378 if (!last_visit_str) |
| 382 continue; | 379 continue; |
| 383 | 380 |
| 384 // Convert Safari's last visit time to Unix Epoch time. | 381 // Convert Safari's last visit time to Unix Epoch time. |
| 385 double seconds_since_unix_epoch = HistoryTimeToEpochTime(last_visit_str); | 382 double seconds_since_unix_epoch = HistoryTimeToEpochTime(last_visit_str); |
| 386 row.set_last_visit(base::Time::FromDoubleT(seconds_since_unix_epoch)); | 383 row.set_last_visit(base::Time::FromDoubleT(seconds_since_unix_epoch)); |
| 387 | 384 |
| 388 history_items->push_back(row); | 385 history_items->push_back(row); |
| 389 } | 386 } |
| 390 } | 387 } |
| OLD | NEW |