Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1874)

Unified Diff: ash/common/wm/maximize_mode/maximize_mode_controller.cc

Issue 2770723002: Fix MaximizeModeController startup race (Closed)
Patch Set: Verified on Device Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ash/common/wm/maximize_mode/maximize_mode_controller.cc
diff --git a/ash/common/wm/maximize_mode/maximize_mode_controller.cc b/ash/common/wm/maximize_mode/maximize_mode_controller.cc
index 173de0c1960d831f98ff08df6f1732bce3003b09..7fbf2b6f138b90dc9eba590a6e0044484f192c24 100644
--- a/ash/common/wm/maximize_mode/maximize_mode_controller.cc
+++ b/ash/common/wm/maximize_mode/maximize_mode_controller.cc
@@ -11,6 +11,7 @@
#include "ash/common/wm/maximize_mode/scoped_disable_internal_mouse_and_keyboard.h"
#include "ash/common/wm_shell.h"
#include "ash/shell.h"
+#include "base/bind.h"
#include "base/command_line.h"
#include "base/metrics/histogram_macros.h"
#include "base/time/default_tick_clock.h"
@@ -92,7 +93,8 @@ MaximizeModeController::MaximizeModeController()
touchview_usage_interval_start_time_(base::Time::Now()),
tick_clock_(new base::DefaultTickClock()),
tablet_mode_switch_is_on_(false),
- lid_is_closed_(false) {
+ lid_is_closed_(false),
+ weak_factory_(this) {
Shell::GetInstance()->AddShellObserver(this);
WmShell::Get()->RecordUserMetricsAction(UMA_MAXIMIZE_MODE_INITIALLY_DISABLED);
@@ -104,8 +106,11 @@ MaximizeModeController::MaximizeModeController()
WmShell::Get()->AddDisplayObserver(this);
chromeos::AccelerometerReader::GetInstance()->AddObserver(this);
}
- chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->AddObserver(
- this);
+ chromeos::PowerManagerClient* power_manager_client =
+ chromeos::DBusThreadManager::Get()->GetPowerManagerClient();
+ power_manager_client->AddObserver(this);
+ power_manager_client->GetSwitchStates(base::Bind(
+ &MaximizeModeController::OnGetSwitchStates, weak_factory_.GetWeakPtr()));
}
MaximizeModeController::~MaximizeModeController() {
@@ -419,6 +424,13 @@ void MaximizeModeController::OnAppTerminating() {
}
}
+void MaximizeModeController::OnGetSwitchStates(
+ chromeos::PowerManagerClient::LidState lid_state,
+ chromeos::PowerManagerClient::TabletMode tablet_mode) {
+ LidEventReceived(lid_state, base::TimeTicks::Now());
+ TabletModeEventReceived(tablet_mode, base::TimeTicks::Now());
+}
+
bool MaximizeModeController::WasLidOpenedRecently() const {
if (last_lid_open_time_.is_null())
return false;
« no previous file with comments | « ash/common/wm/maximize_mode/maximize_mode_controller.h ('k') | ash/wm/maximize_mode/maximize_mode_controller_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698