1 // Copyright (c) 2012 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.
5 #ifndef CHROME_BROWSER_UI_WEBUI_EXTENSIONS_COMMAND_HANDLER_H_
6 #define CHROME_BROWSER_UI_WEBUI_EXTENSIONS_COMMAND_HANDLER_H_
8 #include "base/compiler_specific.h"
9 #include "base/scoped_observer.h"
10 #include "content/public/browser/web_ui_message_handler.h"
11 #include "extensions/browser/extension_registry_observer.h"
16 class DictionaryValue
;
21 class WebUIDataSource
;
24 namespace extensions
{
28 class ExtensionRegistry
;
30 // The handler page for the Extension Commands UI overlay.
31 class CommandHandler
: public content::WebUIMessageHandler
,
32 public ExtensionRegistryObserver
{
34 explicit CommandHandler(Profile
* profile
);
35 ~CommandHandler() override
;
37 // Fetches the localized values for the page and deposits them into |source|.
38 void GetLocalizedValues(content::WebUIDataSource
* source
);
40 // WebUIMessageHandler implementation.
41 void RegisterMessages() override
;
44 // ExtensionRegistryObserver implementation.
45 void OnExtensionLoaded(content::BrowserContext
* browser_context
,
46 const Extension
* extension
) override
;
47 void OnExtensionUnloaded(content::BrowserContext
* browser_context
,
48 const Extension
* extension
,
49 UnloadedExtensionInfo::Reason reason
) override
;
51 // Update the list of extension commands in the config UI.
52 void UpdateCommandDataOnPage();
54 // Handles requests from javascript to fetch the extensions data, including
55 // the commands it contains.
56 // Replies back through: ExtensionCommandsOverlay.returnExtensionsData.
57 void HandleRequestExtensionsData(const base::ListValue
* args
);
59 // Handles requests from javascript to set a particular keyboard shortcut
60 // for a given extension command.
61 void HandleSetExtensionCommandShortcut(const base::ListValue
* args
);
63 // Handles requests from javascript to change the scope of a particular
64 // keyboard shortcut for a given extension command.
65 void HandleSetCommandScope(const base::ListValue
* args
);
67 // Handles requests from javascript to temporarily disable general Chrome
68 // shortcut handling while the web page is capturing which shortcut to use.
69 void HandleSetShortcutHandlingSuspended(const base::ListValue
* args
);
71 // Fetches all known commands, active and inactive and returns them through
73 void GetAllCommands(base::DictionaryValue
* commands
);
77 ScopedObserver
<ExtensionRegistry
, ExtensionRegistryObserver
>
78 extension_registry_observer_
;
80 DISALLOW_COPY_AND_ASSIGN(CommandHandler
);
83 } // namespace extensions
85 #endif // CHROME_BROWSER_UI_WEBUI_EXTENSIONS_COMMAND_HANDLER_H_