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/web_state/ui/crw_wk_script_message_router.h" | 5 #import "ios/web/web_state/ui/crw_wk_script_message_router.h" |
6 | 6 |
7 #include "base/mac/scoped_block.h" | 7 #include "base/mac/scoped_block.h" |
8 #import "base/mac/scoped_nsobject.h" | |
9 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
10 #include "ios/web/public/test/fakes/test_browser_state.h" | 9 #include "ios/web/public/test/fakes/test_browser_state.h" |
11 #import "ios/web/public/test/fakes/test_web_client.h" | 10 #import "ios/web/public/test/fakes/test_web_client.h" |
12 #include "ios/web/public/test/scoped_testing_web_client.h" | 11 #include "ios/web/public/test/scoped_testing_web_client.h" |
13 #include "ios/web/public/test/web_test.h" | 12 #include "ios/web/public/test/web_test.h" |
14 #import "ios/web/public/web_view_creation_util.h" | 13 #import "ios/web/public/web_view_creation_util.h" |
15 #include "third_party/ocmock/OCMock/OCMock.h" | 14 #include "third_party/ocmock/OCMock/OCMock.h" |
16 #include "third_party/ocmock/gtest_support.h" | 15 #include "third_party/ocmock/gtest_support.h" |
17 | 16 |
| 17 #if !defined(__has_feature) || !__has_feature(objc_arc) |
| 18 #error "This file requires ARC support." |
| 19 #endif |
| 20 |
18 namespace { | 21 namespace { |
19 | 22 |
20 // Returns WKScriptMessage mock. | 23 // Returns WKScriptMessage mock. |
21 id GetScriptMessageMock(WKWebView* web_view, NSString* name) { | 24 id GetScriptMessageMock(WKWebView* web_view, NSString* name) { |
22 id result = [OCMockObject mockForClass:[WKScriptMessage class]]; | 25 id result = [OCMockObject mockForClass:[WKScriptMessage class]]; |
23 [[[result stub] andReturn:web_view] webView]; | 26 [[[result stub] andReturn:web_view] webView]; |
24 [[[result stub] andReturn:name] name]; | 27 [[[result stub] andReturn:name] name]; |
25 return result; | 28 return result; |
26 } | 29 } |
27 | 30 |
28 // Test fixture for CRWWKScriptMessageRouter. | 31 // Test fixture for CRWWKScriptMessageRouter. |
29 class CRWWKScriptMessageRouterTest : public web::WebTest { | 32 class CRWWKScriptMessageRouterTest : public web::WebTest { |
30 public: | 33 public: |
31 CRWWKScriptMessageRouterTest() | 34 CRWWKScriptMessageRouterTest() |
32 : web_client_(base::WrapUnique(new web::WebClient)) {} | 35 : web_client_(base::WrapUnique(new web::WebClient)) {} |
33 | 36 |
34 protected: | 37 protected: |
35 void SetUp() override { | 38 void SetUp() override { |
36 web::WebTest::SetUp(); | 39 web::WebTest::SetUp(); |
37 // Mock WKUserContentController object. | 40 // Mock WKUserContentController object. |
38 controller_mock_.reset( | 41 controller_mock_ = |
39 [[OCMockObject mockForClass:[WKUserContentController class]] retain]); | 42 [OCMockObject mockForClass:[WKUserContentController class]]; |
40 [controller_mock_ setExpectationOrderMatters:YES]; | 43 [controller_mock_ setExpectationOrderMatters:YES]; |
41 | 44 |
42 // Create testable CRWWKScriptMessageRouter. | 45 // Create testable CRWWKScriptMessageRouter. |
43 router_.reset(static_cast<id<WKScriptMessageHandler>>( | 46 router_ = static_cast<id<WKScriptMessageHandler>>( |
44 [[CRWWKScriptMessageRouter alloc] | 47 [[CRWWKScriptMessageRouter alloc] |
45 initWithUserContentController:controller_mock_])); | 48 initWithUserContentController:controller_mock_]); |
46 | 49 |
47 // Prepare test data. | 50 // Prepare test data. |
48 handler1_.reset([^{ | 51 handler1_ = [^{ |
49 } copy]); | 52 } copy]; |
50 handler2_.reset([^{ | 53 handler2_ = [^{ |
51 } copy]); | 54 } copy]; |
52 handler3_.reset([^{ | 55 handler3_ = [^{ |
53 } copy]); | 56 } copy]; |
54 name1_.reset([@"name1" copy]); | 57 name1_ = [@"name1" copy]; |
55 name2_.reset([@"name2" copy]); | 58 name2_ = [@"name2" copy]; |
56 name3_.reset([@"name3" copy]); | 59 name3_ = [@"name3" copy]; |
57 web_view1_.reset([web::BuildWKWebView(CGRectZero, &browser_state_) retain]); | 60 web_view1_ = web::BuildWKWebView(CGRectZero, &browser_state_); |
58 web_view2_.reset([web::BuildWKWebView(CGRectZero, &browser_state_) retain]); | 61 web_view2_ = web::BuildWKWebView(CGRectZero, &browser_state_); |
59 web_view3_.reset([web::BuildWKWebView(CGRectZero, &browser_state_) retain]); | 62 web_view3_ = web::BuildWKWebView(CGRectZero, &browser_state_); |
60 } | 63 } |
61 void TearDown() override { | 64 void TearDown() override { |
62 EXPECT_OCMOCK_VERIFY(controller_mock_); | 65 EXPECT_OCMOCK_VERIFY(controller_mock_); |
63 web::WebTest::TearDown(); | 66 web::WebTest::TearDown(); |
64 } | 67 } |
65 | 68 |
66 // WKUserContentController mock used to create testable router. | 69 // WKUserContentController mock used to create testable router. |
67 base::scoped_nsobject<id> controller_mock_; | 70 id controller_mock_; |
68 | 71 |
69 // CRWWKScriptMessageRouter set up for testing. | 72 // CRWWKScriptMessageRouter set up for testing. |
70 base::scoped_nsobject<id> router_; | 73 id router_; |
71 | 74 |
72 // Tests data. | 75 // Tests data. |
73 typedef void (^WKScriptMessageHandler)(WKScriptMessage*); | 76 typedef void (^WKScriptMessageHandler)(WKScriptMessage*); |
74 base::mac::ScopedBlock<WKScriptMessageHandler> handler1_; | 77 WKScriptMessageHandler handler1_; |
75 base::mac::ScopedBlock<WKScriptMessageHandler> handler2_; | 78 WKScriptMessageHandler handler2_; |
76 base::mac::ScopedBlock<WKScriptMessageHandler> handler3_; | 79 WKScriptMessageHandler handler3_; |
77 base::scoped_nsobject<NSString> name1_; | 80 NSString* name1_; |
78 base::scoped_nsobject<NSString> name2_; | 81 NSString* name2_; |
79 base::scoped_nsobject<NSString> name3_; | 82 NSString* name3_; |
80 base::scoped_nsobject<WKWebView> web_view1_; | 83 WKWebView* web_view1_; |
81 base::scoped_nsobject<WKWebView> web_view2_; | 84 WKWebView* web_view2_; |
82 base::scoped_nsobject<WKWebView> web_view3_; | 85 WKWebView* web_view3_; |
83 | 86 |
84 private: | 87 private: |
85 // WebClient and BrowserState for testing. | 88 // WebClient and BrowserState for testing. |
86 web::ScopedTestingWebClient web_client_; | 89 web::ScopedTestingWebClient web_client_; |
87 web::TestBrowserState browser_state_; | 90 web::TestBrowserState browser_state_; |
88 }; | 91 }; |
89 | 92 |
90 // Tests CRWWKScriptMessageRouter designated initializer. | 93 // Tests CRWWKScriptMessageRouter designated initializer. |
91 TEST_F(CRWWKScriptMessageRouterTest, Initialization) { | 94 TEST_F(CRWWKScriptMessageRouterTest, Initialization) { |
92 EXPECT_TRUE(router_); | 95 EXPECT_TRUE(router_); |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 didReceiveScriptMessage:message1]; | 196 didReceiveScriptMessage:message1]; |
194 [router_ userContentController:controller_mock_ | 197 [router_ userContentController:controller_mock_ |
195 didReceiveScriptMessage:message2]; | 198 didReceiveScriptMessage:message2]; |
196 [router_ userContentController:controller_mock_ | 199 [router_ userContentController:controller_mock_ |
197 didReceiveScriptMessage:message3]; | 200 didReceiveScriptMessage:message3]; |
198 | 201 |
199 EXPECT_EQ(3, last_called_handler); | 202 EXPECT_EQ(3, last_called_handler); |
200 } | 203 } |
201 | 204 |
202 } // namespace | 205 } // namespace |
OLD | NEW |