ipc/chromium/src/base/chrome_application_mac.mm

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
     2 // Use of this source code is governed by a BSD-style license that can be
     3 // found in the LICENSE file.
     5 #import "chrome_application_mac.h"
     7 #include "base/logging.h"
     9 @interface CrApplication ()
    10 @property(readwrite,
    11           getter=isHandlingSendEvent,
    12           nonatomic) BOOL handlingSendEvent;
    13 @end
    15 @implementation CrApplication
    16 @synthesize handlingSendEvent = handlingSendEvent_;
    18 // Initialize NSApplication using the custom subclass.  Check whether NSApp
    19 // was already initialized using another class, because that would break
    20 // some things.
    21 + (NSApplication*)sharedApplication {
    22   NSApplication* app = [super sharedApplication];
    23   if (![NSApp isKindOfClass:self]) {
    24     CHROMIUM_LOG(ERROR) << "NSApp should be of type " << [[self className] UTF8String]
    25                         << ", not " << [[NSApp className] UTF8String];
    26     DCHECK(false) << "NSApp is of wrong type";
    27   }
    28   return app;
    29 }
    31 - (id)init {
    32   if ((self = [super init])) {
    33     eventHooks_.reset([[NSMutableArray alloc] init]);
    34   }
    35   return self;
    36 }
    38 - (void)sendEvent:(NSEvent*)event {
    39   chrome_application_mac::ScopedSendingEvent sendingEventScoper;
    40   for (id<CrApplicationEventHookProtocol> handler in eventHooks_.get()) {
    41     [handler hookForEvent:event];
    42   }
    43   [super sendEvent:event];
    44 }
    46 - (void)addEventHook:(id<CrApplicationEventHookProtocol>)handler {
    47   [eventHooks_ addObject:handler];
    48 }
    50 - (void)removeEventHook:(id<CrApplicationEventHookProtocol>)handler {
    51   [eventHooks_ removeObject:handler];
    52 }
    54 @end
    56 namespace chrome_application_mac {
    58 ScopedSendingEvent::ScopedSendingEvent()
    59     : app_(static_cast<CrApplication*>([CrApplication sharedApplication])),
    60       handling_([app_ isHandlingSendEvent]) {
    61   [app_ setHandlingSendEvent:YES];
    62 }
    64 ScopedSendingEvent::~ScopedSendingEvent() {
    65   [app_ setHandlingSendEvent:handling_];
    66 }
    68 }  // namespace chrome_application_mac

mercurial