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 @@ ...@@ -27,6 +27,7 @@
#include "components/password_manager/core/browser/sync/password_model_type_controller.h" #include "components/password_manager/core/browser/sync/password_model_type_controller.h"
#include "components/prefs/pref_service.h" #include "components/prefs/pref_service.h"
#include "components/reading_list/features/reading_list_switches.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_model_type_controller.h"
#include "components/send_tab_to_self/send_tab_to_self_sync_service.h" #include "components/send_tab_to_self/send_tab_to_self_sync_service.h"
#include "components/sync/base/legacy_directory_deletion.h" #include "components/sync/base/legacy_directory_deletion.h"
...@@ -362,13 +363,22 @@ ProfileSyncComponentsFactoryImpl::CreateCommonDataTypeControllers( ...@@ -362,13 +363,22 @@ ProfileSyncComponentsFactoryImpl::CreateCommonDataTypeControllers(
} }
if (!disabled_types.Has(syncer::SEND_TAB_TO_SELF)) { if (!disabled_types.Has(syncer::SEND_TAB_TO_SELF)) {
syncer::ModelTypeControllerDelegate* delegate =
sync_client_->GetSendTabToSelfSyncService()
->GetControllerDelegate()
.get();
controllers.push_back( controllers.push_back(
std::make_unique<send_tab_to_self::SendTabToSelfModelTypeController>( std::make_unique<send_tab_to_self::SendTabToSelfModelTypeController>(
sync_service, sync_service,
/*delegate_for_full_sync_mode=*/
std::make_unique<syncer::ForwardingModelTypeControllerDelegate>( std::make_unique<syncer::ForwardingModelTypeControllerDelegate>(
sync_client_->GetSendTabToSelfSyncService() delegate),
->GetControllerDelegate() /*delegate_for_transport_mode=*/
.get()))); base::FeatureList::IsEnabled(
send_tab_to_self::kSendTabToSelfWhenSignedIn)
? std::make_unique<
syncer::ForwardingModelTypeControllerDelegate>(delegate)
: nullptr));
} }
if (!disabled_types.Has(syncer::USER_CONSENTS)) { if (!disabled_types.Has(syncer::USER_CONSENTS)) {
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include <utility> #include <utility>
#include "base/feature_list.h" #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_auth_util.h"
#include "components/sync/driver/sync_service.h" #include "components/sync/driver/sync_service.h"
#include "google_apis/gaia/google_service_auth_error.h" #include "google_apis/gaia/google_service_auth_error.h"
...@@ -15,9 +16,17 @@ namespace send_tab_to_self { ...@@ -15,9 +16,17 @@ namespace send_tab_to_self {
SendTabToSelfModelTypeController::SendTabToSelfModelTypeController( SendTabToSelfModelTypeController::SendTabToSelfModelTypeController(
syncer::SyncService* sync_service, syncer::SyncService* sync_service,
std::unique_ptr<syncer::ModelTypeControllerDelegate> delegate) std::unique_ptr<syncer::ModelTypeControllerDelegate>
: ModelTypeController(syncer::SEND_TAB_TO_SELF, std::move(delegate)), 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) { 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 // TODO(crbug.com/906995): Remove this observing mechanism once all sync
// datatypes are stopped by ProfileSyncService, when sync is paused. // datatypes are stopped by ProfileSyncService, when sync is paused.
sync_service_->AddObserver(this); sync_service_->AddObserver(this);
......
...@@ -19,11 +19,15 @@ namespace send_tab_to_self { ...@@ -19,11 +19,15 @@ namespace send_tab_to_self {
class SendTabToSelfModelTypeController : public syncer::ModelTypeController, class SendTabToSelfModelTypeController : public syncer::ModelTypeController,
public syncer::SyncServiceObserver { public syncer::SyncServiceObserver {
public: public:
// The |delegate| and |sync_service| must not be null. Furthermore, // The |delegate_for_full_sync_mode| and |sync_service| must not be null.
// |sync_service| must outlive this object. // |delegate_for_transport_mode| can be null. |sync_service| must outlive this
// object.
SendTabToSelfModelTypeController( SendTabToSelfModelTypeController(
syncer::SyncService* sync_service, 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; ~SendTabToSelfModelTypeController() override;
// DataTypeController overrides. // 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