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