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