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 virtual ~CommandHandler();
37 // Fetches the localized values for the page and deposits them into |source|.
38 void GetLocalizedValues(content::WebUIDataSource
* source
);
40 // WebUIMessageHandler implementation.
41 virtual void RegisterMessages() override
;
44 // ExtensionRegistryObserver implementation.
45 virtual void OnExtensionLoaded(content::BrowserContext
* browser_context
,
46 const Extension
* extension
) override
;
47 virtual void OnExtensionUnloaded(
48 content::BrowserContext
* browser_context
,
49 const Extension
* extension
,
50 UnloadedExtensionInfo::Reason reason
) override
;
52 // Update the list of extension commands in the config UI.
53 void UpdateCommandDataOnPage();
55 // Handles requests from javascript to fetch the extensions data, including
56 // the commands it contains.
57 // Replies back through: ExtensionCommandsOverlay.returnExtensionsData.
58 void HandleRequestExtensionsData(const base::ListValue
* args
);
60 // Handles requests from javascript to set a particular keyboard shortcut
61 // for a given extension command.
62 void HandleSetExtensionCommandShortcut(const base::ListValue
* args
);
64 // Handles requests from javascript to change the scope of a particular
65 // keyboard shortcut for a given extension command.
66 void HandleSetCommandScope(const base::ListValue
* args
);
68 // Handles requests from javascript to temporarily disable general Chrome
69 // shortcut handling while the web page is capturing which shortcut to use.
70 void HandleSetShortcutHandlingSuspended(const base::ListValue
* args
);
72 // Fetches all known commands, active and inactive and returns them through
74 void GetAllCommands(base::DictionaryValue
* commands
);
78 ScopedObserver
<ExtensionRegistry
, ExtensionRegistryObserver
>
79 extension_registry_observer_
;
81 DISALLOW_COPY_AND_ASSIGN(CommandHandler
);
84 } // namespace extensions
86 #endif // CHROME_BROWSER_UI_WEBUI_EXTENSIONS_COMMAND_HANDLER_H_