OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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_navigation_states.h" | 5 #import "ios/web/web_state/ui/crw_wk_navigation_states.h" |
6 | 6 |
7 #import <WebKit/WebKit.h> | 7 #import <WebKit/WebKit.h> |
8 | 8 |
9 #import "base/mac/scoped_nsobject.h" | |
10 #import "ios/web/web_state/navigation_context_impl.h" | 9 #import "ios/web/web_state/navigation_context_impl.h" |
11 #include "net/http/http_response_headers.h" | 10 #include "net/http/http_response_headers.h" |
12 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
13 #include "testing/platform_test.h" | 12 #include "testing/platform_test.h" |
14 #include "url/gurl.h" | 13 #include "url/gurl.h" |
15 | 14 |
| 15 #if !defined(__has_feature) || !__has_feature(objc_arc) |
| 16 #error "This file requires ARC support." |
| 17 #endif |
| 18 |
16 namespace { | 19 namespace { |
17 const char kTestUrl1[] = "https://test1.test/"; | 20 const char kTestUrl1[] = "https://test1.test/"; |
18 const char kTestUrl2[] = "https://test2.test/"; | 21 const char kTestUrl2[] = "https://test2.test/"; |
19 } | 22 } |
20 | 23 |
21 namespace web { | 24 namespace web { |
22 | 25 |
23 // Test fixture for CRWWKNavigationStates testing. | 26 // Test fixture for CRWWKNavigationStates testing. |
24 class CRWWKNavigationStatesTest : public PlatformTest { | 27 class CRWWKNavigationStatesTest : public PlatformTest { |
25 protected: | 28 protected: |
26 CRWWKNavigationStatesTest() | 29 CRWWKNavigationStatesTest() |
27 : navigation1_(static_cast<WKNavigation*>([[NSObject alloc] init])), | 30 : navigation1_(static_cast<WKNavigation*>([[NSObject alloc] init])), |
28 navigation2_(static_cast<WKNavigation*>([[NSObject alloc] init])), | 31 navigation2_(static_cast<WKNavigation*>([[NSObject alloc] init])), |
29 navigation3_(static_cast<WKNavigation*>([[NSObject alloc] init])), | 32 navigation3_(static_cast<WKNavigation*>([[NSObject alloc] init])), |
30 states_([[CRWWKNavigationStates alloc] init]) {} | 33 states_([[CRWWKNavigationStates alloc] init]) {} |
31 | 34 |
32 protected: | 35 protected: |
33 base::scoped_nsobject<WKNavigation> navigation1_; | 36 WKNavigation* navigation1_; |
34 base::scoped_nsobject<WKNavigation> navigation2_; | 37 WKNavigation* navigation2_; |
35 base::scoped_nsobject<WKNavigation> navigation3_; | 38 WKNavigation* navigation3_; |
36 base::scoped_nsobject<CRWWKNavigationStates> states_; | 39 CRWWKNavigationStates* states_; |
37 }; | 40 }; |
38 | 41 |
39 // Tests |removeNavigation:| method. | 42 // Tests |removeNavigation:| method. |
40 TEST_F(CRWWKNavigationStatesTest, RemovingNavigation) { | 43 TEST_F(CRWWKNavigationStatesTest, RemovingNavigation) { |
41 // navigation_1 is the only navigation and it is the latest. | 44 // navigation_1 is the only navigation and it is the latest. |
42 [states_ setState:WKNavigationState::REQUESTED forNavigation:navigation1_]; | 45 [states_ setState:WKNavigationState::REQUESTED forNavigation:navigation1_]; |
43 ASSERT_EQ(navigation1_, [states_ lastAddedNavigation]); | 46 ASSERT_EQ(navigation1_, [states_ lastAddedNavigation]); |
44 [states_ removeNavigation:navigation1_]; | 47 [states_ removeNavigation:navigation1_]; |
45 ASSERT_FALSE([states_ lastAddedNavigation]); | 48 ASSERT_FALSE([states_ lastAddedNavigation]); |
46 } | 49 } |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 EXPECT_EQ(GURL(kTestUrl1), | 99 EXPECT_EQ(GURL(kTestUrl1), |
97 [states_ contextForNavigation:navigation1_]->GetUrl()); | 100 [states_ contextForNavigation:navigation1_]->GetUrl()); |
98 EXPECT_TRUE([states_ contextForNavigation:navigation1_]->IsSameDocument()); | 101 EXPECT_TRUE([states_ contextForNavigation:navigation1_]->IsSameDocument()); |
99 EXPECT_FALSE([states_ contextForNavigation:navigation1_]->GetError()); | 102 EXPECT_FALSE([states_ contextForNavigation:navigation1_]->GetError()); |
100 | 103 |
101 // Replace existing context. | 104 // Replace existing context. |
102 std::unique_ptr<web::NavigationContextImpl> context2 = | 105 std::unique_ptr<web::NavigationContextImpl> context2 = |
103 NavigationContextImpl::CreateNavigationContext( | 106 NavigationContextImpl::CreateNavigationContext( |
104 nullptr /*web_state*/, GURL(kTestUrl2), | 107 nullptr /*web_state*/, GURL(kTestUrl2), |
105 ui::PageTransition::PAGE_TRANSITION_GENERATED); | 108 ui::PageTransition::PAGE_TRANSITION_GENERATED); |
106 NSError* error = [[[NSError alloc] init] autorelease]; | 109 NSError* error = [[NSError alloc] init]; |
107 context2->SetError(error); | 110 context2->SetError(error); |
108 [states_ setContext:std::move(context2) forNavigation:navigation1_]; | 111 [states_ setContext:std::move(context2) forNavigation:navigation1_]; |
109 EXPECT_FALSE([states_ contextForNavigation:navigation2_]); | 112 EXPECT_FALSE([states_ contextForNavigation:navigation2_]); |
110 EXPECT_FALSE([states_ contextForNavigation:navigation3_]); | 113 EXPECT_FALSE([states_ contextForNavigation:navigation3_]); |
111 ASSERT_TRUE([states_ contextForNavigation:navigation1_]); | 114 ASSERT_TRUE([states_ contextForNavigation:navigation1_]); |
112 EXPECT_EQ(GURL(kTestUrl2), | 115 EXPECT_EQ(GURL(kTestUrl2), |
113 [states_ contextForNavigation:navigation1_]->GetUrl()); | 116 [states_ contextForNavigation:navigation1_]->GetUrl()); |
114 EXPECT_FALSE([states_ contextForNavigation:navigation1_]->IsSameDocument()); | 117 EXPECT_FALSE([states_ contextForNavigation:navigation1_]->IsSameDocument()); |
115 EXPECT_EQ(error, [states_ contextForNavigation:navigation1_]->GetError()); | 118 EXPECT_EQ(error, [states_ contextForNavigation:navigation1_]->GetError()); |
116 } | 119 } |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 [states_ removeNavigation:navigation2_]; | 189 [states_ removeNavigation:navigation2_]; |
187 ASSERT_EQ(1U, [states_ pendingNavigations].count); | 190 ASSERT_EQ(1U, [states_ pendingNavigations].count); |
188 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation3_]); | 191 EXPECT_TRUE([[states_ pendingNavigations] containsObject:navigation3_]); |
189 | 192 |
190 // Fail navigation_3. | 193 // Fail navigation_3. |
191 [states_ setState:WKNavigationState::FAILED forNavigation:navigation3_]; | 194 [states_ setState:WKNavigationState::FAILED forNavigation:navigation3_]; |
192 ASSERT_EQ(0U, [states_ pendingNavigations].count); | 195 ASSERT_EQ(0U, [states_ pendingNavigations].count); |
193 } | 196 } |
194 | 197 |
195 } // namespace web | 198 } // namespace web |
OLD | NEW |