Update mojo sdk to rev 1dc8a9a5db73d3718d99917fadf31f5fb2ebad4f
[chromium-blink-merge.git] / base / mac / scoped_sending_event_unittest.mm
blob02ef2dbe29291ac495f706c613e84b03efe96548
1 // Copyright (c) 2011 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 "base/mac/scoped_sending_event.h"
7 #import <Foundation/Foundation.h>
9 #include "base/mac/scoped_nsobject.h"
10 #include "testing/gtest/include/gtest/gtest.h"
12 @interface ScopedSendingEventTestCrApp : NSObject <CrAppControlProtocol> {
13  @private
14   BOOL handlingSendEvent_;
16 @property(nonatomic, assign, getter=isHandlingSendEvent) BOOL handlingSendEvent;
17 @end
19 @implementation ScopedSendingEventTestCrApp
20 @synthesize handlingSendEvent = handlingSendEvent_;
21 @end
23 namespace {
25 class ScopedSendingEventTest : public testing::Test {
26  public:
27   ScopedSendingEventTest() : app_([[ScopedSendingEventTestCrApp alloc] init]) {
28     NSApp = app_.get();
29   }
30   ~ScopedSendingEventTest() override { NSApp = nil; }
32  private:
33   base::scoped_nsobject<ScopedSendingEventTestCrApp> app_;
36 // Sets the flag within scope, resets when leaving scope.
37 TEST_F(ScopedSendingEventTest, SetHandlingSendEvent) {
38   id<CrAppProtocol> app = NSApp;
39   EXPECT_FALSE([app isHandlingSendEvent]);
40   {
41     base::mac::ScopedSendingEvent is_handling_send_event;
42     EXPECT_TRUE([app isHandlingSendEvent]);
43   }
44   EXPECT_FALSE([app isHandlingSendEvent]);
47 // Nested call restores previous value rather than resetting flag.
48 TEST_F(ScopedSendingEventTest, NestedSetHandlingSendEvent) {
49   id<CrAppProtocol> app = NSApp;
50   EXPECT_FALSE([app isHandlingSendEvent]);
51   {
52     base::mac::ScopedSendingEvent is_handling_send_event;
53     EXPECT_TRUE([app isHandlingSendEvent]);
54     {
55       base::mac::ScopedSendingEvent nested_is_handling_send_event;
56       EXPECT_TRUE([app isHandlingSendEvent]);
57     }
58     EXPECT_TRUE([app isHandlingSendEvent]);
59   }
60   EXPECT_FALSE([app isHandlingSendEvent]);
63 }  // namespace