summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chrome_browser_application_mac.mm
diff options
context:
space:
mode:
authorshess@chromium.org <shess@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-12 00:54:10 +0000
committershess@chromium.org <shess@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-12 00:54:10 +0000
commit8152ad71e69cb3479bfc13d71e78e52a56e08cb1 (patch)
tree63aacb99073fee49c601d507b5b04a5221688205 /chrome/browser/chrome_browser_application_mac.mm
parent538a1edd903baf8f19d1310ca53b39e70ee5e178 (diff)
downloadchromium_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.mm21
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.