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

Side by Side Diff: ash/shelf/shelf_locking_manager.cc

Issue 2166043003: mash: Migrate ShelfLockingManager to ash/common. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Move ShelfLockingManager test access to Shelf. Created 4 years, 5 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 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 #include "ash/shelf/shelf_locking_manager.h"
6
7 #include "ash/common/session/session_state_delegate.h"
8 #include "ash/common/wm_shell.h"
9 #include "ash/shelf/shelf.h"
10 #include "ash/shell.h"
11 #include "ash/wm/lock_state_controller.h"
12
13 namespace ash {
14
15 ShelfLockingManager::ShelfLockingManager(Shelf* shelf) : shelf_(shelf) {
16 Shell* shell = Shell::GetInstance();
17 shell->lock_state_controller()->AddObserver(this);
18 SessionStateDelegate* delegate = WmShell::Get()->GetSessionStateDelegate();
19 session_locked_ =
20 delegate->GetSessionState() != SessionStateDelegate::SESSION_STATE_ACTIVE;
21 screen_locked_ = delegate->IsScreenLocked();
22 delegate->AddSessionStateObserver(this);
23 WmShell::Get()->AddShellObserver(this);
24 }
25
26 ShelfLockingManager::~ShelfLockingManager() {
27 Shell::GetInstance()->lock_state_controller()->RemoveObserver(this);
28 WmShell::Get()->GetSessionStateDelegate()->RemoveSessionStateObserver(this);
29 WmShell::Get()->RemoveShellObserver(this);
30 }
31
32 void ShelfLockingManager::OnLockStateChanged(bool locked) {
33 screen_locked_ = locked;
34 UpdateLockedState();
35 }
36
37 void ShelfLockingManager::SessionStateChanged(
38 SessionStateDelegate::SessionState state) {
39 session_locked_ = state != SessionStateDelegate::SESSION_STATE_ACTIVE;
40 UpdateLockedState();
41 }
42
43 void ShelfLockingManager::OnLockStateEvent(EventType event) {
44 // Lock when the animation starts, ignoring pre-lock. There's no unlock event.
45 screen_locked_ |= event == EVENT_LOCK_ANIMATION_STARTED;
46 UpdateLockedState();
47 }
48
49 void ShelfLockingManager::UpdateLockedState() {
50 const ShelfAlignment alignment = shelf_->alignment();
51 if (is_locked() && alignment != SHELF_ALIGNMENT_BOTTOM_LOCKED) {
52 stored_alignment_ = alignment;
53 shelf_->SetAlignment(SHELF_ALIGNMENT_BOTTOM_LOCKED);
54 } else if (!is_locked() && alignment == SHELF_ALIGNMENT_BOTTOM_LOCKED) {
55 shelf_->SetAlignment(stored_alignment_);
56 }
57 }
58
59 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698