summaryrefslogtreecommitdiffstats
path: root/android_webview
diff options
context:
space:
mode:
authormnaganov <mnaganov@chromium.org>2015-12-08 16:24:03 -0800
committerCommit bot <commit-bot@chromium.org>2015-12-09 00:24:56 +0000
commitd2679aff2b43b241baa968d33c132c8dded55742 (patch)
tree6a9513d30b9d597beccd98efcf104c4e5c694679 /android_webview
parent2113ecb0fd9f9bb8c82bac1a3ae0e26268c7580b (diff)
downloadchromium_src-d2679aff2b43b241baa968d33c132c8dded55742.zip
chromium_src-d2679aff2b43b241baa968d33c132c8dded55742.tar.gz
chromium_src-d2679aff2b43b241baa968d33c132c8dded55742.tar.bz2
[Android WebView] Fix and enable NavigationHistoryTest.testFavicon
BUG=567414 Review URL: https://codereview.chromium.org/1507093005 Cr-Commit-Position: refs/heads/master@{#363840}
Diffstat (limited to 'android_webview')
-rw-r--r--android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientFaviconTest.java73
-rw-r--r--android_webview/javatests/src/org/chromium/android_webview/test/NavigationHistoryTest.java14
-rw-r--r--android_webview/javatests/src/org/chromium/android_webview/test/TestAwContentsClient.java63
3 files changed, 81 insertions, 69 deletions
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientFaviconTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientFaviconTest.java
index 2c0408a..86c10a2 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientFaviconTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientFaviconTest.java
@@ -12,12 +12,10 @@ import static org.chromium.base.test.util.ScalableTimeout.scaleTimeout;
import org.chromium.android_webview.AwContents;
import org.chromium.android_webview.test.util.CommonResources;
-import org.chromium.content.browser.test.util.CallbackHelper;
import org.chromium.net.test.util.TestWebServer;
import java.io.InputStream;
import java.net.URL;
-import java.util.HashMap;
import java.util.concurrent.Callable;
/**
@@ -46,42 +44,7 @@ public class AwContentsClientFaviconTest extends AwTestBase {
// Maximum number of milliseconds within which a request to web server is made.
private static final long MAX_REQUEST_WAITING_LIMIT_MS = scaleTimeout(500);
- private static class FaviconHelper extends CallbackHelper {
- private Bitmap mIcon;
- private HashMap<String, Boolean> mTouchIcons = new HashMap<String, Boolean>();
-
- public void notifyFavicon(Bitmap icon) {
- mIcon = icon;
- super.notifyCalled();
- }
-
- public void notifyTouchIcon(String url, boolean precomposed) {
- mTouchIcons.put(url, precomposed);
- super.notifyCalled();
- }
- }
-
- private static class TestAwContentsClientBase
- extends org.chromium.android_webview.test.TestAwContentsClient {
- FaviconHelper mFaviconHelper = new FaviconHelper();
- }
-
- private static class TestAwContentsClientFavicon extends TestAwContentsClientBase {
- @Override
- public void onReceivedIcon(Bitmap bitmap) {
- // We don't inform the API client about the URL of the icon.
- mFaviconHelper.notifyFavicon(bitmap);
- }
- }
-
- private static class TestAwContentsClientTouchIcon extends TestAwContentsClientBase {
- @Override
- public void onReceivedTouchIconUrl(String url, boolean precomposed) {
- mFaviconHelper.notifyTouchIcon(url, precomposed);
- }
- }
-
- private TestAwContentsClientBase mContentsClient;
+ private TestAwContentsClient mContentsClient;
private AwContents mAwContents;
private TestWebServer mWebServer;
@@ -89,14 +52,11 @@ public class AwContentsClientFaviconTest extends AwTestBase {
protected void setUp() throws Exception {
super.setUp();
AwContents.setShouldDownloadFavicons();
- mWebServer = TestWebServer.start();
- }
-
- private void init(TestAwContentsClientBase contentsClient) throws Exception {
- mContentsClient = contentsClient;
+ mContentsClient = new TestAwContentsClient();
AwTestContainerView testContainerView =
createAwTestContainerViewOnMainSync(mContentsClient);
mAwContents = testContainerView.getAwContents();
+ mWebServer = TestWebServer.start();
}
@Override
@@ -107,8 +67,7 @@ public class AwContentsClientFaviconTest extends AwTestBase {
@SmallTest
public void testReceiveBasicFavicon() throws Throwable {
- init(new TestAwContentsClientFavicon());
- int callCount = mContentsClient.mFaviconHelper.getCallCount();
+ int callCount = mContentsClient.getFaviconHelper().getCallCount();
final String faviconUrl = mWebServer.setResponseBase64(FAVICON1_URL,
CommonResources.FAVICON_DATA_BASE64, CommonResources.getImagePngHeaders(true));
@@ -117,25 +76,23 @@ public class AwContentsClientFaviconTest extends AwTestBase {
loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), pageUrl);
- mContentsClient.mFaviconHelper.waitForCallback(callCount);
+ mContentsClient.getFaviconHelper().waitForCallback(callCount);
assertEquals(1, mWebServer.getRequestCount(FAVICON1_URL));
Object originalFaviconSource = (new URL(faviconUrl)).getContent();
Bitmap originalFavicon = BitmapFactory.decodeStream((InputStream) originalFaviconSource);
assertNotNull(originalFavicon);
- assertNotNull(mContentsClient.mFaviconHelper.mIcon);
- assertTrue(mContentsClient.mFaviconHelper.mIcon.sameAs(originalFavicon));
+ assertNotNull(mContentsClient.getFaviconHelper().getIcon());
+ assertTrue(mContentsClient.getFaviconHelper().getIcon().sameAs(originalFavicon));
// Make sure the request counter for favicon is incremented when the page is loaded again
// successfully.
loadUrlAsync(mAwContents, pageUrl);
- mContentsClient.mFaviconHelper.waitForCallback(callCount);
+ mContentsClient.getFaviconHelper().waitForCallback(callCount);
assertEquals(2, mWebServer.getRequestCount(FAVICON1_URL));
}
@SmallTest
public void testDoNotMakeRequestForFaviconAfter404() throws Throwable {
- init(new TestAwContentsClientFavicon());
-
mWebServer.setResponseWithNotFoundStatus(FAVICON1_URL);
final String pageUrl = mWebServer.setResponse(FAVICON1_PAGE_URL, FAVICON1_PAGE_HTML,
CommonResources.getTextHtmlHeaders(true));
@@ -157,18 +114,18 @@ public class AwContentsClientFaviconTest extends AwTestBase {
@SmallTest
public void testReceiveBasicTouchIconLinkRel() throws Throwable {
- init(new TestAwContentsClientTouchIcon());
- int callCount = mContentsClient.mFaviconHelper.getCallCount();
+ int callCount = mContentsClient.getFaviconHelper().getCallCount();
final String pageUrl = mWebServer.setResponse(TOUCHICON_REL_URL, TOUCHICON_REL_PAGE_HTML,
CommonResources.getTextHtmlHeaders(true));
loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), pageUrl);
- mContentsClient.mFaviconHelper.waitForCallback(callCount, 2);
- HashMap<String, Boolean> touchIcons = mContentsClient.mFaviconHelper.mTouchIcons;
- assertEquals(2, touchIcons.size());
- assertFalse(touchIcons.get(mWebServer.getBaseUrl() + TOUCHICON_REL_LINK));
- assertFalse(touchIcons.get(mWebServer.getBaseUrl() + TOUCHICON_REL_LINK_72));
+ mContentsClient.getTouchIconHelper().waitForCallback(callCount, 2);
+ assertEquals(2, mContentsClient.getTouchIconHelper().getTouchIconsCount());
+ assertFalse(mContentsClient.getTouchIconHelper().hasTouchIcon(
+ mWebServer.getBaseUrl() + TOUCHICON_REL_LINK));
+ assertFalse(mContentsClient.getTouchIconHelper().hasTouchIcon(
+ mWebServer.getBaseUrl() + TOUCHICON_REL_LINK_72));
}
}
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/NavigationHistoryTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/NavigationHistoryTest.java
index 380fc68..612ae69 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/NavigationHistoryTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/NavigationHistoryTest.java
@@ -9,7 +9,6 @@ import android.test.suitebuilder.annotation.SmallTest;
import org.chromium.android_webview.AwContents;
import org.chromium.android_webview.test.util.CommonResources;
import org.chromium.base.ThreadUtils;
-import org.chromium.base.test.util.DisabledTest;
import org.chromium.content.browser.test.util.HistoryUtils;
import org.chromium.content.browser.test.util.TestCallbackHelperContainer;
import org.chromium.content_public.browser.NavigationEntry;
@@ -188,27 +187,20 @@ public class NavigationHistoryTest extends AwTestBase {
assertEquals(0, list.getCurrentEntryIndex());
}
- /**
- * Disabled until favicons are getting fetched when using ContentView.
- *
- * @SmallTest
- * @throws Throwable
- */
- @DisabledTest
public void testFavicon() throws Throwable {
- NavigationHistory list = getNavigationHistory(mAwContents);
-
mWebServer.setResponseBase64("/" + CommonResources.FAVICON_FILENAME,
CommonResources.FAVICON_DATA_BASE64, CommonResources.getImagePngHeaders(false));
final String url = mWebServer.setResponse("/favicon.html",
CommonResources.FAVICON_STATIC_HTML, null);
+ NavigationHistory list = getNavigationHistory(mAwContents);
assertEquals(0, list.getEntryCount());
getAwSettingsOnUiThread(mAwContents).setImagesEnabled(true);
+ int faviconLoadCount = mContentsClient.getFaviconHelper().getCallCount();
loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), url);
+ mContentsClient.getFaviconHelper().waitForCallback(faviconLoadCount);
list = getNavigationHistory(mAwContents);
-
// Make sure the first entry is still okay.
checkHistoryItem(list.getEntryAtIndex(0), url, url, "", false);
}
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/TestAwContentsClient.java b/android_webview/javatests/src/org/chromium/android_webview/test/TestAwContentsClient.java
index 798a214..428e97c 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/TestAwContentsClient.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/TestAwContentsClient.java
@@ -4,6 +4,7 @@
package org.chromium.android_webview.test;
+import android.graphics.Bitmap;
import android.graphics.Picture;
import android.net.http.SslError;
import android.webkit.ConsoleMessage;
@@ -20,6 +21,7 @@ import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnPage
import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnReceivedErrorHelper;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
/**
@@ -45,6 +47,8 @@ public class TestAwContentsClient extends NullContentsClient {
private final ShouldOverrideUrlLoadingHelper mShouldOverrideUrlLoadingHelper;
private final DoUpdateVisitedHistoryHelper mDoUpdateVisitedHistoryHelper;
private final OnCreateWindowHelper mOnCreateWindowHelper;
+ private final FaviconHelper mFaviconHelper;
+ private final TouchIconHelper mTouchIconHelper;
public TestAwContentsClient() {
super(ThreadUtils.getUiThreadLooper());
@@ -66,6 +70,8 @@ public class TestAwContentsClient extends NullContentsClient {
mShouldOverrideUrlLoadingHelper = new ShouldOverrideUrlLoadingHelper();
mDoUpdateVisitedHistoryHelper = new DoUpdateVisitedHistoryHelper();
mOnCreateWindowHelper = new OnCreateWindowHelper();
+ mFaviconHelper = new FaviconHelper();
+ mTouchIconHelper = new TouchIconHelper();
mAllowSslError = true;
}
@@ -144,6 +150,14 @@ public class TestAwContentsClient extends NullContentsClient {
return mOnCreateWindowHelper;
}
+ public FaviconHelper getFaviconHelper() {
+ return mFaviconHelper;
+ }
+
+ public TouchIconHelper getTouchIconHelper() {
+ return mTouchIconHelper;
+ }
+
/**
* Callback helper for onScaleChangedScaled.
*/
@@ -581,4 +595,53 @@ public class TestAwContentsClient extends NullContentsClient {
super.onReceivedHttpError(request, response);
mOnReceivedHttpErrorHelper.notifyCalled(request, response);
}
+
+ /**
+ * CallbackHelper for onReceivedIcon.
+ */
+ public static class FaviconHelper extends CallbackHelper {
+ private Bitmap mIcon;
+
+ public void notifyFavicon(Bitmap icon) {
+ mIcon = icon;
+ super.notifyCalled();
+ }
+
+ public Bitmap getIcon() {
+ assert getCallCount() > 0;
+ return mIcon;
+ }
+ }
+
+ @Override
+ public void onReceivedIcon(Bitmap bitmap) {
+ // We don't inform the API client about the URL of the icon.
+ mFaviconHelper.notifyFavicon(bitmap);
+ }
+
+ /**
+ * CallbackHelper for onReceivedTouchIconUrl.
+ */
+ public static class TouchIconHelper extends CallbackHelper {
+ private HashMap<String, Boolean> mTouchIcons = new HashMap<String, Boolean>();
+
+ public void notifyTouchIcon(String url, boolean precomposed) {
+ mTouchIcons.put(url, precomposed);
+ super.notifyCalled();
+ }
+
+ public int getTouchIconsCount() {
+ assert getCallCount() > 0;
+ return mTouchIcons.size();
+ }
+
+ public boolean hasTouchIcon(String url) {
+ return mTouchIcons.get(url);
+ }
+ }
+
+ @Override
+ public void onReceivedTouchIconUrl(String url, boolean precomposed) {
+ mTouchIconHelper.notifyTouchIcon(url, precomposed);
+ }
}