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

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

Issue 10920033: Implement Android WebView BlockNetworkImages (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add javadoc to new method in TestWebServer. Fix style nit 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | android_webview/javatests/src/org/chromium/android_webview/test/TestWebServer.java » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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;
10 11
11 import org.chromium.base.test.util.Feature; 12 import org.chromium.base.test.util.Feature;
12 import org.chromium.base.test.util.TestFileUtil; 13 import org.chromium.base.test.util.TestFileUtil;
13 import org.chromium.base.test.util.UrlUtils; 14 import org.chromium.base.test.util.UrlUtils;
14 import org.chromium.content.browser.ContentSettings; 15 import org.chromium.content.browser.ContentSettings;
15 import org.chromium.content.browser.ContentViewCore; 16 import org.chromium.content.browser.ContentViewCore;
16 import org.chromium.content.browser.test.util.CallbackHelper; 17 import org.chromium.content.browser.test.util.CallbackHelper;
18 import org.chromium.content.browser.test.util.Criteria;
19 import org.chromium.content.browser.test.util.CriteriaHelper;
17 import org.chromium.content.browser.test.util.HistoryUtils; 20 import org.chromium.content.browser.test.util.HistoryUtils;
18 21
19 import java.util.regex.Matcher; 22 import java.util.regex.Matcher;
20 import java.util.regex.Pattern; 23 import java.util.regex.Pattern;
24 import java.util.ArrayList;
25 import java.util.List;
26
21 27
22 /** 28 /**
23 * A test suite for ContentSettings class. The key objective is to verify that e ach 29 * A test suite for ContentSettings class. The key objective is to verify that e ach
24 * settings applies either to each individual view or to all views of the 30 * settings applies either to each individual view or to all views of the
25 * application. 31 * application.
26 */ 32 */
27 public class AwSettingsTest extends AndroidWebViewTestBase { 33 public class AwSettingsTest extends AndroidWebViewTestBase {
34 private static final int CHECK_INTERVAL = 100;
35
28 private static final boolean ENABLED = true; 36 private static final boolean ENABLED = true;
29 private static final boolean DISABLED = false; 37 private static final boolean DISABLED = false;
30 38
31 /** 39 /**
32 * A helper class for testing a particular preference from ContentSettings. 40 * A helper class for testing a particular preference from ContentSettings.
33 * The generic type T is the type of the setting. Usually, to test an 41 * The generic type T is the type of the setting. Usually, to test an
34 * effect of the preference, JS code is executed that sets document's title. 42 * effect of the preference, JS code is executed that sets document's title.
35 * In this case, requiresJsEnabled constructor argument must be set to true. 43 * In this case, requiresJsEnabled constructor argument must be set to true.
36 */ 44 */
37 abstract class AwSettingsTestHelper<T> { 45 abstract class AwSettingsTestHelper<T> {
(...skipping 1289 matching lines...) Expand 10 before | Expand all | Expand 10 after
1327 } 1335 }
1328 1336
1329 private void resetResourceRequestCountInContentProvider(String resource) { 1337 private void resetResourceRequestCountInContentProvider(String resource) {
1330 Context context = getInstrumentation().getTargetContext(); 1338 Context context = getInstrumentation().getTargetContext();
1331 TestContentProvider.resetResourceRequestCount(context, resource); 1339 TestContentProvider.resetResourceRequestCount(context, resource);
1332 } 1340 }
1333 1341
1334 private String createContentUrl(final String target) { 1342 private String createContentUrl(final String target) {
1335 return TestContentProvider.createContentUrl(target); 1343 return TestContentProvider.createContentUrl(target);
1336 } 1344 }
1345
1346 private final String IMAGE_DATA = "iVBORw0KGgoAAA" +
1347 "ANSUhEUgAAAAEAAAABCAAAAAA6fptVAAAAAXNSR0IArs4c6QAAAA1JREFUCB0BAgD9/wAAA AIAAc3j" +
1348 "0SsAAAAASUVORK5CYII=";
1349
1350 private final String DATA_URL_IMAGE_HTML = "<html>" +
1351 "<head><script>function updateTitle(){" +
1352 "document.title=document.getElementById('img').naturalHeight;}</script>< /head>" +
1353 "<body onload='updateTitle()'>" +
1354 "<img id='img' onload='updateTitle()' src='data:image/png;base64," + IMA GE_DATA +
1355 "'></body></html>";
1356
1357 @SmallTest
1358 @Feature({"Android-WebView", "Preferences"})
1359 public void testBlockNetworkImagesDoesNotBlockDataUrlImage() throws Throwabl e {
1360 final TestAwContentsClient contentClient = new TestAwContentsClient();
1361 final ContentViewCore contentView =
1362 createAwTestContainerViewOnMainSync(false, contentClient).getCon tentViewCore();
1363 final ContentSettings settings = getContentSettingsOnUiThread(contentVie w);
1364
1365 settings.setJavaScriptEnabled(true);
1366
1367 settings.setImagesEnabled(false);
1368 loadDataSync(contentView,
1369 contentClient.getOnPageFinishedHelper(),
1370 DATA_URL_IMAGE_HTML,
1371 "text/html",
1372 false);
1373 assertEquals("1", getTitleOnUiThread(contentView));
1374 }
1375
1376 @SmallTest
1377 @Feature({"Android-WebView", "Preferences"})
1378 public void testBlockNetworkImagesBlocksNetworkImageAndReloadInPlace() throw s Throwable {
1379 final TestAwContentsClient contentClient = new TestAwContentsClient();
1380 final ContentViewCore contentView =
1381 createAwTestContainerViewOnMainSync(false, contentClient).getCon tentViewCore();
1382 final ContentSettings settings = getContentSettingsOnUiThread(contentVie w);
1383 settings.setJavaScriptEnabled(true);
1384
1385 TestWebServer webServer = null;
1386 try {
1387 webServer = new TestWebServer(false);
1388 List<Pair<String, String>> imageHeaders = new ArrayList<Pair<String, String>>();
1389 imageHeaders.add(Pair.create("Content-Type", "image/png"));
1390 final String imagePath = "/image.png";
1391 webServer.setResponseBase64(imagePath, IMAGE_DATA, imageHeaders);
1392
1393 final String pagePath = "/html_image.html";
1394 final String httpUrlImageHtml = "<html>" +
1395 "<head><script>" +
1396 "function updateTitle(){" +
1397 "document.title=document.getElementById('img').naturalHeight;}" +
1398 "</script></head>" +
1399 "<body onload='updateTitle()'>" +
1400 "<img id='img' onload='updateTitle()' src='" + imagePath +
1401 "'></body></html>";
1402 final String httpImageUrl = webServer.setResponse(pagePath, httpUrlI mageHtml, null);
1403
1404 settings.setImagesEnabled(false);
1405 loadUrlSync(contentView, contentClient.getOnPageFinishedHelper(), ht tpImageUrl);
1406 assertEquals("0", getTitleOnUiThread(contentView));
1407
1408 settings.setImagesEnabled(true);
1409 assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
1410 @Override
1411 public boolean isSatisfied() {
1412 try {
1413 return "0".equals(getTitleOnUiThread(contentView));
1414 } catch (Throwable t) {
1415 t.printStackTrace();
1416 fail("Failed to getTitleOnUIThread: " + t.toString());
1417 return false;
1418 }
1419 }
1420 }, WAIT_TIMEOUT_SECONDS * 1000, CHECK_INTERVAL));
1421 } finally {
1422 if (webServer != null) webServer.shutdown();
1423 }
1424 }
1337 } 1425 }
OLDNEW
« no previous file with comments | « no previous file | android_webview/javatests/src/org/chromium/android_webview/test/TestWebServer.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698