blob: bd1b511c6012ccacc094b9bc60fca9eefbe4016f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
// Copyright (c) 2012 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.
#ifndef CHROME_BROWSER_EXTENSIONS_API_NOTIFICATIONS_NOTIFICATIONS_API_H_
#define CHROME_BROWSER_EXTENSIONS_API_NOTIFICATIONS_NOTIFICATIONS_API_H_
#include <string>
#include "base/memory/ref_counted.h"
#include "chrome/browser/extensions/chrome_extension_function.h"
#include "chrome/common/extensions/api/notifications.h"
#include "extensions/browser/extension_function.h"
#include "ui/message_center/notification_types.h"
class Notification;
namespace extensions {
class NotificationsApiFunction : public ChromeAsyncExtensionFunction {
public:
// Whether the current extension and channel allow the API. Public for
// testing.
bool IsNotificationsApiAvailable();
protected:
NotificationsApiFunction();
virtual ~NotificationsApiFunction();
bool CreateNotification(const std::string& id,
api::notifications::NotificationOptions* options);
bool UpdateNotification(const std::string& id,
api::notifications::NotificationOptions* options,
Notification* notification);
bool IsNotificationsApiEnabled() const;
bool AreExtensionNotificationsAllowed() const;
// Returns true if the API function is still allowed to run even when the
// notifications for a notifier have been disabled.
virtual bool CanRunWhileDisabled() const;
// Called inside of RunAsync.
virtual bool RunNotificationsApi() = 0;
// UITHreadExtensionFunction:
virtual bool RunAsync() OVERRIDE;
message_center::NotificationType MapApiTemplateTypeToType(
api::notifications::TemplateType type);
};
class NotificationsCreateFunction : public NotificationsApiFunction {
public:
NotificationsCreateFunction();
// NotificationsApiFunction:
virtual bool RunNotificationsApi() OVERRIDE;
protected:
virtual ~NotificationsCreateFunction();
private:
scoped_ptr<api::notifications::Create::Params> params_;
DECLARE_EXTENSION_FUNCTION("notifications.create", NOTIFICATIONS_CREATE)
};
class NotificationsUpdateFunction : public NotificationsApiFunction {
public:
NotificationsUpdateFunction();
// NotificationsApiFunction:
virtual bool RunNotificationsApi() OVERRIDE;
protected:
virtual ~NotificationsUpdateFunction();
private:
scoped_ptr<api::notifications::Update::Params> params_;
DECLARE_EXTENSION_FUNCTION("notifications.update", NOTIFICATIONS_UPDATE)
};
class NotificationsClearFunction : public NotificationsApiFunction {
public:
NotificationsClearFunction();
// NotificationsApiFunction:
virtual bool RunNotificationsApi() OVERRIDE;
protected:
virtual ~NotificationsClearFunction();
private:
scoped_ptr<api::notifications::Clear::Params> params_;
DECLARE_EXTENSION_FUNCTION("notifications.clear", NOTIFICATIONS_CLEAR)
};
class NotificationsGetAllFunction : public NotificationsApiFunction {
public:
NotificationsGetAllFunction();
// NotificationsApiFunction:
virtual bool RunNotificationsApi() OVERRIDE;
protected:
virtual ~NotificationsGetAllFunction();
private:
DECLARE_EXTENSION_FUNCTION("notifications.getAll", NOTIFICATIONS_GET_ALL)
};
class NotificationsGetPermissionLevelFunction
: public NotificationsApiFunction {
public:
NotificationsGetPermissionLevelFunction();
// NotificationsApiFunction:
virtual bool CanRunWhileDisabled() const OVERRIDE;
virtual bool RunNotificationsApi() OVERRIDE;
protected:
virtual ~NotificationsGetPermissionLevelFunction();
private:
DECLARE_EXTENSION_FUNCTION("notifications.getPermissionLevel",
NOTIFICATIONS_GET_ALL)
};
} // namespace extensions
#endif // CHROME_BROWSER_EXTENSIONS_API_NOTIFICATIONS_NOTIFICATIONS_API_H_
|