diff options
author | mnaganov@chromium.org <mnaganov@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-22 15:03:23 +0000 |
---|---|---|
committer | mnaganov@chromium.org <mnaganov@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-22 15:03:23 +0000 |
commit | f4f26943053032d479e8368b9d024780f9d615be (patch) | |
tree | 8b2b2c8fad1efd8e954acdcc5a29de7514b38d9b /android_webview/javatests | |
parent | 25201f7b7b7341512eedad6201a7b50b74be27da (diff) | |
download | chromium_src-f4f26943053032d479e8368b9d024780f9d615be.zip chromium_src-f4f26943053032d479e8368b9d024780f9d615be.tar.gz chromium_src-f4f26943053032d479e8368b9d024780f9d615be.tar.bz2 |
[Android WebView] Enable the Blink quirk for merging contents of meta viewport tags
This enables support for mobile frameworks that dynamically add several meta
viewport tags -- instead of discarding the previous tag when processing the new
one, we merge their values.
BUG=306548
Review URL: https://codereview.chromium.org/26144003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@230129 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'android_webview/javatests')
3 files changed, 90 insertions, 26 deletions
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwTestBase.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwTestBase.java index 2018de0..cc72322 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/AwTestBase.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwTestBase.java @@ -370,4 +370,28 @@ public class AwTestBase } }); } + + /** + * Returns whether a user can zoom the page in. + */ + protected boolean canZoomInOnUiThread(final AwContents awContents) throws Throwable { + return runTestOnUiThreadAndGetResult(new Callable<Boolean>() { + @Override + public Boolean call() throws Exception { + return awContents.canZoomIn(); + } + }); + } + + /** + * Returns whether a user can zoom the page out. + */ + protected boolean canZoomOutOnUiThread(final AwContents awContents) throws Throwable { + return runTestOnUiThreadAndGetResult(new Callable<Boolean>() { + @Override + public Boolean call() throws Exception { + return awContents.canZoomOut(); + } + }); + } } diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwViewportTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwViewportTest.java index efe253a..5fcf02b 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/AwViewportTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwViewportTest.java @@ -162,4 +162,61 @@ public class AwViewportTest extends AwTestBase { "matchMedia(\"screen and (device-height:" + (int)screenHeight + "px)\").matches"); assertEquals("true", deviceHeightEqualsScreenHeight); } + + @MediumTest + @Feature({"AndroidWebView"}) + public void testMetaMergeContentQuirk() throws Throwable { + final TestAwContentsClient contentClient = new TestAwContentsClient(); + final AwTestContainerView testContainerView = + createAwTestContainerViewOnMainSync(contentClient); + final AwContents awContents = testContainerView.getAwContents(); + AwSettings settings = getAwSettingsOnUiThread(awContents); + CallbackHelper onPageFinishedHelper = contentClient.getOnPageFinishedHelper(); + + final int pageWidth = 3000; + final float pageScale = 1.0f; + final String page = String.format("<html><head>" + + "<meta name='viewport' content='width=%d' />" + + "<meta name='viewport' content='initial-scale=%.1f' />" + + "<meta name='viewport' content='user-scalable=0' />" + + "</head><body onload='document.title=document.body.clientWidth'></body></html>", + pageWidth, pageScale); + + settings.setJavaScriptEnabled(true); + settings.setUseWideViewPort(true); + settings.setBuiltInZoomControls(true); + settings.setSupportZoom(true); + + loadDataSync(awContents, onPageFinishedHelper, page, "text/html", false); + int width = Integer.parseInt(getTitleOnUiThread(awContents)); + assertEquals(pageWidth, width); + assertEquals(pageScale, getScaleOnUiThread(awContents)); + assertEquals(false, canZoomInOnUiThread(awContents)); + assertEquals(false, canZoomOutOnUiThread(awContents)); + } + + @MediumTest + @Feature({"AndroidWebView"}) + public void testMetaMergeContentQuirkOverrides() throws Throwable { + final TestAwContentsClient contentClient = new TestAwContentsClient(); + final AwTestContainerView testContainerView = + createAwTestContainerViewOnMainSync(contentClient); + final AwContents awContents = testContainerView.getAwContents(); + AwSettings settings = getAwSettingsOnUiThread(awContents); + CallbackHelper onPageFinishedHelper = contentClient.getOnPageFinishedHelper(); + + final int pageWidth = 3000; + final String page = String.format("<html><head>" + + "<meta name='viewport' content='width=device-width' />" + + "<meta name='viewport' content='width=%d' />" + + "</head><body onload='document.title=document.body.clientWidth'></body></html>", + pageWidth); + + settings.setJavaScriptEnabled(true); + settings.setUseWideViewPort(true); + + loadDataSync(awContents, onPageFinishedHelper, page, "text/html", false); + int width = Integer.parseInt(getTitleOnUiThread(awContents)); + assertEquals(pageWidth, width); + } } diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwZoomTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwZoomTest.java index a0b3913..8e55c8a 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/AwZoomTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwZoomTest.java @@ -73,24 +73,6 @@ public class AwZoomTest extends AwTestBase { }); } - private boolean canZoomInOnUiThread() throws Throwable { - return runTestOnUiThreadAndGetResult(new Callable<Boolean>() { - @Override - public Boolean call() throws Exception { - return mAwContents.canZoomIn(); - } - }); - } - - private boolean canZoomOutOnUiThread() throws Throwable { - return runTestOnUiThreadAndGetResult(new Callable<Boolean>() { - @Override - public Boolean call() throws Exception { - return mAwContents.canZoomOut(); - } - }); - } - private View getZoomControlsOnUiThread() throws Throwable { return runTestOnUiThreadAndGetResult(new Callable<View>() { @Override @@ -155,7 +137,8 @@ public class AwZoomTest extends AwTestBase { @Override public boolean isSatisfied() { try { - return !canZoomInOnUiThread() && !canZoomOutOnUiThread(); + return !canZoomInOnUiThread(mAwContents) && + !canZoomOutOnUiThread(mAwContents); } catch (Throwable t) { t.printStackTrace(); fail("Failed to query canZoomIn/Out: " + t.toString()); @@ -171,18 +154,18 @@ public class AwZoomTest extends AwTestBase { getZoomableHtml(), "text/html", false); mContentsClient.getOnScaleChangedHelper().waitForCallback(onScaleChangedCallCount); getAwSettingsOnUiThread(mAwContents).setSupportZoom(supportZoom); - assertTrue("Should be able to zoom in", canZoomInOnUiThread()); - assertFalse("Should not be able to zoom out", canZoomOutOnUiThread()); + assertTrue("Should be able to zoom in", canZoomInOnUiThread(mAwContents)); + assertFalse("Should not be able to zoom out", canZoomOutOnUiThread(mAwContents)); - while (canZoomInOnUiThread()) { + while (canZoomInOnUiThread(mAwContents)) { assertTrue(zoomInOnUiThreadAndWait()); } - assertTrue("Should be able to zoom out", canZoomOutOnUiThread()); + assertTrue("Should be able to zoom out", canZoomOutOnUiThread(mAwContents)); - while (canZoomOutOnUiThread()) { + while (canZoomOutOnUiThread(mAwContents)) { assertTrue(zoomOutOnUiThreadAndWait()); } - assertTrue("Should be able to zoom in", canZoomInOnUiThread()); + assertTrue("Should be able to zoom in", canZoomInOnUiThread(mAwContents)); } /* @@ -238,7 +221,7 @@ public class AwZoomTest extends AwTestBase { getZoomableHtml(), "text/html", false); mContentsClient.getOnScaleChangedHelper().waitForCallback(onScaleChangedCallCount); // It must be possible to zoom in (or zoom out) for zoom controls to be shown - assertTrue("Should be able to zoom in", canZoomInOnUiThread()); + assertTrue("Should be able to zoom in", canZoomInOnUiThread(mAwContents)); assertTrue(webSettings.supportZoom()); webSettings.setBuiltInZoomControls(true); |