• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
4 
5 #ifndef CHROME_BROWSER_UI_WEBUI_EXTENSIONS_COMMAND_HANDLER_H_
6 #define CHROME_BROWSER_UI_WEBUI_EXTENSIONS_COMMAND_HANDLER_H_
7 
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"
12 
13 class Profile;
14 
15 namespace base {
16 class DictionaryValue;
17 class ListValue;
18 }
19 
20 namespace content {
21 class WebUIDataSource;
22 }
23 
24 namespace extensions {
25 class Command;
26 class CommandService;
27 class Extension;
28 class ExtensionRegistry;
29 
30 // The handler page for the Extension Commands UI overlay.
31 class CommandHandler : public content::WebUIMessageHandler,
32                        public ExtensionRegistryObserver {
33  public:
34   explicit CommandHandler(Profile* profile);
35   virtual ~CommandHandler();
36 
37   // Fetches the localized values for the page and deposits them into |source|.
38   void GetLocalizedValues(content::WebUIDataSource* source);
39 
40   // WebUIMessageHandler implementation.
41   virtual void RegisterMessages() OVERRIDE;
42 
43  private:
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;
51 
52    // Update the list of extension commands in the config UI.
53   void UpdateCommandDataOnPage();
54 
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);
59 
60   // Handles requests from javascript to set a particular keyboard shortcut
61   // for a given extension command.
62   void HandleSetExtensionCommandShortcut(const base::ListValue* args);
63 
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);
67 
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);
71 
72   // Fetches all known commands, active and inactive and returns them through
73   // |commands|.
74   void GetAllCommands(base::DictionaryValue* commands);
75 
76   Profile* profile_;
77 
78   ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
79       extension_registry_observer_;
80 
81   DISALLOW_COPY_AND_ASSIGN(CommandHandler);
82 };
83 
84 }  // namespace extensions
85 
86 #endif  // CHROME_BROWSER_UI_WEBUI_EXTENSIONS_COMMAND_HANDLER_H_
87