1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file. 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef CONTENT_BROWSER_COCOA_SYSTEM_HOTKEY_HELPER_MAC_H_ 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define CONTENT_BROWSER_COCOA_SYSTEM_HOTKEY_HELPER_MAC_H_ 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/memory/singleton.h" 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/memory/weak_ptr.h" 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifdef __OBJC__ 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch@class NSDictionary; 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#else 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass NSDictionary; 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace content { 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass SystemHotkeyMap; 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// This singleton holds a global mapping of hotkeys reserved by OSX. 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass SystemHotkeyHelperMac { 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public: 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Return pointer to the singleton instance for the current process. 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch static SystemHotkeyHelperMac* GetInstance(); 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Loads the system hot keys after a brief delay, to reduce file system access 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // immediately after launch. 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void DeferredLoadSystemHotkeys(); 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Guaranteed to not be NULL. 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch SystemHotkeyMap* map() { return map_.get(); } 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private: 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch friend struct DefaultSingletonTraits<SystemHotkeyHelperMac>; 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch SystemHotkeyHelperMac(); 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ~SystemHotkeyHelperMac(); 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Must be called from the FILE thread. Loads the file containing the system 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // hotkeys into a NSDictionary* object, and passes the result to FileDidLoad 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // on the UI thread. 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void LoadSystemHotkeys(); 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Must be called from the UI thread. This takes ownership of |dictionary|. 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Parses the system hotkeys from the plist stored in |dictionary|. 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void FileDidLoad(NSDictionary* dictionary); 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch scoped_ptr<SystemHotkeyMap> map_; 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DISALLOW_COPY_AND_ASSIGN(SystemHotkeyHelperMac); 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}; 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace content 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif // CONTENT_BROWSER_COCOA_SYSTEM_HOTKEY_HELPER_MAC_H_ 57