Index: components/wifi_sync/wifi_credential_syncable_service.cc |
diff --git a/components/wifi_sync/wifi_credential_syncable_service.cc b/components/wifi_sync/wifi_credential_syncable_service.cc |
deleted file mode 100644 |
index 75534b248002b24f30b0663fc08ec02241e788eb..0000000000000000000000000000000000000000 |
--- a/components/wifi_sync/wifi_credential_syncable_service.cc |
+++ /dev/null |
@@ -1,235 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "components/wifi_sync/wifi_credential_syncable_service.h" |
- |
-#include <stdint.h> |
- |
-#include <utility> |
-#include <vector> |
- |
-#include "base/logging.h" |
-#include "components/sync/model/sync_change.h" |
-#include "components/sync/model/sync_data.h" |
-#include "components/sync/model/sync_error.h" |
-#include "components/sync/model/sync_error_factory.h" |
-#include "components/sync/model/sync_merge_result.h" |
-#include "components/sync/protocol/sync.pb.h" |
-#include "components/wifi_sync/wifi_credential.h" |
-#include "components/wifi_sync/wifi_security_class.h" |
- |
-namespace wifi_sync { |
- |
-namespace { |
- |
-struct RawCredentialData { |
- std::vector<uint8_t> ssid; |
- WifiSecurityClass security_class; |
- std::string passphrase; |
-}; |
- |
-void BuildSpecifics(const WifiCredential& credential, |
- sync_pb::EntitySpecifics* out_buffer) { |
- DCHECK(out_buffer); |
- sync_pb::WifiCredentialSpecifics* credential_specifics = |
- out_buffer->mutable_wifi_credential(); |
- DCHECK(credential_specifics); |
- credential_specifics->set_ssid(credential.ssid().data(), |
- credential.ssid().size()); |
- credential_specifics->set_security_class( |
- WifiSecurityClassToSyncSecurityClass(credential.security_class())); |
- if (WifiSecurityClassSupportsPassphrases(credential.security_class())) { |
- credential_specifics->set_passphrase(credential.passphrase().data(), |
- credential.passphrase().size()); |
- } |
-} |
- |
-bool ParseSpecifics(const sync_pb::EntitySpecifics& specifics, |
- RawCredentialData* raw_credential) { |
- DCHECK(raw_credential); |
- if (!specifics.has_wifi_credential()) { |
- LOG(ERROR) << "Specifics with missing wifi_credential; skipping"; |
- return false; |
- } |
- |
- const sync_pb::WifiCredentialSpecifics& credential_specifics = |
- specifics.wifi_credential(); |
- if (!credential_specifics.has_ssid()) { |
- LOG(ERROR) << "Specifics with missing SSID; skipping"; |
- return false; |
- } |
- if (!credential_specifics.has_security_class()) { |
- LOG(ERROR) << "Specifics with missing security class; skipping"; |
- return false; |
- } |
- |
- const WifiSecurityClass security_class = |
- WifiSecurityClassFromSyncSecurityClass( |
- credential_specifics.security_class()); |
- if (WifiSecurityClassSupportsPassphrases(security_class) && |
- !credential_specifics.has_passphrase()) { |
- LOG(ERROR) << "Specifics for security class " |
- << credential_specifics.security_class() |
- << " is missing passphrase; skipping"; |
- return false; |
- } |
- |
- raw_credential->ssid.assign(credential_specifics.ssid().begin(), |
- credential_specifics.ssid().end()); |
- raw_credential->security_class = security_class; |
- raw_credential->passphrase = credential_specifics.passphrase(); |
- return true; |
-} |
- |
-// TODO(quiche): Separate SyncData validation from parsing of |
-// WifiCredentialSpecifics. |
-bool ParseSyncData(const syncer::SyncData& sync_data, |
- RawCredentialData* raw_credential) { |
- DCHECK(raw_credential); |
- if (!sync_data.IsValid()) { |
- LOG(WARNING) << "Invalid SyncData; skipping item"; |
- return false; |
- } |
- |
- if (sync_data.GetDataType() != syncer::WIFI_CREDENTIALS) { |
- LOG(WARNING) << "Unexpected SyncData of type " |
- << syncer::ModelTypeToString(sync_data.GetDataType()) |
- << "; skipping item"; |
- return false; |
- } |
- |
- return ParseSpecifics(sync_data.GetSpecifics(), raw_credential); |
-} |
- |
-} // namespace |
- |
-const syncer::ModelType WifiCredentialSyncableService::kModelType = |
- syncer::WIFI_CREDENTIALS; |
- |
-WifiCredentialSyncableService::WifiCredentialSyncableService( |
- std::unique_ptr<WifiConfigDelegate> network_config_delegate) |
- : network_config_delegate_(std::move(network_config_delegate)) { |
- DCHECK(network_config_delegate_); |
-} |
- |
-WifiCredentialSyncableService::~WifiCredentialSyncableService() { |
-} |
- |
-syncer::SyncMergeResult WifiCredentialSyncableService::MergeDataAndStartSyncing( |
- syncer::ModelType type, |
- const syncer::SyncDataList& initial_sync_data, |
- std::unique_ptr<syncer::SyncChangeProcessor> sync_processor, |
- std::unique_ptr<syncer::SyncErrorFactory> /* error_handler */) { |
- DCHECK(!sync_processor_.get()); |
- DCHECK(sync_processor.get()); |
- DCHECK_EQ(kModelType, type); |
- |
- sync_processor_ = std::move(sync_processor); |
- |
- // TODO(quiche): Update local WiFi configuration from |initial_sync_data|. |
- // TODO(quiche): Notify upper layers that sync is ready. |
- NOTIMPLEMENTED(); |
- |
- return syncer::SyncMergeResult(type); |
-} |
- |
-void WifiCredentialSyncableService::StopSyncing(syncer::ModelType type) { |
- DCHECK_EQ(kModelType, type); |
- sync_processor_.reset(); |
-} |
- |
-syncer::SyncDataList WifiCredentialSyncableService::GetAllSyncData( |
- syncer::ModelType type) const { |
- DCHECK_EQ(kModelType, type); |
- NOTIMPLEMENTED(); |
- return syncer::SyncDataList(); |
-} |
- |
-syncer::SyncError WifiCredentialSyncableService::ProcessSyncChanges( |
- const tracked_objects::Location& /* caller_location */, |
- const syncer::SyncChangeList& change_list) { |
- if (!sync_processor_.get()) { |
- return syncer::SyncError( |
- FROM_HERE, syncer::SyncError::UNREADY_ERROR, |
- "ProcessSyncChanges called before MergeDataAndStartSyncing", |
- kModelType); |
- } |
- |
- for (const syncer::SyncChange& sync_change : change_list) { |
- DCHECK(sync_change.IsValid()); |
- RawCredentialData raw_credential; |
- if (!ParseSyncData(sync_change.sync_data(), &raw_credential)) { |
- LOG(WARNING) << "Failed to parse item; skipping " |
- << syncer::SyncChange::ChangeTypeToString( |
- sync_change.change_type()); |
- continue; |
- } |
- |
- std::unique_ptr<WifiCredential> credential; |
- switch (sync_change.change_type()) { |
- case syncer::SyncChange::ACTION_ADD: |
- credential = WifiCredential::Create(raw_credential.ssid, |
- raw_credential.security_class, |
- raw_credential.passphrase); |
- if (!credential) |
- LOG(WARNING) << "Failed to create credential; skipping"; |
- else |
- network_config_delegate_->AddToLocalNetworks(*credential); |
- break; |
- case syncer::SyncChange::ACTION_UPDATE: |
- // TODO(quiche): Implement update, and add appropriate tests. |
- NOTIMPLEMENTED(); |
- break; |
- case syncer::SyncChange::ACTION_DELETE: |
- // TODO(quiche): Implement delete, and add appropriate tests. |
- NOTIMPLEMENTED(); |
- break; |
- default: |
- return syncer::SyncError( |
- FROM_HERE, syncer::SyncError::DATATYPE_ERROR, |
- "ProcessSyncChanges given invalid SyncChangeType", kModelType); |
- } |
- } |
- |
- return syncer::SyncError(); |
-} |
- |
-bool WifiCredentialSyncableService::AddToSyncedNetworks( |
- const std::string& item_id, |
- const WifiCredential& credential) { |
- if (!sync_processor_.get()) { |
- // Callers must queue updates until MergeDataAndStartSyncing has |
- // been called on this SyncableService. |
- LOG(WARNING) << "WifiCredentials syncable service is not started."; |
- return false; |
- } |
- |
- const SsidAndSecurityClass network_id( |
- credential.ssid(), credential.security_class()); |
- if (synced_networks_and_passphrases_.find(network_id) != |
- synced_networks_and_passphrases_.end()) { |
- // TODO(quiche): If passphrase has changed, submit this to sync as |
- // an ACTION_UPDATE. crbug.com/431436 |
- return false; |
- } |
- |
- syncer::SyncChangeList change_list; |
- syncer::SyncError sync_error; |
- sync_pb::EntitySpecifics wifi_credential_specifics; |
- BuildSpecifics(credential, &wifi_credential_specifics); |
- change_list.push_back( |
- syncer::SyncChange(FROM_HERE, syncer::SyncChange::ACTION_ADD, |
- syncer::SyncData::CreateLocalData( |
- item_id, item_id, wifi_credential_specifics))); |
- sync_error = sync_processor_->ProcessSyncChanges(FROM_HERE, change_list); |
- if (sync_error.IsSet()) { |
- LOG(ERROR) << sync_error.ToString(); |
- return false; |
- } |
- |
- synced_networks_and_passphrases_[network_id] = credential.passphrase(); |
- return true; |
-} |
- |
-} // namespace wifi_sync |