Home | History | Annotate | Download | only in power
      1 // Copyright 2013 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/system/chromeos/power/video_activity_notifier.h"
      6 
      7 #include "ash/shell.h"
      8 #include "chromeos/dbus/dbus_thread_manager.h"
      9 #include "chromeos/dbus/power_manager_client.h"
     10 
     11 namespace ash {
     12 namespace {
     13 
     14 // Minimum number of seconds between notifications.
     15 const int kNotifyIntervalSec = 5;
     16 
     17 }  // namespace
     18 
     19 VideoActivityNotifier::VideoActivityNotifier(VideoDetector* detector)
     20     : detector_(detector),
     21       screen_is_locked_(false) {
     22   detector_->AddObserver(this);
     23   ash::Shell::GetInstance()->AddShellObserver(this);
     24 }
     25 
     26 VideoActivityNotifier::~VideoActivityNotifier() {
     27   ash::Shell::GetInstance()->RemoveShellObserver(this);
     28   detector_->RemoveObserver(this);
     29 }
     30 
     31 void VideoActivityNotifier::OnVideoDetected(bool is_fullscreen) {
     32   if (screen_is_locked_)
     33     return;
     34 
     35   base::TimeTicks now = base::TimeTicks::Now();
     36   if (last_notify_time_.is_null() ||
     37       (now - last_notify_time_).InSeconds() >= kNotifyIntervalSec) {
     38     chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->
     39         NotifyVideoActivity(is_fullscreen);
     40     last_notify_time_ = now;
     41   }
     42 }
     43 
     44 void VideoActivityNotifier::OnLockStateChanged(bool locked) {
     45   screen_is_locked_ = locked;
     46 }
     47 
     48 }  // namespace ash
     49