OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #import "ios/web/public/web_state/ui/crw_web_view_scroll_view_proxy.h" | 5 #import "ios/web/public/web_state/ui/crw_web_view_scroll_view_proxy.h" |
6 | 6 |
7 #import <UIKit/UIKit.h> | 7 #import <UIKit/UIKit.h> |
8 | 8 |
9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
10 #import "base/mac/scoped_nsobject.h" | |
11 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
12 #import "third_party/ocmock/OCMock/OCMock.h" | 11 #import "third_party/ocmock/OCMock/OCMock.h" |
13 #include "third_party/ocmock/gtest_support.h" | 12 #include "third_party/ocmock/gtest_support.h" |
14 | 13 |
| 14 #if !defined(__has_feature) || !__has_feature(objc_arc) |
| 15 #error "This file requires ARC support." |
| 16 #endif |
| 17 |
15 namespace { | 18 namespace { |
16 | 19 |
17 class CRWWebViewScrollViewProxyTest : public ::testing::Test { | 20 class CRWWebViewScrollViewProxyTest : public ::testing::Test { |
18 protected: | 21 protected: |
19 void SetUp() override { | 22 void SetUp() override { |
20 mockScrollView_.reset( | 23 mockScrollView_ = [OCMockObject niceMockForClass:[UIScrollView class]]; |
21 [[OCMockObject niceMockForClass:[UIScrollView class]] retain]); | 24 webViewScrollViewProxy_ = [[CRWWebViewScrollViewProxy alloc] init]; |
22 webViewScrollViewProxy_.reset([[CRWWebViewScrollViewProxy alloc] init]); | |
23 } | 25 } |
24 base::scoped_nsobject<id> mockScrollView_; | 26 id mockScrollView_; |
25 base::scoped_nsobject<CRWWebViewScrollViewProxy> webViewScrollViewProxy_; | 27 CRWWebViewScrollViewProxy* webViewScrollViewProxy_; |
26 }; | 28 }; |
27 | 29 |
28 // Tests that the UIScrollViewDelegate is set correctly. | 30 // Tests that the UIScrollViewDelegate is set correctly. |
29 TEST_F(CRWWebViewScrollViewProxyTest, testDelegate) { | 31 TEST_F(CRWWebViewScrollViewProxyTest, testDelegate) { |
30 [static_cast<UIScrollView*>([mockScrollView_ expect]) | 32 [static_cast<UIScrollView*>([mockScrollView_ expect]) |
31 setDelegate:webViewScrollViewProxy_.get()]; | 33 setDelegate:webViewScrollViewProxy_]; |
32 [webViewScrollViewProxy_ setScrollView:mockScrollView_]; | 34 [webViewScrollViewProxy_ setScrollView:mockScrollView_]; |
33 EXPECT_OCMOCK_VERIFY(mockScrollView_); | 35 EXPECT_OCMOCK_VERIFY(mockScrollView_); |
34 } | 36 } |
35 | 37 |
36 // Tests that setting 2 scroll views consecutively, clears the delegate of the | 38 // Tests that setting 2 scroll views consecutively, clears the delegate of the |
37 // previous scroll view. | 39 // previous scroll view. |
38 TEST_F(CRWWebViewScrollViewProxyTest, testMultipleScrollView) { | 40 TEST_F(CRWWebViewScrollViewProxyTest, testMultipleScrollView) { |
39 base::scoped_nsobject<UIScrollView> mockScrollView1( | 41 UIScrollView* mockScrollView1 = [[UIScrollView alloc] init]; |
40 [[UIScrollView alloc] init]); | 42 UIScrollView* mockScrollView2 = [[UIScrollView alloc] init]; |
41 base::scoped_nsobject<UIScrollView> mockScrollView2( | |
42 [[UIScrollView alloc] init]); | |
43 [webViewScrollViewProxy_ setScrollView:mockScrollView1]; | 43 [webViewScrollViewProxy_ setScrollView:mockScrollView1]; |
44 [webViewScrollViewProxy_ setScrollView:mockScrollView2]; | 44 [webViewScrollViewProxy_ setScrollView:mockScrollView2]; |
45 EXPECT_FALSE([mockScrollView1 delegate]); | 45 EXPECT_FALSE([mockScrollView1 delegate]); |
46 EXPECT_EQ(webViewScrollViewProxy_.get(), [mockScrollView2 delegate]); | 46 EXPECT_EQ(webViewScrollViewProxy_, [mockScrollView2 delegate]); |
47 [webViewScrollViewProxy_ setScrollView:nil]; | 47 [webViewScrollViewProxy_ setScrollView:nil]; |
48 } | 48 } |
49 | 49 |
50 // Tests that when releasing a scroll view from the CRWWebViewScrollViewProxy, | 50 // Tests that when releasing a scroll view from the CRWWebViewScrollViewProxy, |
51 // the UIScrollView's delegate is also cleared. | 51 // the UIScrollView's delegate is also cleared. |
52 TEST_F(CRWWebViewScrollViewProxyTest, testDelegateClearingUp) { | 52 TEST_F(CRWWebViewScrollViewProxyTest, testDelegateClearingUp) { |
53 base::scoped_nsobject<UIScrollView> mockScrollView1( | 53 UIScrollView* mockScrollView1 = [[UIScrollView alloc] init]; |
54 [[UIScrollView alloc] init]); | |
55 [webViewScrollViewProxy_ setScrollView:mockScrollView1]; | 54 [webViewScrollViewProxy_ setScrollView:mockScrollView1]; |
56 EXPECT_EQ(webViewScrollViewProxy_.get(), [mockScrollView1 delegate]); | 55 EXPECT_EQ(webViewScrollViewProxy_, [mockScrollView1 delegate]); |
57 [webViewScrollViewProxy_ setScrollView:nil]; | 56 [webViewScrollViewProxy_ setScrollView:nil]; |
58 EXPECT_FALSE([mockScrollView1 delegate]); | 57 EXPECT_FALSE([mockScrollView1 delegate]); |
59 } | 58 } |
60 | 59 |
61 // Tests that CRWWebViewScrollViewProxy returns the correct property values from | 60 // Tests that CRWWebViewScrollViewProxy returns the correct property values from |
62 // the underlying UIScrollView. | 61 // the underlying UIScrollView. |
63 TEST_F(CRWWebViewScrollViewProxyTest, testScrollViewPresent) { | 62 TEST_F(CRWWebViewScrollViewProxyTest, testScrollViewPresent) { |
64 [webViewScrollViewProxy_ setScrollView:mockScrollView_]; | 63 [webViewScrollViewProxy_ setScrollView:mockScrollView_]; |
65 BOOL yes = YES; | 64 BOOL yes = YES; |
66 [[[mockScrollView_ stub] andReturnValue:OCMOCK_VALUE(yes)] isZooming]; | 65 [[[mockScrollView_ stub] andReturnValue:OCMOCK_VALUE(yes)] isZooming]; |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
156 // CRWWebViewScrollViewProxy. | 155 // CRWWebViewScrollViewProxy. |
157 TEST_F(CRWWebViewScrollViewProxyTest, testReleasingAScrollView) { | 156 TEST_F(CRWWebViewScrollViewProxyTest, testReleasingAScrollView) { |
158 [webViewScrollViewProxy_ setScrollView:nil]; | 157 [webViewScrollViewProxy_ setScrollView:nil]; |
159 } | 158 } |
160 | 159 |
161 // Tests that multiple WebViewScrollViewProxies hold onto the same underlying | 160 // Tests that multiple WebViewScrollViewProxies hold onto the same underlying |
162 // UIScrollView | 161 // UIScrollView |
163 TEST_F(CRWWebViewScrollViewProxyTest, testMultipleWebViewScrollViewProxies) { | 162 TEST_F(CRWWebViewScrollViewProxyTest, testMultipleWebViewScrollViewProxies) { |
164 [webViewScrollViewProxy_ setScrollView:mockScrollView_]; | 163 [webViewScrollViewProxy_ setScrollView:mockScrollView_]; |
165 | 164 |
166 base::scoped_nsobject<CRWWebViewScrollViewProxy> webViewScrollViewProxy1( | 165 CRWWebViewScrollViewProxy* webViewScrollViewProxy1 = |
167 [[CRWWebViewScrollViewProxy alloc] init]); | 166 [[CRWWebViewScrollViewProxy alloc] init]; |
168 [webViewScrollViewProxy1 setScrollView:mockScrollView_]; | 167 [webViewScrollViewProxy1 setScrollView:mockScrollView_]; |
169 | 168 |
170 base::scoped_nsobject<CRWWebViewScrollViewProxy> webViewScrollViewProxy2( | 169 CRWWebViewScrollViewProxy* webViewScrollViewProxy2 = |
171 [[CRWWebViewScrollViewProxy alloc] init]); | 170 [[CRWWebViewScrollViewProxy alloc] init]; |
172 [webViewScrollViewProxy2 setScrollView:mockScrollView_]; | 171 [webViewScrollViewProxy2 setScrollView:mockScrollView_]; |
173 | 172 |
174 // Arbitrary point. | 173 // Arbitrary point. |
175 const CGPoint point = CGPointMake(10, 10); | 174 const CGPoint point = CGPointMake(10, 10); |
176 [[[mockScrollView_ stub] andReturnValue:[NSValue valueWithCGPoint:point]] | 175 [[[mockScrollView_ stub] andReturnValue:[NSValue valueWithCGPoint:point]] |
177 contentOffset]; | 176 contentOffset]; |
178 EXPECT_TRUE( | 177 EXPECT_TRUE( |
179 CGPointEqualToPoint(point, [webViewScrollViewProxy_ contentOffset])); | 178 CGPointEqualToPoint(point, [webViewScrollViewProxy_ contentOffset])); |
180 EXPECT_TRUE( | 179 EXPECT_TRUE( |
181 CGPointEqualToPoint(point, [webViewScrollViewProxy1 contentOffset])); | 180 CGPointEqualToPoint(point, [webViewScrollViewProxy1 contentOffset])); |
182 EXPECT_TRUE( | 181 EXPECT_TRUE( |
183 CGPointEqualToPoint(point, [webViewScrollViewProxy2 contentOffset])); | 182 CGPointEqualToPoint(point, [webViewScrollViewProxy2 contentOffset])); |
184 } | 183 } |
185 | 184 |
186 } // namespace | 185 } // namespace |
OLD | NEW |