OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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 #include <memory> | 5 #include <memory> |
6 #include <string> | 6 #include <string> |
7 | 7 |
8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
9 #import "ios/web/public/navigation_item.h" | 9 #import "ios/web/public/navigation_item.h" |
10 #import "ios/web/public/navigation_manager.h" | 10 #import "ios/web/public/navigation_manager.h" |
11 #import "ios/web/public/test/http_server.h" | 11 #import "ios/web/public/test/http_server.h" |
12 #include "ios/web/public/test/http_server_util.h" | 12 #include "ios/web/public/test/http_server_util.h" |
13 #include "ios/web/public/web_state/navigation_context.h" | 13 #import "ios/web/public/web_state/navigation_context.h" |
14 #include "ios/web/public/web_state/web_state_observer.h" | 14 #include "ios/web/public/web_state/web_state_observer.h" |
15 #include "ios/web/test/test_url_constants.h" | 15 #include "ios/web/test/test_url_constants.h" |
16 #import "ios/web/test/web_int_test.h" | 16 #import "ios/web/test/web_int_test.h" |
17 #include "testing/gmock/include/gmock/gmock.h" | 17 #include "testing/gmock/include/gmock/gmock.h" |
18 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
19 #include "url/gurl.h" | 19 #include "url/gurl.h" |
20 #include "url/scheme_host_port.h" | 20 #include "url/scheme_host_port.h" |
21 | 21 |
22 namespace web { | 22 namespace web { |
23 | 23 |
24 namespace { | 24 namespace { |
25 | 25 |
26 const char kExpectedMimeType[] = "text/html"; | 26 const char kExpectedMimeType[] = "text/html"; |
27 | 27 |
28 // Verifies correctness of |NavigationContext| (|arg0|) for new page navigation | 28 // Verifies correctness of |NavigationContext| (|arg0|) for new page navigation |
29 // passed to |DidStartNavigation|. Stores |NavigationContext| in |context| | 29 // passed to |DidStartNavigation|. Stores |NavigationContext| in |context| |
30 // pointer. | 30 // pointer. |
31 ACTION_P3(VerifyNewPageStartedContext, web_state, url, context) { | 31 ACTION_P3(VerifyNewPageStartedContext, web_state, url, context) { |
32 *context = arg0; | 32 *context = arg0; |
33 ASSERT_TRUE(*context); | 33 ASSERT_TRUE(*context); |
34 EXPECT_EQ(web_state, (*context)->GetWebState()); | 34 EXPECT_EQ(web_state, (*context)->GetWebState()); |
35 EXPECT_EQ(url, (*context)->GetUrl()); | 35 EXPECT_EQ(url, (*context)->GetUrl()); |
36 EXPECT_FALSE((*context)->IsSameDocument()); | 36 EXPECT_FALSE((*context)->IsSameDocument()); |
37 EXPECT_FALSE((*context)->IsErrorPage()); | 37 EXPECT_FALSE((*context)->GetError()); |
38 ASSERT_FALSE((*context)->GetResponseHeaders()); | 38 ASSERT_FALSE((*context)->GetResponseHeaders()); |
39 NavigationManager* navigation_manager = web_state->GetNavigationManager(); | 39 NavigationManager* navigation_manager = web_state->GetNavigationManager(); |
40 NavigationItem* item = navigation_manager->GetPendingItem(); | 40 NavigationItem* item = navigation_manager->GetPendingItem(); |
41 EXPECT_EQ(url, item->GetURL()); | 41 EXPECT_EQ(url, item->GetURL()); |
42 } | 42 } |
43 | 43 |
44 // Verifies correctness of |NavigationContext| (|arg0|) for new page navigation | 44 // Verifies correctness of |NavigationContext| (|arg0|) for new page navigation |
45 // passed to |DidFinishNavigation|. Asserts that |NavigationContext| the same as | 45 // passed to |DidFinishNavigation|. Asserts that |NavigationContext| the same as |
46 // |context|. | 46 // |context|. |
47 ACTION_P3(VerifyNewPageFinishedContext, web_state, url, context) { | 47 ACTION_P3(VerifyNewPageFinishedContext, web_state, url, context) { |
48 ASSERT_EQ(*context, arg0); | 48 ASSERT_EQ(*context, arg0); |
49 EXPECT_EQ(web_state, (*context)->GetWebState()); | 49 EXPECT_EQ(web_state, (*context)->GetWebState()); |
50 ASSERT_TRUE((*context)); | 50 ASSERT_TRUE((*context)); |
51 EXPECT_EQ(web_state, (*context)->GetWebState()); | 51 EXPECT_EQ(web_state, (*context)->GetWebState()); |
52 EXPECT_EQ(url, (*context)->GetUrl()); | 52 EXPECT_EQ(url, (*context)->GetUrl()); |
53 EXPECT_FALSE((*context)->IsSameDocument()); | 53 EXPECT_FALSE((*context)->IsSameDocument()); |
54 EXPECT_FALSE((*context)->IsErrorPage()); | 54 EXPECT_FALSE((*context)->GetError()); |
55 ASSERT_TRUE((*context)->GetResponseHeaders()); | 55 ASSERT_TRUE((*context)->GetResponseHeaders()); |
56 std::string mime_type; | 56 std::string mime_type; |
57 (*context)->GetResponseHeaders()->GetMimeType(&mime_type); | 57 (*context)->GetResponseHeaders()->GetMimeType(&mime_type); |
58 EXPECT_EQ(kExpectedMimeType, mime_type); | 58 EXPECT_EQ(kExpectedMimeType, mime_type); |
59 NavigationManager* navigation_manager = web_state->GetNavigationManager(); | 59 NavigationManager* navigation_manager = web_state->GetNavigationManager(); |
60 NavigationItem* item = navigation_manager->GetLastCommittedItem(); | 60 NavigationItem* item = navigation_manager->GetLastCommittedItem(); |
61 EXPECT_GT(item->GetTimestamp().ToInternalValue(), 0); | 61 EXPECT_GT(item->GetTimestamp().ToInternalValue(), 0); |
62 EXPECT_EQ(url, item->GetURL()); | 62 EXPECT_EQ(url, item->GetURL()); |
63 } | 63 } |
64 | 64 |
65 // Verifies correctness of |NavigationContext| (|arg0|) for same page navigation | 65 // Verifies correctness of |NavigationContext| (|arg0|) for same page navigation |
66 // passed to |DidFinishNavigation|. Stores |NavigationContext| in |context| | 66 // passed to |DidFinishNavigation|. Stores |NavigationContext| in |context| |
67 // pointer. | 67 // pointer. |
68 ACTION_P3(VerifySameDocumentStartedContext, web_state, url, context) { | 68 ACTION_P3(VerifySameDocumentStartedContext, web_state, url, context) { |
69 *context = arg0; | 69 *context = arg0; |
70 ASSERT_TRUE(*context); | 70 ASSERT_TRUE(*context); |
71 EXPECT_EQ(web_state, (*context)->GetWebState()); | 71 EXPECT_EQ(web_state, (*context)->GetWebState()); |
72 EXPECT_EQ(url, (*context)->GetUrl()); | 72 EXPECT_EQ(url, (*context)->GetUrl()); |
73 EXPECT_FALSE((*context)->IsSameDocument()); | 73 EXPECT_FALSE((*context)->IsSameDocument()); |
74 EXPECT_FALSE((*context)->IsErrorPage()); | 74 EXPECT_FALSE((*context)->GetError()); |
75 EXPECT_FALSE((*context)->GetResponseHeaders()); | 75 EXPECT_FALSE((*context)->GetResponseHeaders()); |
76 } | 76 } |
77 | 77 |
78 // Verifies correctness of |NavigationContext| (|arg0|) for same page navigation | 78 // Verifies correctness of |NavigationContext| (|arg0|) for same page navigation |
79 // passed to |DidFinishNavigation|. Asserts that |NavigationContext| the same as | 79 // passed to |DidFinishNavigation|. Asserts that |NavigationContext| the same as |
80 // |context|. | 80 // |context|. |
81 ACTION_P3(VerifySameDocumentFinishedContext, web_state, url, context) { | 81 ACTION_P3(VerifySameDocumentFinishedContext, web_state, url, context) { |
82 ASSERT_EQ(*context, arg0); | 82 ASSERT_EQ(*context, arg0); |
83 ASSERT_TRUE(*context); | 83 ASSERT_TRUE(*context); |
84 EXPECT_EQ(web_state, (*context)->GetWebState()); | 84 EXPECT_EQ(web_state, (*context)->GetWebState()); |
85 EXPECT_EQ(url, (*context)->GetUrl()); | 85 EXPECT_EQ(url, (*context)->GetUrl()); |
86 EXPECT_TRUE((*context)->IsSameDocument()); | 86 EXPECT_TRUE((*context)->IsSameDocument()); |
87 EXPECT_FALSE((*context)->IsErrorPage()); | 87 EXPECT_FALSE((*context)->GetError()); |
88 EXPECT_FALSE((*context)->GetResponseHeaders()); | 88 EXPECT_FALSE((*context)->GetResponseHeaders()); |
89 NavigationManager* navigation_manager = web_state->GetNavigationManager(); | 89 NavigationManager* navigation_manager = web_state->GetNavigationManager(); |
90 NavigationItem* item = navigation_manager->GetLastCommittedItem(); | 90 NavigationItem* item = navigation_manager->GetLastCommittedItem(); |
91 EXPECT_GT(item->GetTimestamp().ToInternalValue(), 0); | 91 EXPECT_GT(item->GetTimestamp().ToInternalValue(), 0); |
92 EXPECT_EQ(url, item->GetURL()); | 92 EXPECT_EQ(url, item->GetURL()); |
93 } | 93 } |
94 | 94 |
95 // Verifies correctness of |NavigationContext| (|arg0|) for new page navigation | 95 // Verifies correctness of |NavigationContext| (|arg0|) for new page navigation |
96 // to native URLs passed to |DidStartNavigation|. Stores |NavigationContext| in | 96 // to native URLs passed to |DidStartNavigation|. Stores |NavigationContext| in |
97 // |context| pointer. | 97 // |context| pointer. |
98 ACTION_P3(VerifyNewNativePageStartedContext, web_state, url, context) { | 98 ACTION_P3(VerifyNewNativePageStartedContext, web_state, url, context) { |
99 *context = arg0; | 99 *context = arg0; |
100 ASSERT_TRUE(*context); | 100 ASSERT_TRUE(*context); |
101 EXPECT_EQ(web_state, (*context)->GetWebState()); | 101 EXPECT_EQ(web_state, (*context)->GetWebState()); |
102 EXPECT_EQ(url, (*context)->GetUrl()); | 102 EXPECT_EQ(url, (*context)->GetUrl()); |
103 EXPECT_FALSE((*context)->IsSameDocument()); | 103 EXPECT_FALSE((*context)->IsSameDocument()); |
104 EXPECT_FALSE((*context)->IsErrorPage()); | 104 EXPECT_FALSE((*context)->GetError()); |
105 EXPECT_FALSE((*context)->GetResponseHeaders()); | 105 EXPECT_FALSE((*context)->GetResponseHeaders()); |
106 NavigationManager* navigation_manager = web_state->GetNavigationManager(); | 106 NavigationManager* navigation_manager = web_state->GetNavigationManager(); |
107 NavigationItem* item = navigation_manager->GetPendingItem(); | 107 NavigationItem* item = navigation_manager->GetPendingItem(); |
108 EXPECT_EQ(url, item->GetURL()); | 108 EXPECT_EQ(url, item->GetURL()); |
109 } | 109 } |
110 | 110 |
111 // Verifies correctness of |NavigationContext| (|arg0|) for new page navigation | 111 // Verifies correctness of |NavigationContext| (|arg0|) for new page navigation |
112 // to native URLs passed to |DidFinishNavigation|. Asserts that | 112 // to native URLs passed to |DidFinishNavigation|. Asserts that |
113 // |NavigationContext| the same as |context|. | 113 // |NavigationContext| the same as |context|. |
114 ACTION_P3(VerifyNewNativePageFinishedContext, web_state, url, context) { | 114 ACTION_P3(VerifyNewNativePageFinishedContext, web_state, url, context) { |
115 ASSERT_EQ(*context, arg0); | 115 ASSERT_EQ(*context, arg0); |
116 ASSERT_TRUE(*context); | 116 ASSERT_TRUE(*context); |
117 EXPECT_EQ(web_state, (*context)->GetWebState()); | 117 EXPECT_EQ(web_state, (*context)->GetWebState()); |
118 EXPECT_EQ(url, (*context)->GetUrl()); | 118 EXPECT_EQ(url, (*context)->GetUrl()); |
119 EXPECT_FALSE((*context)->IsSameDocument()); | 119 EXPECT_FALSE((*context)->IsSameDocument()); |
120 EXPECT_FALSE((*context)->IsErrorPage()); | 120 EXPECT_FALSE((*context)->GetError()); |
121 EXPECT_FALSE((*context)->GetResponseHeaders()); | 121 EXPECT_FALSE((*context)->GetResponseHeaders()); |
122 NavigationManager* navigation_manager = web_state->GetNavigationManager(); | 122 NavigationManager* navigation_manager = web_state->GetNavigationManager(); |
123 NavigationItem* item = navigation_manager->GetLastCommittedItem(); | 123 NavigationItem* item = navigation_manager->GetLastCommittedItem(); |
124 EXPECT_GT(item->GetTimestamp().ToInternalValue(), 0); | 124 EXPECT_GT(item->GetTimestamp().ToInternalValue(), 0); |
125 EXPECT_EQ(url, item->GetURL()); | 125 EXPECT_EQ(url, item->GetURL()); |
126 } | 126 } |
127 | 127 |
128 // Mocks DidFinishNavigation navigation callback. | 128 // Mocks DidFinishNavigation navigation callback. |
129 class WebStateObserverMock : public WebStateObserver { | 129 class WebStateObserverMock : public WebStateObserver { |
130 public: | 130 public: |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
268 GURL url(url::SchemeHostPort(kTestNativeContentScheme, "ui", 0).Serialize()); | 268 GURL url(url::SchemeHostPort(kTestNativeContentScheme, "ui", 0).Serialize()); |
269 NavigationContext* context = nullptr; | 269 NavigationContext* context = nullptr; |
270 EXPECT_CALL(*observer_, DidStartNavigation(_)) | 270 EXPECT_CALL(*observer_, DidStartNavigation(_)) |
271 .WillOnce(VerifyNewNativePageStartedContext(web_state(), url, &context)); | 271 .WillOnce(VerifyNewNativePageStartedContext(web_state(), url, &context)); |
272 EXPECT_CALL(*observer_, DidFinishNavigation(_)) | 272 EXPECT_CALL(*observer_, DidFinishNavigation(_)) |
273 .WillOnce(VerifyNewNativePageFinishedContext(web_state(), url, &context)); | 273 .WillOnce(VerifyNewNativePageFinishedContext(web_state(), url, &context)); |
274 LoadUrl(url); | 274 LoadUrl(url); |
275 } | 275 } |
276 | 276 |
277 } // namespace web | 277 } // namespace web |
OLD | NEW |