command.h revision 4e180b6a0b4720a9b8e9e959a882386f690f08ff
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_COMMON_EXTENSIONS_COMMAND_H_
6#define CHROME_COMMON_EXTENSIONS_COMMAND_H_
7
8#include <map>
9#include <string>
10
11#include "base/strings/string16.h"
12#include "ui/base/accelerators/accelerator.h"
13
14namespace base {
15class DictionaryValue;
16}
17
18namespace extensions {
19class Extension;
20}
21
22namespace extensions {
23
24class Command {
25 public:
26  Command();
27  Command(const std::string& command_name,
28          const string16& description,
29          const std::string& accelerator,
30          bool global);
31  ~Command();
32
33  // The platform value for the Command.
34  static std::string CommandPlatform();
35
36  // Parse a string as an accelerator. If the accelerator is unparsable then
37  // a generic ui::Accelerator object will be returns (with key_code Unknown).
38  static ui::Accelerator StringToAccelerator(const std::string& accelerator,
39                                             const std::string& command_name);
40
41  // Returns the string representation of an accelerator without localizing the
42  // shortcut text (like accelerator::GetShortcutText() does).
43  static std::string AcceleratorToString(const ui::Accelerator& accelerator);
44
45  // Parse the command.
46  bool Parse(const base::DictionaryValue* command,
47             const std::string& command_name,
48             int index,
49             string16* error);
50
51  // Convert a Command object from |extension| to a DictionaryValue.
52  // |active| specifies whether the command is active or not.
53  base::DictionaryValue* ToValue(
54      const Extension* extension, bool active) const;
55
56  // Accessors:
57  const std::string& command_name() const { return command_name_; }
58  const ui::Accelerator& accelerator() const { return accelerator_; }
59  const string16& description() const { return description_; }
60  bool global() const { return global_; }
61
62  // Setter:
63  void set_accelerator(ui::Accelerator accelerator) {
64    accelerator_ = accelerator;
65  }
66
67 private:
68  std::string command_name_;
69  ui::Accelerator accelerator_;
70  string16 description_;
71  bool global_;
72};
73
74// A mapping of command name (std::string) to a command object.
75typedef std::map<std::string, Command> CommandMap;
76
77}  // namespace extensions
78
79#endif  // CHROME_COMMON_EXTENSIONS_COMMAND_H_
80