blob: d4629fc6f4b68891d4de58e8047cc71e9cc5bf87 [file] [log] [blame]
bmalcolmf8395c562016-09-29 22:49:141// Copyright 2016 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_WEB_NOTIFICATION_DELEGATE_H_
6#define CHROME_BROWSER_NOTIFICATIONS_WEB_NOTIFICATION_DELEGATE_H_
7
8#include <string>
9
bmalcolm989c73242016-10-10 17:42:4510#include "base/feature_list.h"
bmalcolmf8395c562016-09-29 22:49:1411#include "base/macros.h"
12#include "chrome/browser/notifications/notification_delegate.h"
13#include "url/gurl.h"
14
15namespace content {
16class BrowserContext;
17}
18
bmalcolm989c73242016-10-10 17:42:4519namespace features {
20
21extern const base::Feature kAllowFullscreenWebNotificationsFeature;
22
23} // namespace features
24
bmalcolmf8395c562016-09-29 22:49:1425// Base class for the PersistentNotificationDelegate and the
26// NotificationObjectProxy. All common functionality for displaying web
27// notifications is found here.
28// TODO(peter, crbug.com/596161): Migrate this functionality offered by the
29// delegate to the NotificationDisplayService.
30class WebNotificationDelegate : public NotificationDelegate {
31 public:
32 // NotificationDelegate implementation.
33 std::string id() const override;
peter9b6e3c72017-04-10 18:35:4534 bool SettingsClick() override;
bmalcolmf8395c562016-09-29 22:49:1435 bool ShouldDisplaySettingsButton() override;
36 bool ShouldDisplayOverFullscreen() const override;
37
38 protected:
39 WebNotificationDelegate(content::BrowserContext* browser_context,
40 const std::string& notification_id,
41 const GURL& origin);
42
43 ~WebNotificationDelegate() override;
44
45 content::BrowserContext* browser_context() { return browser_context_; }
46 const GURL& origin() { return origin_; }
47
48 private:
49 content::BrowserContext* browser_context_;
50 std::string notification_id_;
51 GURL origin_;
52
53 DISALLOW_COPY_AND_ASSIGN(WebNotificationDelegate);
54};
55
56#endif // CHROME_BROWSER_NOTIFICATIONS_WEB_NOTIFICATION_DELEGATE_H_