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