| 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 |