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 #import <ChromeWebView/ChromeWebView.h> | 5 #import <ChromeWebView/ChromeWebView.h> |
6 #import <Foundation/Foundation.h> | 6 #import <Foundation/Foundation.h> |
7 | 7 |
8 #include "base/strings/stringprintf.h" | 8 #include "base/strings/stringprintf.h" |
9 #import "base/strings/sys_string_conversions.h" | 9 #import "base/strings/sys_string_conversions.h" |
10 #import "ios/testing/wait_util.h" | 10 #import "ios/testing/wait_util.h" |
(...skipping 29 matching lines...) Expand all Loading... |
40 GURL page_3_url = GetUrlForPageWithTitle("Page 3"); | 40 GURL page_3_url = GetUrlForPageWithTitle("Page 3"); |
41 | 41 |
42 std::string page_2_html = | 42 std::string page_2_html = |
43 "<a id='link_2' href='" + page_3_url.spec() + "'>Link 2</a>"; | 43 "<a id='link_2' href='" + page_3_url.spec() + "'>Link 2</a>"; |
44 GURL page_2_url = GetUrlForPageWithHtmlBody(page_2_html); | 44 GURL page_2_url = GetUrlForPageWithHtmlBody(page_2_html); |
45 | 45 |
46 std::string page_1_html = | 46 std::string page_1_html = |
47 "<a id='link_1' href='" + page_2_url.spec() + "'>Link 1</a>"; | 47 "<a id='link_1' href='" + page_2_url.spec() + "'>Link 1</a>"; |
48 GURL page_1_url = GetUrlForPageWithHtmlBody(page_1_html); | 48 GURL page_1_url = GetUrlForPageWithHtmlBody(page_1_html); |
49 | 49 |
50 LoadUrl(web_view_, net::NSURLWithGURL(page_1_url)); | 50 ASSERT_TRUE(test::LoadUrl(web_view_, net::NSURLWithGURL(page_1_url))); |
51 // Loading initial URL should not affect back/forward navigation state. | 51 // Loading initial URL should not affect back/forward navigation state. |
52 EXPECT_FALSE([back_observer.lastValue boolValue]); | 52 EXPECT_FALSE([back_observer.lastValue boolValue]); |
53 EXPECT_FALSE([forward_observer.lastValue boolValue]); | 53 EXPECT_FALSE([forward_observer.lastValue boolValue]); |
54 | 54 |
55 // Navigate to page 2. | 55 // Navigate to page 2. |
56 EXPECT_TRUE(test::TapChromeWebViewElementWithId(web_view_, @"link_1")); | 56 EXPECT_TRUE(test::TapWebViewElementWithId(web_view_, @"link_1")); |
57 WaitForPageLoadCompletion(web_view_); | 57 ASSERT_TRUE(test::WaitForWebViewLoadCompletionOrTimeout(web_view_)); |
58 EXPECT_TRUE([back_observer.lastValue boolValue]); | 58 EXPECT_TRUE([back_observer.lastValue boolValue]); |
59 EXPECT_FALSE([forward_observer.lastValue boolValue]); | 59 EXPECT_FALSE([forward_observer.lastValue boolValue]); |
60 | 60 |
61 // Navigate back to page 1. | 61 // Navigate back to page 1. |
62 [web_view_ goBack]; | 62 [web_view_ goBack]; |
63 WaitForPageLoadCompletion(web_view_); | 63 ASSERT_TRUE(test::WaitForWebViewLoadCompletionOrTimeout(web_view_)); |
64 EXPECT_FALSE([back_observer.lastValue boolValue]); | 64 EXPECT_FALSE([back_observer.lastValue boolValue]); |
65 EXPECT_TRUE([forward_observer.lastValue boolValue]); | 65 EXPECT_TRUE([forward_observer.lastValue boolValue]); |
66 | 66 |
67 // Navigate forward to page 2. | 67 // Navigate forward to page 2. |
68 [web_view_ goForward]; | 68 [web_view_ goForward]; |
69 WaitForPageLoadCompletion(web_view_); | 69 ASSERT_TRUE(test::WaitForWebViewLoadCompletionOrTimeout(web_view_)); |
70 EXPECT_TRUE([back_observer.lastValue boolValue]); | 70 EXPECT_TRUE([back_observer.lastValue boolValue]); |
71 EXPECT_FALSE([forward_observer.lastValue boolValue]); | 71 EXPECT_FALSE([forward_observer.lastValue boolValue]); |
72 | 72 |
73 // Navigate to page 3. | 73 // Navigate to page 3. |
74 EXPECT_TRUE(test::TapChromeWebViewElementWithId(web_view_, @"link_2")); | 74 EXPECT_TRUE(test::TapWebViewElementWithId(web_view_, @"link_2")); |
75 WaitForPageLoadCompletion(web_view_); | 75 ASSERT_TRUE(test::WaitForWebViewLoadCompletionOrTimeout(web_view_)); |
76 EXPECT_TRUE([back_observer.lastValue boolValue]); | 76 EXPECT_TRUE([back_observer.lastValue boolValue]); |
77 EXPECT_FALSE([forward_observer.lastValue boolValue]); | 77 EXPECT_FALSE([forward_observer.lastValue boolValue]); |
78 | 78 |
79 // Navigate back to page 2. | 79 // Navigate back to page 2. |
80 [web_view_ goBack]; | 80 [web_view_ goBack]; |
81 WaitForPageLoadCompletion(web_view_); | 81 ASSERT_TRUE(test::WaitForWebViewLoadCompletionOrTimeout(web_view_)); |
82 EXPECT_TRUE([back_observer.lastValue boolValue]); | 82 EXPECT_TRUE([back_observer.lastValue boolValue]); |
83 EXPECT_TRUE([forward_observer.lastValue boolValue]); | 83 EXPECT_TRUE([forward_observer.lastValue boolValue]); |
84 } | 84 } |
85 | 85 |
86 // Tests that CWVWebView correctly reports current |title|. | 86 // Tests that CWVWebView correctly reports current |title|. |
87 TEST_F(ChromeWebViewKvoTest, Title) { | 87 TEST_F(ChromeWebViewKvoTest, Title) { |
88 Observer* observer = [[Observer alloc] init]; | 88 Observer* observer = [[Observer alloc] init]; |
89 [observer setObservedObject:web_view_ keyPath:@"title"]; | 89 [observer setObservedObject:web_view_ keyPath:@"title"]; |
90 | 90 |
91 NSString* page_2_title = @"Page 2"; | 91 NSString* page_2_title = @"Page 2"; |
92 GURL page_2_url = | 92 GURL page_2_url = |
93 GetUrlForPageWithTitle(base::SysNSStringToUTF8(page_2_title)); | 93 GetUrlForPageWithTitle(base::SysNSStringToUTF8(page_2_title)); |
94 | 94 |
95 NSString* page_1_title = @"Page 1"; | 95 NSString* page_1_title = @"Page 1"; |
96 std::string page_1_html = base::StringPrintf( | 96 std::string page_1_html = base::StringPrintf( |
97 "<a id='link_1' href='%s'>Link 1</a>", page_2_url.spec().c_str()); | 97 "<a id='link_1' href='%s'>Link 1</a>", page_2_url.spec().c_str()); |
98 GURL page_1_url = GetUrlForPageWithTitleAndBody( | 98 GURL page_1_url = GetUrlForPageWithTitleAndBody( |
99 base::SysNSStringToUTF8(page_1_title), page_1_html); | 99 base::SysNSStringToUTF8(page_1_title), page_1_html); |
100 | 100 |
101 LoadUrl(web_view_, net::NSURLWithGURL(page_1_url)); | 101 ASSERT_TRUE(test::LoadUrl(web_view_, net::NSURLWithGURL(page_1_url))); |
102 EXPECT_NSEQ(page_1_title, observer.lastValue); | 102 EXPECT_NSEQ(page_1_title, observer.lastValue); |
103 | 103 |
104 // Navigate to page 2. | 104 // Navigate to page 2. |
105 EXPECT_TRUE(test::TapChromeWebViewElementWithId(web_view_, @"link_1")); | 105 EXPECT_TRUE(test::TapWebViewElementWithId(web_view_, @"link_1")); |
106 WaitForPageLoadCompletion(web_view_); | 106 ASSERT_TRUE(test::WaitForWebViewLoadCompletionOrTimeout(web_view_)); |
107 EXPECT_NSEQ(page_2_title, observer.lastValue); | 107 EXPECT_NSEQ(page_2_title, observer.lastValue); |
108 | 108 |
109 // Navigate back to page 1. | 109 // Navigate back to page 1. |
110 [web_view_ goBack]; | 110 [web_view_ goBack]; |
111 WaitForPageLoadCompletion(web_view_); | 111 ASSERT_TRUE(test::WaitForWebViewLoadCompletionOrTimeout(web_view_)); |
112 EXPECT_NSEQ(page_1_title, observer.lastValue); | 112 EXPECT_NSEQ(page_1_title, observer.lastValue); |
113 } | 113 } |
114 | 114 |
115 // Tests that CWVWebView correctly reports |isLoading| value. | 115 // Tests that CWVWebView correctly reports |isLoading| value. |
116 TEST_F(ChromeWebViewKvoTest, Loading) { | 116 TEST_F(ChromeWebViewKvoTest, Loading) { |
117 Observer* observer = [[Observer alloc] init]; | 117 Observer* observer = [[Observer alloc] init]; |
118 [observer setObservedObject:web_view_ keyPath:@"loading"]; | 118 [observer setObservedObject:web_view_ keyPath:@"loading"]; |
119 | 119 |
120 GURL page_2_url = GetUrlForPageWithTitle("Page 2"); | 120 GURL page_2_url = GetUrlForPageWithTitle("Page 2"); |
121 | 121 |
122 std::string page_1_html = base::StringPrintf( | 122 std::string page_1_html = base::StringPrintf( |
123 "<a id='link_1' href='%s'>Link 1</a>", page_2_url.spec().c_str()); | 123 "<a id='link_1' href='%s'>Link 1</a>", page_2_url.spec().c_str()); |
124 GURL page_1_url = GetUrlForPageWithTitleAndBody("Page 1", page_1_html); | 124 GURL page_1_url = GetUrlForPageWithTitleAndBody("Page 1", page_1_html); |
125 | 125 |
126 LoadUrl(web_view_, net::NSURLWithGURL(page_1_url)); | 126 ASSERT_TRUE(test::LoadUrl(web_view_, net::NSURLWithGURL(page_1_url))); |
127 EXPECT_TRUE([observer.previousValue boolValue]); | 127 EXPECT_TRUE([observer.previousValue boolValue]); |
128 EXPECT_FALSE([observer.lastValue boolValue]); | 128 EXPECT_FALSE([observer.lastValue boolValue]); |
129 | 129 |
130 // Navigate to page 2. | 130 // Navigate to page 2. |
131 EXPECT_TRUE(test::TapChromeWebViewElementWithId(web_view_, @"link_1")); | 131 EXPECT_TRUE(test::TapWebViewElementWithId(web_view_, @"link_1")); |
132 WaitForPageLoadCompletion(web_view_); | 132 ASSERT_TRUE(test::WaitForWebViewLoadCompletionOrTimeout(web_view_)); |
133 EXPECT_TRUE([observer.previousValue boolValue]); | 133 EXPECT_TRUE([observer.previousValue boolValue]); |
134 EXPECT_FALSE([observer.lastValue boolValue]); | 134 EXPECT_FALSE([observer.lastValue boolValue]); |
135 | 135 |
136 // Navigate back to page 1. | 136 // Navigate back to page 1. |
137 [web_view_ goBack]; | 137 [web_view_ goBack]; |
138 WaitForPageLoadCompletion(web_view_); | 138 ASSERT_TRUE(test::WaitForWebViewLoadCompletionOrTimeout(web_view_)); |
139 EXPECT_TRUE([observer.previousValue boolValue]); | 139 EXPECT_TRUE([observer.previousValue boolValue]); |
140 EXPECT_FALSE([observer.lastValue boolValue]); | 140 EXPECT_FALSE([observer.lastValue boolValue]); |
141 } | 141 } |
142 | 142 |
143 // Tests that CWVWebView correctly reports |visibleURL| and |lastCommittedURL|. | 143 // Tests that CWVWebView correctly reports |visibleURL| and |lastCommittedURL|. |
144 TEST_F(ChromeWebViewKvoTest, URLs) { | 144 TEST_F(ChromeWebViewKvoTest, URLs) { |
145 Observer* last_committed_url_observer = [[Observer alloc] init]; | 145 Observer* last_committed_url_observer = [[Observer alloc] init]; |
146 [last_committed_url_observer setObservedObject:web_view_ | 146 [last_committed_url_observer setObservedObject:web_view_ |
147 keyPath:@"lastCommittedURL"]; | 147 keyPath:@"lastCommittedURL"]; |
148 | 148 |
149 Observer* visible_url_observer = [[Observer alloc] init]; | 149 Observer* visible_url_observer = [[Observer alloc] init]; |
150 [visible_url_observer setObservedObject:web_view_ keyPath:@"visibleURL"]; | 150 [visible_url_observer setObservedObject:web_view_ keyPath:@"visibleURL"]; |
151 | 151 |
152 GURL page_2 = GetUrlForPageWithTitle("Page 2"); | 152 GURL page_2 = GetUrlForPageWithTitle("Page 2"); |
153 NSURL* page_2_url = net::NSURLWithGURL(page_2); | 153 NSURL* page_2_url = net::NSURLWithGURL(page_2); |
154 | 154 |
155 std::string page_1_html = base::StringPrintf( | 155 std::string page_1_html = base::StringPrintf( |
156 "<a id='link_1' href='%s'>Link 1</a>", page_2.spec().c_str()); | 156 "<a id='link_1' href='%s'>Link 1</a>", page_2.spec().c_str()); |
157 NSURL* page_1_url = | 157 NSURL* page_1_url = |
158 net::NSURLWithGURL(GetUrlForPageWithTitleAndBody("Page 1", page_1_html)); | 158 net::NSURLWithGURL(GetUrlForPageWithTitleAndBody("Page 1", page_1_html)); |
159 | 159 |
160 [web_view_ loadRequest:[NSURLRequest requestWithURL:page_1_url]]; | 160 [web_view_ loadRequest:[NSURLRequest requestWithURL:page_1_url]]; |
161 | 161 |
162 // |visibleURL| will update immediately | 162 // |visibleURL| will update immediately |
163 EXPECT_NSEQ(page_1_url, visible_url_observer.lastValue); | 163 EXPECT_NSEQ(page_1_url, visible_url_observer.lastValue); |
164 | 164 |
165 WaitForPageLoadCompletion(web_view_); | 165 ASSERT_TRUE(test::WaitForWebViewLoadCompletionOrTimeout(web_view_)); |
166 EXPECT_NSEQ(page_1_url, last_committed_url_observer.lastValue); | 166 EXPECT_NSEQ(page_1_url, last_committed_url_observer.lastValue); |
167 EXPECT_NSEQ(page_1_url, visible_url_observer.lastValue); | 167 EXPECT_NSEQ(page_1_url, visible_url_observer.lastValue); |
168 | 168 |
169 // Navigate to page 2. | 169 // Navigate to page 2. |
170 EXPECT_TRUE(test::TapChromeWebViewElementWithId(web_view_, @"link_1")); | 170 EXPECT_TRUE(test::TapWebViewElementWithId(web_view_, @"link_1")); |
171 WaitForPageLoadCompletion(web_view_); | 171 ASSERT_TRUE(test::WaitForWebViewLoadCompletionOrTimeout(web_view_)); |
172 EXPECT_NSEQ(page_2_url, last_committed_url_observer.lastValue); | 172 EXPECT_NSEQ(page_2_url, last_committed_url_observer.lastValue); |
173 EXPECT_NSEQ(page_2_url, visible_url_observer.lastValue); | 173 EXPECT_NSEQ(page_2_url, visible_url_observer.lastValue); |
174 | 174 |
175 // Navigate back to page 1. | 175 // Navigate back to page 1. |
176 [web_view_ goBack]; | 176 [web_view_ goBack]; |
177 WaitForPageLoadCompletion(web_view_); | 177 ASSERT_TRUE(test::WaitForWebViewLoadCompletionOrTimeout(web_view_)); |
178 EXPECT_NSEQ(page_1_url, last_committed_url_observer.lastValue); | 178 EXPECT_NSEQ(page_1_url, last_committed_url_observer.lastValue); |
179 EXPECT_NSEQ(page_1_url, visible_url_observer.lastValue); | 179 EXPECT_NSEQ(page_1_url, visible_url_observer.lastValue); |
180 } | 180 } |
181 | 181 |
182 } // namespace ios_web_view | 182 } // namespace ios_web_view |
OLD | NEW |