Commit d4f7e3d5 authored by Antonio Gomes's avatar Antonio Gomes Committed by Commit Bot

Factor chromeos::TabletState::State out into //display/tablet_state.h

This CL is a preparation CL, where the final goal is to move
away from using chromeos::TabletState, embedding its functionality
into //display/ScreenBase class.

The first step to to dismantle this enum from it, so that it can
be referenced to independently.

TBR=jamescook@chromium.org

BUG=1113900
R=jamescook@chromium.org, oshima@chromium.org, rjkroege@chromium.org

Change-Id: I4d907b9d322723f581bfc1a278577088028795ce
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2505944
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Reviewed-by: default avatarJames Cook <jamescook@chromium.org>
Reviewed-by: default avatarMitsuru Oshima <oshima@chromium.org>
Cr-Commit-Position: refs/heads/master@{#822105}
parent 1ab06323
...@@ -48,6 +48,7 @@ ...@@ -48,6 +48,7 @@
#include "ui/compositor/layer_animation_sequence.h" #include "ui/compositor/layer_animation_sequence.h"
#include "ui/display/display.h" #include "ui/display/display.h"
#include "ui/display/manager/display_manager.h" #include "ui/display/manager/display_manager.h"
#include "ui/display/tablet_state.h"
#include "ui/events/devices/device_data_manager.h" #include "ui/events/devices/device_data_manager.h"
#include "ui/events/devices/input_device.h" #include "ui/events/devices/input_device.h"
#include "ui/events/event.h" #include "ui/events/event.h"
...@@ -492,8 +493,8 @@ bool TabletModeController::TriggerRecordLidAngleTimerForTesting() { ...@@ -492,8 +493,8 @@ bool TabletModeController::TriggerRecordLidAngleTimerForTesting() {
void TabletModeController::MaybeObserveBoundsAnimation(aura::Window* window) { void TabletModeController::MaybeObserveBoundsAnimation(aura::Window* window) {
StopObservingAnimation(/*record_stats=*/false, /*delete_screenshot=*/false); StopObservingAnimation(/*record_stats=*/false, /*delete_screenshot=*/false);
if (tablet_state_.state() != chromeos::TabletState::kEnteringTabletMode && if (tablet_state_.state() != display::TabletState::kEnteringTabletMode &&
tablet_state_.state() != chromeos::TabletState::kExitingTabletMode) { tablet_state_.state() != display::TabletState::kExitingTabletMode) {
return; return;
} }
...@@ -794,7 +795,7 @@ void TabletModeController::OnLayerAnimationScheduled( ...@@ -794,7 +795,7 @@ void TabletModeController::OnLayerAnimationScheduled(
animating_layer_->GetCompositor()->RequestNewThroughputTracker(); animating_layer_->GetCompositor()->RequestNewThroughputTracker();
transition_tracker_->Start(metrics_util::ForSmoothness(base::BindRepeating( transition_tracker_->Start(metrics_util::ForSmoothness(base::BindRepeating(
&ReportTrasitionSmoothness, &ReportTrasitionSmoothness,
tablet_state_.state() == chromeos::TabletState::kEnteringTabletMode))); tablet_state_.state() == display::TabletState::kEnteringTabletMode)));
return; return;
} }
...@@ -840,7 +841,7 @@ void TabletModeController::SetTabletModeEnabledInternal(bool should_enable) { ...@@ -840,7 +841,7 @@ void TabletModeController::SetTabletModeEnabledInternal(bool should_enable) {
DeleteScreenshot(); DeleteScreenshot();
if (should_enable) { if (should_enable) {
tablet_state_.SetState(chromeos::TabletState::kEnteringTabletMode); tablet_state_.SetState(display::TabletState::kEnteringTabletMode);
// Take a screenshot if there is a top window that will get animated. // Take a screenshot if there is a top window that will get animated.
// TODO(sammiequon): Handle the case where the top window is not on the // TODO(sammiequon): Handle the case where the top window is not on the
...@@ -870,7 +871,7 @@ void TabletModeController::SetTabletModeEnabledInternal(bool should_enable) { ...@@ -870,7 +871,7 @@ void TabletModeController::SetTabletModeEnabledInternal(bool should_enable) {
FinishInitTabletMode(); FinishInitTabletMode();
} }
} else { } else {
tablet_state_.SetState(chromeos::TabletState::kExitingTabletMode); tablet_state_.SetState(display::TabletState::kExitingTabletMode);
// We may have entered tablet mode, then tried to exit before the screenshot // We may have entered tablet mode, then tried to exit before the screenshot
// was taken. In this case |tablet_mode_window_manager_| will be null. // was taken. In this case |tablet_mode_window_manager_| will be null.
...@@ -886,7 +887,7 @@ void TabletModeController::SetTabletModeEnabledInternal(bool should_enable) { ...@@ -886,7 +887,7 @@ void TabletModeController::SetTabletModeEnabledInternal(bool should_enable) {
base::RecordAction(base::UserMetricsAction("Touchview_Disabled")); base::RecordAction(base::UserMetricsAction("Touchview_Disabled"));
RecordTabletModeUsageInterval(TABLET_MODE_INTERVAL_ACTIVE); RecordTabletModeUsageInterval(TABLET_MODE_INTERVAL_ACTIVE);
tablet_state_.SetState(chromeos::TabletState::kInClamshellMode); tablet_state_.SetState(display::TabletState::kInClamshellMode);
for (auto& observer : tablet_mode_observers_) for (auto& observer : tablet_mode_observers_)
observer.OnTabletModeEnded(); observer.OnTabletModeEnded();
VLOG(1) << "Exit tablet mode."; VLOG(1) << "Exit tablet mode.";
...@@ -1130,7 +1131,7 @@ void TabletModeController::ResetPauser() { ...@@ -1130,7 +1131,7 @@ void TabletModeController::ResetPauser() {
} }
void TabletModeController::FinishInitTabletMode() { void TabletModeController::FinishInitTabletMode() {
DCHECK_EQ(chromeos::TabletState::kEnteringTabletMode, tablet_state_.state()); DCHECK_EQ(display::TabletState::kEnteringTabletMode, tablet_state_.state());
for (auto& observer : tablet_mode_observers_) for (auto& observer : tablet_mode_observers_)
observer.OnTabletModeStarting(); observer.OnTabletModeStarting();
...@@ -1139,7 +1140,7 @@ void TabletModeController::FinishInitTabletMode() { ...@@ -1139,7 +1140,7 @@ void TabletModeController::FinishInitTabletMode() {
base::RecordAction(base::UserMetricsAction("Touchview_Enabled")); base::RecordAction(base::UserMetricsAction("Touchview_Enabled"));
RecordTabletModeUsageInterval(TABLET_MODE_INTERVAL_INACTIVE); RecordTabletModeUsageInterval(TABLET_MODE_INTERVAL_INACTIVE);
tablet_state_.SetState(chromeos::TabletState::kInTabletMode); tablet_state_.SetState(display::TabletState::kInTabletMode);
for (auto& observer : tablet_mode_observers_) for (auto& observer : tablet_mode_observers_)
observer.OnTabletModeStarted(); observer.OnTabletModeStarted();
......
...@@ -415,16 +415,16 @@ gfx::ImageSkia BrowserNonClientFrameViewAsh::GetFrameHeaderOverlayImage( ...@@ -415,16 +415,16 @@ gfx::ImageSkia BrowserNonClientFrameViewAsh::GetFrameHeaderOverlayImage(
} }
void BrowserNonClientFrameViewAsh::OnTabletStateChanged( void BrowserNonClientFrameViewAsh::OnTabletStateChanged(
chromeos::TabletState::State state) { display::TabletState state) {
switch (state) { switch (state) {
case chromeos::TabletState::State::kInTabletMode: case display::TabletState::kInTabletMode:
OnTabletModeToggled(true); OnTabletModeToggled(true);
return; return;
case chromeos::TabletState::State::kInClamshellMode: case display::TabletState::kInClamshellMode:
OnTabletModeToggled(false); OnTabletModeToggled(false);
return; return;
case chromeos::TabletState::State::kEnteringTabletMode: case display::TabletState::kEnteringTabletMode:
case chromeos::TabletState::State::kExitingTabletMode: case display::TabletState::kExitingTabletMode:
break; break;
} }
} }
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include "chromeos/ui/base/tablet_state.h" #include "chromeos/ui/base/tablet_state.h"
#include "ui/aura/window.h" #include "ui/aura/window.h"
#include "ui/aura/window_observer.h" #include "ui/aura/window_observer.h"
#include "ui/display/tablet_state.h"
namespace { namespace {
class WebAppNonClientFrameViewAshTest; class WebAppNonClientFrameViewAshTest;
...@@ -82,7 +83,7 @@ class BrowserNonClientFrameViewAsh ...@@ -82,7 +83,7 @@ class BrowserNonClientFrameViewAsh
gfx::ImageSkia GetFrameHeaderOverlayImage(bool active) override; gfx::ImageSkia GetFrameHeaderOverlayImage(bool active) override;
// chromeos::TabletState::Observer: // chromeos::TabletState::Observer:
void OnTabletStateChanged(chromeos::TabletState::State) override; void OnTabletStateChanged(display::TabletState state) override;
void OnTabletModeToggled(bool enabled); void OnTabletModeToggled(bool enabled);
......
...@@ -29,6 +29,7 @@ component("base") { ...@@ -29,6 +29,7 @@ component("base") {
"//base", "//base",
"//skia", "//skia",
"//ui/base", "//ui/base",
"//ui/display",
"//ui/gfx/geometry", "//ui/gfx/geometry",
] ]
} }
include_rules = [ include_rules = [
"+ui/base",
"+third_party/skia", "+third_party/skia",
"+ui/base",
"+ui/display",
"+ui/gfx", "+ui/gfx",
] ]
...@@ -35,11 +35,11 @@ void TabletState::RemoveObserver(Observer* observer) { ...@@ -35,11 +35,11 @@ void TabletState::RemoveObserver(Observer* observer) {
} }
bool TabletState::InTabletMode() const { bool TabletState::InTabletMode() const {
return state_ == TabletState::kInTabletMode || return state_ == display::TabletState::kInTabletMode ||
state_ == TabletState::kEnteringTabletMode; state_ == display::TabletState::kEnteringTabletMode;
} }
void TabletState::SetState(State state) { void TabletState::SetState(display::TabletState state) {
state_ = state; state_ = state;
for (auto& observer : observers_) for (auto& observer : observers_)
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "base/component_export.h" #include "base/component_export.h"
#include "base/observer_list.h" #include "base/observer_list.h"
#include "ui/display/tablet_state.h"
namespace ash { namespace ash {
class TabletModeController; class TabletModeController;
...@@ -23,18 +24,9 @@ class COMPONENT_EXPORT(CHROMEOS_UI_BASE) TabletState { ...@@ -23,18 +24,9 @@ class COMPONENT_EXPORT(CHROMEOS_UI_BASE) TabletState {
// Returns the singleton instance. // Returns the singleton instance.
static TabletState* Get(); static TabletState* Get();
// Tracks whether we are in the process of entering or exiting tablet mode.
// Used for logging histogram metrics.
enum State {
kInClamshellMode,
kEnteringTabletMode,
kInTabletMode,
kExitingTabletMode,
};
class COMPONENT_EXPORT(CHROMEOS_UI_BASE) Observer { class COMPONENT_EXPORT(CHROMEOS_UI_BASE) Observer {
public: public:
virtual void OnTabletStateChanged(State state) = 0; virtual void OnTabletStateChanged(display::TabletState state) = 0;
protected: protected:
virtual ~Observer() = default; virtual ~Observer() = default;
...@@ -51,18 +43,18 @@ class COMPONENT_EXPORT(CHROMEOS_UI_BASE) TabletState { ...@@ -51,18 +43,18 @@ class COMPONENT_EXPORT(CHROMEOS_UI_BASE) TabletState {
// Returns true if the system is in tablet mode. // Returns true if the system is in tablet mode.
bool InTabletMode() const; bool InTabletMode() const;
State state() const { return state_; } display::TabletState state() const { return state_; }
private: private:
// The friend class declaration here is used to control classes that can set // The friend class declaration here is used to control classes that can set
// the tablet state. // the tablet state.
friend class ash::TabletModeController; friend class ash::TabletModeController;
void SetState(State state); void SetState(display::TabletState state);
base::ObserverList<Observer>::Unchecked observers_; base::ObserverList<Observer>::Unchecked observers_;
State state_ = State::kInClamshellMode; display::TabletState state_ = display::TabletState::kInClamshellMode;
}; };
} // namespace chromeos } // namespace chromeos
......
...@@ -35,6 +35,7 @@ component("display") { ...@@ -35,6 +35,7 @@ component("display") {
"screen.h", "screen.h",
"screen_base.cc", "screen_base.cc",
"screen_base.h", "screen_base.h",
"tablet_state.h",
"unified_desktop_utils.cc", "unified_desktop_utils.cc",
"unified_desktop_utils.h", "unified_desktop_utils.h",
] ]
......
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef UI_DISPLAY_TABLET_STATE_H_
#define UI_DISPLAY_TABLET_STATE_H_
namespace display {
// Tracks whether we are in the process of entering or exiting tablet mode.
enum class TabletState {
kInClamshellMode,
kEnteringTabletMode,
kInTabletMode,
kExitingTabletMode,
};
} // namespace display
#endif // UI_DISPLAY_TABLET_STATE_H_
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