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#ifndef CHROME_BROWSER_NOTIFICATIONS_FULLSCREEN_NOTIFICATION_BLOCKER_H_
6#define CHROME_BROWSER_NOTIFICATIONS_FULLSCREEN_NOTIFICATION_BLOCKER_H_
7
8#include "base/basictypes.h"
9#include "content/public/browser/notification_observer.h"
10#include "content/public/browser/notification_registrar.h"
11#include "ui/message_center/notification_blocker.h"
12
13// A notification blocker which checks the fullscreen state.
14class FullscreenNotificationBlocker
15    : public message_center::NotificationBlocker,
16      public content::NotificationObserver {
17 public:
18  explicit FullscreenNotificationBlocker(
19      message_center::MessageCenter* message_center);
20  virtual ~FullscreenNotificationBlocker();
21
22  bool is_fullscreen_mode() const { return is_fullscreen_mode_; }
23
24  // message_center::NotificationBlocker overrides:
25  virtual void CheckState() OVERRIDE;
26  virtual bool ShouldShowNotificationAsPopup(
27      const message_center::NotifierId& notifier_id) const OVERRIDE;
28
29 private:
30  // content::NotificationObserver override.
31  virtual void Observe(int type,
32                       const content::NotificationSource& source,
33                       const content::NotificationDetails& details) OVERRIDE;
34
35  bool is_fullscreen_mode_;
36
37  content::NotificationRegistrar registrar_;
38
39  DISALLOW_COPY_AND_ASSIGN(FullscreenNotificationBlocker);
40};
41
42#endif  // CHROME_BROWSER_NOTIFICATIONS_FULLSCREEN_NOTIFICATION_BLOCKER_H_
43