browser_tabs_model_controller.cc 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. // Copyright 2020 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 "ash/components/phonehub/browser_tabs_model_controller.h"
  5. namespace ash {
  6. namespace phonehub {
  7. namespace {
  8. using multidevice_setup::mojom::Feature;
  9. using multidevice_setup::mojom::FeatureState;
  10. } // namespace
  11. BrowserTabsModelController::BrowserTabsModelController(
  12. multidevice_setup::MultiDeviceSetupClient* multidevice_setup_client,
  13. BrowserTabsModelProvider* browser_tabs_model_provider,
  14. MutablePhoneModel* mutable_phone_model)
  15. : multidevice_setup_client_(multidevice_setup_client),
  16. cached_model_(/*is_tab_sync_enabled=*/false),
  17. browser_tabs_model_provider_(browser_tabs_model_provider),
  18. mutable_phone_model_(mutable_phone_model) {
  19. multidevice_setup_client_->AddObserver(this);
  20. browser_tabs_model_provider_->AddObserver(this);
  21. }
  22. BrowserTabsModelController::~BrowserTabsModelController() {
  23. multidevice_setup_client_->RemoveObserver(this);
  24. browser_tabs_model_provider_->RemoveObserver(this);
  25. }
  26. void BrowserTabsModelController::OnBrowserTabsUpdated(
  27. bool is_sync_enabled,
  28. const std::vector<BrowserTabsModel::BrowserTabMetadata>&
  29. browser_tabs_metadata) {
  30. cached_model_ = BrowserTabsModel(is_sync_enabled, browser_tabs_metadata);
  31. UpdateBrowserTabsModel();
  32. }
  33. void BrowserTabsModelController::OnFeatureStatesChanged(
  34. const multidevice_setup::MultiDeviceSetupClient::FeatureStatesMap&
  35. feature_states_map) {
  36. UpdateBrowserTabsModel();
  37. }
  38. void BrowserTabsModelController::UpdateBrowserTabsModel() {
  39. FeatureState feature_state = multidevice_setup_client_->GetFeatureState(
  40. Feature::kPhoneHubTaskContinuation);
  41. if (feature_state == FeatureState::kEnabledByUser)
  42. mutable_phone_model_->SetBrowserTabsModel(cached_model_);
  43. else
  44. mutable_phone_model_->SetBrowserTabsModel(absl::nullopt);
  45. }
  46. } // namespace phonehub
  47. } // namespace ash