app_list_model_provider.cc 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. // Copyright 2021 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/app_list/app_list_model_provider.h"
  5. #include "base/check.h"
  6. #include "base/check_op.h"
  7. namespace ash {
  8. namespace {
  9. // Pointer to the global `AppListModelProvider` instance.
  10. AppListModelProvider* g_instance = nullptr;
  11. } // namespace
  12. AppListModelProvider::AppListModelProvider() {
  13. DCHECK(!g_instance);
  14. g_instance = this;
  15. }
  16. AppListModelProvider::~AppListModelProvider() {
  17. DCHECK_EQ(g_instance, this);
  18. g_instance = nullptr;
  19. }
  20. // static
  21. AppListModelProvider* AppListModelProvider::Get() {
  22. return g_instance;
  23. }
  24. void AppListModelProvider::SetActiveModel(AppListModel* model,
  25. SearchModel* search_model) {
  26. DCHECK(model);
  27. DCHECK(search_model);
  28. model_ = model;
  29. search_model_ = search_model;
  30. for (auto& observer : observers_)
  31. observer.OnActiveAppListModelsChanged(model_, search_model_);
  32. }
  33. void AppListModelProvider::ClearActiveModel() {
  34. model_ = &default_model_;
  35. search_model_ = &default_search_model_;
  36. for (auto& observer : observers_)
  37. observer.OnActiveAppListModelsChanged(model_, search_model_);
  38. }
  39. void AppListModelProvider::AddObserver(Observer* observer) {
  40. observers_.AddObserver(observer);
  41. }
  42. void AppListModelProvider::RemoveObserver(Observer* observer) {
  43. observers_.RemoveObserver(observer);
  44. }
  45. } // namespace ash