Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(308)

Side by Side Diff: ios/web/web_state/ui/crw_wk_navigation_states_unittest.mm

Issue 2835463002: Store NavigationIntext in CRWWKNavigationStates. (Closed)
Patch Set: Fixed compilation. Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ios/web/web_state/ui/crw_wk_navigation_states.mm ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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" 9 #import "base/mac/scoped_nsobject.h"
10 #include "ios/web/web_state/navigation_context_impl.h"
11 #include "net/http/http_response_headers.h"
10 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
11 #include "testing/platform_test.h" 13 #include "testing/platform_test.h"
14 #include "url/gurl.h"
15
16 namespace {
17 const char kTestUrl1[] = "https://test1.test/";
18 const char kTestUrl2[] = "https://test2.test/";
19 }
12 20
13 namespace web { 21 namespace web {
14 22
15 // Test fixture for CRWWKNavigationStates testing. 23 // Test fixture for CRWWKNavigationStates testing.
16 class CRWWKNavigationStatesTest : public PlatformTest { 24 class CRWWKNavigationStatesTest : public PlatformTest {
17 protected: 25 protected:
18 CRWWKNavigationStatesTest() 26 CRWWKNavigationStatesTest()
19 : navigation1_(static_cast<WKNavigation*>([[NSObject alloc] init])), 27 : navigation1_(static_cast<WKNavigation*>([[NSObject alloc] init])),
20 navigation2_(static_cast<WKNavigation*>([[NSObject alloc] init])), 28 navigation2_(static_cast<WKNavigation*>([[NSObject alloc] init])),
29 navigation3_(static_cast<WKNavigation*>([[NSObject alloc] init])),
21 states_([[CRWWKNavigationStates alloc] init]) {} 30 states_([[CRWWKNavigationStates alloc] init]) {}
22 31
23 protected: 32 protected:
24 base::scoped_nsobject<WKNavigation> navigation1_; 33 base::scoped_nsobject<WKNavigation> navigation1_;
25 base::scoped_nsobject<WKNavigation> navigation2_; 34 base::scoped_nsobject<WKNavigation> navigation2_;
35 base::scoped_nsobject<WKNavigation> navigation3_;
26 base::scoped_nsobject<CRWWKNavigationStates> states_; 36 base::scoped_nsobject<CRWWKNavigationStates> states_;
27 }; 37 };
28 38
29 // Tests |removeNavigation:| method. 39 // Tests |removeNavigation:| method.
30 TEST_F(CRWWKNavigationStatesTest, RemovingNavigation) { 40 TEST_F(CRWWKNavigationStatesTest, RemovingNavigation) {
31 // navigation_1 is the only navigation and it is the latest. 41 // navigation_1 is the only navigation and it is the latest.
32 [states_ setState:WKNavigationState::REQUESTED forNavigation:navigation1_]; 42 [states_ setState:WKNavigationState::REQUESTED forNavigation:navigation1_];
33 ASSERT_EQ(navigation1_, [states_ lastAddedNavigation]); 43 ASSERT_EQ(navigation1_, [states_ lastAddedNavigation]);
34 [states_ removeNavigation:navigation1_]; 44 [states_ removeNavigation:navigation1_];
35 ASSERT_FALSE([states_ lastAddedNavigation]); 45 ASSERT_FALSE([states_ lastAddedNavigation]);
(...skipping 13 matching lines...) Expand all
49 59
50 // Updating state for existing navigation does not make it the latest. 60 // Updating state for existing navigation does not make it the latest.
51 [states_ setState:WKNavigationState::STARTED forNavigation:navigation1_]; 61 [states_ setState:WKNavigationState::STARTED forNavigation:navigation1_];
52 EXPECT_EQ(navigation2_, [states_ lastAddedNavigation]); 62 EXPECT_EQ(navigation2_, [states_ lastAddedNavigation]);
53 EXPECT_EQ(WKNavigationState::REQUESTED, [states_ lastAddedNavigationState]); 63 EXPECT_EQ(WKNavigationState::REQUESTED, [states_ lastAddedNavigationState]);
54 64
55 // navigation_2 is still the latest. 65 // navigation_2 is still the latest.
56 [states_ setState:WKNavigationState::STARTED forNavigation:navigation2_]; 66 [states_ setState:WKNavigationState::STARTED forNavigation:navigation2_];
57 EXPECT_EQ(navigation2_, [states_ lastAddedNavigation]); 67 EXPECT_EQ(navigation2_, [states_ lastAddedNavigation]);
58 EXPECT_EQ(WKNavigationState::STARTED, [states_ lastAddedNavigationState]); 68 EXPECT_EQ(WKNavigationState::STARTED, [states_ lastAddedNavigationState]);
69
70 // navigation_3 is added later and hence the latest.
71 std::unique_ptr<web::NavigationContextImpl> context =
72 NavigationContextImpl::CreateSameDocumentNavigationContext(
73 nullptr /*web_state*/, GURL(kTestUrl1));
74 [states_ setContext:std::move(context) forNavigation:navigation3_];
75 EXPECT_EQ(navigation3_, [states_ lastAddedNavigation]);
76 EXPECT_EQ(WKNavigationState::NONE, [states_ lastAddedNavigationState]);
77 }
78
79 // Tests |setContext:forNavigation:| and |contextForNavigaiton:| methods.
80 TEST_F(CRWWKNavigationStatesTest, Context) {
81 EXPECT_FALSE([states_ contextForNavigation:navigation1_]);
82 EXPECT_FALSE([states_ contextForNavigation:navigation2_]);
83 EXPECT_FALSE([states_ contextForNavigation:navigation3_]);
84
85 // Add first context.
86 std::unique_ptr<web::NavigationContextImpl> context1 =
87 NavigationContextImpl::CreateSameDocumentNavigationContext(
88 nullptr /*web_state*/, GURL(kTestUrl1));
89 [states_ setContext:std::move(context1) forNavigation:navigation1_];
90 EXPECT_FALSE([states_ contextForNavigation:navigation2_]);
91 EXPECT_FALSE([states_ contextForNavigation:navigation3_]);
92 ASSERT_TRUE([states_ contextForNavigation:navigation1_]);
93 EXPECT_EQ(GURL(kTestUrl1),
94 [states_ contextForNavigation:navigation1_]->GetUrl());
95 EXPECT_TRUE([states_ contextForNavigation:navigation1_]->IsSameDocument());
96 EXPECT_FALSE([states_ contextForNavigation:navigation1_]->IsErrorPage());
97
98 // Replace existing context.
99 std::unique_ptr<web::NavigationContextImpl> context2 =
100 NavigationContextImpl::CreateErrorPageNavigationContext(
101 nullptr /*web_state*/, GURL(kTestUrl2),
102 nullptr /* response_headers */);
103 [states_ setContext:std::move(context2) forNavigation:navigation1_];
104 EXPECT_FALSE([states_ contextForNavigation:navigation2_]);
105 EXPECT_FALSE([states_ contextForNavigation:navigation3_]);
106 ASSERT_TRUE([states_ contextForNavigation:navigation1_]);
107 EXPECT_EQ(GURL(kTestUrl2),
108 [states_ contextForNavigation:navigation1_]->GetUrl());
109 EXPECT_FALSE([states_ contextForNavigation:navigation1_]->IsSameDocument());
110 EXPECT_TRUE([states_ contextForNavigation:navigation1_]->IsErrorPage());
59 } 111 }
60 112
61 } // namespace web 113 } // namespace web
OLDNEW
« no previous file with comments | « ios/web/web_state/ui/crw_wk_navigation_states.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698