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
10namespace {
11const int kUserStatePollingIntervalSeconds = 1;
12}
13
14ScreenLockNotificationBlocker::ScreenLockNotificationBlocker(
15    message_center::MessageCenter* message_center)
16    : NotificationBlocker(message_center),
17      is_locked_(false) {
18}
19
20ScreenLockNotificationBlocker::~ScreenLockNotificationBlocker() {
21}
22
23void 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
37bool ScreenLockNotificationBlocker::ShouldShowNotificationAsPopup(
38    const message_center::NotifierId& notifier_id) const {
39  return !is_locked_;
40}
41