| OLD | NEW |
| (Empty) |
| 1 // Copyright 2014 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 | |
| 5 #ifndef ASH_SYSTEM_ROTATION_TRAY_ROTATION_LOCK_H_ | |
| 6 #define ASH_SYSTEM_ROTATION_TRAY_ROTATION_LOCK_H_ | |
| 7 | |
| 8 #include "ash/common/shell_observer.h" | |
| 9 #include "ash/display/screen_orientation_controller_chromeos.h" | |
| 10 #include "ash/system/tray/tray_image_item.h" | |
| 11 #include "base/macros.h" | |
| 12 | |
| 13 namespace ash { | |
| 14 | |
| 15 // TrayRotationLock is a provider of views for the SystemTray. Both a tray view | |
| 16 // and a default view are provided. Each view indicates the current state of | |
| 17 // the rotation lock for the display which it appears on. The default view can | |
| 18 // be interacted with, it toggles the state of the rotation lock. | |
| 19 // TrayRotationLock is only available on the primary display. | |
| 20 class ASH_EXPORT TrayRotationLock | |
| 21 : public TrayImageItem, | |
| 22 public ScreenOrientationController::Observer, | |
| 23 public ShellObserver { | |
| 24 public: | |
| 25 explicit TrayRotationLock(SystemTray* system_tray); | |
| 26 ~TrayRotationLock() override; | |
| 27 | |
| 28 // ScreenOrientationController::Observer: | |
| 29 void OnRotationLockChanged(bool rotation_locked) override; | |
| 30 | |
| 31 // SystemTrayItem: | |
| 32 views::View* CreateDefaultView(LoginStatus status) override; | |
| 33 | |
| 34 // ShellObserver: | |
| 35 void OnMaximizeModeStarted() override; | |
| 36 void OnMaximizeModeEnded() override; | |
| 37 | |
| 38 // TrayImageItem: | |
| 39 void DestroyTrayView() override; | |
| 40 | |
| 41 protected: | |
| 42 // TrayImageItem: | |
| 43 bool GetInitialVisibility() override; | |
| 44 | |
| 45 private: | |
| 46 friend class TrayRotationLockTest; | |
| 47 | |
| 48 // True if |on_primary_display_|, maximize mode is enabled, and rotation is | |
| 49 // locked. | |
| 50 bool ShouldBeVisible(); | |
| 51 | |
| 52 // True if this is owned by a SystemTray on the primary display. | |
| 53 bool OnPrimaryDisplay() const; | |
| 54 | |
| 55 // Removes TrayRotationLock as a ScreenOrientationController::Observer if | |
| 56 // currently observing. | |
| 57 void StopObservingRotation(); | |
| 58 | |
| 59 DISALLOW_COPY_AND_ASSIGN(TrayRotationLock); | |
| 60 }; | |
| 61 | |
| 62 } // namespace ash | |
| 63 | |
| 64 #endif // ASH_SYSTEM_ROTATION_TRAY_ROTATION_LOCK_H_ | |
| OLD | NEW |