• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
4
5#import "chrome_application_mac.h"
6
7#include "base/logging.h"
8
9@interface CrApplication ()
10@property(readwrite,
11          getter=isHandlingSendEvent,
12          nonatomic) BOOL handlingSendEvent;
13@end
14
15@implementation CrApplication
16@synthesize handlingSendEvent = handlingSendEvent_;
17
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    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}
30
31- (void)sendEvent:(NSEvent*)event {
32  chrome_application_mac::ScopedSendingEvent sendingEventScoper;
33  [super sendEvent:event];
34}
35
36@end
37
38namespace chrome_application_mac {
39
40ScopedSendingEvent::ScopedSendingEvent()
41    : app_(static_cast<CrApplication*>([CrApplication sharedApplication])),
42      handling_([app_ isHandlingSendEvent]) {
43  [app_ setHandlingSendEvent:YES];
44}
45
46ScopedSendingEvent::~ScopedSendingEvent() {
47  [app_ setHandlingSendEvent:handling_];
48}
49
50}  // namespace chrome_application_mac
51