| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_list.h" | 5 #include "chrome/browser/importer/importer_list.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "chrome/browser/importer/importer_list_observer.h" | 8 #include "chrome/browser/importer/importer_list_observer.h" |
| 9 #include "chrome/browser/shell_integration.h" | 9 #include "chrome/browser/shell_integration.h" |
| 10 #include "chrome/common/importer/firefox_importer_utils.h" | 10 #include "chrome/common/importer/firefox_importer_utils.h" |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 99 | 99 |
| 100 ImporterList::ImporterList() | 100 ImporterList::ImporterList() |
| 101 : source_thread_id_(BrowserThread::UI), | 101 : source_thread_id_(BrowserThread::UI), |
| 102 observer_(NULL), | 102 observer_(NULL), |
| 103 is_observed_(false), | 103 is_observed_(false), |
| 104 source_profiles_loaded_(false) { | 104 source_profiles_loaded_(false) { |
| 105 } | 105 } |
| 106 | 106 |
| 107 void ImporterList::DetectSourceProfiles( | 107 void ImporterList::DetectSourceProfiles( |
| 108 const std::string& locale, | 108 const std::string& locale, |
| 109 bool include_interactive_profiles, |
| 109 importer::ImporterListObserver* observer) { | 110 importer::ImporterListObserver* observer) { |
| 110 DCHECK(observer); | 111 DCHECK(observer); |
| 111 observer_ = observer; | 112 observer_ = observer; |
| 112 is_observed_ = true; | 113 is_observed_ = true; |
| 113 | 114 |
| 114 bool res = BrowserThread::GetCurrentThreadIdentifier(&source_thread_id_); | 115 bool res = BrowserThread::GetCurrentThreadIdentifier(&source_thread_id_); |
| 115 DCHECK(res); | 116 DCHECK(res); |
| 116 | 117 |
| 117 BrowserThread::PostTask( | 118 BrowserThread::PostTask(BrowserThread::FILE, |
| 118 BrowserThread::FILE, | 119 FROM_HERE, |
| 119 FROM_HERE, | 120 base::Bind(&ImporterList::DetectSourceProfilesWorker, |
| 120 base::Bind(&ImporterList::DetectSourceProfilesWorker, this, locale)); | 121 this, |
| 122 locale, |
| 123 include_interactive_profiles)); |
| 121 } | 124 } |
| 122 | 125 |
| 123 void ImporterList::DetectSourceProfilesHack(const std::string& locale) { | 126 void ImporterList::DetectSourceProfilesHack(const std::string& locale, |
| 124 DetectSourceProfilesWorker(locale); | 127 bool include_interactive_profiles) { |
| 128 DetectSourceProfilesWorker(locale, include_interactive_profiles); |
| 125 } | 129 } |
| 126 | 130 |
| 127 const importer::SourceProfile& ImporterList::GetSourceProfileAt( | 131 const importer::SourceProfile& ImporterList::GetSourceProfileAt( |
| 128 size_t index) const { | 132 size_t index) const { |
| 129 DCHECK(source_profiles_loaded_); | 133 DCHECK(source_profiles_loaded_); |
| 130 DCHECK_LT(index, count()); | 134 DCHECK_LT(index, count()); |
| 131 return *source_profiles_[index]; | 135 return *source_profiles_[index]; |
| 132 } | 136 } |
| 133 | 137 |
| 134 const importer::SourceProfile& ImporterList::GetSourceProfileForImporterType( | 138 const importer::SourceProfile& ImporterList::GetSourceProfileForImporterType( |
| 135 int importer_type) const { | 139 int importer_type) const { |
| 136 DCHECK(source_profiles_loaded_); | 140 DCHECK(source_profiles_loaded_); |
| 137 | 141 |
| 138 for (size_t i = 0; i < count(); ++i) { | 142 for (size_t i = 0; i < count(); ++i) { |
| 139 if (source_profiles_[i]->importer_type == importer_type) | 143 if (source_profiles_[i]->importer_type == importer_type) |
| 140 return *source_profiles_[i]; | 144 return *source_profiles_[i]; |
| 141 } | 145 } |
| 142 NOTREACHED(); | 146 NOTREACHED(); |
| 143 return *(new importer::SourceProfile); | 147 return *(new importer::SourceProfile); |
| 144 } | 148 } |
| 145 | 149 |
| 146 ImporterList::~ImporterList() { | 150 ImporterList::~ImporterList() { |
| 147 } | 151 } |
| 148 | 152 |
| 149 void ImporterList::DetectSourceProfilesWorker(const std::string& locale) { | 153 void ImporterList::DetectSourceProfilesWorker( |
| 154 const std::string& locale, |
| 155 bool include_interactive_profiles) { |
| 150 // TODO(jhawkins): Remove this condition once DetectSourceProfilesHack is | 156 // TODO(jhawkins): Remove this condition once DetectSourceProfilesHack is |
| 151 // removed. | 157 // removed. |
| 152 if (is_observed_) | 158 if (is_observed_) |
| 153 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); | 159 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
| 154 | 160 |
| 155 std::vector<importer::SourceProfile*> profiles; | 161 std::vector<importer::SourceProfile*> profiles; |
| 156 | 162 |
| 157 // The first run import will automatically take settings from the first | 163 // The first run import will automatically take settings from the first |
| 158 // profile detected, which should be the user's current default. | 164 // profile detected, which should be the user's current default. |
| 159 #if defined(OS_WIN) | 165 #if defined(OS_WIN) |
| 160 if (ShellIntegration::IsFirefoxDefaultBrowser()) { | 166 if (ShellIntegration::IsFirefoxDefaultBrowser()) { |
| 161 DetectFirefoxProfiles(locale, &profiles); | 167 DetectFirefoxProfiles(locale, &profiles); |
| 162 DetectIEProfiles(&profiles); | 168 DetectIEProfiles(&profiles); |
| 163 } else { | 169 } else { |
| 164 DetectIEProfiles(&profiles); | 170 DetectIEProfiles(&profiles); |
| 165 DetectFirefoxProfiles(locale, &profiles); | 171 DetectFirefoxProfiles(locale, &profiles); |
| 166 } | 172 } |
| 167 #elif defined(OS_MACOSX) | 173 #elif defined(OS_MACOSX) |
| 168 if (ShellIntegration::IsFirefoxDefaultBrowser()) { | 174 if (ShellIntegration::IsFirefoxDefaultBrowser()) { |
| 169 DetectFirefoxProfiles(locale, &profiles); | 175 DetectFirefoxProfiles(locale, &profiles); |
| 170 DetectSafariProfiles(&profiles); | 176 DetectSafariProfiles(&profiles); |
| 171 } else { | 177 } else { |
| 172 DetectSafariProfiles(&profiles); | 178 DetectSafariProfiles(&profiles); |
| 173 DetectFirefoxProfiles(locale, &profiles); | 179 DetectFirefoxProfiles(locale, &profiles); |
| 174 } | 180 } |
| 175 #else | 181 #else |
| 176 DetectFirefoxProfiles(locale, &profiles); | 182 DetectFirefoxProfiles(locale, &profiles); |
| 177 #endif | 183 #endif |
| 178 importer::SourceProfile* bookmarks_file = new importer::SourceProfile; | 184 if (include_interactive_profiles) { |
| 179 bookmarks_file->importer_name = | 185 importer::SourceProfile* bookmarks_profile = new importer::SourceProfile; |
| 180 l10n_util::GetStringUTF16(IDS_IMPORT_FROM_BOOKMARKS_HTML_FILE); | 186 bookmarks_profile->importer_name = |
| 181 bookmarks_file->importer_type = importer::TYPE_BOOKMARKS_FILE; | 187 l10n_util::GetStringUTF16(IDS_IMPORT_FROM_BOOKMARKS_HTML_FILE); |
| 182 bookmarks_file->services_supported = importer::FAVORITES; | 188 bookmarks_profile->importer_type = importer::TYPE_BOOKMARKS_FILE; |
| 183 profiles.push_back(bookmarks_file); | 189 bookmarks_profile->services_supported = importer::FAVORITES; |
| 190 profiles.push_back(bookmarks_profile); |
| 191 } |
| 184 | 192 |
| 185 // TODO(jhawkins): Remove this condition once DetectSourceProfilesHack is | 193 // TODO(jhawkins): Remove this condition once DetectSourceProfilesHack is |
| 186 // removed. | 194 // removed. |
| 187 if (is_observed_) { | 195 if (is_observed_) { |
| 188 BrowserThread::PostTask( | 196 BrowserThread::PostTask( |
| 189 source_thread_id_, | 197 source_thread_id_, |
| 190 FROM_HERE, | 198 FROM_HERE, |
| 191 base::Bind(&ImporterList::SourceProfilesLoaded, this, profiles)); | 199 base::Bind(&ImporterList::SourceProfilesLoaded, this, profiles)); |
| 192 } else { | 200 } else { |
| 193 source_profiles_.assign(profiles.begin(), profiles.end()); | 201 source_profiles_.assign(profiles.begin(), profiles.end()); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 208 source_profiles_.assign(profiles.begin(), profiles.end()); | 216 source_profiles_.assign(profiles.begin(), profiles.end()); |
| 209 source_profiles_loaded_ = true; | 217 source_profiles_loaded_ = true; |
| 210 source_thread_id_ = BrowserThread::UI; | 218 source_thread_id_ = BrowserThread::UI; |
| 211 | 219 |
| 212 observer_->OnSourceProfilesLoaded(); | 220 observer_->OnSourceProfilesLoaded(); |
| 213 observer_ = NULL; | 221 observer_ = NULL; |
| 214 | 222 |
| 215 // TODO(jhawkins): Remove once DetectSourceProfilesHack is removed. | 223 // TODO(jhawkins): Remove once DetectSourceProfilesHack is removed. |
| 216 is_observed_ = false; | 224 is_observed_ = false; |
| 217 } | 225 } |
| OLD | NEW |