diff options
author | shess@chromium.org <shess@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-12 00:54:10 +0000 |
---|---|---|
committer | shess@chromium.org <shess@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-12 00:54:10 +0000 |
commit | 8152ad71e69cb3479bfc13d71e78e52a56e08cb1 (patch) | |
tree | 63aacb99073fee49c601d507b5b04a5221688205 /chrome/browser/chrome_browser_application_mac.mm | |
parent | 538a1edd903baf8f19d1310ca53b39e70ee5e178 (diff) | |
download | chromium_src-8152ad71e69cb3479bfc13d71e78e52a56e08cb1.zip chromium_src-8152ad71e69cb3479bfc13d71e78e52a56e08cb1.tar.gz chromium_src-8152ad71e69cb3479bfc13d71e78e52a56e08cb1.tar.bz2 |
[Mac] Move event hooks from CrApplication to BrowserCrApplication.
Removing dependencies from content/.
BUG=102224
Review URL: http://codereview.chromium.org/8498034
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@109749 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chrome_browser_application_mac.mm')
-rw-r--r-- | chrome/browser/chrome_browser_application_mac.mm | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/chrome/browser/chrome_browser_application_mac.mm b/chrome/browser/chrome_browser_application_mac.mm index c7706f2..c219252 100644 --- a/chrome/browser/chrome_browser_application_mac.mm +++ b/chrome/browser/chrome_browser_application_mac.mm @@ -215,7 +215,10 @@ void SwizzleInit() { - (id)init { SwizzleInit(); - return [super init]; + if ((self = [super init])) { + eventHooks_.reset([[NSMutableArray alloc] init]); + } + return self; } //////////////////////////////////////////////////////////////////////////////// @@ -357,6 +360,22 @@ void SwizzleInit() { return [super sendAction:anAction to:aTarget from:sender]; } +- (void)addEventHook:(id<CrApplicationEventHookProtocol>)handler { + [eventHooks_ addObject:handler]; +} + +- (void)removeEventHook:(id<CrApplicationEventHookProtocol>)handler { + [eventHooks_ removeObject:handler]; +} + +- (void)sendEvent:(NSEvent*)event { + content::mac::ScopedSendingEvent sendingEventScoper; + for (id<CrApplicationEventHookProtocol> handler in eventHooks_.get()) { + [handler hookForEvent:event]; + } + [super sendEvent:event]; +} + // NSExceptions which are caught by the event loop are logged here. // NSException uses setjmp/longjmp, which can be very bad for C++, so // we attempt to track and report them. |