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/browser/ui/sync/profile_signin_confirmation_helper.h" | 5 #include "chrome/browser/ui/sync/profile_signin_confirmation_helper.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/memory/ref_counted.h" | 8 #include "base/memory/ref_counted.h" |
9 #include "base/prefs/pref_service.h" | 9 #include "base/prefs/pref_service.h" |
10 #include "base/strings/string16.h" | 10 #include "base/strings/string16.h" |
11 #include "base/task/cancelable_task_tracker.h" | 11 #include "base/task/cancelable_task_tracker.h" |
12 #include "chrome/browser/bookmarks/bookmark_model_factory.h" | 12 #include "chrome/browser/bookmarks/bookmark_model_factory.h" |
13 #include "chrome/browser/extensions/extension_service.h" | |
14 #include "chrome/browser/history/history_backend.h" | 13 #include "chrome/browser/history/history_backend.h" |
15 #include "chrome/browser/history/history_db_task.h" | 14 #include "chrome/browser/history/history_db_task.h" |
16 #include "chrome/browser/history/history_service.h" | 15 #include "chrome/browser/history/history_service.h" |
17 #include "chrome/browser/history/history_service_factory.h" | 16 #include "chrome/browser/history/history_service_factory.h" |
18 #include "chrome/browser/history/history_types.h" | 17 #include "chrome/browser/history/history_types.h" |
19 #include "chrome/browser/profiles/profile.h" | 18 #include "chrome/browser/profiles/profile.h" |
| 19 #include "components/bookmarks/browser/bookmark_model.h" |
| 20 #include "content/public/browser/browser_thread.h" |
| 21 #include "ui/gfx/color_utils.h" |
| 22 #include "ui/native_theme/native_theme.h" |
| 23 |
| 24 #if defined(ENABLE_EXTENSIONS) |
| 25 #include "chrome/browser/extensions/extension_service.h" |
20 #include "chrome/common/extensions/extension_constants.h" | 26 #include "chrome/common/extensions/extension_constants.h" |
21 #include "chrome/common/extensions/sync_helper.h" | 27 #include "chrome/common/extensions/sync_helper.h" |
22 #include "components/bookmarks/browser/bookmark_model.h" | |
23 #include "content/public/browser/browser_thread.h" | |
24 #include "extensions/browser/extension_system.h" | 28 #include "extensions/browser/extension_system.h" |
25 #include "extensions/common/extension.h" | 29 #include "extensions/common/extension.h" |
26 #include "extensions/common/extension_set.h" | 30 #include "extensions/common/extension_set.h" |
27 #include "ui/gfx/color_utils.h" | 31 #endif |
28 #include "ui/native_theme/native_theme.h" | |
29 | 32 |
30 namespace { | 33 namespace { |
31 | 34 |
32 const int kHistoryEntriesBeforeNewProfilePrompt = 10; | 35 const int kHistoryEntriesBeforeNewProfilePrompt = 10; |
33 | 36 |
34 // Determines whether a profile has any typed URLs in its history. | 37 // Determines whether a profile has any typed URLs in its history. |
35 class HasTypedURLsTask : public history::HistoryDBTask { | 38 class HasTypedURLsTask : public history::HistoryDBTask { |
36 public: | 39 public: |
37 HasTypedURLsTask(const base::Callback<void(bool)>& cb) | 40 HasTypedURLsTask(const base::Callback<void(bool)>& cb) |
38 : has_typed_urls_(false), cb_(cb) { | 41 : has_typed_urls_(false), cb_(cb) { |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
185 } | 188 } |
186 | 189 |
187 bool HasBeenShutdown(Profile* profile) { | 190 bool HasBeenShutdown(Profile* profile) { |
188 bool has_been_shutdown = !profile->IsNewProfile(); | 191 bool has_been_shutdown = !profile->IsNewProfile(); |
189 if (has_been_shutdown) | 192 if (has_been_shutdown) |
190 DVLOG(1) << "ProfileSigninConfirmationHelper: profile is not new"; | 193 DVLOG(1) << "ProfileSigninConfirmationHelper: profile is not new"; |
191 return has_been_shutdown; | 194 return has_been_shutdown; |
192 } | 195 } |
193 | 196 |
194 bool HasSyncedExtensions(Profile* profile) { | 197 bool HasSyncedExtensions(Profile* profile) { |
| 198 #if defined(ENABLE_EXTENSIONS) |
195 extensions::ExtensionSystem* system = | 199 extensions::ExtensionSystem* system = |
196 extensions::ExtensionSystem::Get(profile); | 200 extensions::ExtensionSystem::Get(profile); |
197 if (system && system->extension_service()) { | 201 if (system && system->extension_service()) { |
198 const extensions::ExtensionSet* extensions = | 202 const extensions::ExtensionSet* extensions = |
199 system->extension_service()->extensions(); | 203 system->extension_service()->extensions(); |
200 for (extensions::ExtensionSet::const_iterator iter = extensions->begin(); | 204 for (extensions::ExtensionSet::const_iterator iter = extensions->begin(); |
201 iter != extensions->end(); ++iter) { | 205 iter != extensions->end(); ++iter) { |
202 // The webstore is synced so that it stays put on the new tab | 206 // The webstore is synced so that it stays put on the new tab |
203 // page, but since it's installed by default we don't want to | 207 // page, but since it's installed by default we don't want to |
204 // consider it when determining if the profile is dirty. | 208 // consider it when determining if the profile is dirty. |
205 if (extensions::sync_helper::IsSyncable(iter->get()) && | 209 if (extensions::sync_helper::IsSyncable(iter->get()) && |
206 (*iter)->id() != extension_misc::kWebStoreAppId && | 210 (*iter)->id() != extension_misc::kWebStoreAppId && |
207 (*iter)->id() != extension_misc::kChromeAppId) { | 211 (*iter)->id() != extension_misc::kChromeAppId) { |
208 DVLOG(1) << "ProfileSigninConfirmationHelper: " | 212 DVLOG(1) << "ProfileSigninConfirmationHelper: " |
209 << "profile contains a synced extension: " << (*iter)->id(); | 213 << "profile contains a synced extension: " << (*iter)->id(); |
210 return true; | 214 return true; |
211 } | 215 } |
212 } | 216 } |
213 } | 217 } |
| 218 #endif |
214 return false; | 219 return false; |
215 } | 220 } |
216 | 221 |
217 void CheckShouldPromptForNewProfile( | 222 void CheckShouldPromptForNewProfile( |
218 Profile* profile, | 223 Profile* profile, |
219 const base::Callback<void(bool)>& return_result) { | 224 const base::Callback<void(bool)>& return_result) { |
220 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 225 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
221 | 226 |
222 if (HasBeenShutdown(profile) || | 227 if (HasBeenShutdown(profile) || |
223 HasBookmarks(profile) || | 228 HasBookmarks(profile) || |
224 HasSyncedExtensions(profile)) { | 229 HasSyncedExtensions(profile)) { |
225 return_result.Run(true); | 230 return_result.Run(true); |
226 return; | 231 return; |
227 } | 232 } |
228 // Fire asynchronous queries for profile data. | 233 // Fire asynchronous queries for profile data. |
229 ProfileSigninConfirmationHelper* helper = | 234 ProfileSigninConfirmationHelper* helper = |
230 new ProfileSigninConfirmationHelper(profile, return_result); | 235 new ProfileSigninConfirmationHelper(profile, return_result); |
231 helper->CheckHasHistory(kHistoryEntriesBeforeNewProfilePrompt); | 236 helper->CheckHasHistory(kHistoryEntriesBeforeNewProfilePrompt); |
232 helper->CheckHasTypedURLs(); | 237 helper->CheckHasTypedURLs(); |
233 } | 238 } |
234 | 239 |
235 } // namespace ui | 240 } // namespace ui |
OLD | NEW |