Commit 0650dc39 authored by Danila Kuzmin's avatar Danila Kuzmin Committed by Commit Bot

oobe UpdateScreen: Make PowerManagerClient observer scoped

Now UpdateScreen observes power changes only when it is shown.

Bug: 1124201
Change-Id: Ic67f2e3c4fc6c6fb528235d74faa2f2929c819b0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2390220
Commit-Queue: Danila Kuzmin <dkuzmin@google.com>
Reviewed-by: default avatarRoman Aleksandrov <raleksandrov@google.com>
Reviewed-by: default avatarRoman Sorokin [CET] <rsorokin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#803882}
parent f07583af
...@@ -120,15 +120,11 @@ UpdateScreen::UpdateScreen(UpdateView* view, ...@@ -120,15 +120,11 @@ UpdateScreen::UpdateScreen(UpdateView* view,
version_updater_(std::make_unique<VersionUpdater>(this)), version_updater_(std::make_unique<VersionUpdater>(this)),
wait_before_reboot_time_(kWaitBeforeRebootTime), wait_before_reboot_time_(kWaitBeforeRebootTime),
tick_clock_(base::DefaultTickClock::GetInstance()) { tick_clock_(base::DefaultTickClock::GetInstance()) {
if (chromeos::features::IsBetterUpdateEnabled())
PowerManagerClient::Get()->AddObserver(this);
if (view_) if (view_)
view_->Bind(this); view_->Bind(this);
} }
UpdateScreen::~UpdateScreen() { UpdateScreen::~UpdateScreen() {
if (chromeos::features::IsBetterUpdateEnabled())
PowerManagerClient::Get()->RemoveObserver(this);
if (view_) if (view_)
view_->Unbind(); view_->Unbind();
} }
...@@ -164,8 +160,13 @@ bool UpdateScreen::MaybeSkip(WizardContext* context) { ...@@ -164,8 +160,13 @@ bool UpdateScreen::MaybeSkip(WizardContext* context) {
} }
void UpdateScreen::ShowImpl() { void UpdateScreen::ShowImpl() {
if (chromeos::features::IsBetterUpdateEnabled()) if (chromeos::features::IsBetterUpdateEnabled()) {
DCHECK(!power_manager_subscription_);
power_manager_subscription_ = std::make_unique<
ScopedObserver<PowerManagerClient, PowerManagerClient::Observer>>(this);
power_manager_subscription_->Add(PowerManagerClient::Get());
PowerManagerClient::Get()->RequestStatusUpdate(); PowerManagerClient::Get()->RequestStatusUpdate();
}
#if !BUILDFLAG(GOOGLE_CHROME_BRANDING) #if !BUILDFLAG(GOOGLE_CHROME_BRANDING)
if (view_) { if (view_) {
view_->SetCancelUpdateShortcutEnabled(true); view_->SetCancelUpdateShortcutEnabled(true);
...@@ -181,6 +182,7 @@ void UpdateScreen::ShowImpl() { ...@@ -181,6 +182,7 @@ void UpdateScreen::ShowImpl() {
} }
void UpdateScreen::HideImpl() { void UpdateScreen::HideImpl() {
power_manager_subscription_.reset();
show_timer_.Stop(); show_timer_.Stop();
if (view_) if (view_)
view_->Hide(); view_->Hide();
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "base/gtest_prod_util.h" #include "base/gtest_prod_util.h"
#include "base/macros.h" #include "base/macros.h"
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "base/scoped_observer.h"
#include "base/timer/timer.h" #include "base/timer/timer.h"
#include "chrome/browser/chromeos/login/screens/base_screen.h" #include "chrome/browser/chromeos/login/screens/base_screen.h"
#include "chrome/browser/chromeos/login/screens/error_screen.h" #include "chrome/browser/chromeos/login/screens/error_screen.h"
...@@ -221,6 +222,11 @@ class UpdateScreen : public BaseScreen, ...@@ -221,6 +222,11 @@ class UpdateScreen : public BaseScreen,
ErrorScreen::ConnectRequestCallbackSubscription connect_request_subscription_; ErrorScreen::ConnectRequestCallbackSubscription connect_request_subscription_;
// PowerManagerClient::Observer is used only when screen is shown.
std::unique_ptr<
ScopedObserver<PowerManagerClient, PowerManagerClient::Observer>>
power_manager_subscription_;
base::WeakPtrFactory<UpdateScreen> weak_factory_{this}; base::WeakPtrFactory<UpdateScreen> weak_factory_{this};
DISALLOW_COPY_AND_ASSIGN(UpdateScreen); DISALLOW_COPY_AND_ASSIGN(UpdateScreen);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment