summaryrefslogtreecommitdiff
path: root/chromium/content/public/common/push_messaging_status.mojom
blob: b4a7d957dc39f76fc2071362d3aa72423cada187 (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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
// Copyright 2017 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.

module content.mojom;

// Push message event success/error codes for internal use & reporting in UMA.
// Enum values can be added, but must never be renumbered or deleted and reused.
enum PushDeliveryStatus {
  // The message was successfully delivered.
  SUCCESS = 0,

  // The message could not be delivered because the app id was unknown.
  UNKNOWN_APP_ID = 2,

  // The message could not be delivered because origin no longer has permission.
  PERMISSION_DENIED = 3,

  // The message could not be delivered because no service worker was found.
  NO_SERVICE_WORKER = 4,

  // The message could not be delivered because of a service worker error.
  SERVICE_WORKER_ERROR = 5,

  // The message was delivered, but the Service Worker passed a Promise to
  // event.waitUntil that got rejected.
  EVENT_WAITUNTIL_REJECTED = 6,

  // The message was delivered, but the Service Worker timed out processing it.
  TIMEOUT = 7,

  // NOTE: Do not renumber or delete these as that would confuse interpretation
  // of previously logged data. When making changes, also update the enum list
  // in tools/metrics/histograms/histograms.xml to keep it in sync.
};

// Push getregistration success/error codes for internal use & reporting in UMA.
// Enum values can be added, but must never be renumbered or deleted and reused.
enum PushGetRegistrationStatus {
  // Getting the registration was successful.
  SUCCESS = 0,

  // Getting the registration failed because the push service is not available.
  SERVICE_NOT_AVAILABLE = 1,

  // Getting the registration failed because we failed to read from storage.
  STORAGE_ERROR = 2,

  // Getting the registration failed because there is no push registration.
  REGISTRATION_NOT_FOUND = 3,

  // Getting the registration failed because the push service isn't available in
  // incognito, but we tell JS registration not found to not reveal incognito.
  INCOGNITO_REGISTRATION_NOT_FOUND = 4,

  // Getting the registration failed because public key could not be retrieved.
  // PUBLIC_KEY_UNAVAILABLE = 5,

  // Getting the registration failed because storage was corrupt.
  STORAGE_CORRUPT = 6,

  // Getting the registration failed because the renderer was shut down.
  RENDERER_SHUTDOWN = 7,

  // Getting the registration failed because there was no live service worker.
  NO_LIVE_SERVICE_WORKER = 8,

  // NOTE: Do not renumber or delete these as that would confuse interpretation
  // of previously logged data. When making changes, also update the enum list
  // in tools/metrics/histograms/histograms.xml to keep it in sync.
};

// Push registration success/error codes for internal use & reporting in UMA.
// Enum values can be added, but must never be renumbered or deleted and reused.
enum PushRegistrationStatus {
  // New successful registration (there was not yet a registration cached in
  // Service Worker storage, so the browser successfully registered with the
  // push service. This is likely to be a new push registration, though it's
  // possible that the push service had its own cache (for example if Chrome's
  // app data was cleared, we might have forgotten about a registration that the
  // push service still stores).
  SUCCESS_FROM_PUSH_SERVICE = 0,

  // Registration failed because there is no Service Worker.
  NO_SERVICE_WORKER = 1,

  // Registration failed because the push service is not available.
  SERVICE_NOT_AVAILABLE = 2,

  // Registration failed because the maximum number of registratons has been
  // reached.
  LIMIT_REACHED = 3,

  // Registration failed because permission was denied.
  PERMISSION_DENIED = 4,

  // Registration failed in the push service implemented by the embedder.
  SERVICE_ERROR = 5,

  // Registration failed because no sender id was provided by the page.
  NO_SENDER_ID = 6,

  // Registration succeeded, but we failed to persist it.
  STORAGE_ERROR = 7,

  // A successful registration was already cached in Service Worker storage.
  SUCCESS_FROM_CACHE = 8,

  // Registration failed due to a network error.
  NETWORK_ERROR = 9,

  // Registration failed because the push service is not available in incognito,
  // but we tell JS that permission was denied to not reveal incognito.
  INCOGNITO_PERMISSION_DENIED = 10,

  // Registration failed because the public key could not be retrieved.
  PUBLIC_KEY_UNAVAILABLE = 11,

  // Registration failed because the manifest could not be retrieved or was
  // empty.
  MANIFEST_EMPTY_OR_MISSING = 12,

  // Registration failed because a subscription with a different sender id
  // already exists.
  SENDER_ID_MISMATCH = 13,

  // Registration failed because storage was corrupt. It will be retried
  // automatically after unsubscribing to fix the corruption.
  STORAGE_CORRUPT = 14,

  // Registration failed because the renderer was shut down.
  RENDERER_SHUTDOWN = 15,

  // Registration was successful for a subscription that was already known by
  // the cache, but the push service returned a new subscription. This may
  // happen when a subscription is invalidated by the push service.
  SUCCESS_NEW_SUBSCRIPTION_FROM_PUSH_SERVICE = 16,

  // NOTE: Do not renumber or delete these as that would confuse interpretation
  // of previously logged data. When making changes, also update the enum list
  // in tools/metrics/histograms/histograms.xml to keep it in sync.
};

// Push unregistration reason for reporting in UMA. Enum values can be added,
// but must never be renumbered or deleted and reused.
enum PushUnregistrationReason {
  // Should never happen.
  UNKNOWN = 0,

  // Unregistering because the website called the unsubscribe API.
  JAVASCRIPT_API = 1,

  // Unregistering because the user manually revoked permission.
  PERMISSION_REVOKED = 2,

  // Automatic - incoming message's app id was unknown.
  DELIVERY_UNKNOWN_APP_ID = 3,

  // Automatic - incoming message's origin no longer has permission.
  DELIVERY_PERMISSION_DENIED = 4,

  // Automatic - incoming message's service worker was not found.
  DELIVERY_NO_SERVICE_WORKER = 5,

  // Automatic - GCM Store reset due to corruption.
  GCM_STORE_RESET = 6,

  // Unregistering because the service worker was unregistered.
  SERVICE_WORKER_UNREGISTERED = 7,

  // Website called subscribe API and the stored subscription was corrupt, so
  // it is being unsubscribed in order to attempt a clean subscription.
  SUBSCRIBE_STORAGE_CORRUPT = 8,

  // Website called getSubscription API and the stored subscription was corrupt.
  GET_SUBSCRIPTION_STORAGE_CORRUPT = 9,

  // The Service Worker database got wiped, most likely due to corruption.
  SERVICE_WORKER_DATABASE_WIPED = 10,

  // NOTE: Do not renumber or delete these as that would confuse interpretation
  // of previously logged data. When making changes, also update the enum list
  // in tools/metrics/histograms/histograms.xml to keep it in sync.
};


// Push unregistration success/error codes for internal use & reporting in UMA.
// Enum values can be added, but must never be renumbered or deleted and reused.
enum PushUnregistrationStatus {
  // The unregistration was successful.
  SUCCESS_UNREGISTERED = 0,

  // Unregistration was unnecessary, as the registration was not found.
  SUCCESS_WAS_NOT_REGISTERED = 1,

  // The unregistration did not happen because of a network error, but will be
  // retried until it succeeds.
  PENDING_NETWORK_ERROR = 2,

  // Unregistration failed because there is no Service Worker.
  NO_SERVICE_WORKER = 3,

  // Unregistration failed because the push service is not available.
  SERVICE_NOT_AVAILABLE = 4,

  // Unregistration failed in the push service implemented by the embedder, but
  // will be retried until it succeeds.
  PENDING_SERVICE_ERROR = 5,

  // Unregistration succeeded, but we failed to clear Service Worker storage.
  STORAGE_ERROR = 6,

  // Unregistration failed due to a network error.
  NETWORK_ERROR = 7,

  // NOTE: Do not renumber or delete these as that would confuse interpretation
  // of previously logged data. When making changes, also update the enum list
  // in tools/metrics/histograms/histograms.xml to keep it in sync.
};

// Push message user visible tracking for reporting in UMA. Enum values can be
// added, but must never be renumbered or deleted and reused.
enum PushUserVisibleStatus {
  // A notification was required and one (or more) were shown.
  REQUIRED_AND_SHOWN = 0,

  // A notification was not required, but one (or more) were shown anyway.
  NOT_REQUIRED_BUT_SHOWN = 1,

  // A notification was not required and none were shown.
  NOT_REQUIRED_AND_NOT_SHOWN = 2,

  // A notification was required, but none were shown. Fortunately, the site has
  // been well behaved recently so it was glossed over.
  REQUIRED_BUT_NOT_SHOWN_USED_GRACE = 3,

  // A notification was required, but none were shown. Unfortunately, the site
  // has run out of grace, so we had to show the user a generic notification.
  REQUIRED_BUT_NOT_SHOWN_GRACE_EXCEEDED = 4,

  // NOTE: Do not renumber or delete these as that would confuse interpretation
  // of previously logged data. When making changes, also update the enum list
  // in tools/metrics/histograms/histograms.xml to keep it in sync.
};