OLD | NEW |
1 // Copyright (c) 2006-2008 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/importer/importer.h" | 5 #include "chrome/browser/importer/importer.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <set> | 8 #include <set> |
9 | 9 |
10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
11 #include "base/gfx/png_encoder.h" | 11 #include "base/gfx/png_encoder.h" |
12 #include "base/string_util.h" | 12 #include "base/string_util.h" |
13 #include "base/time.h" | 13 #include "base/time.h" |
14 #include "chrome/browser/bookmarks/bookmark_model.h" | 14 #include "chrome/browser/bookmarks/bookmark_model.h" |
15 #include "chrome/browser/browser.h" | 15 #include "chrome/browser/browser.h" |
16 #include "chrome/browser/browser_list.h" | 16 #include "chrome/browser/browser_list.h" |
17 #include "chrome/browser/browser_process.h" | 17 #include "chrome/browser/browser_process.h" |
18 #include "chrome/browser/first_run.h" | 18 #include "chrome/browser/first_run.h" |
19 #include "chrome/browser/importer/firefox2_importer.h" | 19 #include "chrome/browser/importer/firefox2_importer.h" |
20 #include "chrome/browser/importer/firefox3_importer.h" | 20 #include "chrome/browser/importer/firefox3_importer.h" |
21 #include "chrome/browser/importer/firefox_importer_utils.h" | 21 #include "chrome/browser/importer/firefox_importer_utils.h" |
22 #include "chrome/browser/importer/firefox_profile_lock.h" | 22 #include "chrome/browser/importer/firefox_profile_lock.h" |
| 23 #if defined(OS_WIN) |
23 #include "chrome/browser/importer/ie_importer.h" | 24 #include "chrome/browser/importer/ie_importer.h" |
| 25 #endif |
24 #include "chrome/browser/search_engines/template_url_model.h" | 26 #include "chrome/browser/search_engines/template_url_model.h" |
25 #include "chrome/browser/shell_integration.h" | 27 #include "chrome/browser/shell_integration.h" |
26 #include "chrome/browser/tab_contents/site_instance.h" | 28 #include "chrome/browser/tab_contents/site_instance.h" |
27 #include "chrome/browser/views/importer_lock_view.h" | |
28 #include "chrome/browser/webdata/web_data_service.h" | 29 #include "chrome/browser/webdata/web_data_service.h" |
29 #include "chrome/common/gfx/favicon_size.h" | 30 #include "chrome/common/gfx/favicon_size.h" |
30 #include "chrome/common/l10n_util.h" | 31 #include "chrome/common/l10n_util.h" |
31 #include "chrome/common/notification_service.h" | 32 #include "chrome/common/notification_service.h" |
32 #include "chrome/common/pref_names.h" | 33 #include "chrome/common/pref_names.h" |
33 #include "chrome/common/pref_service.h" | 34 #include "chrome/common/pref_service.h" |
34 #include "chrome/common/win_util.h" | |
35 #include "chrome/views/window.h" | |
36 #include "grit/generated_resources.h" | 35 #include "grit/generated_resources.h" |
37 #include "skia/ext/image_operations.h" | 36 #include "skia/ext/image_operations.h" |
38 #include "webkit/glue/image_decoder.h" | 37 #include "webkit/glue/image_decoder.h" |
39 | 38 |
| 39 // TODO(port): Port these files. |
| 40 #if defined(OS_WIN) |
| 41 #include "chrome/browser/views/importer_lock_view.h" |
| 42 #include "chrome/common/win_util.h" |
| 43 #include "chrome/views/window.h" |
| 44 #endif |
| 45 |
40 // ProfileWriter. | 46 // ProfileWriter. |
41 | 47 |
42 bool ProfileWriter::BookmarkModelIsLoaded() const { | 48 bool ProfileWriter::BookmarkModelIsLoaded() const { |
43 return profile_->GetBookmarkModel()->IsLoaded(); | 49 return profile_->GetBookmarkModel()->IsLoaded(); |
44 } | 50 } |
45 | 51 |
46 void ProfileWriter::AddBookmarkModelObserver(BookmarkModelObserver* observer) { | 52 void ProfileWriter::AddBookmarkModelObserver(BookmarkModelObserver* observer) { |
47 profile_->GetBookmarkModel()->AddObserver(observer); | 53 profile_->GetBookmarkModel()->AddObserver(observer); |
48 } | 54 } |
49 | 55 |
50 bool ProfileWriter::TemplateURLModelIsLoaded() const { | 56 bool ProfileWriter::TemplateURLModelIsLoaded() const { |
51 return profile_->GetTemplateURLModel()->loaded(); | 57 return profile_->GetTemplateURLModel()->loaded(); |
52 } | 58 } |
53 | 59 |
54 void ProfileWriter::AddTemplateURLModelObserver( | 60 void ProfileWriter::AddTemplateURLModelObserver( |
55 NotificationObserver* observer) { | 61 NotificationObserver* observer) { |
56 TemplateURLModel* model = profile_->GetTemplateURLModel(); | 62 TemplateURLModel* model = profile_->GetTemplateURLModel(); |
57 NotificationService::current()->AddObserver( | 63 NotificationService::current()->AddObserver( |
58 observer, NotificationType::TEMPLATE_URL_MODEL_LOADED, | 64 observer, NotificationType::TEMPLATE_URL_MODEL_LOADED, |
59 Source<TemplateURLModel>(model)); | 65 Source<TemplateURLModel>(model)); |
60 model->Load(); | 66 model->Load(); |
61 } | 67 } |
62 | 68 |
63 void ProfileWriter::AddPasswordForm(const PasswordForm& form) { | 69 void ProfileWriter::AddPasswordForm(const PasswordForm& form) { |
64 profile_->GetWebDataService(Profile::EXPLICIT_ACCESS)->AddLogin(form); | 70 profile_->GetWebDataService(Profile::EXPLICIT_ACCESS)->AddLogin(form); |
65 } | 71 } |
66 | 72 |
| 73 #if defined(OS_WIN) |
67 void ProfileWriter::AddIE7PasswordInfo(const IE7PasswordInfo& info) { | 74 void ProfileWriter::AddIE7PasswordInfo(const IE7PasswordInfo& info) { |
68 profile_->GetWebDataService(Profile::EXPLICIT_ACCESS)->AddIE7Login(info); | 75 profile_->GetWebDataService(Profile::EXPLICIT_ACCESS)->AddIE7Login(info); |
69 } | 76 } |
| 77 #endif |
70 | 78 |
71 void ProfileWriter::AddHistoryPage(const std::vector<history::URLRow>& page) { | 79 void ProfileWriter::AddHistoryPage(const std::vector<history::URLRow>& page) { |
72 profile_->GetHistoryService(Profile::EXPLICIT_ACCESS)-> | 80 profile_->GetHistoryService(Profile::EXPLICIT_ACCESS)-> |
73 AddPagesWithDetails(page); | 81 AddPagesWithDetails(page); |
74 } | 82 } |
75 | 83 |
76 void ProfileWriter::AddHomepage(const GURL& home_page) { | 84 void ProfileWriter::AddHomepage(const GURL& home_page) { |
77 DCHECK(profile_); | 85 DCHECK(profile_); |
78 | 86 |
79 PrefService* prefs = profile_->GetPrefs(); | 87 PrefService* prefs = profile_->GetPrefs(); |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
263 if (turl_with_host_path) | 271 if (turl_with_host_path) |
264 model->SetDefaultSearchProvider(turl_with_host_path); | 272 model->SetDefaultSearchProvider(turl_with_host_path); |
265 else | 273 else |
266 NOTREACHED(); // BuildHostPathMap should only insert non-null values. | 274 NOTREACHED(); // BuildHostPathMap should only insert non-null values. |
267 } | 275 } |
268 delete t_url; | 276 delete t_url; |
269 continue; | 277 continue; |
270 } | 278 } |
271 if (t_url->url() && t_url->url()->IsValid()) { | 279 if (t_url->url() && t_url->url()->IsValid()) { |
272 model->Add(t_url); | 280 model->Add(t_url); |
273 if (default_keyword && t_url->url() && | 281 if (default_keyword && t_url->url() && |
274 t_url->url()->SupportsReplacement()) | 282 t_url->url()->SupportsReplacement()) |
275 model->SetDefaultSearchProvider(t_url); | 283 model->SetDefaultSearchProvider(t_url); |
276 } else { | 284 } else { |
277 // Don't add invalid TemplateURLs to the model. | 285 // Don't add invalid TemplateURLs to the model. |
278 delete t_url; | 286 delete t_url; |
279 } | 287 } |
280 } | 288 } |
281 } | 289 } |
282 | 290 |
283 void ProfileWriter::ShowBookmarkBar() { | 291 void ProfileWriter::ShowBookmarkBar() { |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
323 | 331 |
324 bool ProfileWriter::DoesBookmarkExist( | 332 bool ProfileWriter::DoesBookmarkExist( |
325 BookmarkModel* model, | 333 BookmarkModel* model, |
326 const BookmarkEntry& entry, | 334 const BookmarkEntry& entry, |
327 const std::wstring& first_folder_name, | 335 const std::wstring& first_folder_name, |
328 bool first_run) { | 336 bool first_run) { |
329 std::vector<BookmarkNode*> nodes_with_same_url; | 337 std::vector<BookmarkNode*> nodes_with_same_url; |
330 model->GetNodesByURL(entry.url, &nodes_with_same_url); | 338 model->GetNodesByURL(entry.url, &nodes_with_same_url); |
331 if (nodes_with_same_url.empty()) | 339 if (nodes_with_same_url.empty()) |
332 return false; | 340 return false; |
333 | 341 |
334 for (size_t i = 0; i < nodes_with_same_url.size(); ++i) { | 342 for (size_t i = 0; i < nodes_with_same_url.size(); ++i) { |
335 BookmarkNode* node = nodes_with_same_url[i]; | 343 BookmarkNode* node = nodes_with_same_url[i]; |
336 if (entry.title != node->GetTitle()) | 344 if (entry.title != node->GetTitle()) |
337 continue; | 345 continue; |
338 | 346 |
339 // Does the path match? | 347 // Does the path match? |
340 bool found_match = true; | 348 bool found_match = true; |
341 BookmarkNode* parent = node->GetParent(); | 349 BookmarkNode* parent = node->GetParent(); |
342 for (std::vector<std::wstring>::const_reverse_iterator path_it = | 350 for (std::vector<std::wstring>::const_reverse_iterator path_it = |
343 entry.path.rbegin(); | 351 entry.path.rbegin(); |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
441 this, NotificationType::TEMPLATE_URL_MODEL_LOADED, | 449 this, NotificationType::TEMPLATE_URL_MODEL_LOADED, |
442 Source<TemplateURLModel>(model)); | 450 Source<TemplateURLModel>(model)); |
443 waiting_for_template_url_model_ = false; | 451 waiting_for_template_url_model_ = false; |
444 InvokeTaskIfDone(); | 452 InvokeTaskIfDone(); |
445 } | 453 } |
446 | 454 |
447 void ImporterHost::ShowWarningDialog() { | 455 void ImporterHost::ShowWarningDialog() { |
448 if (headless_) { | 456 if (headless_) { |
449 OnLockViewEnd(false); | 457 OnLockViewEnd(false); |
450 } else { | 458 } else { |
| 459 #if defined(OS_WIN) |
451 views::Window::CreateChromeWindow(GetActiveWindow(), gfx::Rect(), | 460 views::Window::CreateChromeWindow(GetActiveWindow(), gfx::Rect(), |
452 new ImporterLockView(this))->Show(); | 461 new ImporterLockView(this))->Show(); |
| 462 #else |
| 463 // TODO(port): Need CreateChromeWindow. |
| 464 NOTIMPLEMENTED(); |
| 465 #endif |
453 } | 466 } |
454 } | 467 } |
455 | 468 |
456 void ImporterHost::OnLockViewEnd(bool is_continue) { | 469 void ImporterHost::OnLockViewEnd(bool is_continue) { |
457 if (is_continue) { | 470 if (is_continue) { |
458 // User chose to continue, then we check the lock again to make | 471 // User chose to continue, then we check the lock again to make |
459 // sure that Firefox has been closed. Try to import the settings | 472 // sure that Firefox has been closed. Try to import the settings |
460 // if successful. Otherwise, show a warning dialog. | 473 // if successful. Otherwise, show a warning dialog. |
461 firefox_lock_->Lock(); | 474 firefox_lock_->Lock(); |
462 if (firefox_lock_->HasAcquired()) { | 475 if (firefox_lock_->HasAcquired()) { |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
555 | 568 |
556 void ImporterHost::ImportEnded() { | 569 void ImporterHost::ImportEnded() { |
557 firefox_lock_.reset(); // Release the Firefox profile lock. | 570 firefox_lock_.reset(); // Release the Firefox profile lock. |
558 if (observer_) | 571 if (observer_) |
559 observer_->ImportEnded(); | 572 observer_->ImportEnded(); |
560 Release(); | 573 Release(); |
561 } | 574 } |
562 | 575 |
563 Importer* ImporterHost::CreateImporterByType(ProfileType type) { | 576 Importer* ImporterHost::CreateImporterByType(ProfileType type) { |
564 switch (type) { | 577 switch (type) { |
| 578 #if defined(OS_WIN) |
565 case MS_IE: | 579 case MS_IE: |
566 return new IEImporter(); | 580 return new IEImporter(); |
| 581 #endif |
567 case BOOKMARKS_HTML: | 582 case BOOKMARKS_HTML: |
568 case FIREFOX2: | 583 case FIREFOX2: |
569 return new Firefox2Importer(); | 584 return new Firefox2Importer(); |
570 case FIREFOX3: | 585 case FIREFOX3: |
571 return new Firefox3Importer(); | 586 return new Firefox3Importer(); |
572 } | 587 } |
573 NOTREACHED(); | 588 NOTREACHED(); |
574 return NULL; | 589 return NULL; |
575 } | 590 } |
576 | 591 |
577 int ImporterHost::GetAvailableProfileCount() { | 592 int ImporterHost::GetAvailableProfileCount() { |
578 return static_cast<int>(source_profiles_.size()); | 593 return static_cast<int>(source_profiles_.size()); |
579 } | 594 } |
580 | 595 |
581 std::wstring ImporterHost::GetSourceProfileNameAt(int index) const { | 596 std::wstring ImporterHost::GetSourceProfileNameAt(int index) const { |
582 DCHECK(index < static_cast<int>(source_profiles_.size())); | 597 DCHECK(index < static_cast<int>(source_profiles_.size())); |
583 return source_profiles_[index]->description; | 598 return source_profiles_[index]->description; |
584 } | 599 } |
585 | 600 |
586 const ProfileInfo& ImporterHost::GetSourceProfileInfoAt(int index) const { | 601 const ProfileInfo& ImporterHost::GetSourceProfileInfoAt(int index) const { |
587 DCHECK(index < static_cast<int>(source_profiles_.size())); | 602 DCHECK(index < static_cast<int>(source_profiles_.size())); |
588 return *source_profiles_[index]; | 603 return *source_profiles_[index]; |
589 } | 604 } |
590 | 605 |
591 void ImporterHost::DetectSourceProfiles() { | 606 void ImporterHost::DetectSourceProfiles() { |
| 607 #if defined(OS_WIN) |
592 // The order in which detect is called determines the order | 608 // The order in which detect is called determines the order |
593 // in which the options appear in the dropdown combo-box | 609 // in which the options appear in the dropdown combo-box |
594 if (ShellIntegration::IsFirefoxDefaultBrowser()) { | 610 if (ShellIntegration::IsFirefoxDefaultBrowser()) { |
595 DetectFirefoxProfiles(); | 611 DetectFirefoxProfiles(); |
596 DetectIEProfiles(); | 612 DetectIEProfiles(); |
597 } else { | 613 } else { |
598 DetectIEProfiles(); | 614 DetectIEProfiles(); |
599 DetectFirefoxProfiles(); | 615 DetectFirefoxProfiles(); |
600 } | 616 } |
| 617 #else |
| 618 DetectFirefoxProfiles(); |
| 619 #endif |
601 } | 620 } |
602 | 621 |
| 622 |
| 623 #if defined(OS_WIN) |
603 void ImporterHost::DetectIEProfiles() { | 624 void ImporterHost::DetectIEProfiles() { |
604 // IE always exists and don't have multiple profiles. | 625 // IE always exists and don't have multiple profiles. |
605 ProfileInfo* ie = new ProfileInfo(); | 626 ProfileInfo* ie = new ProfileInfo(); |
606 ie->description = l10n_util::GetString(IDS_IMPORT_FROM_IE); | 627 ie->description = l10n_util::GetString(IDS_IMPORT_FROM_IE); |
607 ie->browser_type = MS_IE; | 628 ie->browser_type = MS_IE; |
608 ie->source_path.clear(); | 629 ie->source_path.clear(); |
609 ie->app_path.clear(); | 630 ie->app_path.clear(); |
610 ie->services_supported = HISTORY | FAVORITES | COOKIES | PASSWORDS | | 631 ie->services_supported = HISTORY | FAVORITES | COOKIES | PASSWORDS | |
611 SEARCH_ENGINES; | 632 SEARCH_ENGINES; |
612 source_profiles_.push_back(ie); | 633 source_profiles_.push_back(ie); |
613 } | 634 } |
| 635 #endif |
614 | 636 |
615 void ImporterHost::DetectFirefoxProfiles() { | 637 void ImporterHost::DetectFirefoxProfiles() { |
616 // Detects which version of Firefox is installed. | 638 // Detects which version of Firefox is installed. |
617 int version = GetCurrentFirefoxMajorVersion(); | 639 int version = GetCurrentFirefoxMajorVersion(); |
618 ProfileType firefox_type; | 640 ProfileType firefox_type; |
619 if (version == 2) { | 641 if (version == 2) { |
620 firefox_type = FIREFOX2; | 642 firefox_type = FIREFOX2; |
621 } else if (version == 3) { | 643 } else if (version == 3) { |
622 firefox_type = FIREFOX3; | 644 firefox_type = FIREFOX3; |
623 } else { | 645 } else { |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
670 ProfileInfo* firefox = new ProfileInfo(); | 692 ProfileInfo* firefox = new ProfileInfo(); |
671 firefox->description = l10n_util::GetString(IDS_IMPORT_FROM_FIREFOX); | 693 firefox->description = l10n_util::GetString(IDS_IMPORT_FROM_FIREFOX); |
672 firefox->browser_type = firefox_type; | 694 firefox->browser_type = firefox_type; |
673 firefox->source_path = source_path; | 695 firefox->source_path = source_path; |
674 firefox->app_path = GetFirefoxInstallPath(); | 696 firefox->app_path = GetFirefoxInstallPath(); |
675 firefox->services_supported = HISTORY | FAVORITES | COOKIES | PASSWORDS | | 697 firefox->services_supported = HISTORY | FAVORITES | COOKIES | PASSWORDS | |
676 SEARCH_ENGINES; | 698 SEARCH_ENGINES; |
677 source_profiles_.push_back(firefox); | 699 source_profiles_.push_back(firefox); |
678 } | 700 } |
679 } | 701 } |
OLD | NEW |