| // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "base/test/mock_chrome_application_mac.h" |
| |
| #include "base/auto_reset.h" |
| #include "base/logging.h" |
| |
| @implementation MockCrApp |
| |
| + (NSApplication*)sharedApplication { |
| NSApplication* app = [super sharedApplication]; |
| DCHECK([app conformsToProtocol:@protocol(CrAppControlProtocol)]) |
| << "Existing NSApp (class " << [[app className] UTF8String] |
| << ") does not conform to required protocol."; |
| DCHECK(base::MessagePumpMac::UsingCrApp()) |
| << "MessagePumpMac::Create() was called before " |
| << "+[MockCrApp sharedApplication]"; |
| return app; |
| } |
| |
| - (void)sendEvent:(NSEvent*)event { |
| base::AutoReset<BOOL> scoper(&handlingSendEvent_, YES); |
| [super sendEvent:event]; |
| } |
| |
| - (void)setHandlingSendEvent:(BOOL)handlingSendEvent { |
| handlingSendEvent_ = handlingSendEvent; |
| } |
| |
| - (BOOL)isHandlingSendEvent { |
| return handlingSendEvent_; |
| } |
| |
| @end |
| |
| namespace mock_cr_app { |
| |
| void RegisterMockCrApp() { |
| [MockCrApp sharedApplication]; |
| |
| // If there was an invocation to NSApp prior to this method, then the NSApp |
| // will not be a MockCrApp, but will instead be an NSApplication. |
| // This is undesirable and we must enforce that this doesn't happen. |
| CHECK([NSApp isKindOfClass:[MockCrApp class]]); |
| } |
| |
| } // namespace mock_cr_app |