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

Unified 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, 3 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 side-by-side diff with in-line comments
Download patch
« 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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java
index f57cffd0279236d9b847fa0f04cd6904a3f7ed9a..70b14bdd34eabbd4a40e1ee3b47b0bab535279f7 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java
@@ -7,6 +7,7 @@ package org.chromium.android_webview.test;
import android.content.Context;
import android.os.Build;
import android.test.suitebuilder.annotation.SmallTest;
+import android.util.Pair;
import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.TestFileUtil;
@@ -14,10 +15,15 @@ import org.chromium.base.test.util.UrlUtils;
import org.chromium.content.browser.ContentSettings;
import org.chromium.content.browser.ContentViewCore;
import org.chromium.content.browser.test.util.CallbackHelper;
+import org.chromium.content.browser.test.util.Criteria;
+import org.chromium.content.browser.test.util.CriteriaHelper;
import org.chromium.content.browser.test.util.HistoryUtils;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* A test suite for ContentSettings class. The key objective is to verify that each
@@ -25,6 +31,8 @@ import java.util.regex.Pattern;
* application.
*/
public class AwSettingsTest extends AndroidWebViewTestBase {
+ private static final int CHECK_INTERVAL = 100;
+
private static final boolean ENABLED = true;
private static final boolean DISABLED = false;
@@ -1334,4 +1342,84 @@ public class AwSettingsTest extends AndroidWebViewTestBase {
private String createContentUrl(final String target) {
return TestContentProvider.createContentUrl(target);
}
+
+ private final String IMAGE_DATA = "iVBORw0KGgoAAA" +
+ "ANSUhEUgAAAAEAAAABCAAAAAA6fptVAAAAAXNSR0IArs4c6QAAAA1JREFUCB0BAgD9/wAAAAIAAc3j" +
+ "0SsAAAAASUVORK5CYII=";
+
+ private final String DATA_URL_IMAGE_HTML = "<html>" +
+ "<head><script>function updateTitle(){" +
+ "document.title=document.getElementById('img').naturalHeight;}</script></head>" +
+ "<body onload='updateTitle()'>" +
+ "<img id='img' onload='updateTitle()' src='data:image/png;base64," + IMAGE_DATA +
+ "'></body></html>";
+
+ @SmallTest
+ @Feature({"Android-WebView", "Preferences"})
+ public void testBlockNetworkImagesDoesNotBlockDataUrlImage() throws Throwable {
+ final TestAwContentsClient contentClient = new TestAwContentsClient();
+ final ContentViewCore contentView =
+ createAwTestContainerViewOnMainSync(false, contentClient).getContentViewCore();
+ final ContentSettings settings = getContentSettingsOnUiThread(contentView);
+
+ settings.setJavaScriptEnabled(true);
+
+ settings.setImagesEnabled(false);
+ loadDataSync(contentView,
+ contentClient.getOnPageFinishedHelper(),
+ DATA_URL_IMAGE_HTML,
+ "text/html",
+ false);
+ assertEquals("1", getTitleOnUiThread(contentView));
+ }
+
+ @SmallTest
+ @Feature({"Android-WebView", "Preferences"})
+ public void testBlockNetworkImagesBlocksNetworkImageAndReloadInPlace() throws Throwable {
+ final TestAwContentsClient contentClient = new TestAwContentsClient();
+ final ContentViewCore contentView =
+ createAwTestContainerViewOnMainSync(false, contentClient).getContentViewCore();
+ final ContentSettings settings = getContentSettingsOnUiThread(contentView);
+ settings.setJavaScriptEnabled(true);
+
+ TestWebServer webServer = null;
+ try {
+ webServer = new TestWebServer(false);
+ List<Pair<String, String>> imageHeaders = new ArrayList<Pair<String, String>>();
+ imageHeaders.add(Pair.create("Content-Type", "image/png"));
+ final String imagePath = "/image.png";
+ webServer.setResponseBase64(imagePath, IMAGE_DATA, imageHeaders);
+
+ final String pagePath = "/html_image.html";
+ final String httpUrlImageHtml = "<html>" +
+ "<head><script>" +
+ "function updateTitle(){" +
+ "document.title=document.getElementById('img').naturalHeight;}" +
+ "</script></head>" +
+ "<body onload='updateTitle()'>" +
+ "<img id='img' onload='updateTitle()' src='" + imagePath +
+ "'></body></html>";
+ final String httpImageUrl = webServer.setResponse(pagePath, httpUrlImageHtml, null);
+
+ settings.setImagesEnabled(false);
+ loadUrlSync(contentView, contentClient.getOnPageFinishedHelper(), httpImageUrl);
+ assertEquals("0", getTitleOnUiThread(contentView));
+
+ settings.setImagesEnabled(true);
+ assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
+ @Override
+ public boolean isSatisfied() {
+ try {
+ return "0".equals(getTitleOnUiThread(contentView));
+ } catch (Throwable t) {
+ t.printStackTrace();
+ fail("Failed to getTitleOnUIThread: " + t.toString());
+ return false;
+ }
+ }
+ }, WAIT_TIMEOUT_SECONDS * 1000, CHECK_INTERVAL));
+ } finally {
+ if (webServer != null) webServer.shutdown();
+ }
+ }
}
« 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