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

Unified 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 side-by-side diff with in-line comments
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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ios/web/web_state/ui/crw_wk_navigation_states_unittest.mm
diff --git a/ios/web/web_state/ui/crw_wk_navigation_states_unittest.mm b/ios/web/web_state/ui/crw_wk_navigation_states_unittest.mm
index b39752a67f55cc32ccf709d0e79369ce96e59cba..ce9f645753b767a83715bddb9c03edc5599644a8 100644
--- a/ios/web/web_state/ui/crw_wk_navigation_states_unittest.mm
+++ b/ios/web/web_state/ui/crw_wk_navigation_states_unittest.mm
@@ -7,8 +7,16 @@
#import <WebKit/WebKit.h>
#import "base/mac/scoped_nsobject.h"
+#include "ios/web/web_state/navigation_context_impl.h"
+#include "net/http/http_response_headers.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/platform_test.h"
+#include "url/gurl.h"
+
+namespace {
+const char kTestUrl1[] = "https://test1.test/";
+const char kTestUrl2[] = "https://test2.test/";
+}
namespace web {
@@ -18,11 +26,13 @@ class CRWWKNavigationStatesTest : public PlatformTest {
CRWWKNavigationStatesTest()
: navigation1_(static_cast<WKNavigation*>([[NSObject alloc] init])),
navigation2_(static_cast<WKNavigation*>([[NSObject alloc] init])),
+ navigation3_(static_cast<WKNavigation*>([[NSObject alloc] init])),
states_([[CRWWKNavigationStates alloc] init]) {}
protected:
base::scoped_nsobject<WKNavigation> navigation1_;
base::scoped_nsobject<WKNavigation> navigation2_;
+ base::scoped_nsobject<WKNavigation> navigation3_;
base::scoped_nsobject<CRWWKNavigationStates> states_;
};
@@ -56,6 +66,48 @@ TEST_F(CRWWKNavigationStatesTest, LastAddedNavigation) {
[states_ setState:WKNavigationState::STARTED forNavigation:navigation2_];
EXPECT_EQ(navigation2_, [states_ lastAddedNavigation]);
EXPECT_EQ(WKNavigationState::STARTED, [states_ lastAddedNavigationState]);
+
+ // navigation_3 is added later and hence the latest.
+ std::unique_ptr<web::NavigationContextImpl> context =
+ NavigationContextImpl::CreateSameDocumentNavigationContext(
+ nullptr /*web_state*/, GURL(kTestUrl1));
+ [states_ setContext:std::move(context) forNavigation:navigation3_];
+ EXPECT_EQ(navigation3_, [states_ lastAddedNavigation]);
+ EXPECT_EQ(WKNavigationState::NONE, [states_ lastAddedNavigationState]);
+}
+
+// Tests |setContext:forNavigation:| and |contextForNavigaiton:| methods.
+TEST_F(CRWWKNavigationStatesTest, Context) {
+ EXPECT_FALSE([states_ contextForNavigation:navigation1_]);
+ EXPECT_FALSE([states_ contextForNavigation:navigation2_]);
+ EXPECT_FALSE([states_ contextForNavigation:navigation3_]);
+
+ // Add first context.
+ std::unique_ptr<web::NavigationContextImpl> context1 =
+ NavigationContextImpl::CreateSameDocumentNavigationContext(
+ nullptr /*web_state*/, GURL(kTestUrl1));
+ [states_ setContext:std::move(context1) forNavigation:navigation1_];
+ EXPECT_FALSE([states_ contextForNavigation:navigation2_]);
+ EXPECT_FALSE([states_ contextForNavigation:navigation3_]);
+ ASSERT_TRUE([states_ contextForNavigation:navigation1_]);
+ EXPECT_EQ(GURL(kTestUrl1),
+ [states_ contextForNavigation:navigation1_]->GetUrl());
+ EXPECT_TRUE([states_ contextForNavigation:navigation1_]->IsSameDocument());
+ EXPECT_FALSE([states_ contextForNavigation:navigation1_]->IsErrorPage());
+
+ // Replace existing context.
+ std::unique_ptr<web::NavigationContextImpl> context2 =
+ NavigationContextImpl::CreateErrorPageNavigationContext(
+ nullptr /*web_state*/, GURL(kTestUrl2),
+ nullptr /* response_headers */);
+ [states_ setContext:std::move(context2) forNavigation:navigation1_];
+ EXPECT_FALSE([states_ contextForNavigation:navigation2_]);
+ EXPECT_FALSE([states_ contextForNavigation:navigation3_]);
+ ASSERT_TRUE([states_ contextForNavigation:navigation1_]);
+ EXPECT_EQ(GURL(kTestUrl2),
+ [states_ contextForNavigation:navigation1_]->GetUrl());
+ EXPECT_FALSE([states_ contextForNavigation:navigation1_]->IsSameDocument());
+ EXPECT_TRUE([states_ contextForNavigation:navigation1_]->IsErrorPage());
}
} // namespace web
« 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