Move Get/Set sync code and reset sync to BraveProfileSyncService on desktop
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
#include "base/strings/string_number_conversions.h"
|
||||
#include "brave/components/brave_sync/brave_sync_prefs.h"
|
||||
#include "brave/components/brave_sync/crypto/crypto.h"
|
||||
#include "brave/components/sync/driver/brave_sync_profile_sync_service.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
#include "chrome/browser/sync/device_info_sync_service_factory.h"
|
||||
#include "chrome/browser/sync/profile_sync_service_factory.h"
|
||||
@@ -83,12 +84,11 @@ void BraveSyncHandler::HandleGetSyncCode(const base::ListValue* args) {
|
||||
const base::Value* callback_id;
|
||||
CHECK(args->Get(0, &callback_id));
|
||||
|
||||
brave_sync::Prefs brave_sync_prefs(profile_->GetPrefs());
|
||||
std::string sync_code = brave_sync_prefs.GetSeed();
|
||||
if (sync_code.empty()) {
|
||||
std::vector<uint8_t> seed = brave_sync::crypto::GetSeed();
|
||||
sync_code = brave_sync::crypto::PassphraseFromBytes32(seed);
|
||||
}
|
||||
auto* sync_service =
|
||||
static_cast<syncer::BraveProfileSyncService*>(GetSyncService());
|
||||
std::string sync_code;
|
||||
if (sync_service)
|
||||
sync_code = sync_service->GetOrCreateSyncCode();
|
||||
|
||||
ResolveJavascriptCallback(*callback_id, base::Value(sync_code));
|
||||
}
|
||||
@@ -154,17 +154,13 @@ void BraveSyncHandler::HandleSetSyncCode(const base::ListValue* args) {
|
||||
return;
|
||||
}
|
||||
|
||||
std::vector<uint8_t> seed;
|
||||
if (!brave_sync::crypto::PassphraseToBytes32(sync_code->GetString(), &seed)) {
|
||||
LOG(ERROR) << "invalid sync code";
|
||||
auto* sync_service =
|
||||
static_cast<syncer::BraveProfileSyncService*>(GetSyncService());
|
||||
if (!sync_service || !sync_service->SetSyncCode(sync_code->GetString())) {
|
||||
RejectJavascriptCallback(*callback_id, base::Value(false));
|
||||
return;
|
||||
}
|
||||
brave_sync::Prefs brave_sync_prefs(profile_->GetPrefs());
|
||||
if (!brave_sync_prefs.SetSeed(sync_code->GetString())) {
|
||||
ResolveJavascriptCallback(*callback_id, base::Value(false));
|
||||
return;
|
||||
}
|
||||
|
||||
ResolveJavascriptCallback(*callback_id, base::Value(true));
|
||||
}
|
||||
|
||||
@@ -173,25 +169,21 @@ void BraveSyncHandler::HandleReset(const base::ListValue* args) {
|
||||
CHECK_EQ(1U, args->GetSize());
|
||||
const base::Value* callback_id;
|
||||
CHECK(args->Get(0, &callback_id));
|
||||
base::Value callback_id_arg(callback_id->Clone());
|
||||
|
||||
auto* sync_service = GetSyncService();
|
||||
// Do not send self deleted commit if engine is not up and running
|
||||
if (!sync_service || sync_service->GetTransportState() !=
|
||||
syncer::SyncService::TransportState::ACTIVE) {
|
||||
OnSelfDeleted(std::move(callback_id_arg));
|
||||
auto* sync_service =
|
||||
static_cast<syncer::BraveProfileSyncService*>(GetSyncService());
|
||||
if (!sync_service) {
|
||||
ResolveJavascriptCallback(*callback_id, base::Value(true));
|
||||
return;
|
||||
}
|
||||
|
||||
syncer::DeviceInfoTracker* tracker = GetDeviceInfoTracker();
|
||||
DCHECK(tracker);
|
||||
const syncer::DeviceInfo* local_device_info =
|
||||
GetLocalDeviceInfoProvider()->GetLocalDeviceInfo();
|
||||
|
||||
tracker->DeleteDeviceInfo(local_device_info->guid(),
|
||||
base::BindOnce(&BraveSyncHandler::OnSelfDeleted,
|
||||
weak_ptr_factory_.GetWeakPtr(),
|
||||
std::move(callback_id_arg)));
|
||||
base::Value callback_id_arg(callback_id->Clone());
|
||||
auto* device_info_sync_service =
|
||||
DeviceInfoSyncServiceFactory::GetForProfile(profile_);
|
||||
sync_service->ResetSync(device_info_sync_service,
|
||||
base::BindOnce(&BraveSyncHandler::OnResetDone,
|
||||
weak_ptr_factory_.GetWeakPtr(),
|
||||
std::move(callback_id_arg)));
|
||||
}
|
||||
|
||||
syncer::SyncService* BraveSyncHandler::GetSyncService() const {
|
||||
@@ -213,17 +205,7 @@ syncer::LocalDeviceInfoProvider* BraveSyncHandler::GetLocalDeviceInfoProvider()
|
||||
return device_info_sync_service->GetLocalDeviceInfoProvider();
|
||||
}
|
||||
|
||||
void BraveSyncHandler::OnSelfDeleted(base::Value callback_id) {
|
||||
auto* sync_service = GetSyncService();
|
||||
if (sync_service) {
|
||||
// This function will follow normal reset process and set SyncRequested to
|
||||
// false
|
||||
sync_service->StopAndClear();
|
||||
}
|
||||
brave_sync::Prefs brave_sync_prefs(profile_->GetPrefs());
|
||||
brave_sync_prefs.Clear();
|
||||
// Sync prefs will be clear in ProfileSyncService::StopImpl
|
||||
|
||||
void BraveSyncHandler::OnResetDone(base::Value callback_id) {
|
||||
ResolveJavascriptCallback(callback_id, base::Value(true));
|
||||
}
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ class BraveSyncHandler : public settings::SettingsPageUIHandler,
|
||||
void HandleGetQRCode(const base::ListValue* args);
|
||||
void HandleReset(const base::ListValue* args);
|
||||
|
||||
void OnSelfDeleted(base::Value callback_id);
|
||||
void OnResetDone(base::Value callback_id);
|
||||
|
||||
base::Value GetSyncDeviceList();
|
||||
syncer::SyncService* GetSyncService() const;
|
||||
|
||||
@@ -6,26 +6,31 @@
|
||||
#include "brave/components/sync/driver/brave_sync_profile_sync_service.h"
|
||||
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include "base/logging.h"
|
||||
#include "brave/components/brave_sync/brave_sync_prefs.h"
|
||||
#include "brave/components/brave_sync/crypto/crypto.h"
|
||||
#include "brave/components/sync/driver/brave_sync_auth_manager.h"
|
||||
#include "components/prefs/pref_service.h"
|
||||
#include "components/sync_device_info/device_info_sync_service.h"
|
||||
#include "components/sync_device_info/device_info_tracker.h"
|
||||
#include "components/sync_device_info/local_device_info_provider.h"
|
||||
|
||||
namespace syncer {
|
||||
|
||||
BraveProfileSyncService::BraveProfileSyncService(InitParams init_params)
|
||||
: ProfileSyncService(std::move(init_params)) {
|
||||
: ProfileSyncService(std::move(init_params)),
|
||||
brave_sync_prefs_(sync_client_->GetPrefService()),
|
||||
weak_ptr_factory_(this) {
|
||||
brave_sync_prefs_change_registrar_.Init(sync_client_->GetPrefService());
|
||||
brave_sync_prefs_change_registrar_.Add(
|
||||
brave_sync::Prefs::GetSeedPath(),
|
||||
base::Bind(&BraveProfileSyncService::OnBraveSyncPrefsChanged,
|
||||
base::Unretained(this)));
|
||||
brave_sync::Prefs brave_sync_prefs(sync_client_->GetPrefService());
|
||||
GetBraveSyncAuthManager()->DeriveSigningKeys(brave_sync_prefs.GetSeed());
|
||||
if (!brave_sync_prefs.IsSyncV1Migrated()) {
|
||||
GetBraveSyncAuthManager()->DeriveSigningKeys(brave_sync_prefs_.GetSeed());
|
||||
if (!brave_sync_prefs_.IsSyncV1Migrated()) {
|
||||
StopImpl(CLEAR_DATA);
|
||||
brave_sync_prefs.SetSyncV1Migrated(true);
|
||||
brave_sync_prefs_.SetSyncV1Migrated(true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,6 +43,45 @@ bool BraveProfileSyncService::IsSetupInProgress() const {
|
||||
!user_settings_->IsFirstSetupComplete();
|
||||
}
|
||||
|
||||
std::string BraveProfileSyncService::GetOrCreateSyncCode() {
|
||||
std::string sync_code = brave_sync_prefs_.GetSeed();
|
||||
if (sync_code.empty()) {
|
||||
std::vector<uint8_t> seed = brave_sync::crypto::GetSeed();
|
||||
sync_code = brave_sync::crypto::PassphraseFromBytes32(seed);
|
||||
}
|
||||
return sync_code;
|
||||
}
|
||||
|
||||
bool BraveProfileSyncService::SetSyncCode(const std::string& sync_code) {
|
||||
std::vector<uint8_t> seed;
|
||||
if (!brave_sync::crypto::PassphraseToBytes32(sync_code, &seed))
|
||||
return false;
|
||||
if (!brave_sync_prefs_.SetSeed(sync_code))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void BraveProfileSyncService::ResetSync(
|
||||
DeviceInfoSyncService* device_info_service, base::OnceClosure cb) {
|
||||
DCHECK(device_info_service);
|
||||
// Do not send self deleted commit if engine is not up and running
|
||||
if (GetTransportState() != SyncService::TransportState::ACTIVE) {
|
||||
std::move(cb).Run();
|
||||
return;
|
||||
}
|
||||
syncer::DeviceInfoTracker* tracker =
|
||||
device_info_service->GetDeviceInfoTracker();
|
||||
DCHECK(tracker);
|
||||
const syncer::DeviceInfo* local_device_info =
|
||||
device_info_service->GetLocalDeviceInfoProvider()->GetLocalDeviceInfo();
|
||||
|
||||
tracker->DeleteDeviceInfo(local_device_info->guid(),
|
||||
base::BindOnce(
|
||||
&BraveProfileSyncService::OnSelfDeleted,
|
||||
weak_ptr_factory_.GetWeakPtr(),
|
||||
std::move(cb)));
|
||||
}
|
||||
|
||||
BraveSyncAuthManager* BraveProfileSyncService::GetBraveSyncAuthManager() {
|
||||
return static_cast<BraveSyncAuthManager*>(auth_manager_.get());
|
||||
}
|
||||
@@ -45,8 +89,7 @@ BraveSyncAuthManager* BraveProfileSyncService::GetBraveSyncAuthManager() {
|
||||
void BraveProfileSyncService::OnBraveSyncPrefsChanged(const std::string& path) {
|
||||
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
||||
if (path == brave_sync::Prefs::GetSeedPath()) {
|
||||
brave_sync::Prefs brave_sync_prefs(sync_client_->GetPrefService());
|
||||
const std::string seed = brave_sync_prefs.GetSeed();
|
||||
const std::string seed = brave_sync_prefs_.GetSeed();
|
||||
if (!seed.empty()) {
|
||||
GetBraveSyncAuthManager()->DeriveSigningKeys(seed);
|
||||
// Default enabled types: Bookmarks
|
||||
@@ -59,4 +102,14 @@ void BraveProfileSyncService::OnBraveSyncPrefsChanged(const std::string& path) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void BraveProfileSyncService::OnSelfDeleted(base::OnceClosure cb) {
|
||||
// This function will follow normal reset process and set SyncRequested to
|
||||
// false
|
||||
StopAndClear();
|
||||
brave_sync_prefs_.Clear();
|
||||
// Sync prefs will be clear in ProfileSyncService::StopImpl
|
||||
std::move(cb).Run();
|
||||
}
|
||||
|
||||
} // namespace syncer
|
||||
|
||||
@@ -8,12 +8,16 @@
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "base/callback.h"
|
||||
#include "base/memory/weak_ptr.h"
|
||||
#include "brave/components/brave_sync/brave_sync_prefs.h"
|
||||
#include "components/prefs/pref_change_registrar.h"
|
||||
#include "components/sync/driver/profile_sync_service.h"
|
||||
|
||||
namespace syncer {
|
||||
|
||||
class BraveSyncAuthManager;
|
||||
class DeviceInfoSyncService;
|
||||
|
||||
class BraveProfileSyncService : public ProfileSyncService {
|
||||
public:
|
||||
@@ -23,13 +27,24 @@ class BraveProfileSyncService : public ProfileSyncService {
|
||||
// SyncService implementation
|
||||
bool IsSetupInProgress() const override;
|
||||
|
||||
std::string GetOrCreateSyncCode();
|
||||
bool SetSyncCode(const std::string& sync_code);
|
||||
void ResetSync(DeviceInfoSyncService* device_info_service,
|
||||
base::OnceClosure cb);
|
||||
|
||||
private:
|
||||
BraveSyncAuthManager* GetBraveSyncAuthManager();
|
||||
|
||||
void OnBraveSyncPrefsChanged(const std::string& path);
|
||||
|
||||
void OnSelfDeleted(base::OnceClosure cb);
|
||||
|
||||
brave_sync::Prefs brave_sync_prefs_;
|
||||
|
||||
PrefChangeRegistrar brave_sync_prefs_change_registrar_;
|
||||
|
||||
base::WeakPtrFactory<BraveProfileSyncService> weak_ptr_factory_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(BraveProfileSyncService);
|
||||
};
|
||||
} // namespace syncer
|
||||
|
||||
Reference in New Issue
Block a user