diff options
author | mnaganov <mnaganov@chromium.org> | 2015-12-08 16:24:03 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-12-09 00:24:56 +0000 |
commit | d2679aff2b43b241baa968d33c132c8dded55742 (patch) | |
tree | 6a9513d30b9d597beccd98efcf104c4e5c694679 /android_webview | |
parent | 2113ecb0fd9f9bb8c82bac1a3ae0e26268c7580b (diff) | |
download | chromium_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')
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); + } } |