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/public/test/web_test_with_web_state.h" | 5 #import "ios/web/public/test/web_test_with_web_state.h" |
6 | 6 |
7 #import <WebKit/WebKit.h> | 7 #import <WebKit/WebKit.h> |
8 | 8 |
9 #include "base/base64.h" | 9 #include "base/base64.h" |
10 #include "base/strings/sys_string_conversions.h" | 10 #include "base/strings/sys_string_conversions.h" |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 base::test::ios::WaitUntilCondition(condition, messageLoop, | 148 base::test::ios::WaitUntilCondition(condition, messageLoop, |
149 base::TimeDelta::FromSeconds(10)); | 149 base::TimeDelta::FromSeconds(10)); |
150 } | 150 } |
151 | 151 |
152 id WebTestWithWebState::ExecuteJavaScript(NSString* script) { | 152 id WebTestWithWebState::ExecuteJavaScript(NSString* script) { |
153 __block base::scoped_nsprotocol<id> executionResult; | 153 __block base::scoped_nsprotocol<id> executionResult; |
154 __block bool executionCompleted = false; | 154 __block bool executionCompleted = false; |
155 [GetWebController(web_state()) | 155 [GetWebController(web_state()) |
156 executeJavaScript:script | 156 executeJavaScript:script |
157 completionHandler:^(id result, NSError* error) { | 157 completionHandler:^(id result, NSError* error) { |
158 if (error && error.code != WKErrorJavaScriptResultTypeIsUnsupported) { | |
159 NOTREACHED() << " error: " << error.code | |
160 << " for script: " << base::SysNSStringToUTF8(script); | |
161 } | |
162 executionResult.reset([result copy]); | 158 executionResult.reset([result copy]); |
163 executionCompleted = true; | 159 executionCompleted = true; |
164 }]; | 160 }]; |
165 base::test::ios::WaitUntilCondition(^{ | 161 base::test::ios::WaitUntilCondition(^{ |
166 return executionCompleted; | 162 return executionCompleted; |
167 }); | 163 }); |
168 return [[executionResult retain] autorelease]; | 164 return [[executionResult retain] autorelease]; |
169 } | 165 } |
170 | 166 |
171 std::string WebTestWithWebState::BaseUrl() const { | 167 std::string WebTestWithWebState::BaseUrl() const { |
172 web::URLVerificationTrustLevel unused_level; | 168 web::URLVerificationTrustLevel unused_level; |
173 return web_state()->GetCurrentURL(&unused_level).spec(); | 169 return web_state()->GetCurrentURL(&unused_level).spec(); |
174 } | 170 } |
175 | 171 |
176 web::WebState* WebTestWithWebState::web_state() { | 172 web::WebState* WebTestWithWebState::web_state() { |
177 return web_state_.get(); | 173 return web_state_.get(); |
178 } | 174 } |
179 | 175 |
180 const web::WebState* WebTestWithWebState::web_state() const { | 176 const web::WebState* WebTestWithWebState::web_state() const { |
181 return web_state_.get(); | 177 return web_state_.get(); |
182 } | 178 } |
183 | 179 |
184 bool WebTestWithWebState::ResetPageIfNavigationStalled(NSString* load_check) { | 180 bool WebTestWithWebState::ResetPageIfNavigationStalled(NSString* load_check) { |
185 id inner_html = ExecuteJavaScript( | 181 id inner_html = ExecuteJavaScript( |
186 @"(document && document.body && document.body.innerHTML) || 'undefined'"); | 182 @"(document && document.body && document.body.innerHTML) || 'undefined'"); |
187 if ([inner_html rangeOfString:load_check].location == NSNotFound) { | 183 if (![inner_html rangeOfString:load_check].length) { |
188 web_state_->SetWebUsageEnabled(false); | 184 web_state_->SetWebUsageEnabled(false); |
189 web_state_->SetWebUsageEnabled(true); | 185 web_state_->SetWebUsageEnabled(true); |
190 [GetWebController(web_state()) triggerPendingLoad]; | 186 [GetWebController(web_state()) triggerPendingLoad]; |
191 return true; | 187 return true; |
192 } | 188 } |
193 return false; | 189 return false; |
194 } | 190 } |
195 | 191 |
196 NSString* WebTestWithWebState::CreateLoadCheck() { | 192 NSString* WebTestWithWebState::CreateLoadCheck() { |
197 return [NSString stringWithFormat:@"<p style=\"display: none;\">%d</p>", | 193 return [NSString stringWithFormat:@"<p style=\"display: none;\">%d</p>", |
198 s_html_load_count++]; | 194 s_html_load_count++]; |
199 } | 195 } |
200 | 196 |
201 } // namespace web | 197 } // namespace web |
OLD | NEW |