Home | History | Annotate | Download | only in power
      1 // Copyright (c) 2012 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 "chrome/browser/chromeos/power/brightness_observer.h"
      6 
      7 #include "ash/shell.h"
      8 #include "ash/wm/power_button_controller.h"
      9 #include "chrome/browser/chromeos/login/user_manager.h"
     10 #include "chrome/browser/extensions/api/system_private/system_private_api.h"
     11 #include "chrome/browser/lifetime/application_lifetime.h"
     12 #include "chromeos/dbus/dbus_thread_manager.h"
     13 
     14 namespace chromeos {
     15 
     16 BrightnessObserver::BrightnessObserver() {
     17   DBusThreadManager::Get()->GetPowerManagerClient()->AddObserver(this);
     18 }
     19 
     20 BrightnessObserver::~BrightnessObserver() {
     21   DBusThreadManager::Get()->GetPowerManagerClient()->RemoveObserver(this);
     22 }
     23 
     24 void BrightnessObserver::BrightnessChanged(int level, bool user_initiated) {
     25   extensions::DispatchBrightnessChangedEvent(level, user_initiated);
     26   ash::Shell::GetInstance()->power_button_controller()->
     27       OnScreenBrightnessChanged(static_cast<double>(level));
     28 
     29   // When the user is idle, the power manager dims the screen, turns off the
     30   // screen and eventually locks the screen (if screen lock on idle and suspend
     31   // is enabled). For Public Accounts, the session should be terminated instead
     32   // as soon as the screen turns off.
     33   // This implementation will be superseded after a revamp of the power manager
     34   // is complete, see crbug.com/161267.
     35   if (UserManager::Get()->IsLoggedInAsPublicAccount() &&
     36       !level && !user_initiated) {
     37     chrome::AttemptUserExit();
     38   }
     39 }
     40 
     41 }  // namespace chromeos
     42