send_tab_to_self_model_type_controller.cc 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. // Copyright 2019 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "components/send_tab_to_self/send_tab_to_self_model_type_controller.h"
  5. #include <utility>
  6. #include "base/feature_list.h"
  7. #include "components/send_tab_to_self/features.h"
  8. namespace send_tab_to_self {
  9. SendTabToSelfModelTypeController::SendTabToSelfModelTypeController(
  10. std::unique_ptr<syncer::ModelTypeControllerDelegate>
  11. delegate_for_full_sync_mode,
  12. std::unique_ptr<syncer::ModelTypeControllerDelegate>
  13. delegate_for_transport_mode)
  14. : ModelTypeController(syncer::SEND_TAB_TO_SELF,
  15. std::move(delegate_for_full_sync_mode),
  16. std::move(delegate_for_transport_mode)) {
  17. DCHECK(ShouldRunInTransportOnlyMode());
  18. }
  19. SendTabToSelfModelTypeController::~SendTabToSelfModelTypeController() = default;
  20. void SendTabToSelfModelTypeController::Stop(
  21. syncer::ShutdownReason shutdown_reason,
  22. StopCallback callback) {
  23. DCHECK(CalledOnValidThread());
  24. switch (shutdown_reason) {
  25. case syncer::ShutdownReason::STOP_SYNC_AND_KEEP_DATA:
  26. // Special case: We want to clear all data even when Sync is stopped
  27. // temporarily. This is also needed to make sure the feature stops being
  28. // offered to the user, because predicates like IsUserSyncTypeActive()
  29. // should return false upon stop.
  30. shutdown_reason = syncer::ShutdownReason::DISABLE_SYNC_AND_CLEAR_DATA;
  31. break;
  32. case syncer::ShutdownReason::DISABLE_SYNC_AND_CLEAR_DATA:
  33. case syncer::ShutdownReason::BROWSER_SHUTDOWN_AND_KEEP_DATA:
  34. break;
  35. }
  36. ModelTypeController::Stop(shutdown_reason, std::move(callback));
  37. }
  38. } // namespace send_tab_to_self