• 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 "content/public/browser/notification_observer.h"
10 #include "content/public/browser/notification_registrar.h"
11 #include "content/public/browser/web_ui_message_handler.h"
12 
13 namespace base {
14 class DictionaryValue;
15 class ListValue;
16 }
17 
18 namespace content {
19 class WebUIDataSource;
20 }
21 
22 namespace extensions {
23 class Command;
24 class CommandService;
25 }
26 
27 class Extension;
28 class Profile;
29 
30 namespace extensions {
31 
32 // The handler page for the Extension Commands UI overlay.
33 class CommandHandler : public content::WebUIMessageHandler,
34                        public content::NotificationObserver {
35  public:
36   explicit CommandHandler(Profile* profile);
37   virtual ~CommandHandler();
38 
39   // Fetches the localized values for the page and deposits them into |source|.
40   void GetLocalizedValues(content::WebUIDataSource* source);
41 
42   // WebUIMessageHandler implementation.
43   virtual void RegisterMessages() OVERRIDE;
44 
45   // NotificationObserver implementation.
46   virtual void Observe(int type,
47                        const content::NotificationSource& source,
48                        const content::NotificationDetails& details) OVERRIDE;
49 
50  private:
51    // Update the list of extension commands in the config UI.
52   void UpdateCommandDataOnPage();
53 
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);
58 
59   // Handles requests from javascript to set a particular keyboard shortcut
60   // for a given extension command.
61   void HandleSetExtensionCommandShortcut(const base::ListValue* args);
62 
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);
66 
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);
70 
71   // Fetches all known commands, active and inactive and returns them through
72   // |commands|.
73   void GetAllCommands(base::DictionaryValue* commands);
74 
75   content::NotificationRegistrar registrar_;
76 
77   Profile* profile_;
78 
79   DISALLOW_COPY_AND_ASSIGN(CommandHandler);
80 };
81 
82 }  // namespace extensions
83 
84 #endif  // CHROME_BROWSER_UI_WEBUI_EXTENSIONS_COMMAND_HANDLER_H_
85