Commit b78f5f2f authored by Victor Hugo Vianna Silva's avatar Victor Hugo Vianna Silva Committed by Commit Bot

[sync] Extend send-tab-to-self ModelTypeControllers for transport mode

This CL extends the MTC of the SEND_TAB_TO_SELF data type to receive a
ModelTypeControllerDelegate for transport-only mode. A non-null
delegate is passed to the controller if and only if the existing
kSendTabToSelfWhenSignedIn feature toggle is enabled.

Bug: 956722
Change-Id: Ie14535d0e873cc8a3c8bcfedc611f8d8eb6abaa5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2517584
Commit-Queue: Victor Vianna <victorvianna@google.com>
Reviewed-by: default avatarMarc Treib <treib@chromium.org>
Reviewed-by: default avatarsebsg <sebsg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#824025}
parent 39d05489
......@@ -27,6 +27,7 @@
#include "components/password_manager/core/browser/sync/password_model_type_controller.h"
#include "components/prefs/pref_service.h"
#include "components/reading_list/features/reading_list_switches.h"
#include "components/send_tab_to_self/features.h"
#include "components/send_tab_to_self/send_tab_to_self_model_type_controller.h"
#include "components/send_tab_to_self/send_tab_to_self_sync_service.h"
#include "components/sync/base/legacy_directory_deletion.h"
......@@ -362,13 +363,22 @@ ProfileSyncComponentsFactoryImpl::CreateCommonDataTypeControllers(
}
if (!disabled_types.Has(syncer::SEND_TAB_TO_SELF)) {
syncer::ModelTypeControllerDelegate* delegate =
sync_client_->GetSendTabToSelfSyncService()
->GetControllerDelegate()
.get();
controllers.push_back(
std::make_unique<send_tab_to_self::SendTabToSelfModelTypeController>(
sync_service,
/*delegate_for_full_sync_mode=*/
std::make_unique<syncer::ForwardingModelTypeControllerDelegate>(
sync_client_->GetSendTabToSelfSyncService()
->GetControllerDelegate()
.get())));
delegate),
/*delegate_for_transport_mode=*/
base::FeatureList::IsEnabled(
send_tab_to_self::kSendTabToSelfWhenSignedIn)
? std::make_unique<
syncer::ForwardingModelTypeControllerDelegate>(delegate)
: nullptr));
}
if (!disabled_types.Has(syncer::USER_CONSENTS)) {
......
......@@ -7,6 +7,7 @@
#include <utility>
#include "base/feature_list.h"
#include "components/send_tab_to_self/features.h"
#include "components/sync/driver/sync_auth_util.h"
#include "components/sync/driver/sync_service.h"
#include "google_apis/gaia/google_service_auth_error.h"
......@@ -15,9 +16,17 @@ namespace send_tab_to_self {
SendTabToSelfModelTypeController::SendTabToSelfModelTypeController(
syncer::SyncService* sync_service,
std::unique_ptr<syncer::ModelTypeControllerDelegate> delegate)
: ModelTypeController(syncer::SEND_TAB_TO_SELF, std::move(delegate)),
std::unique_ptr<syncer::ModelTypeControllerDelegate>
delegate_for_full_sync_mode,
std::unique_ptr<syncer::ModelTypeControllerDelegate>
delegate_for_transport_mode)
: ModelTypeController(syncer::SEND_TAB_TO_SELF,
std::move(delegate_for_full_sync_mode),
std::move(delegate_for_transport_mode)),
sync_service_(sync_service) {
DCHECK_EQ(base::FeatureList::IsEnabled(
send_tab_to_self::kSendTabToSelfWhenSignedIn),
ShouldRunInTransportOnlyMode());
// TODO(crbug.com/906995): Remove this observing mechanism once all sync
// datatypes are stopped by ProfileSyncService, when sync is paused.
sync_service_->AddObserver(this);
......
......@@ -19,11 +19,15 @@ namespace send_tab_to_self {
class SendTabToSelfModelTypeController : public syncer::ModelTypeController,
public syncer::SyncServiceObserver {
public:
// The |delegate| and |sync_service| must not be null. Furthermore,
// |sync_service| must outlive this object.
// The |delegate_for_full_sync_mode| and |sync_service| must not be null.
// |delegate_for_transport_mode| can be null. |sync_service| must outlive this
// object.
SendTabToSelfModelTypeController(
syncer::SyncService* sync_service,
std::unique_ptr<syncer::ModelTypeControllerDelegate> delegate);
std::unique_ptr<syncer::ModelTypeControllerDelegate>
delegate_for_full_sync_mode,
std::unique_ptr<syncer::ModelTypeControllerDelegate>
delegate_for_transport_mode);
~SendTabToSelfModelTypeController() override;
// DataTypeController overrides.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment