update_model.cc 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. // Copyright 2018 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/system/model/update_model.h"
  5. namespace ash {
  6. UpdateModel::UpdateModel() = default;
  7. UpdateModel::~UpdateModel() = default;
  8. void UpdateModel::AddObserver(UpdateObserver* observer) {
  9. observers_.AddObserver(observer);
  10. }
  11. void UpdateModel::RemoveObserver(UpdateObserver* observer) {
  12. observers_.RemoveObserver(observer);
  13. }
  14. void UpdateModel::SetUpdateAvailable(UpdateSeverity severity,
  15. bool factory_reset_required,
  16. bool rollback,
  17. UpdateType update_type) {
  18. update_required_ = true;
  19. update_deferred_ = DeferredUpdateState::kNone;
  20. severity_ = severity;
  21. factory_reset_required_ = factory_reset_required;
  22. rollback_ = rollback;
  23. update_type_ = update_type;
  24. NotifyUpdateAvailable();
  25. }
  26. void UpdateModel::SetRelaunchNotificationState(
  27. const RelaunchNotificationState& relaunch_notification_state) {
  28. DCHECK_EQ(update_type_, UpdateType::kSystem);
  29. relaunch_notification_state_ = relaunch_notification_state;
  30. NotifyUpdateAvailable();
  31. }
  32. void UpdateModel::SetUpdateOverCellularAvailable(bool available) {
  33. update_over_cellular_available_ = available;
  34. NotifyUpdateAvailable();
  35. }
  36. void UpdateModel::SetUpdateDeferred(DeferredUpdateState state) {
  37. update_deferred_ = state;
  38. NotifyUpdateAvailable();
  39. }
  40. UpdateSeverity UpdateModel::GetSeverity() const {
  41. // TODO(https://crbug.com/927010): adjust severity according the amount of
  42. // time passing after update is available over cellular connection. Use low
  43. // severity for update available over cellular connection.
  44. return update_over_cellular_available_ ? UpdateSeverity::kLow : severity_;
  45. }
  46. void UpdateModel::ResetUpdateAvailable() {
  47. update_required_ = false;
  48. update_deferred_ = DeferredUpdateState::kNone;
  49. NotifyUpdateAvailable();
  50. }
  51. void UpdateModel::NotifyUpdateAvailable() {
  52. for (auto& observer : observers_)
  53. observer.OnUpdateAvailable();
  54. }
  55. } // namespace ash