blob: 5429c12e2b8c4c8d42efae1b36640c6cb814a4d2 [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/fullscreen_notification_blocker.h"
#include "base/metrics/histogram_macros.h"
#include "base/time/time.h"
#include "chrome/browser/fullscreen.h"
namespace {
const int kFullscreenStatePollingIntervalSeconds = 1;
}
FullscreenNotificationBlocker::FullscreenNotificationBlocker(
message_center::MessageCenter* message_center)
: NotificationBlocker(message_center),
is_fullscreen_mode_(false) {
}
FullscreenNotificationBlocker::~FullscreenNotificationBlocker() {
}
void FullscreenNotificationBlocker::CheckState() {
bool was_fullscreen_mode = is_fullscreen_mode_;
is_fullscreen_mode_ = IsFullScreenMode();
if (is_fullscreen_mode_ != was_fullscreen_mode)
NotifyBlockingStateChanged();
if (is_fullscreen_mode_) {
timer_.Start(
FROM_HERE,
base::TimeDelta::FromSeconds(kFullscreenStatePollingIntervalSeconds),
this, &FullscreenNotificationBlocker::CheckState);
}
}
bool FullscreenNotificationBlocker::ShouldShowNotificationAsPopup(
const message_center::Notification& notification) const {
bool enabled =
!is_fullscreen_mode_ || (notification.fullscreen_visibility() !=
message_center::FullscreenVisibility::NONE);
if (enabled && !is_fullscreen_mode_) {
UMA_HISTOGRAM_ENUMERATION("Notifications.Display_Windowed",
notification.notifier_id().type);
}
return enabled;
}