blob: 520153370669a427809f8c68f604f3bad9293629 [file] [log] [blame]
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/notifications/screen_lock_notification_blocker.h"
#include "base/time/time.h"
#include "chrome/browser/idle.h"
namespace {
const int kUserStatePollingIntervalSeconds = 1;
}
ScreenLockNotificationBlocker::ScreenLockNotificationBlocker(
message_center::MessageCenter* message_center)
: NotificationBlocker(message_center),
is_locked_(false) {
}
ScreenLockNotificationBlocker::~ScreenLockNotificationBlocker() {
}
void ScreenLockNotificationBlocker::CheckState() {
bool was_locked = is_locked_;
is_locked_ = CheckIdleStateIsLocked();
if (is_locked_ != was_locked) {
FOR_EACH_OBSERVER(
NotificationBlocker::Observer, observers(), OnBlockingStateChanged());
}
if (is_locked_) {
timer_.Start(FROM_HERE,
base::TimeDelta::FromSeconds(kUserStatePollingIntervalSeconds),
this,
&ScreenLockNotificationBlocker::CheckState);
}
}
bool ScreenLockNotificationBlocker::ShouldShowNotificationAsPopup(
const message_center::NotifierId& notifier_id) const {
return !is_locked_;
}