• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "chrome/browser/notifications/screen_lock_notification_blocker.h"
6 
7 #include "base/time/time.h"
8 #include "chrome/browser/idle.h"
9 
10 namespace {
11 const int kUserStatePollingIntervalSeconds = 1;
12 }
13 
ScreenLockNotificationBlocker(message_center::MessageCenter * message_center)14 ScreenLockNotificationBlocker::ScreenLockNotificationBlocker(
15     message_center::MessageCenter* message_center)
16     : NotificationBlocker(message_center),
17       is_locked_(false) {
18 }
19 
~ScreenLockNotificationBlocker()20 ScreenLockNotificationBlocker::~ScreenLockNotificationBlocker() {
21 }
22 
CheckState()23 void ScreenLockNotificationBlocker::CheckState() {
24   bool was_locked = is_locked_;
25   is_locked_ = CheckIdleStateIsLocked();
26   if (is_locked_ != was_locked)
27     NotifyBlockingStateChanged();
28 
29   if (is_locked_) {
30     timer_.Start(FROM_HERE,
31                  base::TimeDelta::FromSeconds(kUserStatePollingIntervalSeconds),
32                  this,
33                  &ScreenLockNotificationBlocker::CheckState);
34   }
35 }
36 
ShouldShowNotificationAsPopup(const message_center::NotifierId & notifier_id) const37 bool ScreenLockNotificationBlocker::ShouldShowNotificationAsPopup(
38     const message_center::NotifierId& notifier_id) const {
39   return !is_locked_;
40 }
41