Commit 1418c125 authored by jonross's avatar jonross Committed by Commit bot

Correcly Report CanEnterMaximizeMode on devices withou accelerometers

MaximizeModeController::CanEnterMaximizeMode was based on receiving an accelerometer event. AccelerometerReader now sends an event to every observer as it is added, to reduce lag on receiving first event. However on devices without accelerometers this sends an empty event.

Updated MaximizeModeController to not set that accelerometer events have been seen until a valid event is received. One with actual data.

TEST=MaximizeModeControllerTest.CanEnterMaximizeModeRequiresValidAccelerometerUpdate
BUG=454662

Review URL: https://codereview.chromium.org/895993002

Cr-Commit-Position: refs/heads/master@{#315307}
parent 4dfd13b2
...@@ -346,6 +346,25 @@ TEST_F(MaximizeModeControllerTest, MaximizeModeTest) { ...@@ -346,6 +346,25 @@ TEST_F(MaximizeModeControllerTest, MaximizeModeTest) {
} }
} }
// Tests that CanEnterMaximizeMode returns false until a valid accelerometer
// event has been received, and that it returns true afterwards.
TEST_F(MaximizeModeControllerTest,
CanEnterMaximizeModeRequiresValidAccelerometerUpdate) {
// Should be false until an accelerometer event is sent.
ASSERT_FALSE(maximize_mode_controller()->CanEnterMaximizeMode());
OpenLidToAngle(90.0f);
EXPECT_TRUE(maximize_mode_controller()->CanEnterMaximizeMode());
}
// Tests that when an accelerometer event is received which has no keyboard that
// we enter maximize mode.
TEST_F(MaximizeModeControllerTest,
NoKeyboardAccelerometerTriggersMaximizeMode) {
ASSERT_FALSE(IsMaximizeModeStarted());
TriggerLidUpdate(gfx::Vector3dF(0.0f, 0.0f, kMeanGravity));
ASSERT_TRUE(IsMaximizeModeStarted());
}
class MaximizeModeControllerSwitchesTest : public MaximizeModeControllerTest { class MaximizeModeControllerSwitchesTest : public MaximizeModeControllerTest {
public: public:
MaximizeModeControllerSwitchesTest() {} MaximizeModeControllerSwitchesTest() {}
......
...@@ -203,7 +203,8 @@ void AccelerometerReader::Initialize( ...@@ -203,7 +203,8 @@ void AccelerometerReader::Initialize(
void AccelerometerReader::AddObserver(Observer* observer) { void AccelerometerReader::AddObserver(Observer* observer) {
observers_.AddObserver(observer); observers_.AddObserver(observer);
observer->OnAccelerometerUpdated(update_); if (has_update_)
observer->OnAccelerometerUpdated(update_);
} }
void AccelerometerReader::RemoveObserver(Observer* observer) { void AccelerometerReader::RemoveObserver(Observer* observer) {
...@@ -211,7 +212,8 @@ void AccelerometerReader::RemoveObserver(Observer* observer) { ...@@ -211,7 +212,8 @@ void AccelerometerReader::RemoveObserver(Observer* observer) {
} }
AccelerometerReader::AccelerometerReader() AccelerometerReader::AccelerometerReader()
: configuration_(new AccelerometerReader::Configuration()), : has_update_(false),
configuration_(new AccelerometerReader::Configuration()),
weak_factory_(this) { weak_factory_(this) {
} }
...@@ -245,6 +247,7 @@ void AccelerometerReader::OnDataRead( ...@@ -245,6 +247,7 @@ void AccelerometerReader::OnDataRead(
DCHECK(!task_runner_->RunsTasksOnCurrentThread()); DCHECK(!task_runner_->RunsTasksOnCurrentThread());
if (success) { if (success) {
has_update_ = true;
for (int i = 0; i < ACCELEROMETER_SOURCE_COUNT; ++i) { for (int i = 0; i < ACCELEROMETER_SOURCE_COUNT; ++i) {
if (!configuration_->data.has[i]) if (!configuration_->data.has[i])
continue; continue;
......
...@@ -90,6 +90,9 @@ class CHROMEOS_EXPORT AccelerometerReader { ...@@ -90,6 +90,9 @@ class CHROMEOS_EXPORT AccelerometerReader {
// The last seen accelerometer data. // The last seen accelerometer data.
AccelerometerUpdate update_; AccelerometerUpdate update_;
// True if a valid accelerometer update is available.
bool has_update_;
// The accelerometer configuration. // The accelerometer configuration.
scoped_refptr<Configuration> configuration_; scoped_refptr<Configuration> configuration_;
......
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