summaryrefslogtreecommitdiff
path: root/chromium/components/browser_sync
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2021-05-20 09:47:09 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2021-06-07 11:15:42 +0000
commit189d4fd8fad9e3c776873be51938cd31a42b6177 (patch)
tree6497caeff5e383937996768766ab3bb2081a40b2 /chromium/components/browser_sync
parent8bc75099d364490b22f43a7ce366b366c08f4164 (diff)
downloadqtwebengine-chromium-189d4fd8fad9e3c776873be51938cd31a42b6177.tar.gz
BASELINE: Update Chromium to 90.0.4430.221
Change-Id: Iff4d9d18d2fcf1a576f3b1f453010f744a232920 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/components/browser_sync')
-rw-r--r--chromium/components/browser_sync/BUILD.gn6
-rw-r--r--chromium/components/browser_sync/DEPS2
-rw-r--r--chromium/components/browser_sync/DIR_METADATA5
-rw-r--r--chromium/components/browser_sync/OWNERS2
-rw-r--r--chromium/components/browser_sync/active_devices_provider_impl.cc82
-rw-r--r--chromium/components/browser_sync/active_devices_provider_impl.h9
-rw-r--r--chromium/components/browser_sync/active_devices_provider_impl_unittest.cc67
-rw-r--r--chromium/components/browser_sync/browser_sync_switches.cc23
-rw-r--r--chromium/components/browser_sync/browser_sync_switches.h5
-rw-r--r--chromium/components/browser_sync/profile_sync_components_factory_impl.cc51
-rw-r--r--chromium/components/browser_sync/profile_sync_components_factory_impl.h5
-rw-r--r--chromium/components/browser_sync/signin_confirmation_helper.cc8
12 files changed, 201 insertions, 64 deletions
diff --git a/chromium/components/browser_sync/BUILD.gn b/chromium/components/browser_sync/BUILD.gn
index 8fac7d4d32a..59ff78d6b75 100644
--- a/chromium/components/browser_sync/BUILD.gn
+++ b/chromium/components/browser_sync/BUILD.gn
@@ -2,6 +2,7 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+import("//build/config/chromeos/ui_mode.gni")
import("//build/config/features.gni")
static_library("browser_sync") {
@@ -21,6 +22,7 @@ static_library("browser_sync") {
deps = [
"//base",
+ "//build:chromeos_buildflags",
"//components/autofill/core/browser",
"//components/autofill/core/common",
"//components/history/core/browser",
@@ -37,8 +39,8 @@ static_library("browser_sync") {
"//components/version_info:generate_version_info",
]
- if (is_chromeos) {
- deps += [ "//chromeos/constants" ]
+ if (is_chromeos_ash) {
+ deps += [ "//ash/constants" ]
}
}
diff --git a/chromium/components/browser_sync/DEPS b/chromium/components/browser_sync/DEPS
index 0ac7b8aeeba..f0aa56d8a97 100644
--- a/chromium/components/browser_sync/DEPS
+++ b/chromium/components/browser_sync/DEPS
@@ -1,5 +1,5 @@
include_rules = [
- "+chromeos/constants",
+ "+ash/constants",
"+components/autofill/core",
"+components/bookmarks/browser",
"+components/bookmarks/managed",
diff --git a/chromium/components/browser_sync/DIR_METADATA b/chromium/components/browser_sync/DIR_METADATA
new file mode 100644
index 00000000000..36470dc1366
--- /dev/null
+++ b/chromium/components/browser_sync/DIR_METADATA
@@ -0,0 +1,5 @@
+monorail {
+ component: "Services>Sync"
+}
+
+team_email: "chromium-reviews@chromium.org"
diff --git a/chromium/components/browser_sync/OWNERS b/chromium/components/browser_sync/OWNERS
index 2fe6dccaeb6..261ab189a66 100644
--- a/chromium/components/browser_sync/OWNERS
+++ b/chromium/components/browser_sync/OWNERS
@@ -1,3 +1 @@
file://components/sync/OWNERS
-# COMPONENT: Services>Sync
-# TEAM: chromium-reviews@chromium.org
diff --git a/chromium/components/browser_sync/active_devices_provider_impl.cc b/chromium/components/browser_sync/active_devices_provider_impl.cc
index ec07f794f1f..94aedbac3f3 100644
--- a/chromium/components/browser_sync/active_devices_provider_impl.cc
+++ b/chromium/components/browser_sync/active_devices_provider_impl.cc
@@ -8,22 +8,12 @@
#include "base/feature_list.h"
#include "base/metrics/field_trial_params.h"
+#include "base/stl_util.h"
#include "components/browser_sync/active_devices_provider_impl.h"
+#include "components/browser_sync/browser_sync_switches.h"
namespace browser_sync {
-// Enables filtering out inactive devices which haven't sent DeviceInfo update
-// recently (depending on the device's pulse_interval and an additional margin).
-const base::Feature kSyncFilterOutInactiveDevicesForSingleClient{
- "SyncFilterOutInactiveDevicesForSingleClient",
- base::FEATURE_ENABLED_BY_DEFAULT};
-
-// An additional threshold to consider devices as active. It extends device's
-// pulse interval to mitigate possible latency after DeviceInfo commit.
-const base::FeatureParam<base::TimeDelta> kSyncActiveDeviceMargin{
- &kSyncFilterOutInactiveDevicesForSingleClient, "SyncActiveDeviceMargin",
- base::TimeDelta::FromMinutes(30)};
-
ActiveDevicesProviderImpl::ActiveDevicesProviderImpl(
syncer::DeviceInfoTracker* device_info_tracker,
base::Clock* clock)
@@ -40,25 +30,43 @@ ActiveDevicesProviderImpl::~ActiveDevicesProviderImpl() {
size_t ActiveDevicesProviderImpl::CountActiveDevicesIfAvailable() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
- std::vector<std::unique_ptr<syncer::DeviceInfo>> all_devices =
- device_info_tracker_->GetAllDeviceInfo();
+
+ return GetActiveDevices().size();
+}
+
+std::vector<std::string>
+ActiveDevicesProviderImpl::CollectFCMRegistrationTokensForInvalidations(
+ const std::string& local_cache_guid) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
+ std::vector<std::string> fcm_registration_tokens;
if (!base::FeatureList::IsEnabled(
- kSyncFilterOutInactiveDevicesForSingleClient)) {
- return all_devices.size();
+ switches::kSyncUseFCMRegistrationTokensList)) {
+ return fcm_registration_tokens;
}
- size_t active_devices = 0;
- for (const auto& device : all_devices) {
- const base::Time expected_expiration_time =
- device->last_updated_timestamp() + device->pulse_interval() +
- kSyncActiveDeviceMargin.Get();
- // If the device's expiration time hasn't been reached, then it is
- // considered active device.
- if (expected_expiration_time > clock_->Now()) {
- active_devices++;
+ for (const std::unique_ptr<syncer::DeviceInfo>& device : GetActiveDevices()) {
+ if (!local_cache_guid.empty() && device->guid() == local_cache_guid) {
+ continue;
}
+ if (device->fcm_registration_token().empty()) {
+ continue;
+ }
+
+ fcm_registration_tokens.push_back(device->fcm_registration_token());
}
- return active_devices;
+
+ // Do not send tokens if the list of active devices is huge. This is similar
+ // to the case when the client doesn't know about other devices, so return an
+ // empty list. Otherwise the client would return only a part of all active
+ // clients and other clients might miss an invalidation.
+ if (fcm_registration_tokens.size() >
+ static_cast<size_t>(
+ switches::kSyncFCMRegistrationTokensListMaxSize.Get())) {
+ return std::vector<std::string>();
+ }
+
+ return fcm_registration_tokens;
}
void ActiveDevicesProviderImpl::SetActiveDevicesChangedCallback(
@@ -77,4 +85,26 @@ void ActiveDevicesProviderImpl::OnDeviceInfoChange() {
}
}
+std::vector<std::unique_ptr<syncer::DeviceInfo>>
+ActiveDevicesProviderImpl::GetActiveDevices() const {
+ std::vector<std::unique_ptr<syncer::DeviceInfo>> all_devices =
+ device_info_tracker_->GetAllDeviceInfo();
+ if (!base::FeatureList::IsEnabled(
+ switches::kSyncFilterOutInactiveDevicesForSingleClient)) {
+ return all_devices;
+ }
+
+ base::EraseIf(
+ all_devices, [this](const std::unique_ptr<syncer::DeviceInfo>& device) {
+ const base::Time expected_expiration_time =
+ device->last_updated_timestamp() + device->pulse_interval() +
+ switches::kSyncActiveDeviceMargin.Get();
+ // If the device's expiration time hasn't been reached, then
+ // it is considered active device.
+ return expected_expiration_time <= clock_->Now();
+ });
+
+ return all_devices;
+}
+
} // namespace browser_sync
diff --git a/chromium/components/browser_sync/active_devices_provider_impl.h b/chromium/components/browser_sync/active_devices_provider_impl.h
index d0bbed0f989..5bca0e5da6c 100644
--- a/chromium/components/browser_sync/active_devices_provider_impl.h
+++ b/chromium/components/browser_sync/active_devices_provider_impl.h
@@ -5,6 +5,10 @@
#ifndef COMPONENTS_BROWSER_SYNC_ACTIVE_DEVICES_PROVIDER_IMPL_H_
#define COMPONENTS_BROWSER_SYNC_ACTIVE_DEVICES_PROVIDER_IMPL_H_
+#include <memory>
+#include <string>
+#include <vector>
+
#include "base/sequence_checker.h"
#include "base/time/default_clock.h"
#include "components/sync/driver/active_devices_provider.h"
@@ -26,6 +30,9 @@ class ActiveDevicesProviderImpl : public syncer::ActiveDevicesProvider,
// syncer::ActiveDevicesProvider implementation.
size_t CountActiveDevicesIfAvailable() override;
+ std::vector<std::string> CollectFCMRegistrationTokensForInvalidations(
+ const std::string& local_cache_guid) override;
+
void SetActiveDevicesChangedCallback(
ActiveDevicesChangedCallback callback) override;
@@ -33,6 +40,8 @@ class ActiveDevicesProviderImpl : public syncer::ActiveDevicesProvider,
void OnDeviceInfoChange() override;
private:
+ std::vector<std::unique_ptr<syncer::DeviceInfo>> GetActiveDevices() const;
+
syncer::DeviceInfoTracker* const device_info_tracker_;
const base::Clock* const clock_;
ActiveDevicesChangedCallback callback_;
diff --git a/chromium/components/browser_sync/active_devices_provider_impl_unittest.cc b/chromium/components/browser_sync/active_devices_provider_impl_unittest.cc
index f9dbaa1ef8a..5ab9233cd22 100644
--- a/chromium/components/browser_sync/active_devices_provider_impl_unittest.cc
+++ b/chromium/components/browser_sync/active_devices_provider_impl_unittest.cc
@@ -9,15 +9,19 @@
#include <vector>
#include "base/guid.h"
+#include "base/strings/string_number_conversions.h"
#include "base/test/mock_callback.h"
#include "base/test/simple_test_clock.h"
#include "base/time/time.h"
+#include "components/browser_sync/browser_sync_switches.h"
#include "components/sync_device_info/device_info_util.h"
#include "components/sync_device_info/fake_device_info_tracker.h"
#include "testing/gtest/include/gtest/gtest.h"
using syncer::DeviceInfo;
using syncer::FakeDeviceInfoTracker;
+using testing::IsEmpty;
+using testing::UnorderedElementsAre;
namespace browser_sync {
namespace {
@@ -26,15 +30,15 @@ constexpr int kPulseIntervalMinutes = 60;
std::unique_ptr<DeviceInfo> CreateFakeDeviceInfo(
const std::string& name,
+ const std::string& fcm_registration_token,
base::Time last_updated_timestamp) {
return std::make_unique<syncer::DeviceInfo>(
- base::GenerateGUID(), name, "chrome_version", "user_agent",
- sync_pb::SyncEnums::TYPE_UNSET, "device_id", "manufacturer_name",
- "model_name", last_updated_timestamp,
+ base::GUID::GenerateRandomV4().AsLowercaseString(), name,
+ "chrome_version", "user_agent", sync_pb::SyncEnums::TYPE_UNSET,
+ "device_id", "manufacturer_name", "model_name", last_updated_timestamp,
base::TimeDelta::FromMinutes(kPulseIntervalMinutes),
/*send_tab_to_self_receiving_enabled=*/false,
- /*sharing_info=*/base::nullopt,
- /*fcm_registration_token=*/std::string(),
+ /*sharing_info=*/base::nullopt, fcm_registration_token,
/*interested_data_types=*/syncer::ModelTypeSet());
}
@@ -45,8 +49,11 @@ class ActiveDevicesProviderImplTest : public testing::Test {
~ActiveDevicesProviderImplTest() override = default;
- void AddDevice(const std::string& name, base::Time last_updated_timestamp) {
- device_list_.push_back(CreateFakeDeviceInfo(name, last_updated_timestamp));
+ void AddDevice(const std::string& name,
+ const std::string& fcm_registration_token,
+ base::Time last_updated_timestamp) {
+ device_list_.push_back(CreateFakeDeviceInfo(name, fcm_registration_token,
+ last_updated_timestamp));
fake_device_info_tracker_.Add(device_list_.back().get());
}
@@ -58,16 +65,19 @@ class ActiveDevicesProviderImplTest : public testing::Test {
};
TEST_F(ActiveDevicesProviderImplTest, ShouldFilterInactiveDevices) {
- AddDevice("device_recent", clock_.Now() - base::TimeDelta::FromMinutes(1));
+ AddDevice("device_recent", /*fcm_registration_token=*/"",
+ clock_.Now() - base::TimeDelta::FromMinutes(1));
// Should be considered as active device due to margin even though the device
// is outside the pulse interval.
AddDevice(
"device_pulse_interval",
+ /*fcm_registration_token=*/"",
clock_.Now() - base::TimeDelta::FromMinutes(kPulseIntervalMinutes + 1));
// Very old device.
- AddDevice("device_inactive", clock_.Now() - base::TimeDelta::FromDays(100));
+ AddDevice("device_inactive", /*fcm_registration_token=*/"",
+ clock_.Now() - base::TimeDelta::FromDays(100));
EXPECT_EQ(2u, active_devices_provider_.CountActiveDevicesIfAvailable());
}
@@ -87,5 +97,44 @@ TEST_F(ActiveDevicesProviderImplTest, ShouldInvokeCallback) {
base::RepeatingClosure());
}
+TEST_F(ActiveDevicesProviderImplTest, ShouldReturnActiveFCMRegistrationTokens) {
+ AddDevice("device_1", "fcm_token_1",
+ clock_.Now() - base::TimeDelta::FromMinutes(1));
+ AddDevice("device_2", "fcm_token_2",
+ clock_.Now() - base::TimeDelta::FromMinutes(1));
+ AddDevice("device_inactive", "fcm_token_3",
+ clock_.Now() - base::TimeDelta::FromDays(100));
+
+ ASSERT_EQ(3u, device_list_.size());
+
+ EXPECT_THAT(
+ active_devices_provider_.CollectFCMRegistrationTokensForInvalidations(
+ "other_guid"),
+ UnorderedElementsAre(device_list_[0]->fcm_registration_token(),
+ device_list_[1]->fcm_registration_token()));
+ EXPECT_THAT(
+ active_devices_provider_.CollectFCMRegistrationTokensForInvalidations(
+ device_list_[0]->guid()),
+ UnorderedElementsAre(device_list_[1]->fcm_registration_token()));
+}
+
+TEST_F(ActiveDevicesProviderImplTest, ShouldReturnEmptyListWhenTooManyDevices) {
+ // Create many devices to exceed the limit of the list.
+ const size_t kActiveDevicesNumber =
+ switches::kSyncFCMRegistrationTokensListMaxSize.Get() + 1;
+
+ for (size_t i = 0; i < kActiveDevicesNumber; ++i) {
+ const std::string device_name = "device_" + base::NumberToString(i);
+ const std::string fcm_token = "fcm_token_" + device_name;
+ AddDevice(device_name, fcm_token,
+ clock_.Now() - base::TimeDelta::FromMinutes(1));
+ }
+
+ EXPECT_THAT(
+ active_devices_provider_.CollectFCMRegistrationTokensForInvalidations(
+ "guid"),
+ IsEmpty());
+}
+
} // namespace
} // namespace browser_sync
diff --git a/chromium/components/browser_sync/browser_sync_switches.cc b/chromium/components/browser_sync/browser_sync_switches.cc
index e327d97da18..4ba5ded9dbc 100644
--- a/chromium/components/browser_sync/browser_sync_switches.cc
+++ b/chromium/components/browser_sync/browser_sync_switches.cc
@@ -26,4 +26,27 @@ const base::Feature kSyncUseSessionsUnregisterDelay{
"SyncUseSessionsUnregisterDelay", base::FEATURE_DISABLED_BY_DEFAULT};
#endif // defined(OS_ANDROID)
+// Enables filtering out inactive devices which haven't sent DeviceInfo update
+// recently (depending on the device's pulse_interval and an additional margin).
+const base::Feature kSyncFilterOutInactiveDevicesForSingleClient{
+ "SyncFilterOutInactiveDevicesForSingleClient",
+ base::FEATURE_ENABLED_BY_DEFAULT};
+
+// An additional threshold to consider devices as active. It extends device's
+// pulse interval to mitigate possible latency after DeviceInfo commit.
+const base::FeatureParam<base::TimeDelta> kSyncActiveDeviceMargin{
+ &kSyncFilterOutInactiveDevicesForSingleClient, "SyncActiveDeviceMargin",
+ base::TimeDelta::FromMinutes(30)};
+
+// Enables providing the list of FCM registration tokens in the commit request.
+const base::Feature kSyncUseFCMRegistrationTokensList{
+ "SyncUseFCMRegistrationTokensList", base::FEATURE_ENABLED_BY_DEFAULT};
+
+// Max size of FCM registration tokens list. If the number of active devices
+// having FCM registration tokens is higher, then the resulting list will be
+// empty meaning unknown FCM registration tokens.
+const base::FeatureParam<int> kSyncFCMRegistrationTokensListMaxSize{
+ &kSyncUseFCMRegistrationTokensList, "SyncFCMRegistrationTokensListMaxSize",
+ 5};
+
} // namespace switches
diff --git a/chromium/components/browser_sync/browser_sync_switches.h b/chromium/components/browser_sync/browser_sync_switches.h
index 21e76129549..32345cdaaf7 100644
--- a/chromium/components/browser_sync/browser_sync_switches.h
+++ b/chromium/components/browser_sync/browser_sync_switches.h
@@ -18,6 +18,11 @@ extern const char kLocalSyncBackendDir[];
extern const base::Feature kSyncUseSessionsUnregisterDelay;
#endif
+extern const base::Feature kSyncFilterOutInactiveDevicesForSingleClient;
+extern const base::FeatureParam<base::TimeDelta> kSyncActiveDeviceMargin;
+extern const base::Feature kSyncUseFCMRegistrationTokensList;
+extern const base::FeatureParam<int> kSyncFCMRegistrationTokensListMaxSize;
+
} // namespace switches
#endif // COMPONENTS_BROWSER_SYNC_BROWSER_SYNC_SWITCHES_H_
diff --git a/chromium/components/browser_sync/profile_sync_components_factory_impl.cc b/chromium/components/browser_sync/profile_sync_components_factory_impl.cc
index 78bc0d6d0f8..f93914effcc 100644
--- a/chromium/components/browser_sync/profile_sync_components_factory_impl.cc
+++ b/chromium/components/browser_sync/profile_sync_components_factory_impl.cc
@@ -12,6 +12,7 @@
#include "base/task/task_traits.h"
#include "base/task/thread_pool.h"
#include "build/build_config.h"
+#include "build/chromeos_buildflags.h"
#include "components/autofill/core/browser/payments/autofill_wallet_model_type_controller.h"
#include "components/autofill/core/browser/webdata/autocomplete_sync_bridge.h"
#include "components/autofill/core/browser/webdata/autofill_profile_model_type_controller.h"
@@ -34,6 +35,7 @@
#include "components/sync/base/legacy_directory_deletion.h"
#include "components/sync/base/report_unrecoverable_error.h"
#include "components/sync/base/sync_base_switches.h"
+#include "components/sync/base/sync_prefs.h"
#include "components/sync/driver/data_type_manager_impl.h"
#include "components/sync/driver/glue/sync_engine_impl.h"
#include "components/sync/driver/model_type_controller.h"
@@ -41,9 +43,9 @@
#include "components/sync/driver/syncable_service_based_model_type_controller.h"
#include "components/sync/engine/sync_engine.h"
#include "components/sync/invalidations/sync_invalidations_service.h"
+#include "components/sync/model/forwarding_model_type_controller_delegate.h"
#include "components/sync/model/model_type_store_service.h"
-#include "components/sync/model_impl/forwarding_model_type_controller_delegate.h"
-#include "components/sync/model_impl/proxy_model_type_controller_delegate.h"
+#include "components/sync/model/proxy_model_type_controller_delegate.h"
#include "components/sync_bookmarks/bookmark_sync_service.h"
#include "components/sync_device_info/device_info_sync_service.h"
#include "components/sync_preferences/pref_service_syncable.h"
@@ -52,8 +54,8 @@
#include "components/sync_sessions/session_sync_service.h"
#include "components/sync_user_events/user_event_model_type_controller.h"
-#if defined(OS_CHROMEOS)
-#include "chromeos/constants/chromeos_features.h"
+#if BUILDFLAG(IS_CHROMEOS_ASH)
+#include "ash/constants/ash_features.h"
#endif
using syncer::DataTypeController;
@@ -338,7 +340,7 @@ ProfileSyncComponentsFactoryImpl::CreateCommonDataTypeControllers(
dump_stack));
}
-#if defined(OS_CHROMEOS)
+#if BUILDFLAG(IS_CHROMEOS_ASH)
// When SplitSettingsSync is enabled the controller is created in
// ChromeSyncClient.
if (!disabled_types.Has(syncer::PRINTERS) &&
@@ -346,7 +348,7 @@ ProfileSyncComponentsFactoryImpl::CreateCommonDataTypeControllers(
controllers.push_back(
CreateModelTypeControllerForModelRunningOnUIThread(syncer::PRINTERS));
}
-#endif // defined(OS_CHROMEOS)
+#endif // BUILDFLAG(IS_CHROMEOS_ASH)
// Reading list sync is enabled by default only on iOS. Register unless
// Reading List or Reading List Sync is explicitly disabled.
@@ -370,7 +372,6 @@ ProfileSyncComponentsFactoryImpl::CreateCommonDataTypeControllers(
.get();
controllers.push_back(
std::make_unique<send_tab_to_self::SendTabToSelfModelTypeController>(
- sync_service,
/*delegate_for_full_sync_mode=*/
std::make_unique<syncer::ForwardingModelTypeControllerDelegate>(
delegate),
@@ -415,24 +416,40 @@ std::unique_ptr<syncer::SyncEngine>
ProfileSyncComponentsFactoryImpl::CreateSyncEngine(
const std::string& name,
invalidation::InvalidationService* invalidator,
- syncer::SyncInvalidationsService* sync_invalidation_service,
- const base::WeakPtr<syncer::SyncPrefs>& sync_prefs) {
+ syncer::SyncInvalidationsService* sync_invalidation_service) {
return std::make_unique<syncer::SyncEngineImpl>(
name, invalidator, sync_invalidation_service,
std::make_unique<browser_sync::ActiveDevicesProviderImpl>(
sync_client_->GetDeviceInfoSyncService()->GetDeviceInfoTracker(),
base::DefaultClock::GetInstance()),
- sync_prefs, sync_client_->GetModelTypeStoreService()->GetSyncDataPath(),
- engines_and_directory_deletion_thread_);
+ std::make_unique<syncer::SyncTransportDataPrefs>(
+ sync_client_->GetPrefService()),
+ sync_client_->GetModelTypeStoreService()->GetSyncDataPath(),
+ engines_and_directory_deletion_thread_,
+ base::BindRepeating(&syncer::SyncClient::OnLocalSyncTransportDataCleared,
+ base::Unretained(sync_client_)));
}
void ProfileSyncComponentsFactoryImpl::
- DeleteLegacyDirectoryFilesAndNigoriStorage() {
- engines_and_directory_deletion_thread_->PostTask(
- FROM_HERE,
- base::BindOnce(
- &syncer::DeleteLegacyDirectoryFilesAndNigoriStorage,
- sync_client_->GetModelTypeStoreService()->GetSyncDataPath()));
+ ClearAllTransportDataExceptEncryptionBootstrapToken() {
+ syncer::SyncTransportDataPrefs sync_transport_data_prefs(
+ sync_client_->GetPrefService());
+
+ // Clearing the Directory via DeleteLegacyDirectoryFilesAndNigoriStorage()
+ // means there's IO involved which may be considerable overhead if
+ // triggered consistently upon browser startup (which is the case for
+ // certain codepaths such as the user being signed out). To avoid that, prefs
+ // are used to determine whether it's worth it.
+ if (!sync_transport_data_prefs.GetCacheGuid().empty()) {
+ engines_and_directory_deletion_thread_->PostTask(
+ FROM_HERE,
+ base::BindOnce(
+ &syncer::DeleteLegacyDirectoryFilesAndNigoriStorage,
+ sync_client_->GetModelTypeStoreService()->GetSyncDataPath()));
+ }
+
+ sync_transport_data_prefs.ClearAllExceptEncryptionBootstrapToken();
+ sync_client_->OnLocalSyncTransportDataCleared();
}
std::unique_ptr<syncer::ModelTypeControllerDelegate>
diff --git a/chromium/components/browser_sync/profile_sync_components_factory_impl.h b/chromium/components/browser_sync/profile_sync_components_factory_impl.h
index da0a32a1cce..e3f28deb9a6 100644
--- a/chromium/components/browser_sync/profile_sync_components_factory_impl.h
+++ b/chromium/components/browser_sync/profile_sync_components_factory_impl.h
@@ -81,9 +81,8 @@ class ProfileSyncComponentsFactoryImpl
std::unique_ptr<syncer::SyncEngine> CreateSyncEngine(
const std::string& name,
invalidation::InvalidationService* invalidator,
- syncer::SyncInvalidationsService* sync_invalidation_service,
- const base::WeakPtr<syncer::SyncPrefs>& sync_prefs) override;
- void DeleteLegacyDirectoryFilesAndNigoriStorage() override;
+ syncer::SyncInvalidationsService* sync_invalidation_service) override;
+ void ClearAllTransportDataExceptEncryptionBootstrapToken() override;
private:
// Factory function for ModelTypeController instances for models living on
diff --git a/chromium/components/browser_sync/signin_confirmation_helper.cc b/chromium/components/browser_sync/signin_confirmation_helper.cc
index 5323d335f19..9e46c73cb1c 100644
--- a/chromium/components/browser_sync/signin_confirmation_helper.cc
+++ b/chromium/components/browser_sync/signin_confirmation_helper.cc
@@ -34,8 +34,8 @@ class HasTypedURLsTask : public history::HistoryDBTask {
history::URLRows rows;
backend->GetAllTypedURLs(&rows);
if (!rows.empty()) {
- DVLOG(1) << "SigninConfirmationHelper: history contains " << rows.size()
- << " typed URLs";
+ VLOG(1) << "SigninConfirmationHelper: history contains " << rows.size()
+ << " typed URLs";
has_typed_urls_ = true;
}
return true;
@@ -67,8 +67,8 @@ void SigninConfirmationHelper::OnHistoryQueryResults(
history::QueryResults results) {
bool too_much_history = results.size() >= max_entries;
if (too_much_history) {
- DVLOG(1) << "SigninConfirmationHelper: profile contains " << results.size()
- << " history entries";
+ VLOG(1) << "SigninConfirmationHelper: profile contains " << results.size()
+ << " history entries";
}
ReturnResult(too_much_history);
}