Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(945)

Side by Side Diff: ui/views/cocoa/bridged_native_widget_unittest.mm

Issue 329743002: MacViews: Initial skeleton for implementing NativeWidgetMac (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase to master (header conflict with r276556) Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2014 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 "ui/views/cocoa/bridged_native_widget.h"
6
7 #import <Cocoa/Cocoa.h>
8
9 #include "base/memory/scoped_ptr.h"
10 #import "testing/gtest_mac.h"
11 #import "ui/gfx/test/ui_cocoa_test_helper.h"
12 #import "ui/views/cocoa/bridged_content_view.h"
13 #include "ui/views/view.h"
14
15 namespace views {
16
17 class BridgedNativeWidgetTest : public ui::CocoaTest {
18 public:
19 BridgedNativeWidgetTest();
20 virtual ~BridgedNativeWidgetTest();
21
22 // testing::Test:
23 virtual void SetUp() OVERRIDE;
24 virtual void TearDown() OVERRIDE;
25
26 protected:
27 // TODO(tapted): Make this a EventCountView from widget_unittest.cc.
28 scoped_ptr<views::View> view_;
29 scoped_ptr<BridgedNativeWidget> bridge_;
30
31 private:
32 DISALLOW_COPY_AND_ASSIGN(BridgedNativeWidgetTest);
33 };
34
35 BridgedNativeWidgetTest::BridgedNativeWidgetTest() {
36 Init();
Robert Sesek 2014/06/12 13:42:27 Do you manually need to call Init() here?
tapted 2014/06/13 00:14:06 Wow - nope. Removed. (and mind:blown) Lots of ui:
37 }
38
39 BridgedNativeWidgetTest::~BridgedNativeWidgetTest() {
40 }
41
42 void BridgedNativeWidgetTest::SetUp() {
43 ui::CocoaTest::SetUp();
44
45 view_.reset(new views::View);
46 bridge_.reset(new BridgedNativeWidget);
47 base::scoped_nsobject<NSWindow> window([test_window() retain]);
48 bridge_->Init(window);
49 bridge_->SetRootView(view_.get());
50
51 [test_window() makePretendKeyWindowAndSetFirstResponder:bridge_->ns_view()];
52 }
53
54 void BridgedNativeWidgetTest::TearDown() {
55 [test_window() clearPretendKeyWindowAndFirstResponder];
56
57 bridge_.reset();
58 view_.reset();
59
60 ui::CocoaTest::TearDown();
61 }
62
63 // The TEST_VIEW macro expects the view it's testing to have a superview. In
64 // these tests, the NSView bridge is a contentView, at the root. These mimic
65 // what TEST_VIEW usually does.
66 TEST_F(BridgedNativeWidgetTest, BridgedNativeWidgetTest_TestViewAddRemove) {
67 base::scoped_nsobject<BridgedContentView> view([bridge_->ns_view() retain]);
68 EXPECT_NSEQ([test_window() contentView], view);
69 EXPECT_NSEQ(test_window(), [view window]);
70
71 // The superview of a contentView is an NSNextStepFrame.
72 EXPECT_TRUE([view superview]);
73 EXPECT_TRUE([view hostedView]);
74
75 // Destroying the C++ bridge should remove references to any C++ objects in
76 // the ObjectiveC object, and remove it from the hierarchy.
77 bridge_.reset();
78 EXPECT_FALSE([view hostedView]);
79 EXPECT_FALSE([view superview]);
80 EXPECT_FALSE([view window]);
81 EXPECT_FALSE([test_window() contentView]);
82 }
83
84 TEST_F(BridgedNativeWidgetTest, BridgedNativeWidgetTest_TestViewDisplay) {
85 [bridge_->ns_view() display];
86 }
87
88 // Test that resizing the window resizes the root view appropriately.
89 TEST_F(BridgedNativeWidgetTest, ViewSizeTracksWindow) {
90 const int kTestNewWidth = 400;
91 const int kTestNewHeight = 300;
92
93 // |test_window()| is borderless, so these should align.
94 NSSize window_size = [test_window() frame].size;
95 EXPECT_EQ(view_->width(), static_cast<int>(window_size.width));
96 EXPECT_EQ(view_->height(), static_cast<int>(window_size.height));
97
98 // Make sure a resize actually occurs.
99 EXPECT_NE(kTestNewWidth, view_->width());
100 EXPECT_NE(kTestNewHeight, view_->height());
101
102 [test_window() setFrame:NSMakeRect(0, 0, kTestNewWidth, kTestNewHeight)
103 display:NO];
104 EXPECT_EQ(kTestNewWidth, view_->width());
105 EXPECT_EQ(kTestNewHeight, view_->height());
106 }
107
108 } // namespace views
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698