#ifndef CHROME_BROWSER_UI_COCOA_ACCELERATORS_COCOA_H_
#define CHROME_BROWSER_UI_COCOA_ACCELERATORS_COCOA_H_
+#import <Cocoa/Cocoa.h>
+
#include <map>
+#include <vector>
+#include "base/gtest_prod_util.h"
#include "ui/base/accelerators/accelerator.h"
template <typename T> struct DefaultSingletonTraits;
class AcceleratorsCocoa {
public:
typedef std::map<int, ui::Accelerator> AcceleratorMap;
+ typedef std::vector<ui::Accelerator> AcceleratorVector;
typedef AcceleratorMap::const_iterator const_iterator;
const_iterator const begin() { return accelerators_.begin(); }
// Returns NULL if there is no accelerator for the command.
const ui::Accelerator* GetAcceleratorForCommand(int command_id);
+ // Searches the list of accelerators without a command_id for an accelerator
+ // that matches the given |key_equivalent| and |modifiers|.
+ const ui::Accelerator* GetAcceleratorForHotKey(NSString* key_equivalent,
+ NSUInteger modifiers) const;
// Returns the singleton instance.
static AcceleratorsCocoa* GetInstance();
private:
friend struct DefaultSingletonTraits<AcceleratorsCocoa>;
+ FRIEND_TEST_ALL_PREFIXES(AcceleratorsCocoaBrowserTest,
+ MappingAcceleratorsInMainMenu);
AcceleratorsCocoa();
~AcceleratorsCocoa();
+ // A map from command_id to Accelerator. The accelerator is fully filled out,
+ // and its platform_accelerator is also fully filled out.
+ // Contains accelerators from both the wrench menu and the main menu.
AcceleratorMap accelerators_;
+ // A list of accelerators used in the main menu that have no associated
+ // command_id. The accelerator is fully filled out, and its
+ // platform_accelerator is also fully filled out.
+ AcceleratorVector accelerator_vector_;
DISALLOW_COPY_AND_ASSIGN(AcceleratorsCocoa);
};