| 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/sync/profile_sync_service.h" |     5 #include "chrome/browser/sync/profile_sync_service.h" | 
|     6  |     6  | 
|     7 #include <cstddef> |     7 #include <cstddef> | 
|     8 #include <map> |     8 #include <map> | 
|     9 #include <set> |     9 #include <set> | 
|    10 #include <utility> |    10 #include <utility> | 
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|    67 #include "sync/internal_api/public/sync_encryption_handler.h" |    67 #include "sync/internal_api/public/sync_encryption_handler.h" | 
|    68 #include "sync/internal_api/public/util/experiments.h" |    68 #include "sync/internal_api/public/util/experiments.h" | 
|    69 #include "sync/internal_api/public/util/sync_string_conversions.h" |    69 #include "sync/internal_api/public/util/sync_string_conversions.h" | 
|    70 #include "sync/js/js_arg_list.h" |    70 #include "sync/js/js_arg_list.h" | 
|    71 #include "sync/js/js_event_details.h" |    71 #include "sync/js/js_event_details.h" | 
|    72 #include "sync/notifier/invalidator_registrar.h" |    72 #include "sync/notifier/invalidator_registrar.h" | 
|    73 #include "sync/notifier/invalidator_state.h" |    73 #include "sync/notifier/invalidator_state.h" | 
|    74 #include "sync/util/cryptographer.h" |    74 #include "sync/util/cryptographer.h" | 
|    75 #include "ui/base/l10n/l10n_util.h" |    75 #include "ui/base/l10n/l10n_util.h" | 
|    76  |    76  | 
 |    77 #if defined(OS_ANDROID) | 
 |    78 #include "sync/internal_api/public/read_transaction.h" | 
 |    79 #endif | 
 |    80  | 
|    77 using browser_sync::ChangeProcessor; |    81 using browser_sync::ChangeProcessor; | 
|    78 using browser_sync::DataTypeController; |    82 using browser_sync::DataTypeController; | 
|    79 using browser_sync::DataTypeManager; |    83 using browser_sync::DataTypeManager; | 
|    80 using browser_sync::SyncBackendHost; |    84 using browser_sync::SyncBackendHost; | 
|    81 using syncer::ModelType; |    85 using syncer::ModelType; | 
|    82 using syncer::ModelTypeSet; |    86 using syncer::ModelTypeSet; | 
|    83 using syncer::JsBackend; |    87 using syncer::JsBackend; | 
|    84 using syncer::JsController; |    88 using syncer::JsController; | 
|    85 using syncer::JsEventDetails; |    89 using syncer::JsEventDetails; | 
|    86 using syncer::JsEventHandler; |    90 using syncer::JsEventHandler; | 
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   180   // Sync is logged in if there is a non-empty authenticated username. |   184   // Sync is logged in if there is a non-empty authenticated username. | 
|   181   return !signin_->GetAuthenticatedUsername().empty(); |   185   return !signin_->GetAuthenticatedUsername().empty(); | 
|   182 } |   186 } | 
|   183  |   187  | 
|   184 bool ProfileSyncService::IsSyncTokenAvailable() { |   188 bool ProfileSyncService::IsSyncTokenAvailable() { | 
|   185   TokenService* token_service = TokenServiceFactory::GetForProfile(profile_); |   189   TokenService* token_service = TokenServiceFactory::GetForProfile(profile_); | 
|   186   if (!token_service) |   190   if (!token_service) | 
|   187     return false; |   191     return false; | 
|   188   return token_service->HasTokenForService(GaiaConstants::kSyncService); |   192   return token_service->HasTokenForService(GaiaConstants::kSyncService); | 
|   189 } |   193 } | 
 |   194 #if defined(OS_ANDROID) | 
 |   195 bool ProfileSyncService::ShouldEnablePasswordSyncForAndroid() const { | 
 |   196   const syncer::ModelTypeSet registered_types = GetRegisteredDataTypes(); | 
 |   197   const syncer::ModelTypeSet preferred_types = | 
 |   198       sync_prefs_.GetPreferredDataTypes(registered_types); | 
 |   199   if (!preferred_types.Has(syncer::PASSWORDS)) | 
 |   200     return false; | 
 |   201   // On Android we do not want to prompt user to enter a passphrase. If | 
 |   202   // passwords cannot be decrypted we just disable them. | 
 |   203   syncer::ReadTransaction trans(FROM_HERE, GetUserShare()); | 
 |   204   return IsCryptographerReady(&trans); | 
 |   205 } | 
 |   206 #endif | 
|   190  |   207  | 
|   191 void ProfileSyncService::Initialize() { |   208 void ProfileSyncService::Initialize() { | 
|   192   DCHECK(!invalidator_registrar_.get()); |   209   DCHECK(!invalidator_registrar_.get()); | 
|   193   invalidator_registrar_.reset(new syncer::InvalidatorRegistrar()); |   210   invalidator_registrar_.reset(new syncer::InvalidatorRegistrar()); | 
|   194  |   211  | 
|   195   InitSettings(); |   212   InitSettings(); | 
|   196  |   213  | 
|   197   // We clear this here (vs Shutdown) because we want to remember that an error |   214   // We clear this here (vs Shutdown) because we want to remember that an error | 
|   198   // happened on shutdown so we can display details (message, location) about it |   215   // happened on shutdown so we can display details (message, location) about it | 
|   199   // in about:sync. |   216   // in about:sync. | 
| (...skipping 791 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   991   // consumed our cached passphrase. Clear it now. |  1008   // consumed our cached passphrase. Clear it now. | 
|   992   if (!cached_passphrase_.empty()) |  1009   if (!cached_passphrase_.empty()) | 
|   993     cached_passphrase_.clear(); |  1010     cached_passphrase_.clear(); | 
|   994  |  1011  | 
|   995   // Reset passphrase_required_reason_ since we know we no longer require the |  1012   // Reset passphrase_required_reason_ since we know we no longer require the | 
|   996   // passphrase. We do this here rather than down in ResolvePassphraseRequired() |  1013   // passphrase. We do this here rather than down in ResolvePassphraseRequired() | 
|   997   // because that can be called by OnPassphraseRequired() if no encrypted data |  1014   // because that can be called by OnPassphraseRequired() if no encrypted data | 
|   998   // types are enabled, and we don't want to clobber the true passphrase error. |  1015   // types are enabled, and we don't want to clobber the true passphrase error. | 
|   999   passphrase_required_reason_ = syncer::REASON_PASSPHRASE_NOT_REQUIRED; |  1016   passphrase_required_reason_ = syncer::REASON_PASSPHRASE_NOT_REQUIRED; | 
|  1000  |  1017  | 
 |  1018 #if defined(OS_ANDROID) | 
 |  1019   // Re-enable passwords if we have disabled them. | 
 |  1020   if (failed_datatypes_handler_.GetFailedTypes().Has(syncer::PASSWORDS) && | 
 |  1021       ShouldEnablePasswordSyncForAndroid()) { | 
 |  1022     // Clear the data type errors. | 
 |  1023     failed_datatypes_handler_.OnUserChoseDatatypes(); | 
 |  1024   } | 
 |  1025 #endif | 
 |  1026  | 
|  1001   // Make sure the data types that depend on the passphrase are started at |  1027   // Make sure the data types that depend on the passphrase are started at | 
|  1002   // this time. |  1028   // this time. | 
|  1003   const syncer::ModelTypeSet types = GetPreferredDataTypes(); |  1029   const syncer::ModelTypeSet types = GetPreferredDataTypes(); | 
|  1004  |  1030  | 
|  1005   if (data_type_manager_.get()) { |  1031   if (data_type_manager_.get()) { | 
|  1006     // Unblock the data type manager if necessary. |  1032     // Unblock the data type manager if necessary. | 
|  1007     data_type_manager_->Configure(types, |  1033     data_type_manager_->Configure(types, | 
|  1008                                   syncer::CONFIGURE_REASON_RECONFIGURATION); |  1034                                   syncer::CONFIGURE_REASON_RECONFIGURATION); | 
|  1009   } |  1035   } | 
|  1010  |  1036  | 
| (...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1457  |  1483  | 
|  1458     // We create the migrator at the same time. |  1484     // We create the migrator at the same time. | 
|  1459     migrator_.reset( |  1485     migrator_.reset( | 
|  1460         new browser_sync::BackendMigrator( |  1486         new browser_sync::BackendMigrator( | 
|  1461             profile_->GetDebugName(), GetUserShare(), |  1487             profile_->GetDebugName(), GetUserShare(), | 
|  1462             this, data_type_manager_.get(), |  1488             this, data_type_manager_.get(), | 
|  1463             base::Bind(&ProfileSyncService::StartSyncingWithServer, |  1489             base::Bind(&ProfileSyncService::StartSyncingWithServer, | 
|  1464                        base::Unretained(this)))); |  1490                        base::Unretained(this)))); | 
|  1465   } |  1491   } | 
|  1466  |  1492  | 
 |  1493 #if defined(OS_ANDROID) | 
 |  1494   if (GetPreferredDataTypes().Has(syncer::PASSWORDS) && | 
 |  1495       !ShouldEnablePasswordSyncForAndroid()) { | 
 |  1496     DisableBrokenDatatype(syncer::PASSWORDS, FROM_HERE, "Not supported."); | 
 |  1497   } | 
 |  1498 #endif | 
 |  1499  | 
|  1467   const syncer::ModelTypeSet types = GetPreferredDataTypes(); |  1500   const syncer::ModelTypeSet types = GetPreferredDataTypes(); | 
|  1468   if (IsPassphraseRequiredForDecryption()) { |  1501   if (IsPassphraseRequiredForDecryption()) { | 
|  1469     // We need a passphrase still. We don't bother to attempt to configure |  1502     // We need a passphrase still. We don't bother to attempt to configure | 
|  1470     // until we receive an OnPassphraseAccepted (which triggers a configure). |  1503     // until we receive an OnPassphraseAccepted (which triggers a configure). | 
|  1471     DVLOG(1) << "ProfileSyncService::ConfigureDataTypeManager bailing out " |  1504     DVLOG(1) << "ProfileSyncService::ConfigureDataTypeManager bailing out " | 
|  1472              << "because a passphrase required"; |  1505              << "because a passphrase required"; | 
|  1473     NotifyObservers(); |  1506     NotifyObservers(); | 
|  1474     return; |  1507     return; | 
|  1475   } |  1508   } | 
|  1476   syncer::ConfigureReason reason = syncer::CONFIGURE_REASON_UNKNOWN; |  1509   syncer::ConfigureReason reason = syncer::CONFIGURE_REASON_UNKNOWN; | 
| (...skipping 449 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1926   // See http://stackoverflow.com/questions/6224121/is-new-this-myclass-undefine
      d-behaviour-after-directly-calling-the-destru. |  1959   // See http://stackoverflow.com/questions/6224121/is-new-this-myclass-undefine
      d-behaviour-after-directly-calling-the-destru. | 
|  1927   ProfileSyncService* old_this = this; |  1960   ProfileSyncService* old_this = this; | 
|  1928   this->~ProfileSyncService(); |  1961   this->~ProfileSyncService(); | 
|  1929   new(old_this) ProfileSyncService( |  1962   new(old_this) ProfileSyncService( | 
|  1930       new ProfileSyncComponentsFactoryImpl(profile, |  1963       new ProfileSyncComponentsFactoryImpl(profile, | 
|  1931                                            CommandLine::ForCurrentProcess()), |  1964                                            CommandLine::ForCurrentProcess()), | 
|  1932       profile, |  1965       profile, | 
|  1933       signin, |  1966       signin, | 
|  1934       behavior); |  1967       behavior); | 
|  1935 } |  1968 } | 
| OLD | NEW |