1// Copyright 2014 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 EXTENSIONS_BROWSER_NOTIFICATION_TYPES_H_
6#define EXTENSIONS_BROWSER_NOTIFICATION_TYPES_H_
7
8#include "content/public/browser/notification_types.h"
9
10namespace extensions {
11
12// Only notifications fired by the extensions module should be here. The
13// extensions module should not listen to notifications fired by the
14// embedder.
15enum NotificationType {
16  NOTIFICATION_EXTENSIONS_START = content::NOTIFICATION_CONTENT_END,
17
18  // Sent when a CrxInstaller finishes. Source is the CrxInstaller that
19  // finished. The details are the extension which was installed.
20  NOTIFICATION_CRX_INSTALLER_DONE = NOTIFICATION_EXTENSIONS_START,
21
22  // Sent when the known installed extensions have all been loaded.  In
23  // testing scenarios this can happen multiple times if extensions are
24  // unloaded and reloaded. The source is a BrowserContext*.
25  //
26  // DEPRECATED: Use ExtensionSystem::Get(browser_context)->ready().Post().
27  NOTIFICATION_EXTENSIONS_READY_DEPRECATED,
28
29  // Sent when a new extension is loaded. The details are an Extension, and
30  // the source is a BrowserContext*.
31  //
32  // DEPRECATED: Use ExtensionRegistry::AddObserver instead.
33  NOTIFICATION_EXTENSION_LOADED_DEPRECATED,
34
35  // An error occured while attempting to load an extension. The details are a
36  // string with details about why the load failed.
37  NOTIFICATION_EXTENSION_LOAD_ERROR,
38
39  // Sent when an extension is enabled. Under most circumstances, listeners will
40  // want to use ExtensionRegistryObserver::OnExtensionLoaded(). This
41  // notification is only fired when the "Enable" button is hit in the
42  // extensions tab. The details are an Extension, and the source is a
43  // BrowserContext*.
44  NOTIFICATION_EXTENSION_ENABLED,
45
46  // Sent when attempting to load a new extension, but they are disabled. The
47  // details are an Extension, and the source is a BrowserContext*.
48  NOTIFICATION_EXTENSION_UPDATE_DISABLED,
49
50  // Sent when an extension's permissions change. The details are an
51  // UpdatedExtensionPermissionsInfo, and the source is a BrowserContext*.
52  NOTIFICATION_EXTENSION_PERMISSIONS_UPDATED,
53
54  // Sent immediately before new extensions are installed or existing
55  // extensions are updated. The details are an InstalledExtensionInfo, and the
56  // source is a BrowserContext*.
57  //
58  // DEPRECATED: Use ExtensionRegistry::AddObserver instead.
59  NOTIFICATION_EXTENSION_WILL_BE_INSTALLED_DEPRECATED,
60
61  // An error occured during extension install. The details are a string with
62  // details about why the install failed.
63  NOTIFICATION_EXTENSION_INSTALL_ERROR,
64
65  // Sent when an extension has been uninstalled. The details are an Extension,
66  // and the source is a BrowserContext*.
67  //
68  // DEPRECATED: Use ExtensionRegistry::AddObserver instead.
69  NOTIFICATION_EXTENSION_UNINSTALLED_DEPRECATED,
70
71  // Sent when an extension uninstall is not allowed because the extension is
72  // not user manageable.  The details are an Extension, and the source is a
73  // BrowserContext*.
74  NOTIFICATION_EXTENSION_UNINSTALL_NOT_ALLOWED,
75
76  // Sent when an extension is unloaded. This happens when an extension is
77  // uninstalled or disabled. The details are an UnloadedExtensionInfo, and the
78  // source is a BrowserContext*.
79  //
80  // Note that when this notification is sent, the ExtensionService and the
81  // ExtensionRegistry have already removed the extension from their internal
82  // state.
83  //
84  // DEPRECATED: Use ExtensionRegistry::AddObserver instead.
85  NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED,
86
87  // Sent when an Extension object is removed from ExtensionService. This
88  // can happen when an extension is uninstalled, upgraded, or blacklisted,
89  // including all cases when the Extension is deleted. The details are an
90  // Extension, and the source is a BrowserContext*.
91  NOTIFICATION_EXTENSION_REMOVED,
92
93  // Sent after a new ExtensionHost* is created. The details are
94  // an ExtensionHost* and the source is a BrowserContext*.
95  NOTIFICATION_EXTENSION_HOST_CREATED,
96
97  // Sent before an ExtensionHost* is destroyed. The details are
98  // an ExtensionHost* and the source is a BrowserContext*.
99  NOTIFICATION_EXTENSION_HOST_DESTROYED,
100
101  // Sent by an ExtensionHost* when it has finished its initial page load,
102  // including any external resources.
103  // The details are an ExtensionHost* and the source is a BrowserContext*.
104  NOTIFICATION_EXTENSION_HOST_DID_STOP_LOADING,
105
106  // Sent by an ExtensionHost* when its render view requests closing through
107  // window.close(). The details are an ExtensionHost* and the source is a
108  // BrowserContext*.
109  NOTIFICATION_EXTENSION_HOST_VIEW_SHOULD_CLOSE,
110
111  // Sent when extension render process ends (whether it crashes or closes). The
112  // details are an ExtensionHost* and the source is a BrowserContext*. Not sent
113  // during browser shutdown.
114  NOTIFICATION_EXTENSION_PROCESS_TERMINATED,
115
116  // Sent when a background page is ready so other components can load.
117  NOTIFICATION_EXTENSION_BACKGROUND_PAGE_READY,
118
119  // Sent when the count of page actions has changed. Note that some of them
120  // may not apply to the current page. The source is a LocationBar*. There
121  // are no details.
122  NOTIFICATION_EXTENSION_PAGE_ACTION_COUNT_CHANGED,
123
124  // Sent when a browser action's visibility has changed. The source is the
125  // ExtensionPrefs* that changed, and the details are a std::string with the
126  // extension's ID.
127  NOTIFICATION_EXTENSION_BROWSER_ACTION_VISIBILITY_CHANGED,
128
129  // Sent when an extension command has been removed. The source is the
130  // BrowserContext* and the details is a std::pair of two std::string objects
131  // (an extension ID and the name of the command being removed).
132  NOTIFICATION_EXTENSION_COMMAND_REMOVED,
133
134  // Sent when an extension command has been added. The source is the
135  // BrowserContext* and the details is a std::pair of two std::string objects
136  // (an extension ID and the name of the command being added).
137  NOTIFICATION_EXTENSION_COMMAND_ADDED,
138
139  // Sent when an extension command shortcut for a browser action is activated
140  // on Mac. The source is the BrowserContext* and the details is a std::pair of
141  // a std::string containing an extension ID and a gfx::NativeWindow for the
142  // associated window.
143  NOTIFICATION_EXTENSION_COMMAND_BROWSER_ACTION_MAC,
144
145  // Sent when an extension command shortcut for a page action is activated
146  // on Mac. The source is the BrowserContext* and the details is a std::pair of
147  // a
148  // std::string containing an extension ID and a gfx::NativeWindow for the
149  // associated window.
150  NOTIFICATION_EXTENSION_COMMAND_PAGE_ACTION_MAC,
151
152  // A new extension RenderViewHost has been registered. The details are
153  // the RenderViewHost*.
154  NOTIFICATION_EXTENSION_VIEW_REGISTERED,
155
156  // An extension RenderViewHost has been unregistered. The details are
157  // the RenderViewHost*.
158  NOTIFICATION_EXTENSION_VIEW_UNREGISTERED,
159
160  // Sent by an extension to notify the browser about the results of a unit
161  // test.
162  NOTIFICATION_EXTENSION_TEST_PASSED,
163  NOTIFICATION_EXTENSION_TEST_FAILED,
164
165  // Sent by extension test javascript code, typically in a browser test. The
166  // sender is a std::string representing the extension id, and the details
167  // are a std::string with some message. This is particularly useful when you
168  // want to have C++ code wait for javascript code to do something.
169  NOTIFICATION_EXTENSION_TEST_MESSAGE,
170
171  // Sent when an bookmarks extensions API function was successfully invoked.
172  // The source is the id of the extension that invoked the function, and the
173  // details are a pointer to the const BookmarksFunction in question.
174  NOTIFICATION_EXTENSION_BOOKMARKS_API_INVOKED,
175
176  // Sent when a downloads extensions API event is fired. The source is an
177  // ExtensionDownloadsEventRouter::NotificationSource, and the details is a
178  // std::string containing json. Used for testing.
179  NOTIFICATION_EXTENSION_DOWNLOADS_EVENT,
180
181  // Sent when an omnibox extension has sent back omnibox suggestions. The
182  // source is the BrowserContext*, and the details are an
183  // extensions::api::omnibox::SendSuggestions::Params object.
184  NOTIFICATION_EXTENSION_OMNIBOX_SUGGESTIONS_READY,
185
186  // Sent when the user accepts the input in an extension omnibox keyword
187  // session. The source is the BrowserContext*.
188  NOTIFICATION_EXTENSION_OMNIBOX_INPUT_ENTERED,
189
190  // Sent when an omnibox extension has updated the default suggestion. The
191  // source is the BrowserContext*.
192  NOTIFICATION_EXTENSION_OMNIBOX_DEFAULT_SUGGESTION_CHANGED,
193
194  // Sent when the extension updater starts checking for updates to installed
195  // extensions. The source is a BrowserContext*, and there are no details.
196  NOTIFICATION_EXTENSION_UPDATING_STARTED,
197
198  // The extension updater found an update and will attempt to download and
199  // install it. The source is a BrowserContext*, and the details are an
200  // extensions::UpdateDetails object with the extension id and version of the
201  // found update.
202  NOTIFICATION_EXTENSION_UPDATE_FOUND,
203
204  // Sent when there are new user scripts available.  The details are a
205  // pointer to SharedMemory containing the new scripts.
206  NOTIFICATION_USER_SCRIPTS_UPDATED,
207  NOTIFICATION_EXTENSIONS_END
208};
209
210}  // namespace extensions
211
212#endif  // EXTENSIONS_BROWSER_NOTIFICATION_TYPES_H_
213