Home | History | Annotate | Download | only in extensions
      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