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

Side by Side Diff: android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java

Issue 11028094: [android_webview] Use AwContents loadUrl method instead of ContentViewCore. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: rebase yet again Created 8 years, 2 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 package org.chromium.android_webview.test; 5 package org.chromium.android_webview.test;
6 6
7 import android.content.Context; 7 import android.content.Context;
8 import android.os.Build; 8 import android.os.Build;
9 import android.test.suitebuilder.annotation.SmallTest; 9 import android.test.suitebuilder.annotation.SmallTest;
10 import android.util.Pair;
11 10
12 import org.chromium.android_webview.AndroidProtocolHandler; 11 import org.chromium.android_webview.AndroidProtocolHandler;
13 import org.chromium.android_webview.AwContents; 12 import org.chromium.android_webview.AwContents;
14 import org.chromium.android_webview.AwSettings; 13 import org.chromium.android_webview.AwSettings;
15 import org.chromium.android_webview.test.util.CommonResources; 14 import org.chromium.android_webview.test.util.CommonResources;
16 import org.chromium.android_webview.test.util.ImagePageGenerator; 15 import org.chromium.android_webview.test.util.ImagePageGenerator;
17 import org.chromium.android_webview.test.util.TestWebServer; 16 import org.chromium.android_webview.test.util.TestWebServer;
18 import org.chromium.base.test.util.Feature; 17 import org.chromium.base.test.util.Feature;
19 import org.chromium.base.test.util.TestFileUtil; 18 import org.chromium.base.test.util.TestFileUtil;
20 import org.chromium.base.test.util.UrlUtils; 19 import org.chromium.base.test.util.UrlUtils;
(...skipping 22 matching lines...) Expand all
43 private static final boolean ENABLED = true; 42 private static final boolean ENABLED = true;
44 private static final boolean DISABLED = false; 43 private static final boolean DISABLED = false;
45 44
46 /** 45 /**
47 * A helper class for testing a particular preference from ContentSettings. 46 * A helper class for testing a particular preference from ContentSettings.
48 * The generic type T is the type of the setting. Usually, to test an 47 * The generic type T is the type of the setting. Usually, to test an
49 * effect of the preference, JS code is executed that sets document's title. 48 * effect of the preference, JS code is executed that sets document's title.
50 * In this case, requiresJsEnabled constructor argument must be set to true. 49 * In this case, requiresJsEnabled constructor argument must be set to true.
51 */ 50 */
52 abstract class AwSettingsTestHelper<T> { 51 abstract class AwSettingsTestHelper<T> {
53 protected final ContentViewCore mContentViewCore; 52 protected final AwContents mAwContents;
54 protected final TestAwContentsClient mContentViewClient; 53 protected final TestAwContentsClient mContentViewClient;
55 protected final ContentSettings mContentSettings; 54 protected final ContentSettings mContentSettings;
56 55
57 AwSettingsTestHelper(ContentViewCore contentViewCore, 56 AwSettingsTestHelper(AwContents awContents,
58 TestAwContentsClient contentViewClient, 57 TestAwContentsClient contentViewClient,
59 boolean requiresJsEnabled) throws Throwable { 58 boolean requiresJsEnabled) throws Throwable {
60 mContentViewCore = contentViewCore; 59 mAwContents = awContents;
61 mContentViewClient = contentViewClient; 60 mContentViewClient = contentViewClient;
62 mContentSettings = getContentSettingsOnUiThread(mContentViewCore); 61 mContentSettings = getContentSettingsOnUiThread(mAwContents);
63 if (requiresJsEnabled) { 62 if (requiresJsEnabled) {
64 mContentSettings.setJavaScriptEnabled(true); 63 mContentSettings.setJavaScriptEnabled(true);
65 } 64 }
66 } 65 }
67 66
68 void ensureSettingHasAlteredValue() throws Throwable { 67 void ensureSettingHasAlteredValue() throws Throwable {
69 ensureSettingHasValue(getAlteredValue()); 68 ensureSettingHasValue(getAlteredValue());
70 } 69 }
71 70
72 void ensureSettingHasInitialValue() throws Throwable { 71 void ensureSettingHasInitialValue() throws Throwable {
(...skipping 12 matching lines...) Expand all
85 84
86 protected abstract T getInitialValue(); 85 protected abstract T getInitialValue();
87 86
88 protected abstract T getCurrentValue(); 87 protected abstract T getCurrentValue();
89 88
90 protected abstract void setCurrentValue(T value); 89 protected abstract void setCurrentValue(T value);
91 90
92 protected abstract void doEnsureSettingHasValue(T value) throws Throwabl e; 91 protected abstract void doEnsureSettingHasValue(T value) throws Throwabl e;
93 92
94 protected String getTitleOnUiThread() throws Throwable { 93 protected String getTitleOnUiThread() throws Throwable {
95 return AwSettingsTest.this.getTitleOnUiThread(mContentViewCore); 94 return AwSettingsTest.this.getTitleOnUiThread(mAwContents);
96 } 95 }
97 96
98 protected void loadDataSync(String data) throws Throwable { 97 protected void loadDataSync(String data) throws Throwable {
99 AwSettingsTest.this.loadDataSync( 98 AwSettingsTest.this.loadDataSync(
100 mContentViewCore, 99 mAwContents,
101 mContentViewClient.getOnPageFinishedHelper(), 100 mContentViewClient.getOnPageFinishedHelper(),
102 data, 101 data,
103 "text/html", 102 "text/html",
104 false); 103 false);
105 } 104 }
106 105
107 protected void loadUrlSync(String url) throws Throwable { 106 protected void loadUrlSync(String url) throws Throwable {
108 AwSettingsTest.this.loadUrlSync( 107 AwSettingsTest.this.loadUrlSync(
109 mContentViewCore, 108 mAwContents,
110 mContentViewClient.getOnPageFinishedHelper(), 109 mContentViewClient.getOnPageFinishedHelper(),
111 url); 110 url);
112 } 111 }
113 112
114 protected void loadUrlSyncAndExpectError(String url) throws Throwable { 113 protected void loadUrlSyncAndExpectError(String url) throws Throwable {
115 AwSettingsTest.this.loadUrlSyncAndExpectError( 114 AwSettingsTest.this.loadUrlSyncAndExpectError(
116 mContentViewCore, 115 mAwContents,
117 mContentViewClient.getOnPageFinishedHelper(), 116 mContentViewClient.getOnPageFinishedHelper(),
118 mContentViewClient.getOnReceivedErrorHelper(), 117 mContentViewClient.getOnReceivedErrorHelper(),
119 url); 118 url);
120 } 119 }
121 120
122 private void ensureSettingHasValue(T value) throws Throwable { 121 private void ensureSettingHasValue(T value) throws Throwable {
123 assertEquals(value, getCurrentValue()); 122 assertEquals(value, getCurrentValue());
124 doEnsureSettingHasValue(value); 123 doEnsureSettingHasValue(value);
125 } 124 }
126 } 125 }
127 126
128 class AwSettingsJavaScriptTestHelper extends AwSettingsTestHelper<Boolean> { 127 class AwSettingsJavaScriptTestHelper extends AwSettingsTestHelper<Boolean> {
129 private static final String JS_ENABLED_STRING = "JS Enabled"; 128 private static final String JS_ENABLED_STRING = "JS Enabled";
130 private static final String JS_DISABLED_STRING = "JS Disabled"; 129 private static final String JS_DISABLED_STRING = "JS Disabled";
131 130
132 AwSettingsJavaScriptTestHelper(ContentViewCore contentViewCore, 131 AwSettingsJavaScriptTestHelper(AwContents awContents,
133 TestAwContentsClient contentViewClient) t hrows Throwable { 132 TestAwContentsClient contentViewClient) t hrows Throwable {
134 super(contentViewCore, contentViewClient, false); 133 super(awContents, contentViewClient, false);
135 } 134 }
136 135
137 @Override 136 @Override
138 protected Boolean getAlteredValue() { 137 protected Boolean getAlteredValue() {
139 return ENABLED; 138 return ENABLED;
140 } 139 }
141 140
142 @Override 141 @Override
143 protected Boolean getInitialValue() { 142 protected Boolean getInitialValue() {
144 return DISABLED; 143 return DISABLED;
(...skipping 21 matching lines...) Expand all
166 return "<html><head><title>" + JS_DISABLED_STRING + "</title>" 165 return "<html><head><title>" + JS_DISABLED_STRING + "</title>"
167 + "</head><body onload=\"document.title='" + JS_ENABLED_STRI NG 166 + "</head><body onload=\"document.title='" + JS_ENABLED_STRI NG
168 + "';\"></body></html>"; 167 + "';\"></body></html>";
169 } 168 }
170 } 169 }
171 170
172 // In contrast to AwSettingsJavaScriptTestHelper, doesn't reload the page wh en testing 171 // In contrast to AwSettingsJavaScriptTestHelper, doesn't reload the page wh en testing
173 // JavaScript state. 172 // JavaScript state.
174 class AwSettingsJavaScriptDynamicTestHelper extends AwSettingsJavaScriptTest Helper { 173 class AwSettingsJavaScriptDynamicTestHelper extends AwSettingsJavaScriptTest Helper {
175 AwSettingsJavaScriptDynamicTestHelper( 174 AwSettingsJavaScriptDynamicTestHelper(
176 ContentViewCore contentViewCore, 175 AwContents awContents,
177 TestAwContentsClient contentViewClient) throws Throwable { 176 TestAwContentsClient contentViewClient) throws Throwable {
178 super(contentViewCore, contentViewClient); 177 super(awContents, contentViewClient);
179 // Load the page. 178 // Load the page.
180 super.doEnsureSettingHasValue(getInitialValue()); 179 super.doEnsureSettingHasValue(getInitialValue());
181 } 180 }
182 181
183 @Override 182 @Override
184 protected void doEnsureSettingHasValue(Boolean value) throws Throwable { 183 protected void doEnsureSettingHasValue(Boolean value) throws Throwable {
185 String oldTitle = getTitleOnUiThread(); 184 String oldTitle = getTitleOnUiThread();
186 String newTitle = oldTitle + "_modified"; 185 String newTitle = oldTitle + "_modified";
187 executeJavaScriptAndWaitForResult( 186 executeJavaScriptAndWaitForResult(
188 mContentViewCore, mContentViewClient, getScript(newTitle)); 187 mAwContents, mContentViewClient, getScript(newTitle));
189 assertEquals(value == ENABLED ? newTitle : oldTitle, getTitleOnUiThr ead()); 188 assertEquals(value == ENABLED ? newTitle : oldTitle, getTitleOnUiThr ead());
190 } 189 }
191 190
192 private String getScript(String title) { 191 private String getScript(String title) {
193 return "document.title='" + title + "';"; 192 return "document.title='" + title + "';";
194 } 193 }
195 } 194 }
196 195
197 class AwSettingsPluginsTestHelper extends AwSettingsTestHelper<Boolean> { 196 class AwSettingsPluginsTestHelper extends AwSettingsTestHelper<Boolean> {
198 private static final String PLUGINS_ENABLED_STRING = "Embed"; 197 private static final String PLUGINS_ENABLED_STRING = "Embed";
199 private static final String PLUGINS_DISABLED_STRING = "NoEmbed"; 198 private static final String PLUGINS_DISABLED_STRING = "NoEmbed";
200 199
201 AwSettingsPluginsTestHelper(ContentViewCore contentViewCore, 200 AwSettingsPluginsTestHelper(AwContents awContents,
202 TestAwContentsClient contentViewClient) thro ws Throwable { 201 TestAwContentsClient contentViewClient) thro ws Throwable {
203 super(contentViewCore, contentViewClient, true); 202 super(awContents, contentViewClient, true);
204 } 203 }
205 204
206 @Override 205 @Override
207 protected Boolean getAlteredValue() { 206 protected Boolean getAlteredValue() {
208 return ENABLED; 207 return ENABLED;
209 } 208 }
210 209
211 @Override 210 @Override
212 protected Boolean getInitialValue() { 211 protected Boolean getInitialValue() {
213 return DISABLED; 212 return DISABLED;
(...skipping 18 matching lines...) Expand all
232 } 231 }
233 232
234 private String getData() { 233 private String getData() {
235 return "<html><body onload=\"document.title = document.body.innerTex t;\">" 234 return "<html><body onload=\"document.title = document.body.innerTex t;\">"
236 + "<noembed>No</noembed><span>Embed</span></body></html>"; 235 + "<noembed>No</noembed><span>Embed</span></body></html>";
237 } 236 }
238 } 237 }
239 238
240 class AwSettingsStandardFontFamilyTestHelper extends AwSettingsTestHelper<St ring> { 239 class AwSettingsStandardFontFamilyTestHelper extends AwSettingsTestHelper<St ring> {
241 AwSettingsStandardFontFamilyTestHelper( 240 AwSettingsStandardFontFamilyTestHelper(
242 ContentViewCore contentViewCore, 241 AwContents awContents,
243 TestAwContentsClient contentViewClient) throws Throwable { 242 TestAwContentsClient contentViewClient) throws Throwable {
244 super(contentViewCore, contentViewClient, true); 243 super(awContents, contentViewClient, true);
245 } 244 }
246 245
247 @Override 246 @Override
248 protected String getAlteredValue() { 247 protected String getAlteredValue() {
249 return "cursive"; 248 return "cursive";
250 } 249 }
251 250
252 @Override 251 @Override
253 protected String getInitialValue() { 252 protected String getInitialValue() {
254 return "sans-serif"; 253 return "sans-serif";
(...skipping 17 matching lines...) Expand all
272 271
273 private String getData() { 272 private String getData() {
274 return "<html><body onload=\"document.title = " + 273 return "<html><body onload=\"document.title = " +
275 "getComputedStyle(document.body).getPropertyValue('font-fami ly');\">" 274 "getComputedStyle(document.body).getPropertyValue('font-fami ly');\">"
276 + "</body></html>"; 275 + "</body></html>";
277 } 276 }
278 } 277 }
279 278
280 class AwSettingsDefaultFontSizeTestHelper extends AwSettingsTestHelper<Integ er> { 279 class AwSettingsDefaultFontSizeTestHelper extends AwSettingsTestHelper<Integ er> {
281 AwSettingsDefaultFontSizeTestHelper( 280 AwSettingsDefaultFontSizeTestHelper(
282 ContentViewCore contentViewCore, 281 AwContents awContents,
283 TestAwContentsClient contentViewClient) throws Throwable { 282 TestAwContentsClient contentViewClient) throws Throwable {
284 super(contentViewCore, contentViewClient, true); 283 super(awContents, contentViewClient, true);
285 } 284 }
286 285
287 @Override 286 @Override
288 protected Integer getAlteredValue() { 287 protected Integer getAlteredValue() {
289 return 42; 288 return 42;
290 } 289 }
291 290
292 @Override 291 @Override
293 protected Integer getInitialValue() { 292 protected Integer getInitialValue() {
294 return 16; 293 return 16;
(...skipping 19 matching lines...) Expand all
314 return "<html><body onload=\"document.title = " + 313 return "<html><body onload=\"document.title = " +
315 "getComputedStyle(document.body).getPropertyValue('font-size ');\">" 314 "getComputedStyle(document.body).getPropertyValue('font-size ');\">"
316 + "</body></html>"; 315 + "</body></html>";
317 } 316 }
318 } 317 }
319 318
320 class AwSettingsLoadImagesAutomaticallyTestHelper extends AwSettingsTestHelp er<Boolean> { 319 class AwSettingsLoadImagesAutomaticallyTestHelper extends AwSettingsTestHelp er<Boolean> {
321 private ImagePageGenerator mGenerator; 320 private ImagePageGenerator mGenerator;
322 321
323 AwSettingsLoadImagesAutomaticallyTestHelper( 322 AwSettingsLoadImagesAutomaticallyTestHelper(
324 ContentViewCore contentViewCore, 323 AwContents awContents,
325 TestAwContentsClient contentViewClient, 324 TestAwContentsClient contentViewClient,
326 ImagePageGenerator generator) throws Throwable { 325 ImagePageGenerator generator) throws Throwable {
327 super(contentViewCore, contentViewClient, true); 326 super(awContents, contentViewClient, true);
328 mGenerator = generator; 327 mGenerator = generator;
329 } 328 }
330 329
331 @Override 330 @Override
332 protected Boolean getAlteredValue() { 331 protected Boolean getAlteredValue() {
333 return DISABLED; 332 return DISABLED;
334 } 333 }
335 334
336 @Override 335 @Override
337 protected Boolean getInitialValue() { 336 protected Boolean getInitialValue() {
(...skipping 15 matching lines...) Expand all
353 loadDataSync(mGenerator.getPageSource()); 352 loadDataSync(mGenerator.getPageSource());
354 assertEquals(value == ENABLED ? 353 assertEquals(value == ENABLED ?
355 ImagePageGenerator.IMAGE_LOADED_STRING : 354 ImagePageGenerator.IMAGE_LOADED_STRING :
356 ImagePageGenerator.IMAGE_NOT_LOADED_STRING, 355 ImagePageGenerator.IMAGE_NOT_LOADED_STRING,
357 getTitleOnUiThread()); 356 getTitleOnUiThread());
358 } 357 }
359 } 358 }
360 359
361 class AwSettingsDefaultTextEncodingTestHelper extends AwSettingsTestHelper<S tring> { 360 class AwSettingsDefaultTextEncodingTestHelper extends AwSettingsTestHelper<S tring> {
362 AwSettingsDefaultTextEncodingTestHelper( 361 AwSettingsDefaultTextEncodingTestHelper(
363 ContentViewCore contentViewCore, 362 AwContents awContents,
364 TestAwContentsClient contentViewClient) throws Throwable { 363 TestAwContentsClient contentViewClient) throws Throwable {
365 super(contentViewCore, contentViewClient, true); 364 super(awContents, contentViewClient, true);
366 } 365 }
367 366
368 @Override 367 @Override
369 protected String getAlteredValue() { 368 protected String getAlteredValue() {
370 return "utf-8"; 369 return "utf-8";
371 } 370 }
372 371
373 @Override 372 @Override
374 protected String getInitialValue() { 373 protected String getInitialValue() {
375 return "Latin-1"; 374 return "Latin-1";
(...skipping 19 matching lines...) Expand all
395 return "<html><body onload='document.title=document.defaultCharset'> </body></html>"; 394 return "<html><body onload='document.title=document.defaultCharset'> </body></html>";
396 } 395 }
397 } 396 }
398 397
399 class AwSettingsUserAgentStringTestHelper extends AwSettingsTestHelper<Strin g> { 398 class AwSettingsUserAgentStringTestHelper extends AwSettingsTestHelper<Strin g> {
400 private final String mDefaultUa; 399 private final String mDefaultUa;
401 private static final String DEFAULT_UA = ""; 400 private static final String DEFAULT_UA = "";
402 private static final String CUSTOM_UA = "ChromeViewTest"; 401 private static final String CUSTOM_UA = "ChromeViewTest";
403 402
404 AwSettingsUserAgentStringTestHelper( 403 AwSettingsUserAgentStringTestHelper(
405 ContentViewCore contentViewCore, 404 AwContents awContents,
406 TestAwContentsClient contentViewClient) throws Throwable { 405 TestAwContentsClient contentViewClient) throws Throwable {
407 super(contentViewCore, contentViewClient, true); 406 super(awContents, contentViewClient, true);
408 mDefaultUa = mContentSettings.getUserAgentString(); 407 mDefaultUa = mContentSettings.getUserAgentString();
409 } 408 }
410 409
411 @Override 410 @Override
412 protected String getAlteredValue() { 411 protected String getAlteredValue() {
413 return CUSTOM_UA; 412 return CUSTOM_UA;
414 } 413 }
415 414
416 @Override 415 @Override
417 protected String getInitialValue() { 416 protected String getInitialValue() {
(...skipping 27 matching lines...) Expand all
445 private String getData() { 444 private String getData() {
446 return "<html><body onload='document.title=navigator.userAgent'></bo dy></html>"; 445 return "<html><body onload='document.title=navigator.userAgent'></bo dy></html>";
447 } 446 }
448 } 447 }
449 448
450 class AwSettingsDomStorageEnabledTestHelper extends AwSettingsTestHelper<Boo lean> { 449 class AwSettingsDomStorageEnabledTestHelper extends AwSettingsTestHelper<Boo lean> {
451 private static final String NO_LOCAL_STORAGE = "No localStorage"; 450 private static final String NO_LOCAL_STORAGE = "No localStorage";
452 private static final String HAS_LOCAL_STORAGE = "Has localStorage"; 451 private static final String HAS_LOCAL_STORAGE = "Has localStorage";
453 452
454 AwSettingsDomStorageEnabledTestHelper( 453 AwSettingsDomStorageEnabledTestHelper(
455 ContentViewCore contentViewCore, 454 AwContents awContents,
456 TestAwContentsClient contentViewClient) throws Throwable { 455 TestAwContentsClient contentViewClient) throws Throwable {
457 super(contentViewCore, contentViewClient, true); 456 super(awContents, contentViewClient, true);
458 } 457 }
459 458
460 @Override 459 @Override
461 protected Boolean getAlteredValue() { 460 protected Boolean getAlteredValue() {
462 return ENABLED; 461 return ENABLED;
463 } 462 }
464 463
465 @Override 464 @Override
466 protected Boolean getInitialValue() { 465 protected Boolean getInitialValue() {
467 return DISABLED; 466 return DISABLED;
(...skipping 19 matching lines...) Expand all
487 getTitleOnUiThread()); 486 getTitleOnUiThread());
488 } 487 }
489 } 488 }
490 489
491 class AwSettingsUniversalAccessFromFilesTestHelper extends AwSettingsTestHel per<Boolean> { 490 class AwSettingsUniversalAccessFromFilesTestHelper extends AwSettingsTestHel per<Boolean> {
492 // TODO(mnaganov): Change to "Exception" once 491 // TODO(mnaganov): Change to "Exception" once
493 // https://bugs.webkit.org/show_bug.cgi?id=43504 is fixed. 492 // https://bugs.webkit.org/show_bug.cgi?id=43504 is fixed.
494 private static final String ACCESS_DENIED_TITLE = "undefined"; 493 private static final String ACCESS_DENIED_TITLE = "undefined";
495 494
496 AwSettingsUniversalAccessFromFilesTestHelper( 495 AwSettingsUniversalAccessFromFilesTestHelper(
497 ContentViewCore contentViewCore, 496 AwContents awContents,
498 TestAwContentsClient contentViewClient) throws Throwable { 497 TestAwContentsClient contentViewClient) throws Throwable {
499 super(contentViewCore, contentViewClient, true); 498 super(awContents, contentViewClient, true);
500 mIframeContainerUrl = UrlUtils.getTestFileUrl("webview/iframe_access .html"); 499 mIframeContainerUrl = UrlUtils.getTestFileUrl("webview/iframe_access .html");
501 mIframeUrl = UrlUtils.getTestFileUrl("webview/hello_world.html"); 500 mIframeUrl = UrlUtils.getTestFileUrl("webview/hello_world.html");
502 // The value of the setting depends on the SDK version. 501 // The value of the setting depends on the SDK version.
503 mContentSettings.setAllowUniversalAccessFromFileURLs(false); 502 mContentSettings.setAllowUniversalAccessFromFileURLs(false);
504 // If universal access is true, the value of file access doesn't 503 // If universal access is true, the value of file access doesn't
505 // matter. While if universal access is false, having file access 504 // matter. While if universal access is false, having file access
506 // enabled will allow file loading. 505 // enabled will allow file loading.
507 mContentSettings.setAllowFileAccessFromFileURLs(false); 506 mContentSettings.setAllowFileAccessFromFileURLs(false);
508 } 507 }
509 508
(...skipping 28 matching lines...) Expand all
538 private final String mIframeContainerUrl; 537 private final String mIframeContainerUrl;
539 private final String mIframeUrl; 538 private final String mIframeUrl;
540 } 539 }
541 540
542 class AwSettingsFileAccessFromFilesIframeTestHelper extends AwSettingsTestHe lper<Boolean> { 541 class AwSettingsFileAccessFromFilesIframeTestHelper extends AwSettingsTestHe lper<Boolean> {
543 // TODO(mnaganov): Change to "Exception" once 542 // TODO(mnaganov): Change to "Exception" once
544 // https://bugs.webkit.org/show_bug.cgi?id=43504 is fixed. 543 // https://bugs.webkit.org/show_bug.cgi?id=43504 is fixed.
545 private static final String ACCESS_DENIED_TITLE = "undefined"; 544 private static final String ACCESS_DENIED_TITLE = "undefined";
546 545
547 AwSettingsFileAccessFromFilesIframeTestHelper( 546 AwSettingsFileAccessFromFilesIframeTestHelper(
548 ContentViewCore contentViewCore, 547 AwContents awContents,
549 TestAwContentsClient contentViewClient) throws Throwable { 548 TestAwContentsClient contentViewClient) throws Throwable {
550 super(contentViewCore, contentViewClient, true); 549 super(awContents, contentViewClient, true);
551 mIframeContainerUrl = UrlUtils.getTestFileUrl("webview/iframe_access .html"); 550 mIframeContainerUrl = UrlUtils.getTestFileUrl("webview/iframe_access .html");
552 mIframeUrl = UrlUtils.getTestFileUrl("webview/hello_world.html"); 551 mIframeUrl = UrlUtils.getTestFileUrl("webview/hello_world.html");
553 mContentSettings.setAllowUniversalAccessFromFileURLs(false); 552 mContentSettings.setAllowUniversalAccessFromFileURLs(false);
554 // The value of the setting depends on the SDK version. 553 // The value of the setting depends on the SDK version.
555 mContentSettings.setAllowFileAccessFromFileURLs(false); 554 mContentSettings.setAllowFileAccessFromFileURLs(false);
556 } 555 }
557 556
558 @Override 557 @Override
559 protected Boolean getAlteredValue() { 558 protected Boolean getAlteredValue() {
560 return ENABLED; 559 return ENABLED;
(...skipping 24 matching lines...) Expand all
585 584
586 private final String mIframeContainerUrl; 585 private final String mIframeContainerUrl;
587 private final String mIframeUrl; 586 private final String mIframeUrl;
588 } 587 }
589 588
590 class AwSettingsFileAccessFromFilesXhrTestHelper extends AwSettingsTestHelpe r<Boolean> { 589 class AwSettingsFileAccessFromFilesXhrTestHelper extends AwSettingsTestHelpe r<Boolean> {
591 private static final String ACCESS_GRANTED_TITLE = "Hello, World!"; 590 private static final String ACCESS_GRANTED_TITLE = "Hello, World!";
592 private static final String ACCESS_DENIED_TITLE = "Exception"; 591 private static final String ACCESS_DENIED_TITLE = "Exception";
593 592
594 AwSettingsFileAccessFromFilesXhrTestHelper( 593 AwSettingsFileAccessFromFilesXhrTestHelper(
595 ContentViewCore contentViewCore, 594 AwContents awContents,
596 TestAwContentsClient contentViewClient) throws Throwable { 595 TestAwContentsClient contentViewClient) throws Throwable {
597 super(contentViewCore, contentViewClient, true); 596 super(awContents, contentViewClient, true);
598 mXhrContainerUrl = UrlUtils.getTestFileUrl("webview/xhr_access.html" ); 597 mXhrContainerUrl = UrlUtils.getTestFileUrl("webview/xhr_access.html" );
599 mContentSettings.setAllowUniversalAccessFromFileURLs(false); 598 mContentSettings.setAllowUniversalAccessFromFileURLs(false);
600 // The value of the setting depends on the SDK version. 599 // The value of the setting depends on the SDK version.
601 mContentSettings.setAllowFileAccessFromFileURLs(false); 600 mContentSettings.setAllowFileAccessFromFileURLs(false);
602 } 601 }
603 602
604 @Override 603 @Override
605 protected Boolean getAlteredValue() { 604 protected Boolean getAlteredValue() {
606 return ENABLED; 605 return ENABLED;
607 } 606 }
(...skipping 22 matching lines...) Expand all
630 } 629 }
631 630
632 private final String mXhrContainerUrl; 631 private final String mXhrContainerUrl;
633 } 632 }
634 633
635 // A helper super class for test cases that need to access AwSettings. 634 // A helper super class for test cases that need to access AwSettings.
636 abstract class AwSettingsWithSettingsTestHelper<T> extends AwSettingsTestHel per<T> { 635 abstract class AwSettingsWithSettingsTestHelper<T> extends AwSettingsTestHel per<T> {
637 protected AwSettings mAwSettings; 636 protected AwSettings mAwSettings;
638 637
639 AwSettingsWithSettingsTestHelper( 638 AwSettingsWithSettingsTestHelper(
640 AwTestContainerView containerView, 639 AwContents awContents,
641 TestAwContentsClient contentViewClient, 640 TestAwContentsClient contentViewClient,
642 boolean requiresJsEnabled) throws Throwable { 641 boolean requiresJsEnabled) throws Throwable {
643 super(containerView.getContentViewCore(), contentViewClient, require sJsEnabled); 642 super(awContents, contentViewClient, requiresJsEnabled);
644 mAwSettings = 643 mAwSettings = AwSettingsTest.this.getAwSettingsOnUiThread(awContents );
645 AwSettingsTest.this.getAwSettingsOnUiThread(containerView.ge tAwContents());
646 } 644 }
647 } 645 }
648 646
649 class AwSettingsFileUrlAccessTestHelper extends AwSettingsWithSettingsTestHe lper<Boolean> { 647 class AwSettingsFileUrlAccessTestHelper extends AwSettingsWithSettingsTestHe lper<Boolean> {
650 private static final String ACCESS_GRANTED_TITLE = "Hello, World!"; 648 private static final String ACCESS_GRANTED_TITLE = "Hello, World!";
651 649
652 AwSettingsFileUrlAccessTestHelper( 650 AwSettingsFileUrlAccessTestHelper(
653 AwTestContainerView containerView, 651 AwContents awContents,
654 TestAwContentsClient contentViewClient, 652 TestAwContentsClient contentViewClient,
655 int startIndex) throws Throwable { 653 int startIndex) throws Throwable {
656 super(containerView, contentViewClient, true); 654 super(awContents, contentViewClient, true);
657 mIndex = startIndex; 655 mIndex = startIndex;
658 } 656 }
659 657
660 @Override 658 @Override
661 protected Boolean getAlteredValue() { 659 protected Boolean getAlteredValue() {
662 return DISABLED; 660 return DISABLED;
663 } 661 }
664 662
665 @Override 663 @Override
666 protected Boolean getInitialValue() { 664 protected Boolean getInitialValue() {
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
699 } 697 }
700 */ 698 */
701 } 699 }
702 700
703 private int mIndex; 701 private int mIndex;
704 } 702 }
705 703
706 class AwSettingsContentUrlAccessTestHelper extends AwSettingsWithSettingsTes tHelper<Boolean> { 704 class AwSettingsContentUrlAccessTestHelper extends AwSettingsWithSettingsTes tHelper<Boolean> {
707 705
708 AwSettingsContentUrlAccessTestHelper( 706 AwSettingsContentUrlAccessTestHelper(
709 AwTestContainerView containerView, 707 AwContents awContents,
710 TestAwContentsClient contentViewClient, 708 TestAwContentsClient contentViewClient,
711 int index) throws Throwable { 709 int index) throws Throwable {
712 super(containerView, contentViewClient, true); 710 super(awContents, contentViewClient, true);
713 mTarget = "content_access_" + index; 711 mTarget = "content_access_" + index;
714 } 712 }
715 713
716 @Override 714 @Override
717 protected Boolean getAlteredValue() { 715 protected Boolean getAlteredValue() {
718 return DISABLED; 716 return DISABLED;
719 } 717 }
720 718
721 @Override 719 @Override
722 protected Boolean getInitialValue() { 720 protected Boolean getInitialValue() {
(...skipping 22 matching lines...) Expand all
745 } 743 }
746 744
747 private final String mTarget; 745 private final String mTarget;
748 } 746 }
749 747
750 class AwSettingsContentUrlAccessFromFileTestHelper 748 class AwSettingsContentUrlAccessFromFileTestHelper
751 extends AwSettingsWithSettingsTestHelper<Boolean> { 749 extends AwSettingsWithSettingsTestHelper<Boolean> {
752 private static final String TARGET = "content_from_file"; 750 private static final String TARGET = "content_from_file";
753 751
754 AwSettingsContentUrlAccessFromFileTestHelper( 752 AwSettingsContentUrlAccessFromFileTestHelper(
755 AwTestContainerView containerView, 753 AwContents awContents,
756 TestAwContentsClient contentViewClient, 754 TestAwContentsClient contentViewClient,
757 int index) throws Throwable { 755 int index) throws Throwable {
758 super(containerView, contentViewClient, true); 756 super(awContents, contentViewClient, true);
759 mIndex = index; 757 mIndex = index;
760 mTempDir = getInstrumentation().getTargetContext().getCacheDir().get Path(); 758 mTempDir = getInstrumentation().getTargetContext().getCacheDir().get Path();
761 } 759 }
762 760
763 @Override 761 @Override
764 protected Boolean getAlteredValue() { 762 protected Boolean getAlteredValue() {
765 return DISABLED; 763 return DISABLED;
766 } 764 }
767 765
768 @Override 766 @Override
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
817 @SmallTest 815 @SmallTest
818 @Feature({"Android-WebView", "Preferences"}) 816 @Feature({"Android-WebView", "Preferences"})
819 public void testJavaScriptDisabledByDefault() throws Throwable { 817 public void testJavaScriptDisabledByDefault() throws Throwable {
820 final String JS_ENABLED_STRING = "JS has run"; 818 final String JS_ENABLED_STRING = "JS has run";
821 final String JS_DISABLED_STRING = "JS has not run"; 819 final String JS_DISABLED_STRING = "JS has not run";
822 final String TEST_PAGE_HTML = 820 final String TEST_PAGE_HTML =
823 "<html><head><title>" + JS_DISABLED_STRING + "</title>" 821 "<html><head><title>" + JS_DISABLED_STRING + "</title>"
824 + "</head><body onload=\"document.title='" + JS_ENABLED_STRING 822 + "</head><body onload=\"document.title='" + JS_ENABLED_STRING
825 + "';\"></body></html>"; 823 + "';\"></body></html>";
826 final TestAwContentsClient contentClient = new TestAwContentsClient(); 824 final TestAwContentsClient contentClient = new TestAwContentsClient();
827 final ContentViewCore contentView = 825 final AwTestContainerView testContainerView =
828 createAwTestContainerViewOnMainSync(false, contentClient).getCon tentViewCore(); 826 createAwTestContainerViewOnMainSync(contentClient);
827 final AwContents awContents = testContainerView.getAwContents();
829 loadDataSync( 828 loadDataSync(
830 contentView, 829 awContents,
831 contentClient.getOnPageFinishedHelper(), 830 contentClient.getOnPageFinishedHelper(),
832 TEST_PAGE_HTML, 831 TEST_PAGE_HTML,
833 "text/html", 832 "text/html",
834 false); 833 false);
835 assertEquals(JS_DISABLED_STRING, getTitleOnUiThread(contentView)); 834 assertEquals(JS_DISABLED_STRING, getTitleOnUiThread(awContents));
836 } 835 }
837 836
838 @SmallTest 837 @SmallTest
839 @Feature({"Android-WebView", "Preferences"}) 838 @Feature({"Android-WebView", "Preferences"})
840 public void testJavaScriptEnabledNormal() throws Throwable { 839 public void testJavaScriptEnabledNormal() throws Throwable {
841 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW); 840 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW);
842 runPerViewSettingsTest( 841 runPerViewSettingsTest(
843 new AwSettingsJavaScriptTestHelper(views.getView0(), views.getClient 0()), 842 new AwSettingsJavaScriptTestHelper(views.getContents0(), views.getCl ient0()),
844 new AwSettingsJavaScriptTestHelper(views.getView1(), views.getClient 1())); 843 new AwSettingsJavaScriptTestHelper(views.getContents1(), views.getCl ient1()));
845 } 844 }
846 845
847 @SmallTest 846 @SmallTest
848 @Feature({"Android-WebView", "Preferences"}) 847 @Feature({"Android-WebView", "Preferences"})
849 public void testJavaScriptEnabledIncognito() throws Throwable { 848 public void testJavaScriptEnabledIncognito() throws Throwable {
850 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW); 849 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW);
851 runPerViewSettingsTest( 850 runPerViewSettingsTest(
852 new AwSettingsJavaScriptTestHelper(views.getView0(), views.getClient 0()), 851 new AwSettingsJavaScriptTestHelper(views.getContents0(), views.getCl ient0()),
853 new AwSettingsJavaScriptTestHelper(views.getView1(), views.getClient 1())); 852 new AwSettingsJavaScriptTestHelper(views.getContents1(), views.getCl ient1()));
854 } 853 }
855 854
856 @SmallTest 855 @SmallTest
857 @Feature({"Android-WebView", "Preferences"}) 856 @Feature({"Android-WebView", "Preferences"})
858 public void testJavaScriptEnabledBoth() throws Throwable { 857 public void testJavaScriptEnabledBoth() throws Throwable {
859 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW); 858 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW);
860 runPerViewSettingsTest( 859 runPerViewSettingsTest(
861 new AwSettingsJavaScriptTestHelper(views.getView0(), views.getClient 0()), 860 new AwSettingsJavaScriptTestHelper(views.getContents0(), views.getCl ient0()),
862 new AwSettingsJavaScriptTestHelper(views.getView1(), views.getClient 1())); 861 new AwSettingsJavaScriptTestHelper(views.getContents1(), views.getCl ient1()));
863 } 862 }
864 863
865 @SmallTest 864 @SmallTest
866 @Feature({"Android-WebView", "Preferences"}) 865 @Feature({"Android-WebView", "Preferences"})
867 public void testJavaScriptEnabledDynamicNormal() throws Throwable { 866 public void testJavaScriptEnabledDynamicNormal() throws Throwable {
868 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW); 867 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW);
869 runPerViewSettingsTest( 868 runPerViewSettingsTest(
870 new AwSettingsJavaScriptDynamicTestHelper(views.getView0(), views.ge tClient0()), 869 new AwSettingsJavaScriptDynamicTestHelper(views.getContents0(), view s.getClient0()),
871 new AwSettingsJavaScriptDynamicTestHelper(views.getView1(), views.ge tClient1())); 870 new AwSettingsJavaScriptDynamicTestHelper(views.getContents1(), view s.getClient1()));
872 } 871 }
873 872
874 @SmallTest 873 @SmallTest
875 @Feature({"Android-WebView", "Preferences"}) 874 @Feature({"Android-WebView", "Preferences"})
876 public void testJavaScriptEnabledDynamicIncognito() throws Throwable { 875 public void testJavaScriptEnabledDynamicIncognito() throws Throwable {
877 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW); 876 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW);
878 runPerViewSettingsTest( 877 runPerViewSettingsTest(
879 new AwSettingsJavaScriptDynamicTestHelper(views.getView0(), views.ge tClient0()), 878 new AwSettingsJavaScriptDynamicTestHelper(views.getContents0(), view s.getClient0()),
880 new AwSettingsJavaScriptDynamicTestHelper(views.getView1(), views.ge tClient1())); 879 new AwSettingsJavaScriptDynamicTestHelper(views.getContents1(), view s.getClient1()));
881 } 880 }
882 881
883 @SmallTest 882 @SmallTest
884 @Feature({"Android-WebView", "Preferences"}) 883 @Feature({"Android-WebView", "Preferences"})
885 public void testJavaScriptEnabledDynamicBoth() throws Throwable { 884 public void testJavaScriptEnabledDynamicBoth() throws Throwable {
886 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW); 885 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW);
887 runPerViewSettingsTest( 886 runPerViewSettingsTest(
888 new AwSettingsJavaScriptDynamicTestHelper(views.getView0(), views.ge tClient0()), 887 new AwSettingsJavaScriptDynamicTestHelper(views.getContents0(), view s.getClient0()),
889 new AwSettingsJavaScriptDynamicTestHelper(views.getView1(), views.ge tClient1())); 888 new AwSettingsJavaScriptDynamicTestHelper(views.getContents1(), view s.getClient1()));
890 } 889 }
891 890
892 @SmallTest 891 @SmallTest
893 @Feature({"Android-WebView", "Preferences"}) 892 @Feature({"Android-WebView", "Preferences"})
894 public void testPluginsEnabledNormal() throws Throwable { 893 public void testPluginsEnabledNormal() throws Throwable {
895 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW); 894 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW);
896 runPerViewSettingsTest( 895 runPerViewSettingsTest(
897 new AwSettingsPluginsTestHelper(views.getView0(), views.getClient0() ), 896 new AwSettingsPluginsTestHelper(views.getContents0(), views.getClien t0()),
898 new AwSettingsPluginsTestHelper(views.getView1(), views.getClient1() )); 897 new AwSettingsPluginsTestHelper(views.getContents1(), views.getClien t1()));
899 } 898 }
900 899
901 @SmallTest 900 @SmallTest
902 @Feature({"Android-WebView", "Preferences"}) 901 @Feature({"Android-WebView", "Preferences"})
903 public void testPluginsEnabledIncognito() throws Throwable { 902 public void testPluginsEnabledIncognito() throws Throwable {
904 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW); 903 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW);
905 runPerViewSettingsTest( 904 runPerViewSettingsTest(
906 new AwSettingsPluginsTestHelper(views.getView0(), views.getClient0() ), 905 new AwSettingsPluginsTestHelper(views.getContents0(), views.getClien t0()),
907 new AwSettingsPluginsTestHelper(views.getView1(), views.getClient1() )); 906 new AwSettingsPluginsTestHelper(views.getContents1(), views.getClien t1()));
908 } 907 }
909 908
910 @SmallTest 909 @SmallTest
911 @Feature({"Android-WebView", "Preferences"}) 910 @Feature({"Android-WebView", "Preferences"})
912 public void testPluginsEnabledBoth() throws Throwable { 911 public void testPluginsEnabledBoth() throws Throwable {
913 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW); 912 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW);
914 runPerViewSettingsTest( 913 runPerViewSettingsTest(
915 new AwSettingsPluginsTestHelper(views.getView0(), views.getClient0() ), 914 new AwSettingsPluginsTestHelper(views.getContents0(), views.getClien t0()),
916 new AwSettingsPluginsTestHelper(views.getView1(), views.getClient1() )); 915 new AwSettingsPluginsTestHelper(views.getContents1(), views.getClien t1()));
917 } 916 }
918 917
919 @SmallTest 918 @SmallTest
920 @Feature({"Android-WebView", "Preferences"}) 919 @Feature({"Android-WebView", "Preferences"})
921 public void testStandardFontFamilyNormal() throws Throwable { 920 public void testStandardFontFamilyNormal() throws Throwable {
922 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW); 921 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW);
923 runPerViewSettingsTest( 922 runPerViewSettingsTest(
924 new AwSettingsStandardFontFamilyTestHelper(views.getView0(), views.g etClient0()), 923 new AwSettingsStandardFontFamilyTestHelper(views.getContents0(), vie ws.getClient0()),
925 new AwSettingsStandardFontFamilyTestHelper(views.getView1(), views.g etClient1())); 924 new AwSettingsStandardFontFamilyTestHelper(views.getContents1(), vie ws.getClient1()));
926 } 925 }
927 926
928 @SmallTest 927 @SmallTest
929 @Feature({"Android-WebView", "Preferences"}) 928 @Feature({"Android-WebView", "Preferences"})
930 public void testStandardFontFamilyIncognito() throws Throwable { 929 public void testStandardFontFamilyIncognito() throws Throwable {
931 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW); 930 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW);
932 runPerViewSettingsTest( 931 runPerViewSettingsTest(
933 new AwSettingsStandardFontFamilyTestHelper(views.getView0(), views.g etClient0()), 932 new AwSettingsStandardFontFamilyTestHelper(views.getContents0(), vie ws.getClient0()),
934 new AwSettingsStandardFontFamilyTestHelper(views.getView1(), views.g etClient1())); 933 new AwSettingsStandardFontFamilyTestHelper(views.getContents1(), vie ws.getClient1()));
935 } 934 }
936 935
937 @SmallTest 936 @SmallTest
938 @Feature({"Android-WebView", "Preferences"}) 937 @Feature({"Android-WebView", "Preferences"})
939 public void testStandardFontFamilyBoth() throws Throwable { 938 public void testStandardFontFamilyBoth() throws Throwable {
940 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW); 939 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW);
941 runPerViewSettingsTest( 940 runPerViewSettingsTest(
942 new AwSettingsStandardFontFamilyTestHelper(views.getView0(), views.g etClient0()), 941 new AwSettingsStandardFontFamilyTestHelper(views.getContents0(), vie ws.getClient0()),
943 new AwSettingsStandardFontFamilyTestHelper(views.getView1(), views.g etClient1())); 942 new AwSettingsStandardFontFamilyTestHelper(views.getContents1(), vie ws.getClient1()));
944 } 943 }
945 944
946 @SmallTest 945 @SmallTest
947 @Feature({"Android-WebView", "Preferences"}) 946 @Feature({"Android-WebView", "Preferences"})
948 public void testDefaultFontSizeNormal() throws Throwable { 947 public void testDefaultFontSizeNormal() throws Throwable {
949 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW); 948 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW);
950 runPerViewSettingsTest( 949 runPerViewSettingsTest(
951 new AwSettingsDefaultFontSizeTestHelper(views.getView0(), views.getC lient0()), 950 new AwSettingsDefaultFontSizeTestHelper(views.getContents0(), views. getClient0()),
952 new AwSettingsDefaultFontSizeTestHelper(views.getView1(), views.getC lient1())); 951 new AwSettingsDefaultFontSizeTestHelper(views.getContents1(), views. getClient1()));
953 } 952 }
954 953
955 @SmallTest 954 @SmallTest
956 @Feature({"Android-WebView", "Preferences"}) 955 @Feature({"Android-WebView", "Preferences"})
957 public void testDefaultFontSizeIncognito() throws Throwable { 956 public void testDefaultFontSizeIncognito() throws Throwable {
958 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW); 957 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW);
959 runPerViewSettingsTest( 958 runPerViewSettingsTest(
960 new AwSettingsDefaultFontSizeTestHelper(views.getView0(), views.getC lient0()), 959 new AwSettingsDefaultFontSizeTestHelper(views.getContents0(), views. getClient0()),
961 new AwSettingsDefaultFontSizeTestHelper(views.getView1(), views.getC lient1())); 960 new AwSettingsDefaultFontSizeTestHelper(views.getContents1(), views. getClient1()));
962 } 961 }
963 962
964 @SmallTest 963 @SmallTest
965 @Feature({"Android-WebView", "Preferences"}) 964 @Feature({"Android-WebView", "Preferences"})
966 public void testDefaultFontSizeBoth() throws Throwable { 965 public void testDefaultFontSizeBoth() throws Throwable {
967 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW); 966 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW);
968 runPerViewSettingsTest( 967 runPerViewSettingsTest(
969 new AwSettingsDefaultFontSizeTestHelper(views.getView0(), views.getC lient0()), 968 new AwSettingsDefaultFontSizeTestHelper(views.getContents0(), views. getClient0()),
970 new AwSettingsDefaultFontSizeTestHelper(views.getView1(), views.getC lient1())); 969 new AwSettingsDefaultFontSizeTestHelper(views.getContents1(), views. getClient1()));
971 } 970 }
972 971
973 // The test verifies that disabling images loading by setting 972 // The test verifies that disabling images loading by setting
974 // setLoadsImagesAutomatically to false doesn't prevent images already 973 // setLoadsImagesAutomatically to false doesn't prevent images already
975 // contained in the memory cache to be displayed. The cache is shared among 974 // contained in the memory cache to be displayed. The cache is shared among
976 // all views, so the image can be put there by another view. 975 // all views, so the image can be put there by another view.
977 @Feature({"Android-WebView", "Preferences"}) 976 @Feature({"Android-WebView", "Preferences"})
978 @SmallTest 977 @SmallTest
979 public void testLoadsImagesAutomaticallyWithCachedImage() throws Throwable { 978 public void testLoadsImagesAutomaticallyWithCachedImage() throws Throwable {
980 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW); 979 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW);
981 ContentSettings settings0 = getContentSettingsOnUiThread(views.getView0( )); 980 ContentSettings settings0 = getContentSettingsOnUiThread(views.getConten ts0());
982 settings0.setJavaScriptEnabled(true); 981 settings0.setJavaScriptEnabled(true);
983 ContentSettings settings1 = getContentSettingsOnUiThread(views.getView1( )); 982 ContentSettings settings1 = getContentSettingsOnUiThread(views.getConten ts1());
984 settings1.setJavaScriptEnabled(true); 983 settings1.setJavaScriptEnabled(true);
985 ImagePageGenerator generator = new ImagePageGenerator(0, false); 984 ImagePageGenerator generator = new ImagePageGenerator(0, false);
986 985
987 // First disable images loading and verify it. 986 // First disable images loading and verify it.
988 settings0.setLoadsImagesAutomatically(false); 987 settings0.setLoadsImagesAutomatically(false);
989 settings1.setLoadsImagesAutomatically(false); 988 settings1.setLoadsImagesAutomatically(false);
990 loadDataSync(views.getView0(), 989 loadDataSync(views.getContents0(),
991 views.getClient0().getOnPageFinishedHelper(), 990 views.getClient0().getOnPageFinishedHelper(),
992 generator.getPageSource(), 991 generator.getPageSource(),
993 "text/html", false); 992 "text/html", false);
994 loadDataSync(views.getView1(), 993 loadDataSync(views.getContents1(),
995 views.getClient1().getOnPageFinishedHelper(), 994 views.getClient1().getOnPageFinishedHelper(),
996 generator.getPageSource(), 995 generator.getPageSource(),
997 "text/html", false); 996 "text/html", false);
998 assertEquals(ImagePageGenerator.IMAGE_NOT_LOADED_STRING, 997 assertEquals(ImagePageGenerator.IMAGE_NOT_LOADED_STRING,
999 getTitleOnUiThread(views.getView0())); 998 getTitleOnUiThread(views.getContents0()));
1000 assertEquals(ImagePageGenerator.IMAGE_NOT_LOADED_STRING, 999 assertEquals(ImagePageGenerator.IMAGE_NOT_LOADED_STRING,
1001 getTitleOnUiThread(views.getView1())); 1000 getTitleOnUiThread(views.getContents1()));
1002 1001
1003 // Now enable images loading only for view 0. 1002 // Now enable images loading only for view 0.
1004 settings0.setLoadsImagesAutomatically(true); 1003 settings0.setLoadsImagesAutomatically(true);
1005 loadDataSync(views.getView0(), 1004 loadDataSync(views.getContents0(),
1006 views.getClient0().getOnPageFinishedHelper(), 1005 views.getClient0().getOnPageFinishedHelper(),
1007 generator.getPageSource(), 1006 generator.getPageSource(),
1008 "text/html", false); 1007 "text/html", false);
1009 loadDataSync(views.getView1(), 1008 loadDataSync(views.getContents1(),
1010 views.getClient1().getOnPageFinishedHelper(), 1009 views.getClient1().getOnPageFinishedHelper(),
1011 generator.getPageSource(), 1010 generator.getPageSource(),
1012 "text/html", false); 1011 "text/html", false);
1013 1012
1014 // Once the image has been cached by contentView0, it is available to co ntentView1. 1013 // Once the image has been cached by contentView0, it is available to co ntentView1.
1015 assertEquals(ImagePageGenerator.IMAGE_LOADED_STRING, getTitleOnUiThread( views.getView0())); 1014 assertEquals(ImagePageGenerator.IMAGE_LOADED_STRING,
1016 assertEquals(ImagePageGenerator.IMAGE_LOADED_STRING, getTitleOnUiThread( views.getView1())); 1015 getTitleOnUiThread(views.getContents0()));
1016 assertEquals(ImagePageGenerator.IMAGE_LOADED_STRING,
1017 getTitleOnUiThread(views.getContents1()));
1017 ImagePageGenerator generator1 = new ImagePageGenerator(1, false); 1018 ImagePageGenerator generator1 = new ImagePageGenerator(1, false);
1018 1019
1019 // This is a new image. view 1 can't load it. 1020 // This is a new image. view 1 can't load it.
1020 loadDataSync(views.getView1(), 1021 loadDataSync(views.getContents1(),
1021 views.getClient1().getOnPageFinishedHelper(), 1022 views.getClient1().getOnPageFinishedHelper(),
1022 generator1.getPageSource(), 1023 generator1.getPageSource(),
1023 "text/html", false); 1024 "text/html", false);
1024 assertEquals(ImagePageGenerator.IMAGE_NOT_LOADED_STRING, 1025 assertEquals(ImagePageGenerator.IMAGE_NOT_LOADED_STRING,
1025 getTitleOnUiThread(views.getView1())); 1026 getTitleOnUiThread(views.getContents1()));
1026 loadDataSync(views.getView0(), 1027 loadDataSync(views.getContents0(),
1027 views.getClient0().getOnPageFinishedHelper(), 1028 views.getClient0().getOnPageFinishedHelper(),
1028 generator1.getPageSource(), 1029 generator1.getPageSource(),
1029 "text/html", false); 1030 "text/html", false);
1030 loadDataSync(views.getView1(), 1031 loadDataSync(views.getContents1(),
1031 views.getClient1().getOnPageFinishedHelper(), 1032 views.getClient1().getOnPageFinishedHelper(),
1032 generator1.getPageSource(), 1033 generator1.getPageSource(),
1033 "text/html", false); 1034 "text/html", false);
1034 1035
1035 // Once the image has been cached by contentViewCore0, it is available t o contentViewCore1. 1036 // Once the image has been cached by contentViewCore0, it is available t o contentViewCore1.
1036 assertEquals(ImagePageGenerator.IMAGE_LOADED_STRING, getTitleOnUiThread( views.getView0())); 1037 assertEquals(ImagePageGenerator.IMAGE_LOADED_STRING,
1037 assertEquals(ImagePageGenerator.IMAGE_LOADED_STRING, getTitleOnUiThread( views.getView1())); 1038 getTitleOnUiThread(views.getContents0()));
1039 assertEquals(ImagePageGenerator.IMAGE_LOADED_STRING,
1040 getTitleOnUiThread(views.getContents1()));
1038 } 1041 }
1039 1042
1040 // The test verifies that after changing the LoadsImagesAutomatically 1043 // The test verifies that after changing the LoadsImagesAutomatically
1041 // setting value from false to true previously skipped images are 1044 // setting value from false to true previously skipped images are
1042 // automatically loaded. 1045 // automatically loaded.
1043 @SmallTest 1046 @SmallTest
1044 @Feature({"Android-WebView", "Preferences"}) 1047 @Feature({"Android-WebView", "Preferences"})
1045 public void testLoadsImagesAutomaticallyNoPageReload() throws Throwable { 1048 public void testLoadsImagesAutomaticallyNoPageReload() throws Throwable {
1046 final TestAwContentsClient contentClient = new TestAwContentsClient(); 1049 final TestAwContentsClient contentClient = new TestAwContentsClient();
1047 final ContentViewCore contentView = 1050 final AwTestContainerView testContainerView =
1048 createAwTestContainerViewOnMainSync(false, contentClient).getCon tentViewCore(); 1051 createAwTestContainerViewOnMainSync(contentClient);
1052 final AwContents awContents = testContainerView.getAwContents();
1049 CallbackHelper onPageFinishedHelper = contentClient.getOnPageFinishedHel per(); 1053 CallbackHelper onPageFinishedHelper = contentClient.getOnPageFinishedHel per();
1050 ContentSettings settings = getContentSettingsOnUiThread(contentView); 1054 ContentSettings settings = getContentSettingsOnUiThread(awContents);
1051 settings.setJavaScriptEnabled(true); 1055 settings.setJavaScriptEnabled(true);
1052 ImagePageGenerator generator = new ImagePageGenerator(0, false); 1056 ImagePageGenerator generator = new ImagePageGenerator(0, false);
1053 settings.setLoadsImagesAutomatically(false); 1057 settings.setLoadsImagesAutomatically(false);
1054 loadDataSync(contentView, 1058 loadDataSync(awContents,
1055 contentClient.getOnPageFinishedHelper(), 1059 contentClient.getOnPageFinishedHelper(),
1056 generator.getPageSource(), 1060 generator.getPageSource(),
1057 "text/html", false); 1061 "text/html", false);
1058 assertEquals(ImagePageGenerator.IMAGE_NOT_LOADED_STRING, 1062 assertEquals(ImagePageGenerator.IMAGE_NOT_LOADED_STRING,
1059 getTitleOnUiThread(contentView)); 1063 getTitleOnUiThread(awContents));
1060 settings.setLoadsImagesAutomatically(true); 1064 settings.setLoadsImagesAutomatically(true);
1061 assertTrue(CriteriaHelper.pollForCriteria(new Criteria() { 1065 assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
1062 @Override 1066 @Override
1063 public boolean isSatisfied() { 1067 public boolean isSatisfied() {
1064 try { 1068 try {
1065 return !ImagePageGenerator.IMAGE_NOT_LOADED_STRING.equals( 1069 return !ImagePageGenerator.IMAGE_NOT_LOADED_STRING.equals(
1066 getTitleOnUiThread(contentView)); 1070 getTitleOnUiThread(awContents));
1067 } catch (Throwable t) { 1071 } catch (Throwable t) {
1068 t.printStackTrace(); 1072 t.printStackTrace();
1069 fail("Failed to getTitleOnUiThread: " + t.toString()); 1073 fail("Failed to getTitleOnUiThread: " + t.toString());
1070 return false; 1074 return false;
1071 } 1075 }
1072 } 1076 }
1073 }, TEST_TIMEOUT, CHECK_INTERVAL)); 1077 }, TEST_TIMEOUT, CHECK_INTERVAL));
1074 assertEquals(ImagePageGenerator.IMAGE_LOADED_STRING, getTitleOnUiThread( contentView)); 1078 assertEquals(ImagePageGenerator.IMAGE_LOADED_STRING, getTitleOnUiThread( awContents));
1075 } 1079 }
1076 1080
1077 @SmallTest 1081 @SmallTest
1078 @Feature({"Android-WebView", "Preferences"}) 1082 @Feature({"Android-WebView", "Preferences"})
1079 public void testLoadsImagesAutomaticallyNormal() throws Throwable { 1083 public void testLoadsImagesAutomaticallyNormal() throws Throwable {
1080 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW); 1084 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW);
1081 runPerViewSettingsTest( 1085 runPerViewSettingsTest(
1082 new AwSettingsLoadImagesAutomaticallyTestHelper( 1086 new AwSettingsLoadImagesAutomaticallyTestHelper(
1083 views.getView0(), views.getClient0(), new ImagePageGenerator(0, true)), 1087 views.getContents0(), views.getClient0(), new ImagePageGenerator (0, true)),
1084 new AwSettingsLoadImagesAutomaticallyTestHelper( 1088 new AwSettingsLoadImagesAutomaticallyTestHelper(
1085 views.getView1(), views.getClient1(), new ImagePageGenerator(1, true))); 1089 views.getContents1(), views.getClient1(), new ImagePageGenerator (1, true)));
1086 } 1090 }
1087 1091
1088 @SmallTest 1092 @SmallTest
1089 @Feature({"Android-WebView", "Preferences"}) 1093 @Feature({"Android-WebView", "Preferences"})
1090 public void testLoadsImagesAutomaticallyIncognito() throws Throwable { 1094 public void testLoadsImagesAutomaticallyIncognito() throws Throwable {
1091 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW); 1095 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW);
1092 runPerViewSettingsTest( 1096 runPerViewSettingsTest(
1093 new AwSettingsLoadImagesAutomaticallyTestHelper( 1097 new AwSettingsLoadImagesAutomaticallyTestHelper(
1094 views.getView0(), views.getClient0(), new ImagePageGenerator(0, true)), 1098 views.getContents0(), views.getClient0(), new ImagePageGenerator (0, true)),
1095 new AwSettingsLoadImagesAutomaticallyTestHelper( 1099 new AwSettingsLoadImagesAutomaticallyTestHelper(
1096 views.getView1(), views.getClient1(), new ImagePageGenerator(1, true))); 1100 views.getContents1(), views.getClient1(), new ImagePageGenerator (1, true)));
1097 } 1101 }
1098 1102
1099 @SmallTest 1103 @SmallTest
1100 @Feature({"Android-WebView", "Preferences"}) 1104 @Feature({"Android-WebView", "Preferences"})
1101 public void testLoadsImagesAutomaticallyBoth() throws Throwable { 1105 public void testLoadsImagesAutomaticallyBoth() throws Throwable {
1102 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW); 1106 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW);
1103 runPerViewSettingsTest( 1107 runPerViewSettingsTest(
1104 new AwSettingsLoadImagesAutomaticallyTestHelper( 1108 new AwSettingsLoadImagesAutomaticallyTestHelper(
1105 views.getView0(), views.getClient0(), new ImagePageGenerator(0, true)), 1109 views.getContents0(), views.getClient0(), new ImagePageGenerator (0, true)),
1106 new AwSettingsLoadImagesAutomaticallyTestHelper( 1110 new AwSettingsLoadImagesAutomaticallyTestHelper(
1107 views.getView1(), views.getClient1(), new ImagePageGenerator(1, true))); 1111 views.getContents1(), views.getClient1(), new ImagePageGenerator (1, true)));
1108 } 1112 }
1109 1113
1110 @SmallTest 1114 @SmallTest
1111 @Feature({"Android-WebView", "Preferences"}) 1115 @Feature({"Android-WebView", "Preferences"})
1112 public void testDefaultTextEncodingNormal() throws Throwable { 1116 public void testDefaultTextEncodingNormal() throws Throwable {
1113 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW); 1117 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW);
1114 runPerViewSettingsTest( 1118 runPerViewSettingsTest(
1115 new AwSettingsDefaultTextEncodingTestHelper(views.getView0(), views. getClient0()), 1119 new AwSettingsDefaultTextEncodingTestHelper(views.getContents0(), vi ews.getClient0()),
1116 new AwSettingsDefaultTextEncodingTestHelper(views.getView1(), views. getClient1())); 1120 new AwSettingsDefaultTextEncodingTestHelper(views.getContents1(), vi ews.getClient1()));
1117 } 1121 }
1118 1122
1119 @SmallTest 1123 @SmallTest
1120 @Feature({"Android-WebView", "Preferences"}) 1124 @Feature({"Android-WebView", "Preferences"})
1121 public void testDefaultTextEncodingIncognito() throws Throwable { 1125 public void testDefaultTextEncodingIncognito() throws Throwable {
1122 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW); 1126 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW);
1123 runPerViewSettingsTest( 1127 runPerViewSettingsTest(
1124 new AwSettingsDefaultTextEncodingTestHelper(views.getView0(), views. getClient0()), 1128 new AwSettingsDefaultTextEncodingTestHelper(views.getContents0(), vi ews.getClient0()),
1125 new AwSettingsDefaultTextEncodingTestHelper(views.getView1(), views. getClient1())); 1129 new AwSettingsDefaultTextEncodingTestHelper(views.getContents1(), vi ews.getClient1()));
1126 } 1130 }
1127 1131
1128 @SmallTest 1132 @SmallTest
1129 @Feature({"Android-WebView", "Preferences"}) 1133 @Feature({"Android-WebView", "Preferences"})
1130 public void testDefaultTextEncodingBoth() throws Throwable { 1134 public void testDefaultTextEncodingBoth() throws Throwable {
1131 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW); 1135 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW);
1132 runPerViewSettingsTest( 1136 runPerViewSettingsTest(
1133 new AwSettingsDefaultTextEncodingTestHelper(views.getView0(), views. getClient0()), 1137 new AwSettingsDefaultTextEncodingTestHelper(views.getContents0(), vi ews.getClient0()),
1134 new AwSettingsDefaultTextEncodingTestHelper(views.getView1(), views. getClient1())); 1138 new AwSettingsDefaultTextEncodingTestHelper(views.getContents1(), vi ews.getClient1()));
1135 } 1139 }
1136 1140
1137 // The test verifies that the default user agent string follows the format 1141 // The test verifies that the default user agent string follows the format
1138 // defined in Android CTS tests: 1142 // defined in Android CTS tests:
1139 // 1143 //
1140 // Mozilla/5.0 (Linux;[ U;] Android <version>;[ <language>-<country>;] 1144 // Mozilla/5.0 (Linux;[ U;] Android <version>;[ <language>-<country>;]
1141 // [<devicemodel>;] Build/<buildID>) AppleWebKit/<major>.<minor> (KHTML, lik e Gecko) 1145 // [<devicemodel>;] Build/<buildID>) AppleWebKit/<major>.<minor> (KHTML, lik e Gecko)
1142 // Version/<major>.<minor>[ Mobile] Safari/<major>.<minor> 1146 // Version/<major>.<minor>[ Mobile] Safari/<major>.<minor>
1143 @SmallTest 1147 @SmallTest
1144 @Feature({"Android-WebView", "Preferences"}) 1148 @Feature({"Android-WebView", "Preferences"})
1145 public void testUserAgentStringDefault() throws Throwable { 1149 public void testUserAgentStringDefault() throws Throwable {
1146 final TestAwContentsClient contentClient = new TestAwContentsClient(); 1150 final TestAwContentsClient contentClient = new TestAwContentsClient();
1147 final ContentViewCore contentView = 1151 final AwTestContainerView testContainerView =
1148 createAwTestContainerViewOnMainSync(false, contentClient).getCon tentViewCore(); 1152 createAwTestContainerViewOnMainSync(contentClient);
1149 ContentSettings settings = getContentSettingsOnUiThread(contentView); 1153 final AwContents awContents = testContainerView.getAwContents();
1154 ContentSettings settings = getContentSettingsOnUiThread(awContents);
1150 final String actualUserAgentString = settings.getUserAgentString(); 1155 final String actualUserAgentString = settings.getUserAgentString();
1151 final String patternString = 1156 final String patternString =
1152 "Mozilla/5\\.0 \\(Linux;( U;)? Android ([^;]+);( (\\w+)-(\\w+);) ?" + 1157 "Mozilla/5\\.0 \\(Linux;( U;)? Android ([^;]+);( (\\w+)-(\\w+);) ?" +
1153 "\\s?(.*)\\sBuild/(.+)\\) AppleWebKit/(\\d+)\\.(\\d+) \\(KHTML, like Gecko\\) " + 1158 "\\s?(.*)\\sBuild/(.+)\\) AppleWebKit/(\\d+)\\.(\\d+) \\(KHTML, like Gecko\\) " +
1154 "Version/\\d+\\.\\d+( Mobile)? Safari/(\\d+)\\.(\\d+)"; 1159 "Version/\\d+\\.\\d+( Mobile)? Safari/(\\d+)\\.(\\d+)";
1155 final Pattern userAgentExpr = Pattern.compile(patternString); 1160 final Pattern userAgentExpr = Pattern.compile(patternString);
1156 Matcher patternMatcher = userAgentExpr.matcher(actualUserAgentString); 1161 Matcher patternMatcher = userAgentExpr.matcher(actualUserAgentString);
1157 assertTrue(String.format("User agent string did not match expected patte rn. \nExpected " + 1162 assertTrue(String.format("User agent string did not match expected patte rn. \nExpected " +
1158 "pattern:\n%s\nActual:\n%s", patternString, actualUserAg entString), 1163 "pattern:\n%s\nActual:\n%s", patternString, actualUserAg entString),
1159 patternMatcher.find()); 1164 patternMatcher.find());
1160 // No country-language code token. 1165 // No country-language code token.
1161 assertEquals(null, patternMatcher.group(3)); 1166 assertEquals(null, patternMatcher.group(3));
1162 if ("REL".equals(Build.VERSION.CODENAME)) { 1167 if ("REL".equals(Build.VERSION.CODENAME)) {
1163 // Model is only added in release builds 1168 // Model is only added in release builds
1164 assertEquals(Build.MODEL, patternMatcher.group(6)); 1169 assertEquals(Build.MODEL, patternMatcher.group(6));
1165 // Release version is valid only in release builds 1170 // Release version is valid only in release builds
1166 assertEquals(Build.VERSION.RELEASE, patternMatcher.group(2)); 1171 assertEquals(Build.VERSION.RELEASE, patternMatcher.group(2));
1167 } 1172 }
1168 assertEquals(Build.ID, patternMatcher.group(7)); 1173 assertEquals(Build.ID, patternMatcher.group(7));
1169 } 1174 }
1170 1175
1171 @SmallTest 1176 @SmallTest
1172 @Feature({"Android-WebView", "Preferences"}) 1177 @Feature({"Android-WebView", "Preferences"})
1173 public void testUserAgentStringOverride() throws Throwable { 1178 public void testUserAgentStringOverride() throws Throwable {
1174 final TestAwContentsClient contentClient = new TestAwContentsClient(); 1179 final TestAwContentsClient contentClient = new TestAwContentsClient();
1175 final ContentViewCore contentView = 1180 final AwTestContainerView testContainerView =
1176 createAwTestContainerViewOnMainSync(false, contentClient).getCon tentViewCore(); 1181 createAwTestContainerViewOnMainSync(contentClient);
1177 ContentSettings settings = getContentSettingsOnUiThread(contentView); 1182 final AwContents awContents = testContainerView.getAwContents();
1183 ContentSettings settings = getContentSettingsOnUiThread(awContents);
1178 final String defaultUserAgentString = settings.getUserAgentString(); 1184 final String defaultUserAgentString = settings.getUserAgentString();
1179 1185
1180 // Check that an attempt to reset the default UA string has no effect. 1186 // Check that an attempt to reset the default UA string has no effect.
1181 settings.setUserAgentString(null); 1187 settings.setUserAgentString(null);
1182 assertEquals(defaultUserAgentString, settings.getUserAgentString()); 1188 assertEquals(defaultUserAgentString, settings.getUserAgentString());
1183 settings.setUserAgentString(""); 1189 settings.setUserAgentString("");
1184 assertEquals(defaultUserAgentString, settings.getUserAgentString()); 1190 assertEquals(defaultUserAgentString, settings.getUserAgentString());
1185 1191
1186 // Check that we can also set the default value. 1192 // Check that we can also set the default value.
1187 settings.setUserAgentString(defaultUserAgentString); 1193 settings.setUserAgentString(defaultUserAgentString);
1188 assertEquals(defaultUserAgentString, settings.getUserAgentString()); 1194 assertEquals(defaultUserAgentString, settings.getUserAgentString());
1189 1195
1190 // Set a custom UA string, verify that it can be reset back to default. 1196 // Set a custom UA string, verify that it can be reset back to default.
1191 final String customUserAgentString = "ContentSettingsTest"; 1197 final String customUserAgentString = "ContentSettingsTest";
1192 settings.setUserAgentString(customUserAgentString); 1198 settings.setUserAgentString(customUserAgentString);
1193 assertEquals(customUserAgentString, settings.getUserAgentString()); 1199 assertEquals(customUserAgentString, settings.getUserAgentString());
1194 settings.setUserAgentString(null); 1200 settings.setUserAgentString(null);
1195 assertEquals(defaultUserAgentString, settings.getUserAgentString()); 1201 assertEquals(defaultUserAgentString, settings.getUserAgentString());
1196 } 1202 }
1197 1203
1198 // Verify that the current UA override setting has a priority over UA 1204 // Verify that the current UA override setting has a priority over UA
1199 // overrides in navigation history entries. 1205 // overrides in navigation history entries.
1200 @SmallTest 1206 @SmallTest
1201 @Feature({"Android-WebView", "Preferences"}) 1207 @Feature({"Android-WebView", "Preferences"})
1202 public void testUserAgentStringOverrideForHistory() throws Throwable { 1208 public void testUserAgentStringOverrideForHistory() throws Throwable {
1203 final TestAwContentsClient contentClient = new TestAwContentsClient(); 1209 final TestAwContentsClient contentClient = new TestAwContentsClient();
1204 final ContentViewCore contentView = 1210 final AwTestContainerView testContainerView =
1205 createAwTestContainerViewOnMainSync(false, contentClient).getCon tentViewCore(); 1211 createAwTestContainerViewOnMainSync(contentClient);
1212 final AwContents awContents = testContainerView.getAwContents();
1213 final ContentViewCore contentView = testContainerView.getContentViewCore ();
1206 CallbackHelper onPageFinishedHelper = contentClient.getOnPageFinishedHel per(); 1214 CallbackHelper onPageFinishedHelper = contentClient.getOnPageFinishedHel per();
1207 ContentSettings settings = getContentSettingsOnUiThread(contentView); 1215 ContentSettings settings = getContentSettingsOnUiThread(awContents);
1208 settings.setJavaScriptEnabled(true); 1216 settings.setJavaScriptEnabled(true);
1209 final String defaultUserAgentString = settings.getUserAgentString(); 1217 final String defaultUserAgentString = settings.getUserAgentString();
1210 final String customUserAgentString = "ContentSettingsTest"; 1218 final String customUserAgentString = "ContentSettingsTest";
1211 // We are using different page titles to make sure that we are really 1219 // We are using different page titles to make sure that we are really
1212 // going back and forward between them. 1220 // going back and forward between them.
1213 final String pageTemplate = 1221 final String pageTemplate =
1214 "<html><head><title>%s</title></head>" + 1222 "<html><head><title>%s</title></head>" +
1215 "<body onload='document.title+=navigator.userAgent'></body>" + 1223 "<body onload='document.title+=navigator.userAgent'></body>" +
1216 "</html>"; 1224 "</html>";
1217 final String page1Title = "Page1"; 1225 final String page1Title = "Page1";
1218 final String page2Title = "Page2"; 1226 final String page2Title = "Page2";
1219 final String page1 = String.format(pageTemplate, page1Title); 1227 final String page1 = String.format(pageTemplate, page1Title);
1220 final String page2 = String.format(pageTemplate, page2Title); 1228 final String page2 = String.format(pageTemplate, page2Title);
1221 settings.setUserAgentString(customUserAgentString); 1229 settings.setUserAgentString(customUserAgentString);
1222 loadDataSync( 1230 loadDataSync(
1223 contentView, contentClient.getOnPageFinishedHelper(), page1, "text/h tml", false); 1231 awContents, contentClient.getOnPageFinishedHelper(), page1, "text/ht ml", false);
1224 assertEquals(page1Title + customUserAgentString, getTitleOnUiThread(cont entView)); 1232 assertEquals(page1Title + customUserAgentString, getTitleOnUiThread(awCo ntents));
1225 loadDataSync( 1233 loadDataSync(
1226 contentView, contentClient.getOnPageFinishedHelper(), page2, "text/h tml", false); 1234 awContents, contentClient.getOnPageFinishedHelper(), page2, "text/ht ml", false);
1227 assertEquals(page2Title + customUserAgentString, getTitleOnUiThread(cont entView)); 1235 assertEquals(page2Title + customUserAgentString, getTitleOnUiThread(awCo ntents));
1228 settings.setUserAgentString(null); 1236 settings.setUserAgentString(null);
1229 // Must not cause any changes until the next page loading. 1237 // Must not cause any changes until the next page loading.
1230 assertEquals(page2Title + customUserAgentString, getTitleOnUiThread(cont entView)); 1238 assertEquals(page2Title + customUserAgentString, getTitleOnUiThread(awCo ntents));
1231 HistoryUtils.goBackSync(getInstrumentation(), contentView, onPageFinishe dHelper); 1239 HistoryUtils.goBackSync(getInstrumentation(), contentView, onPageFinishe dHelper);
1232 assertEquals(page1Title + defaultUserAgentString, getTitleOnUiThread(con tentView)); 1240 assertEquals(page1Title + defaultUserAgentString, getTitleOnUiThread(awC ontents));
1233 HistoryUtils.goForwardSync(getInstrumentation(), contentView, 1241 HistoryUtils.goForwardSync(getInstrumentation(), contentView,
1234 onPageFinishedHelper); 1242 onPageFinishedHelper);
1235 assertEquals(page2Title + defaultUserAgentString, getTitleOnUiThread(con tentView)); 1243 assertEquals(page2Title + defaultUserAgentString, getTitleOnUiThread(awC ontents));
1236 } 1244 }
1237 1245
1238 @SmallTest 1246 @SmallTest
1239 @Feature({"Android-WebView", "Preferences"}) 1247 @Feature({"Android-WebView", "Preferences"})
1240 public void testUserAgentStringNormal() throws Throwable { 1248 public void testUserAgentStringNormal() throws Throwable {
1241 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW); 1249 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW);
1242 runPerViewSettingsTest( 1250 runPerViewSettingsTest(
1243 new AwSettingsUserAgentStringTestHelper(views.getView0(), views.getC lient0()), 1251 new AwSettingsUserAgentStringTestHelper(views.getContents0(), views. getClient0()),
1244 new AwSettingsUserAgentStringTestHelper(views.getView1(), views.getC lient1())); 1252 new AwSettingsUserAgentStringTestHelper(views.getContents1(), views. getClient1()));
1245 } 1253 }
1246 1254
1247 @SmallTest 1255 @SmallTest
1248 @Feature({"Android-WebView", "Preferences"}) 1256 @Feature({"Android-WebView", "Preferences"})
1249 public void testUserAgentStringIncognito() throws Throwable { 1257 public void testUserAgentStringIncognito() throws Throwable {
1250 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW); 1258 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW);
1251 runPerViewSettingsTest( 1259 runPerViewSettingsTest(
1252 new AwSettingsUserAgentStringTestHelper(views.getView0(), views.getC lient0()), 1260 new AwSettingsUserAgentStringTestHelper(views.getContents0(), views. getClient0()),
1253 new AwSettingsUserAgentStringTestHelper(views.getView1(), views.getC lient1())); 1261 new AwSettingsUserAgentStringTestHelper(views.getContents1(), views. getClient1()));
1254 } 1262 }
1255 1263
1256 @SmallTest 1264 @SmallTest
1257 @Feature({"Android-WebView", "Preferences"}) 1265 @Feature({"Android-WebView", "Preferences"})
1258 public void testUserAgentStringBoth() throws Throwable { 1266 public void testUserAgentStringBoth() throws Throwable {
1259 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW); 1267 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW);
1260 runPerViewSettingsTest( 1268 runPerViewSettingsTest(
1261 new AwSettingsUserAgentStringTestHelper(views.getView0(), views.getC lient0()), 1269 new AwSettingsUserAgentStringTestHelper(views.getContents0(), views. getClient0()),
1262 new AwSettingsUserAgentStringTestHelper(views.getView1(), views.getC lient1())); 1270 new AwSettingsUserAgentStringTestHelper(views.getContents1(), views. getClient1()));
1263 } 1271 }
1264 1272
1265 @SmallTest 1273 @SmallTest
1266 @Feature({"Android-WebView", "Preferences"}) 1274 @Feature({"Android-WebView", "Preferences"})
1267 public void testDomStorageEnabledNormal() throws Throwable { 1275 public void testDomStorageEnabledNormal() throws Throwable {
1268 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW); 1276 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW);
1269 runPerViewSettingsTest( 1277 runPerViewSettingsTest(
1270 new AwSettingsDomStorageEnabledTestHelper(views.getView0(), views.ge tClient0()), 1278 new AwSettingsDomStorageEnabledTestHelper(views.getContents0(), view s.getClient0()),
1271 new AwSettingsDomStorageEnabledTestHelper(views.getView1(), views.ge tClient1())); 1279 new AwSettingsDomStorageEnabledTestHelper(views.getContents1(), view s.getClient1()));
1272 } 1280 }
1273 1281
1274 @SmallTest 1282 @SmallTest
1275 @Feature({"Android-WebView", "Preferences"}) 1283 @Feature({"Android-WebView", "Preferences"})
1276 public void testDomStorageEnabledIncognito() throws Throwable { 1284 public void testDomStorageEnabledIncognito() throws Throwable {
1277 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW); 1285 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW);
1278 runPerViewSettingsTest( 1286 runPerViewSettingsTest(
1279 new AwSettingsDomStorageEnabledTestHelper(views.getView0(), views.ge tClient0()), 1287 new AwSettingsDomStorageEnabledTestHelper(views.getContents0(), view s.getClient0()),
1280 new AwSettingsDomStorageEnabledTestHelper(views.getView1(), views.ge tClient1())); 1288 new AwSettingsDomStorageEnabledTestHelper(views.getContents1(), view s.getClient1()));
1281 } 1289 }
1282 1290
1283 @SmallTest 1291 @SmallTest
1284 @Feature({"Android-WebView", "Preferences"}) 1292 @Feature({"Android-WebView", "Preferences"})
1285 public void testDomStorageEnabledBoth() throws Throwable { 1293 public void testDomStorageEnabledBoth() throws Throwable {
1286 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW); 1294 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW);
1287 runPerViewSettingsTest( 1295 runPerViewSettingsTest(
1288 new AwSettingsDomStorageEnabledTestHelper(views.getView0(), views.ge tClient0()), 1296 new AwSettingsDomStorageEnabledTestHelper(views.getContents0(), view s.getClient0()),
1289 new AwSettingsDomStorageEnabledTestHelper(views.getView1(), views.ge tClient1())); 1297 new AwSettingsDomStorageEnabledTestHelper(views.getContents1(), view s.getClient1()));
1290 } 1298 }
1291 1299
1292 @SmallTest 1300 @SmallTest
1293 @Feature({"Android-WebView", "Preferences"}) 1301 @Feature({"Android-WebView", "Preferences"})
1294 public void testUniversalAccessFromFilesNormal() throws Throwable { 1302 public void testUniversalAccessFromFilesNormal() throws Throwable {
1295 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW); 1303 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW);
1296 runPerViewSettingsTest( 1304 runPerViewSettingsTest(
1297 new AwSettingsUniversalAccessFromFilesTestHelper(views.getView0(), v iews.getClient0()), 1305 new AwSettingsUniversalAccessFromFilesTestHelper(views.getContents0( ),
1298 new AwSettingsUniversalAccessFromFilesTestHelper(views.getView1(), v iews.getClient1())); 1306 views.getClient0()),
1307 new AwSettingsUniversalAccessFromFilesTestHelper(views.getContents1( ),
1308 views.getClient1()));
1299 } 1309 }
1300 1310
1301 @SmallTest 1311 @SmallTest
1302 @Feature({"Android-WebView", "Preferences"}) 1312 @Feature({"Android-WebView", "Preferences"})
1303 public void testUniversalAccessFromFilesIncognito() throws Throwable { 1313 public void testUniversalAccessFromFilesIncognito() throws Throwable {
1304 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW); 1314 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW);
1305 runPerViewSettingsTest( 1315 runPerViewSettingsTest(
1306 new AwSettingsUniversalAccessFromFilesTestHelper(views.getView0(), v iews.getClient0()), 1316 new AwSettingsUniversalAccessFromFilesTestHelper(views.getContents0( ),
1307 new AwSettingsUniversalAccessFromFilesTestHelper(views.getView1(), v iews.getClient1())); 1317 views.getClient0()),
1318 new AwSettingsUniversalAccessFromFilesTestHelper(views.getContents1( ),
1319 views.getClient1()));
1308 } 1320 }
1309 1321
1310 @SmallTest 1322 @SmallTest
1311 @Feature({"Android-WebView", "Preferences"}) 1323 @Feature({"Android-WebView", "Preferences"})
1312 public void testUniversalAccessFromFilesBoth() throws Throwable { 1324 public void testUniversalAccessFromFilesBoth() throws Throwable {
1313 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW); 1325 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW);
1314 runPerViewSettingsTest( 1326 runPerViewSettingsTest(
1315 new AwSettingsUniversalAccessFromFilesTestHelper(views.getView0(), v iews.getClient0()), 1327 new AwSettingsUniversalAccessFromFilesTestHelper(views.getContents0( ),
1316 new AwSettingsUniversalAccessFromFilesTestHelper(views.getView1(), v iews.getClient1())); 1328 views.getClient0()),
1329 new AwSettingsUniversalAccessFromFilesTestHelper(views.getContents1( ),
1330 views.getClient1()));
1317 } 1331 }
1318 1332
1319 // This test verifies that local image resources can be loaded from file: 1333 // This test verifies that local image resources can be loaded from file:
1320 // URLs regardless of file access state. 1334 // URLs regardless of file access state.
1321 @SmallTest 1335 @SmallTest
1322 @Feature({"Android-WebView", "Preferences"}) 1336 @Feature({"Android-WebView", "Preferences"})
1323 public void testFileAccessFromFilesImage() throws Throwable { 1337 public void testFileAccessFromFilesImage() throws Throwable {
1324 final String imageContainerUrl = UrlUtils.getTestFileUrl("webview/image_ access.html"); 1338 final String imageContainerUrl = UrlUtils.getTestFileUrl("webview/image_ access.html");
1325 final String imageHeight = "16"; 1339 final String imageHeight = "16";
1326 final TestAwContentsClient contentClient = new TestAwContentsClient(); 1340 final TestAwContentsClient contentClient = new TestAwContentsClient();
1327 final ContentViewCore contentView = 1341 final AwTestContainerView testContainerView =
1328 createAwTestContainerViewOnMainSync(false, contentClient).getCon tentViewCore(); 1342 createAwTestContainerViewOnMainSync(contentClient);
1329 ContentSettings settings = getContentSettingsOnUiThread(contentView); 1343 final AwContents awContents = testContainerView.getAwContents();
1344 ContentSettings settings = getContentSettingsOnUiThread(awContents);
1330 settings.setJavaScriptEnabled(true); 1345 settings.setJavaScriptEnabled(true);
1331 settings.setAllowUniversalAccessFromFileURLs(false); 1346 settings.setAllowUniversalAccessFromFileURLs(false);
1332 settings.setAllowFileAccessFromFileURLs(false); 1347 settings.setAllowFileAccessFromFileURLs(false);
1333 loadUrlSync(contentView, contentClient.getOnPageFinishedHelper(), imageC ontainerUrl); 1348 loadUrlSync(awContents, contentClient.getOnPageFinishedHelper(), imageCo ntainerUrl);
1334 assertEquals(imageHeight, getTitleOnUiThread(contentView)); 1349 assertEquals(imageHeight, getTitleOnUiThread(awContents));
1335 } 1350 }
1336 1351
1337 @SmallTest 1352 @SmallTest
1338 @Feature({"Android-WebView", "Preferences"}) 1353 @Feature({"Android-WebView", "Preferences"})
1339 public void testFileAccessFromFilesIframeNormal() throws Throwable { 1354 public void testFileAccessFromFilesIframeNormal() throws Throwable {
1340 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW); 1355 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW);
1341 runPerViewSettingsTest( 1356 runPerViewSettingsTest(
1342 new AwSettingsFileAccessFromFilesIframeTestHelper( 1357 new AwSettingsFileAccessFromFilesIframeTestHelper(
1343 views.getView0(), views.getClient0()), 1358 views.getContents0(), views.getClient0()),
1344 new AwSettingsFileAccessFromFilesIframeTestHelper( 1359 new AwSettingsFileAccessFromFilesIframeTestHelper(
1345 views.getView1(), views.getClient1())); 1360 views.getContents1(), views.getClient1()));
1346 } 1361 }
1347 1362
1348 @SmallTest 1363 @SmallTest
1349 @Feature({"Android-WebView", "Preferences"}) 1364 @Feature({"Android-WebView", "Preferences"})
1350 public void testFileAccessFromFilesIframeIncognito() throws Throwable { 1365 public void testFileAccessFromFilesIframeIncognito() throws Throwable {
1351 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW); 1366 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW);
1352 runPerViewSettingsTest( 1367 runPerViewSettingsTest(
1353 new AwSettingsFileAccessFromFilesIframeTestHelper( 1368 new AwSettingsFileAccessFromFilesIframeTestHelper(
1354 views.getView0(), views.getClient0()), 1369 views.getContents0(), views.getClient0()),
1355 new AwSettingsFileAccessFromFilesIframeTestHelper( 1370 new AwSettingsFileAccessFromFilesIframeTestHelper(
1356 views.getView1(), views.getClient1())); 1371 views.getContents1(), views.getClient1()));
1357 } 1372 }
1358 1373
1359 @SmallTest 1374 @SmallTest
1360 @Feature({"Android-WebView", "Preferences"}) 1375 @Feature({"Android-WebView", "Preferences"})
1361 public void testFileAccessFromFilesIframeBoth() throws Throwable { 1376 public void testFileAccessFromFilesIframeBoth() throws Throwable {
1362 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW); 1377 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW);
1363 runPerViewSettingsTest( 1378 runPerViewSettingsTest(
1364 new AwSettingsFileAccessFromFilesIframeTestHelper( 1379 new AwSettingsFileAccessFromFilesIframeTestHelper(
1365 views.getView0(), views.getClient0()), 1380 views.getContents0(), views.getClient0()),
1366 new AwSettingsFileAccessFromFilesIframeTestHelper( 1381 new AwSettingsFileAccessFromFilesIframeTestHelper(
1367 views.getView1(), views.getClient1())); 1382 views.getContents1(), views.getClient1()));
1368 } 1383 }
1369 1384
1370 @SmallTest 1385 @SmallTest
1371 @Feature({"Android-WebView", "Preferences"}) 1386 @Feature({"Android-WebView", "Preferences"})
1372 public void testFileAccessFromFilesXhrNormal() throws Throwable { 1387 public void testFileAccessFromFilesXhrNormal() throws Throwable {
1373 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW); 1388 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW);
1374 runPerViewSettingsTest( 1389 runPerViewSettingsTest(
1375 new AwSettingsFileAccessFromFilesXhrTestHelper(views.getView0(), vie ws.getClient0()), 1390 new AwSettingsFileAccessFromFilesXhrTestHelper(views.getContents0(),
1376 new AwSettingsFileAccessFromFilesXhrTestHelper(views.getView1(), vie ws.getClient1())); 1391 views.getClient0()),
1392 new AwSettingsFileAccessFromFilesXhrTestHelper(views.getContents1(),
1393 views.getClient1()));
1377 } 1394 }
1378 1395
1379 @SmallTest 1396 @SmallTest
1380 @Feature({"Android-WebView", "Preferences"}) 1397 @Feature({"Android-WebView", "Preferences"})
1381 public void testFileAccessFromFilesXhrIncognito() throws Throwable { 1398 public void testFileAccessFromFilesXhrIncognito() throws Throwable {
1382 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW); 1399 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW);
1383 runPerViewSettingsTest( 1400 runPerViewSettingsTest(
1384 new AwSettingsFileAccessFromFilesXhrTestHelper(views.getView0(), vie ws.getClient0()), 1401 new AwSettingsFileAccessFromFilesXhrTestHelper(views.getContents0(),
1385 new AwSettingsFileAccessFromFilesXhrTestHelper(views.getView1(), vie ws.getClient1())); 1402 views.getClient0()),
1403 new AwSettingsFileAccessFromFilesXhrTestHelper(views.getContents1(),
1404 views.getClient1()));
1386 } 1405 }
1387 1406
1388 @SmallTest 1407 @SmallTest
1389 @Feature({"Android-WebView", "Preferences"}) 1408 @Feature({"Android-WebView", "Preferences"})
1390 public void testFileAccessFromFilesXhrBoth() throws Throwable { 1409 public void testFileAccessFromFilesXhrBoth() throws Throwable {
1391 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW); 1410 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW);
1392 runPerViewSettingsTest( 1411 runPerViewSettingsTest(
1393 new AwSettingsFileAccessFromFilesXhrTestHelper(views.getView0(), vie ws.getClient0()), 1412 new AwSettingsFileAccessFromFilesXhrTestHelper(views.getContents0(),
1394 new AwSettingsFileAccessFromFilesXhrTestHelper(views.getView1(), vie ws.getClient1())); 1413 views.getClient0()),
1414 new AwSettingsFileAccessFromFilesXhrTestHelper(views.getContents1(),
1415 views.getClient1()));
1395 } 1416 }
1396 1417
1397 @SmallTest 1418 @SmallTest
1398 @Feature({"Android-WebView", "Preferences"}) 1419 @Feature({"Android-WebView", "Preferences"})
1399 public void testFileUrlAccessNormal() throws Throwable { 1420 public void testFileUrlAccessNormal() throws Throwable {
1400 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW); 1421 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW);
1401 runPerViewSettingsTest( 1422 runPerViewSettingsTest(
1402 new AwSettingsFileUrlAccessTestHelper(views.getContainer0(), views.g etClient0(), 0), 1423 new AwSettingsFileUrlAccessTestHelper(views.getContents0(), views.ge tClient0(), 0),
1403 new AwSettingsFileUrlAccessTestHelper(views.getContainer1(), views.g etClient1(), 1)); 1424 new AwSettingsFileUrlAccessTestHelper(views.getContents1(), views.ge tClient1(), 1));
1404 } 1425 }
1405 1426
1406 @SmallTest 1427 @SmallTest
1407 @Feature({"Android-WebView", "Preferences"}) 1428 @Feature({"Android-WebView", "Preferences"})
1408 public void testFileUrlAccessIncognito() throws Throwable { 1429 public void testFileUrlAccessIncognito() throws Throwable {
1409 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW); 1430 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW);
1410 runPerViewSettingsTest( 1431 runPerViewSettingsTest(
1411 new AwSettingsFileUrlAccessTestHelper(views.getContainer0(), views.g etClient0(), 0), 1432 new AwSettingsFileUrlAccessTestHelper(views.getContents0(), views.ge tClient0(), 0),
1412 new AwSettingsFileUrlAccessTestHelper(views.getContainer1(), views.g etClient1(), 1)); 1433 new AwSettingsFileUrlAccessTestHelper(views.getContents1(), views.ge tClient1(), 1));
1413 } 1434 }
1414 1435
1415 @SmallTest 1436 @SmallTest
1416 @Feature({"Android-WebView", "Preferences"}) 1437 @Feature({"Android-WebView", "Preferences"})
1417 public void testFileUrlAccessBoth() throws Throwable { 1438 public void testFileUrlAccessBoth() throws Throwable {
1418 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW); 1439 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW);
1419 runPerViewSettingsTest( 1440 runPerViewSettingsTest(
1420 new AwSettingsFileUrlAccessTestHelper(views.getContainer0(), views.g etClient0(), 0), 1441 new AwSettingsFileUrlAccessTestHelper(views.getContents0(), views.ge tClient0(), 0),
1421 new AwSettingsFileUrlAccessTestHelper(views.getContainer1(), views.g etClient1(), 1)); 1442 new AwSettingsFileUrlAccessTestHelper(views.getContents1(), views.ge tClient1(), 1));
1422 } 1443 }
1423 1444
1424 @SmallTest 1445 @SmallTest
1425 @Feature({"Android-WebView", "Preferences"}) 1446 @Feature({"Android-WebView", "Preferences"})
1426 public void testContentUrlAccessNormal() throws Throwable { 1447 public void testContentUrlAccessNormal() throws Throwable {
1427 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW); 1448 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW);
1428 runPerViewSettingsTest( 1449 runPerViewSettingsTest(
1429 new AwSettingsContentUrlAccessTestHelper(views.getContainer0(), view s.getClient0(), 0), 1450 new AwSettingsContentUrlAccessTestHelper(views.getContents0(), views .getClient0(), 0),
1430 new AwSettingsContentUrlAccessTestHelper(views.getContainer1(), view s.getClient1(), 1)); 1451 new AwSettingsContentUrlAccessTestHelper(views.getContents1(), views .getClient1(), 1));
1431 } 1452 }
1432 1453
1433 @SmallTest 1454 @SmallTest
1434 @Feature({"Android-WebView", "Preferences"}) 1455 @Feature({"Android-WebView", "Preferences"})
1435 public void testContentUrlAccessIncognito() throws Throwable { 1456 public void testContentUrlAccessIncognito() throws Throwable {
1436 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW); 1457 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW);
1437 runPerViewSettingsTest( 1458 runPerViewSettingsTest(
1438 new AwSettingsContentUrlAccessTestHelper(views.getContainer0(), view s.getClient0(), 0), 1459 new AwSettingsContentUrlAccessTestHelper(views.getContents0(), views .getClient0(), 0),
1439 new AwSettingsContentUrlAccessTestHelper(views.getContainer1(), view s.getClient1(), 1)); 1460 new AwSettingsContentUrlAccessTestHelper(views.getContents1(), views .getClient1(), 1));
1440 } 1461 }
1441 1462
1442 @SmallTest 1463 @SmallTest
1443 @Feature({"Android-WebView", "Preferences"}) 1464 @Feature({"Android-WebView", "Preferences"})
1444 public void testContentUrlAccessBoth() throws Throwable { 1465 public void testContentUrlAccessBoth() throws Throwable {
1445 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW); 1466 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW);
1446 runPerViewSettingsTest( 1467 runPerViewSettingsTest(
1447 new AwSettingsContentUrlAccessTestHelper(views.getContainer0(), view s.getClient0(), 0), 1468 new AwSettingsContentUrlAccessTestHelper(views.getContents0(), views .getClient0(), 0),
1448 new AwSettingsContentUrlAccessTestHelper(views.getContainer1(), view s.getClient1(), 1)); 1469 new AwSettingsContentUrlAccessTestHelper(views.getContents1(), views .getClient1(), 1));
1449 } 1470 }
1450 1471
1451 @SmallTest 1472 @SmallTest
1452 @Feature({"Android-WebView", "Preferences", "Navigation"}) 1473 @Feature({"Android-WebView", "Preferences", "Navigation"})
1453 public void testBlockingContentUrlsFromDataUrls() throws Throwable { 1474 public void testBlockingContentUrlsFromDataUrls() throws Throwable {
1454 final TestAwContentsClient contentClient = new TestAwContentsClient(); 1475 final TestAwContentsClient contentClient = new TestAwContentsClient();
1455 final ContentViewCore contentView = 1476 final AwTestContainerView testContainerView =
1456 createAwTestContainerViewOnMainSync(false, contentClient).getCon tentViewCore(); 1477 createAwTestContainerViewOnMainSync(contentClient);
1478 final AwContents awContents = testContainerView.getAwContents();
1457 final String target = "content_from_data"; 1479 final String target = "content_from_data";
1458 final String page = "<html><body>" + 1480 final String page = "<html><body>" +
1459 "<img src=\"" + 1481 "<img src=\"" +
1460 createContentUrl(target) + "\">" + 1482 createContentUrl(target) + "\">" +
1461 "</body></html>"; 1483 "</body></html>";
1462 resetResourceRequestCountInContentProvider(target); 1484 resetResourceRequestCountInContentProvider(target);
1463 loadDataSync( 1485 loadDataSync(
1464 contentView, 1486 awContents,
1465 contentClient.getOnPageFinishedHelper(), 1487 contentClient.getOnPageFinishedHelper(),
1466 page, 1488 page,
1467 "text/html", 1489 "text/html",
1468 false); 1490 false);
1469 ensureResourceRequestCountInContentProvider(target, 0); 1491 ensureResourceRequestCountInContentProvider(target, 0);
1470 } 1492 }
1471 1493
1472 @SmallTest 1494 @SmallTest
1473 @Feature({"Android-WebView", "Preferences", "Navigation"}) 1495 @Feature({"Android-WebView", "Preferences", "Navigation"})
1474 public void testContentUrlFromFileNormal() throws Throwable { 1496 public void testContentUrlFromFileNormal() throws Throwable {
1475 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW); 1497 ViewPair views = createViews(NORMAL_VIEW, NORMAL_VIEW);
1476 runPerViewSettingsTest( 1498 runPerViewSettingsTest(
1477 new AwSettingsContentUrlAccessFromFileTestHelper( 1499 new AwSettingsContentUrlAccessFromFileTestHelper(
1478 views.getContainer0(), views.getClient0(), 0), 1500 views.getContents0(), views.getClient0(), 0),
1479 new AwSettingsContentUrlAccessFromFileTestHelper( 1501 new AwSettingsContentUrlAccessFromFileTestHelper(
1480 views.getContainer1(), views.getClient1(), 1)); 1502 views.getContents1(), views.getClient1(), 1));
1481 } 1503 }
1482 1504
1483 @SmallTest 1505 @SmallTest
1484 @Feature({"Android-WebView", "Preferences", "Navigation"}) 1506 @Feature({"Android-WebView", "Preferences", "Navigation"})
1485 public void testContentUrlFromFileIncognito() throws Throwable { 1507 public void testContentUrlFromFileIncognito() throws Throwable {
1486 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW); 1508 ViewPair views = createViews(INCOGNITO_VIEW, INCOGNITO_VIEW);
1487 runPerViewSettingsTest( 1509 runPerViewSettingsTest(
1488 new AwSettingsContentUrlAccessFromFileTestHelper( 1510 new AwSettingsContentUrlAccessFromFileTestHelper(
1489 views.getContainer0(), views.getClient0(), 0), 1511 views.getContents0(), views.getClient0(), 0),
1490 new AwSettingsContentUrlAccessFromFileTestHelper( 1512 new AwSettingsContentUrlAccessFromFileTestHelper(
1491 views.getContainer1(), views.getClient1(), 1)); 1513 views.getContents1(), views.getClient1(), 1));
1492 } 1514 }
1493 1515
1494 @SmallTest 1516 @SmallTest
1495 @Feature({"Android-WebView", "Preferences", "Navigation"}) 1517 @Feature({"Android-WebView", "Preferences", "Navigation"})
1496 public void testContentUrlFromFileBoth() throws Throwable { 1518 public void testContentUrlFromFileBoth() throws Throwable {
1497 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW); 1519 ViewPair views = createViews(NORMAL_VIEW, INCOGNITO_VIEW);
1498 runPerViewSettingsTest( 1520 runPerViewSettingsTest(
1499 new AwSettingsContentUrlAccessFromFileTestHelper( 1521 new AwSettingsContentUrlAccessFromFileTestHelper(
1500 views.getContainer0(), views.getClient0(), 0), 1522 views.getContents0(), views.getClient0(), 0),
1501 new AwSettingsContentUrlAccessFromFileTestHelper( 1523 new AwSettingsContentUrlAccessFromFileTestHelper(
1502 views.getContainer1(), views.getClient1(), 1)); 1524 views.getContents1(), views.getClient1(), 1));
1503 } 1525 }
1504 1526
1505 @SmallTest 1527 @SmallTest
1506 @Feature({"Android-WebView", "Preferences"}) 1528 @Feature({"Android-WebView", "Preferences"})
1507 public void testBlockNetworkImagesDoesNotBlockDataUrlImage() throws Throwabl e { 1529 public void testBlockNetworkImagesDoesNotBlockDataUrlImage() throws Throwabl e {
1508 final TestAwContentsClient contentClient = new TestAwContentsClient(); 1530 final TestAwContentsClient contentClient = new TestAwContentsClient();
1509 final ContentViewCore contentView = 1531 final AwTestContainerView testContainerView =
1510 createAwTestContainerViewOnMainSync(false, contentClient).getCon tentViewCore(); 1532 createAwTestContainerViewOnMainSync(contentClient);
1511 final ContentSettings settings = getContentSettingsOnUiThread(contentVie w); 1533 final AwContents awContents = testContainerView.getAwContents();
1534 final ContentSettings settings = getContentSettingsOnUiThread(awContents );
1512 ImagePageGenerator generator = new ImagePageGenerator(0, false); 1535 ImagePageGenerator generator = new ImagePageGenerator(0, false);
1513 1536
1514 settings.setJavaScriptEnabled(true); 1537 settings.setJavaScriptEnabled(true);
1515 settings.setImagesEnabled(false); 1538 settings.setImagesEnabled(false);
1516 loadDataSync(contentView, 1539 loadDataSync(awContents,
1517 contentClient.getOnPageFinishedHelper(), 1540 contentClient.getOnPageFinishedHelper(),
1518 generator.getPageSource(), 1541 generator.getPageSource(),
1519 "text/html", 1542 "text/html",
1520 false); 1543 false);
1521 assertEquals(ImagePageGenerator.IMAGE_LOADED_STRING, getTitleOnUiThread( contentView)); 1544 assertEquals(ImagePageGenerator.IMAGE_LOADED_STRING, getTitleOnUiThread( awContents));
1522 } 1545 }
1523 1546
1524 @SmallTest 1547 @SmallTest
1525 @Feature({"Android-WebView", "Preferences"}) 1548 @Feature({"Android-WebView", "Preferences"})
1526 public void testBlockNetworkImagesBlocksNetworkImageAndReloadInPlace() throw s Throwable { 1549 public void testBlockNetworkImagesBlocksNetworkImageAndReloadInPlace() throw s Throwable {
1527 final TestAwContentsClient contentClient = new TestAwContentsClient(); 1550 final TestAwContentsClient contentClient = new TestAwContentsClient();
1528 final ContentViewCore contentView = 1551 final AwTestContainerView testContainerView =
1529 createAwTestContainerViewOnMainSync(false, contentClient).getCon tentViewCore(); 1552 createAwTestContainerViewOnMainSync(contentClient);
1530 final ContentSettings settings = getContentSettingsOnUiThread(contentVie w); 1553 final AwContents awContents = testContainerView.getAwContents();
1554 final ContentSettings settings = getContentSettingsOnUiThread(awContents );
1531 settings.setJavaScriptEnabled(true); 1555 settings.setJavaScriptEnabled(true);
1532 ImagePageGenerator generator = new ImagePageGenerator(0, false); 1556 ImagePageGenerator generator = new ImagePageGenerator(0, false);
1533 1557
1534 TestWebServer webServer = null; 1558 TestWebServer webServer = null;
1535 try { 1559 try {
1536 webServer = new TestWebServer(false); 1560 webServer = new TestWebServer(false);
1537 final String imagePath = "/image.png"; 1561 final String imagePath = "/image.png";
1538 webServer.setResponseBase64(imagePath, generator.getImageSourceNoAdv ance(), 1562 webServer.setResponseBase64(imagePath, generator.getImageSourceNoAdv ance(),
1539 CommonResources.getImagePngHeaders(false)); 1563 CommonResources.getImagePngHeaders(false));
1540 1564
1541 final String pagePath = "/html_image.html"; 1565 final String pagePath = "/html_image.html";
1542 final String httpUrlImageHtml = generator.getPageTemplateSource(imag ePath); 1566 final String httpUrlImageHtml = generator.getPageTemplateSource(imag ePath);
1543 final String httpImageUrl = webServer.setResponse(pagePath, httpUrlI mageHtml, null); 1567 final String httpImageUrl = webServer.setResponse(pagePath, httpUrlI mageHtml, null);
1544 1568
1545 settings.setImagesEnabled(false); 1569 settings.setImagesEnabled(false);
1546 loadUrlSync(contentView, contentClient.getOnPageFinishedHelper(), ht tpImageUrl); 1570 loadUrlSync(awContents, contentClient.getOnPageFinishedHelper(), htt pImageUrl);
1547 assertEquals(ImagePageGenerator.IMAGE_NOT_LOADED_STRING, 1571 assertEquals(ImagePageGenerator.IMAGE_NOT_LOADED_STRING,
1548 getTitleOnUiThread(contentView)); 1572 getTitleOnUiThread(awContents));
1549 1573
1550 settings.setImagesEnabled(true); 1574 settings.setImagesEnabled(true);
1551 assertTrue(CriteriaHelper.pollForCriteria(new Criteria() { 1575 assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
1552 @Override 1576 @Override
1553 public boolean isSatisfied() { 1577 public boolean isSatisfied() {
1554 try { 1578 try {
1555 return ImagePageGenerator.IMAGE_NOT_LOADED_STRING.equals ( 1579 return ImagePageGenerator.IMAGE_NOT_LOADED_STRING.equals (
1556 getTitleOnUiThread(contentView)); 1580 getTitleOnUiThread(awContents));
1557 } catch (Throwable t) { 1581 } catch (Throwable t) {
1558 t.printStackTrace(); 1582 t.printStackTrace();
1559 fail("Failed to getTitleOnUIThread: " + t.toString()); 1583 fail("Failed to getTitleOnUIThread: " + t.toString());
1560 return false; 1584 return false;
1561 } 1585 }
1562 } 1586 }
1563 }, WAIT_TIMEOUT_SECONDS * 1000, CHECK_INTERVAL)); 1587 }, WAIT_TIMEOUT_SECONDS * 1000, CHECK_INTERVAL));
1564 } finally { 1588 } finally {
1565 if (webServer != null) webServer.shutdown(); 1589 if (webServer != null) webServer.shutdown();
1566 } 1590 }
1567 } 1591 }
1568 1592
1569 // Test an assert URL (file:///android_asset/) 1593 // Test an assert URL (file:///android_asset/)
1570 @SmallTest 1594 @SmallTest
1571 @Feature({"Android-WebView", "Navigation"}) 1595 @Feature({"Android-WebView", "Navigation"})
1572 public void testAssetUrl() throws Throwable { 1596 public void testAssetUrl() throws Throwable {
1573 // Note: this text needs to be kept in sync with the contents of the htm l file referenced 1597 // Note: this text needs to be kept in sync with the contents of the htm l file referenced
1574 // below. 1598 // below.
1575 final String expectedTitle = "Asset File"; 1599 final String expectedTitle = "Asset File";
1576 final TestAwContentsClient contentClient = new TestAwContentsClient(); 1600 final TestAwContentsClient contentClient = new TestAwContentsClient();
1577 final ContentViewCore contentView = 1601 final AwTestContainerView testContainerView =
1578 createAwTestContainerViewOnMainSync(false, contentClient).getCon tentViewCore(); 1602 createAwTestContainerViewOnMainSync(contentClient);
1603 final AwContents awContents = testContainerView.getAwContents();
1579 try { 1604 try {
1580 useTestResourceContext(); 1605 useTestResourceContext();
1581 loadUrlSync(contentView, 1606 loadUrlSync(awContents,
1582 contentClient.getOnPageFinishedHelper(), 1607 contentClient.getOnPageFinishedHelper(),
1583 "file:///android_asset/asset_file.html"); 1608 "file:///android_asset/asset_file.html");
1584 assertEquals(expectedTitle, getTitleOnUiThread(contentView)); 1609 assertEquals(expectedTitle, getTitleOnUiThread(awContents));
1585 } finally { 1610 } finally {
1586 resetResourceContext(); 1611 resetResourceContext();
1587 } 1612 }
1588 } 1613 }
1589 1614
1590 // Test a resource URL (file:///android_res/). 1615 // Test a resource URL (file:///android_res/).
1591 @SmallTest 1616 @SmallTest
1592 @Feature({"Android-WebView", "Navigation"}) 1617 @Feature({"Android-WebView", "Navigation"})
1593 public void testResourceUrl() throws Throwable { 1618 public void testResourceUrl() throws Throwable {
1594 // Note: this text needs to be kept in sync with the contents of the htm l file referenced 1619 // Note: this text needs to be kept in sync with the contents of the htm l file referenced
1595 // below. 1620 // below.
1596 final String expectedTitle = "Resource File"; 1621 final String expectedTitle = "Resource File";
1597 final TestAwContentsClient contentClient = new TestAwContentsClient(); 1622 final TestAwContentsClient contentClient = new TestAwContentsClient();
1598 final ContentViewCore contentView = 1623 final AwTestContainerView testContainerView =
1599 createAwTestContainerViewOnMainSync(false, contentClient).getCon tentViewCore(); 1624 createAwTestContainerViewOnMainSync(contentClient);
1625 final AwContents awContents = testContainerView.getAwContents();
1600 try { 1626 try {
1601 useTestResourceContext(); 1627 useTestResourceContext();
1602 loadUrlSync(contentView, 1628 loadUrlSync(awContents,
1603 contentClient.getOnPageFinishedHelper(), 1629 contentClient.getOnPageFinishedHelper(),
1604 "file:///android_res/raw/resource_file.html"); 1630 "file:///android_res/raw/resource_file.html");
1605 assertEquals(expectedTitle, getTitleOnUiThread(contentView)); 1631 assertEquals(expectedTitle, getTitleOnUiThread(awContents));
1606 } finally { 1632 } finally {
1607 resetResourceContext(); 1633 resetResourceContext();
1608 } 1634 }
1609 } 1635 }
1610 1636
1611 // Test that the file URL access toggle does not affect asset URLs. 1637 // Test that the file URL access toggle does not affect asset URLs.
1612 @SmallTest 1638 @SmallTest
1613 @Feature({"Android-WebView", "Navigation"}) 1639 @Feature({"Android-WebView", "Navigation"})
1614 public void testFileUrlAccessToggleDoesNotBlockAssetUrls() throws Throwable { 1640 public void testFileUrlAccessToggleDoesNotBlockAssetUrls() throws Throwable {
1615 // Note: this text needs to be kept in sync with the contents of the htm l file referenced 1641 // Note: this text needs to be kept in sync with the contents of the htm l file referenced
1616 // below. 1642 // below.
1617 final String expectedTitle = "Asset File"; 1643 final String expectedTitle = "Asset File";
1618 final TestAwContentsClient contentClient = new TestAwContentsClient(); 1644 final TestAwContentsClient contentClient = new TestAwContentsClient();
1619 final AwTestContainerView containerView = 1645 final AwTestContainerView testContainerView =
1620 createAwTestContainerViewOnMainSync(false, contentClient); 1646 createAwTestContainerViewOnMainSync(contentClient);
1621 final ContentViewCore contentView = containerView.getContentViewCore(); 1647 final AwContents awContents = testContainerView.getAwContents();
1622 final AwSettings settings = getAwSettingsOnUiThread(containerView.getAwC ontents()); 1648 final AwSettings settings = getAwSettingsOnUiThread(awContents);
1623 try { 1649 try {
1624 useTestResourceContext(); 1650 useTestResourceContext();
1625 settings.setAllowFileAccess(false); 1651 settings.setAllowFileAccess(false);
1626 loadUrlSync(contentView, 1652 loadUrlSync(awContents,
1627 contentClient.getOnPageFinishedHelper(), 1653 contentClient.getOnPageFinishedHelper(),
1628 "file:///android_asset/asset_file.html"); 1654 "file:///android_asset/asset_file.html");
1629 assertEquals(expectedTitle, getTitleOnUiThread(contentView)); 1655 assertEquals(expectedTitle, getTitleOnUiThread(awContents));
1630 } finally { 1656 } finally {
1631 resetResourceContext(); 1657 resetResourceContext();
1632 } 1658 }
1633 } 1659 }
1634 1660
1635 // Test that the file URL access toggle does not affect resource URLs. 1661 // Test that the file URL access toggle does not affect resource URLs.
1636 @SmallTest 1662 @SmallTest
1637 @Feature({"Android-WebView", "Navigation"}) 1663 @Feature({"Android-WebView", "Navigation"})
1638 public void testFileUrlAccessToggleDoesNotBlockResourceUrls() throws Throwab le { 1664 public void testFileUrlAccessToggleDoesNotBlockResourceUrls() throws Throwab le {
1639 // Note: this text needs to be kept in sync with the contents of the htm l file referenced 1665 // Note: this text needs to be kept in sync with the contents of the htm l file referenced
1640 // below. 1666 // below.
1641 final String expectedTitle = "Resource File"; 1667 final String expectedTitle = "Resource File";
1642 final TestAwContentsClient contentClient = new TestAwContentsClient(); 1668 final TestAwContentsClient contentClient = new TestAwContentsClient();
1643 final AwTestContainerView containerView = 1669 final AwTestContainerView testContainerView =
1644 createAwTestContainerViewOnMainSync(false, contentClient); 1670 createAwTestContainerViewOnMainSync(contentClient);
1645 final ContentViewCore contentView = containerView.getContentViewCore(); 1671 final AwContents awContents = testContainerView.getAwContents();
1646 final AwSettings settings = getAwSettingsOnUiThread(containerView.getAwC ontents()); 1672 final AwSettings settings = getAwSettingsOnUiThread(awContents);
1647 try { 1673 try {
1648 useTestResourceContext(); 1674 useTestResourceContext();
1649 settings.setAllowFileAccess(false); 1675 settings.setAllowFileAccess(false);
1650 loadUrlSync(contentView, 1676 loadUrlSync(awContents,
1651 contentClient.getOnPageFinishedHelper(), 1677 contentClient.getOnPageFinishedHelper(),
1652 "file:///android_res/raw/resource_file.html"); 1678 "file:///android_res/raw/resource_file.html");
1653 assertEquals(expectedTitle, getTitleOnUiThread(contentView)); 1679 assertEquals(expectedTitle, getTitleOnUiThread(awContents));
1654 } finally { 1680 } finally {
1655 resetResourceContext(); 1681 resetResourceContext();
1656 } 1682 }
1657 } 1683 }
1658 1684
1659 class ViewPair { 1685 class ViewPair {
1660 ViewPair(AwTestContainerView container0, TestAwContentsClient client0, 1686 private final AwContents contents0;
1661 AwTestContainerView container1, TestAwContentsClient client1) { 1687 private final TestAwContentsClient client0;
1662 this.container0 = container0; 1688 private final AwContents contents1;
1689 private final TestAwContentsClient client1;
1690
1691 ViewPair(AwContents contents0, TestAwContentsClient client0,
1692 AwContents contents1, TestAwContentsClient client1) {
1693 this.contents0 = contents0;
1663 this.client0 = client0; 1694 this.client0 = client0;
1664 this.container1 = container1; 1695 this.contents1 = contents1;
1665 this.client1 = client1; 1696 this.client1 = client1;
1666 } 1697 }
1667 1698
1668 AwTestContainerView getContainer0() { 1699 AwContents getContents0() {
1669 return container0; 1700 return contents0;
1670 }
1671
1672 ContentViewCore getView0() {
1673 return container0.getContentViewCore();
1674 } 1701 }
1675 1702
1676 TestAwContentsClient getClient0() { 1703 TestAwContentsClient getClient0() {
1677 return client0; 1704 return client0;
1678 } 1705 }
1679 1706
1680 AwTestContainerView getContainer1() { 1707 AwContents getContents1() {
1681 return container1; 1708 return contents1;
1682 }
1683
1684 ContentViewCore getView1() {
1685 return container1.getContentViewCore();
1686 } 1709 }
1687 1710
1688 TestAwContentsClient getClient1() { 1711 TestAwContentsClient getClient1() {
1689 return client1; 1712 return client1;
1690 } 1713 }
1691
1692 private final AwTestContainerView container0;
1693 private final TestAwContentsClient client0;
1694 private final AwTestContainerView container1;
1695 private final TestAwContentsClient client1;
1696 } 1714 }
1697 1715
1698 /** 1716 /**
1699 * Verifies the following statements about a setting: 1717 * Verifies the following statements about a setting:
1700 * - initially, the setting has a default value; 1718 * - initially, the setting has a default value;
1701 * - the setting can be switched to an alternate value and back; 1719 * - the setting can be switched to an alternate value and back;
1702 * - switching a setting in the first WebView doesn't affect the setting 1720 * - switching a setting in the first WebView doesn't affect the setting
1703 * state in the second WebView and vice versa. 1721 * state in the second WebView and vice versa.
1704 * 1722 *
1705 * @param helper0 Test helper for the first ContentView 1723 * @param helper0 Test helper for the first ContentView
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1743 helper0.ensureSettingHasInitialValue(); 1761 helper0.ensureSettingHasInitialValue();
1744 helper1.ensureSettingHasInitialValue(); 1762 helper1.ensureSettingHasInitialValue();
1745 } 1763 }
1746 1764
1747 private ViewPair createViews( 1765 private ViewPair createViews(
1748 boolean firstIsIncognito, 1766 boolean firstIsIncognito,
1749 boolean secondIsIncognito) throws Throwable { 1767 boolean secondIsIncognito) throws Throwable {
1750 TestAwContentsClient client0 = new TestAwContentsClient(); 1768 TestAwContentsClient client0 = new TestAwContentsClient();
1751 TestAwContentsClient client1 = new TestAwContentsClient(); 1769 TestAwContentsClient client1 = new TestAwContentsClient();
1752 return new ViewPair( 1770 return new ViewPair(
1753 createAwTestContainerViewOnMainSync(firstIsIncognito, client0), 1771 createAwTestContainerViewOnMainSync(
1772 firstIsIncognito, client0).getAwContents(),
1754 client0, 1773 client0,
1755 createAwTestContainerViewOnMainSync(secondIsIncognito, client1), 1774 createAwTestContainerViewOnMainSync(
1775 secondIsIncognito, client1).getAwContents(),
1756 client1); 1776 client1);
1757 } 1777 }
1758 1778
1759 /** 1779 /**
1760 * Verifies the number of resource requests made to the content provider. 1780 * Verifies the number of resource requests made to the content provider.
1761 * @param resource Resource name 1781 * @param resource Resource name
1762 * @param expectedCount Expected resource requests count 1782 * @param expectedCount Expected resource requests count
1763 */ 1783 */
1764 private void ensureResourceRequestCountInContentProvider(String resource, in t expectedCount) { 1784 private void ensureResourceRequestCountInContentProvider(String resource, in t expectedCount) {
1765 Context context = getInstrumentation().getTargetContext(); 1785 Context context = getInstrumentation().getTargetContext();
(...skipping 24 matching lines...) Expand all
1790 private void resetResourceContext() { 1810 private void resetResourceContext() {
1791 AndroidProtocolHandler.setResourceContextForTesting(null); 1811 AndroidProtocolHandler.setResourceContextForTesting(null);
1792 } 1812 }
1793 1813
1794 @SmallTest 1814 @SmallTest
1795 @Feature({"Android-WebView", "Preferences"}) 1815 @Feature({"Android-WebView", "Preferences"})
1796 public void testBlockNetworkLoadsWithHttpResources() throws Throwable { 1816 public void testBlockNetworkLoadsWithHttpResources() throws Throwable {
1797 final TestAwContentsClient contentClient = new TestAwContentsClient(); 1817 final TestAwContentsClient contentClient = new TestAwContentsClient();
1798 final AwTestContainerView testContainer = 1818 final AwTestContainerView testContainer =
1799 createAwTestContainerViewOnMainSync(false, contentClient); 1819 createAwTestContainerViewOnMainSync(false, contentClient);
1800 final ContentViewCore contentView = testContainer.getContentViewCore(); 1820 final AwContents awContents = testContainer.getAwContents();
1801 final ContentSettings contentSettings = getContentSettingsOnUiThread(con tentView); 1821 final ContentSettings contentSettings = getContentSettingsOnUiThread(awC ontents);
1802 final AwSettings awSettings = getAwSettingsOnUiThread(testContainer.getA wContents()); 1822 final AwSettings awSettings = getAwSettingsOnUiThread(testContainer.getA wContents());
1803 contentSettings.setJavaScriptEnabled(true); 1823 contentSettings.setJavaScriptEnabled(true);
1804 ImagePageGenerator generator = new ImagePageGenerator(0, false); 1824 ImagePageGenerator generator = new ImagePageGenerator(0, false);
1805 1825
1806 TestWebServer webServer = null; 1826 TestWebServer webServer = null;
1807 String fileName = null; 1827 String fileName = null;
1808 try { 1828 try {
1809 // Set up http image. 1829 // Set up http image.
1810 webServer = new TestWebServer(false); 1830 webServer = new TestWebServer(false);
1811 final String httpPath = "/image.png"; 1831 final String httpPath = "/image.png";
1812 final String imageUrl = webServer.setResponseBase64( 1832 final String imageUrl = webServer.setResponseBase64(
1813 httpPath, generator.getImageSourceNoAdvance(), 1833 httpPath, generator.getImageSourceNoAdvance(),
1814 CommonResources.getImagePngHeaders(true)); 1834 CommonResources.getImagePngHeaders(true));
1815 1835
1816 // Set up file html that loads http iframe. 1836 // Set up file html that loads http iframe.
1817 String pageHtml ="<img src='" + imageUrl + "' " + 1837 String pageHtml ="<img src='" + imageUrl + "' " +
1818 "onload=\"document.title='img_onload_fired';\" " + 1838 "onload=\"document.title='img_onload_fired';\" " +
1819 "onerror=\"document.title='img_onerror_fired';\" />"; 1839 "onerror=\"document.title='img_onerror_fired';\" />";
1820 Context context = getInstrumentation().getTargetContext(); 1840 Context context = getInstrumentation().getTargetContext();
1821 fileName = context.getCacheDir() + "/block_network_loads_test.html"; 1841 fileName = context.getCacheDir() + "/block_network_loads_test.html";
1822 TestFileUtil.deleteFile(fileName); // Remove leftover file if any. 1842 TestFileUtil.deleteFile(fileName); // Remove leftover file if any.
1823 TestFileUtil.createNewHtmlFile(fileName, "unset", pageHtml); 1843 TestFileUtil.createNewHtmlFile(fileName, "unset", pageHtml);
1824 1844
1825 // Actual test. Blocking should trigger onerror handler. 1845 // Actual test. Blocking should trigger onerror handler.
1826 awSettings.setBlockNetworkLoads(true); 1846 awSettings.setBlockNetworkLoads(true);
1827 loadUrlSync( 1847 loadUrlSync(
1828 contentView, 1848 awContents,
1829 contentClient.getOnPageFinishedHelper(), 1849 contentClient.getOnPageFinishedHelper(),
1830 "file:///" + fileName); 1850 "file:///" + fileName);
1831 assertEquals(0, webServer.getRequestCount(httpPath)); 1851 assertEquals(0, webServer.getRequestCount(httpPath));
1832 assertEquals("img_onerror_fired", getTitleOnUiThread(contentView)); 1852 assertEquals("img_onerror_fired", getTitleOnUiThread(awContents));
1833 1853
1834 // Unblock should load normally. 1854 // Unblock should load normally.
1835 awSettings.setBlockNetworkLoads(false); 1855 awSettings.setBlockNetworkLoads(false);
1836 loadUrlSync( 1856 loadUrlSync(
1837 contentView, 1857 awContents,
1838 contentClient.getOnPageFinishedHelper(), 1858 contentClient.getOnPageFinishedHelper(),
1839 "file:///" + fileName); 1859 "file:///" + fileName);
1840 assertEquals(1, webServer.getRequestCount(httpPath)); 1860 assertEquals(1, webServer.getRequestCount(httpPath));
1841 assertEquals("img_onload_fired", getTitleOnUiThread(contentView)); 1861 assertEquals("img_onload_fired", getTitleOnUiThread(awContents));
1842 } finally { 1862 } finally {
1843 if (fileName != null) TestFileUtil.deleteFile(fileName); 1863 if (fileName != null) TestFileUtil.deleteFile(fileName);
1844 if (webServer != null) webServer.shutdown(); 1864 if (webServer != null) webServer.shutdown();
1845 } 1865 }
1846 } 1866 }
1847 } 1867 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698