blob: 7ee13930c671cb83cef88d19fee9f8e1eb3206cd [file] [log] [blame]
[email protected]f5558b972011-02-15 12:50:351// 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.
4
[email protected]36ec0172013-03-12 01:13:445#import "ui/base/cocoa/tracking_area.h"
Sidney San Martínd86c40f2017-12-21 20:23:476#include "base/mac/scoped_nsobject.h"
7#import "ui/base/test/cocoa_helper.h"
[email protected]f5558b972011-02-15 12:50:358
9// A test object that counts the number of times a message is sent to it.
10@interface TestTrackingAreaOwner : NSObject {
11 @private
Robert Liao60f733e72019-12-10 22:31:5912 NSUInteger _messageCount;
[email protected]f5558b972011-02-15 12:50:3513}
14@property(nonatomic, assign) NSUInteger messageCount;
15- (void)performMessage;
16@end
17
18@implementation TestTrackingAreaOwner
Robert Liao60f733e72019-12-10 22:31:5919@synthesize messageCount = _messageCount;
[email protected]f5558b972011-02-15 12:50:3520- (void)performMessage {
Robert Liao60f733e72019-12-10 22:31:5921 ++_messageCount;
[email protected]f5558b972011-02-15 12:50:3522}
23@end
24
[email protected]36ec0172013-03-12 01:13:4425namespace ui {
26
[email protected]f5558b972011-02-15 12:50:3527class CrTrackingAreaTest : public CocoaTest {
28 public:
29 CrTrackingAreaTest()
30 : owner_([[TestTrackingAreaOwner alloc] init]),
31 trackingArea_([[CrTrackingArea alloc]
32 initWithRect:NSMakeRect(0, 0, 100, 100)
33 options:NSTrackingMouseMoved | NSTrackingActiveInKeyWindow
[email protected]d3ac56322012-07-20 23:12:2434 owner:owner_.get()
[email protected]f5558b972011-02-15 12:50:3535 userInfo:nil]) {
36 }
37
[email protected]a8522032013-06-24 22:51:4638 base::scoped_nsobject<TestTrackingAreaOwner> owner_;
39 base::scoped_nsobject<CrTrackingArea> trackingArea_;
[email protected]f5558b972011-02-15 12:50:3540};
41
42TEST_F(CrTrackingAreaTest, OwnerForwards) {
43 [[trackingArea_ owner] performMessage];
44 EXPECT_EQ(1U, [owner_ messageCount]);
45
46 [[trackingArea_ owner] performMessage];
47 EXPECT_EQ(2U, [owner_ messageCount]);
48}
49
50TEST_F(CrTrackingAreaTest, OwnerStopsForwarding) {
51 [[trackingArea_ owner] performMessage];
52 EXPECT_EQ(1U, [owner_ messageCount]);
53
54 [trackingArea_ clearOwner];
55
56 [[trackingArea_ owner] performMessage];
57 EXPECT_EQ(1U, [owner_ messageCount]);
58}
59
[email protected]0441a652011-03-04 21:45:2760TEST_F(CrTrackingAreaTest, ScoperInit) {
61 {
62 ScopedCrTrackingArea scoper([trackingArea_ retain]);
63 [[scoper.get() owner] performMessage];
64 EXPECT_EQ(1U, [owner_ messageCount]);
65 }
66
67 [[trackingArea_ owner] performMessage];
68 EXPECT_EQ(1U, [owner_ messageCount]);
69}
70
71TEST_F(CrTrackingAreaTest, ScoperReset) {
72 {
73 ScopedCrTrackingArea scoper;
74 EXPECT_FALSE(scoper.get());
75
76 scoper.reset([trackingArea_ retain]);
77 [[scoper.get() owner] performMessage];
78 EXPECT_EQ(1U, [owner_ messageCount]);
79
80 [[scoper.get() owner] performMessage];
81 EXPECT_EQ(2U, [owner_ messageCount]);
82 }
83
84 [[trackingArea_ owner] performMessage];
85 EXPECT_EQ(2U, [owner_ messageCount]);
86}
[email protected]36ec0172013-03-12 01:13:4487
88} // namespace ui