Index: chrome/browser/chrome_browser_application_mac.mm |
diff --git a/chrome/browser/chrome_browser_application_mac.mm b/chrome/browser/chrome_browser_application_mac.mm |
index c7706f234226b5a51a048982bac4b21a2e0cd67a..c219252d7ed9dcac0fb7387b19a16823498d63c0 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. |