color_provider_source_observer.cc 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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 "ui/color/color_provider_source_observer.h"
  5. namespace ui {
  6. ColorProviderSourceObserver::ColorProviderSourceObserver() = default;
  7. ColorProviderSourceObserver::~ColorProviderSourceObserver() = default;
  8. void ColorProviderSourceObserver::OnColorProviderSourceDestroying() {
  9. Observe(nullptr);
  10. }
  11. const ui::ColorProviderSource*
  12. ColorProviderSourceObserver::GetColorProviderSourceForTesting() const {
  13. return GetColorProviderSource();
  14. }
  15. void ColorProviderSourceObserver::Observe(ColorProviderSource* source) {
  16. if ((source &&
  17. color_provider_source_observation_.IsObservingSource(source)) ||
  18. (!source && source_ == nullptr)) {
  19. return;
  20. }
  21. color_provider_source_observation_.Reset();
  22. source_ = source;
  23. if (source_)
  24. color_provider_source_observation_.Observe(source);
  25. // Notify both when a new source is observed and when an observation is reset
  26. // (i.e. when Observe() is called with nullptr).
  27. OnColorProviderChanged();
  28. }
  29. const ui::ColorProviderSource*
  30. ColorProviderSourceObserver::GetColorProviderSource() const {
  31. return source_;
  32. }
  33. } // namespace ui