158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// found in the LICENSE file. 458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/notifications/screen_lock_notification_blocker.h" 658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "base/time/time.h" 858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/idle.h" 958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace { 1158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)const int kUserStatePollingIntervalSeconds = 1; 1258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 1358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)ScreenLockNotificationBlocker::ScreenLockNotificationBlocker( 1558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) message_center::MessageCenter* message_center) 1658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) : NotificationBlocker(message_center), 1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) is_locked_(false) { 1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)ScreenLockNotificationBlocker::~ScreenLockNotificationBlocker() { 2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 2258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 2358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)void ScreenLockNotificationBlocker::CheckState() { 2458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) bool was_locked = is_locked_; 2558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) is_locked_ = CheckIdleStateIsLocked(); 26a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) if (is_locked_ != was_locked) 27a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) NotifyBlockingStateChanged(); 2858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 2958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) if (is_locked_) { 3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) timer_.Start(FROM_HERE, 3158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) base::TimeDelta::FromSeconds(kUserStatePollingIntervalSeconds), 3258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) this, 3358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) &ScreenLockNotificationBlocker::CheckState); 3458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) } 3558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 3658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 3758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)bool ScreenLockNotificationBlocker::ShouldShowNotificationAsPopup( 3858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const message_center::NotifierId& notifier_id) const { 3958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) return !is_locked_; 4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 41