diff options
author | android-build-prod (mdb) <android-build-team-robot@google.com> | 2018-11-14 16:06:57 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2018-11-14 16:06:57 +0000 |
commit | 2f8dd954ed03a4764b820f3ba6258123fa94a8b5 (patch) | |
tree | 9e511f878597bc51b22cf792d1ac1535b9536567 | |
parent | 7794267341a6ff33d006267f46aeb0a0be5a7548 (diff) | |
parent | 54f00c819298e7993e225693cdff4c9de6ab809a (diff) | |
download | cts-2f8dd954ed03a4764b820f3ba6258123fa94a8b5.tar.gz |
Merge "Snap for 5126423 from 0f5522575811948c99f469323b50a2ad7c7a3411 to nougat-cts-release" into nougat-cts-release
6 files changed, 86 insertions, 22 deletions
diff --git a/apps/CtsVerifier/AndroidManifest.xml b/apps/CtsVerifier/AndroidManifest.xml index d3638a8c07a..dec0ab416be 100644 --- a/apps/CtsVerifier/AndroidManifest.xml +++ b/apps/CtsVerifier/AndroidManifest.xml @@ -18,7 +18,7 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.cts.verifier" android:versionCode="5" - android:versionName="7.0_r27"> + android:versionName="7.0_r28"> <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="24"/> diff --git a/tests/tests/os/src/android/os/cts/ParcelTest.java b/tests/tests/os/src/android/os/cts/ParcelTest.java index 5b7b187ad67..253913bafea 100644 --- a/tests/tests/os/src/android/os/cts/ParcelTest.java +++ b/tests/tests/os/src/android/os/cts/ParcelTest.java @@ -19,7 +19,11 @@ package android.os.cts; import java.io.FileDescriptor; import java.io.Serializable; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; import android.content.pm.Signature; import android.os.BadParcelableException; @@ -3085,4 +3089,58 @@ public class ParcelTest extends AndroidTestCase { assertFalse(doesNotImplementParcelableInitializerHasRun); } + + public void testMaliciousMapWrite() { + class MaliciousMap<K, V> extends HashMap<K, V> { + public int fakeSize = 0; + public boolean armed = false; + + class FakeEntrySet extends HashSet<Entry<K, V>> { + public FakeEntrySet(Collection<? extends Entry<K, V>> c) { + super(c); + } + + @Override + public int size() { + if (armed) { + // Only return fake size on next call, to mitigate unexpected behavior. + armed = false; + return fakeSize; + } else { + return super.size(); + } + } + } + + @Override + public Set<Map.Entry<K, V>> entrySet() { + return new FakeEntrySet(super.entrySet()); + } + } + + Parcel parcel = Parcel.obtain(); + + // Fake having more Map entries than there really are + MaliciousMap map = new MaliciousMap<String, String>(); + map.fakeSize = 1; + map.armed = true; + try { + parcel.writeMap(map); + fail("Should have thrown a BadParcelableException"); + } catch (BadParcelableException bpe) { + // good + } + + // Fake having fewer Map entries than there really are + map = new MaliciousMap<String, String>(); + map.put("key", "value"); + map.fakeSize = 0; + map.armed = true; + try { + parcel.writeMap(map); + fail("Should have thrown a BadParcelableException"); + } catch (BadParcelableException bpe) { + // good + } + } } diff --git a/tests/tests/webkit/src/android/webkit/cts/TestHtmlConstants.java b/tests/tests/webkit/src/android/webkit/cts/TestHtmlConstants.java index 68d944bb10f..2996c766c19 100644 --- a/tests/tests/webkit/src/android/webkit/cts/TestHtmlConstants.java +++ b/tests/tests/webkit/src/android/webkit/cts/TestHtmlConstants.java @@ -69,6 +69,7 @@ public class TestHtmlConstants { public static final String STOP_LOADING_URL = "webkit/test_stop_loading.html"; public static final String BLANK_TAG_URL = "webkit/blank_tag.html"; public static final String PAGE_WITH_LINK_URL = "webkit/page_with_link.html"; + public static final String URL_IN_PAGE_WITH_LINK = "http://foo.com/"; // Not a real page, just triggers a 404 response. public static final String NON_EXISTENT_PAGE_URL = "webkit/generate_404.html"; public static final String BAD_IMAGE_PAGE_URL = "webkit/test_bad_image_url.html"; diff --git a/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java b/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java index 2f99b492d45..b4807811993 100644 --- a/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java +++ b/tests/tests/webkit/src/android/webkit/cts/WebViewClientTest.java @@ -129,6 +129,7 @@ public class WebViewClientTest extends ActivityInstrumentationTestCase2<WebViewC final WebView childWebView = mOnUiThread.createWebView(); + WebViewOnUiThread childWebViewOnUiThread = new WebViewOnUiThread(this, childWebView); mOnUiThread.setWebChromeClient(new WebChromeClient() { @Override public boolean onCreateWindow( @@ -144,21 +145,26 @@ public class WebViewClientTest extends ActivityInstrumentationTestCase2<WebViewC return true; } }); - mOnUiThread.loadUrl(mWebServer.getAssetUrl(TestHtmlConstants.BLANK_TAG_URL)); - - new PollingCheck(TEST_TIMEOUT) { - @Override - protected boolean check() { - return childWebViewClient.hasOnPageFinishedCalled(); - } - }.run(); - assertEquals(mWebServer.getAssetUrl(TestHtmlConstants.PAGE_WITH_LINK_URL), - childWebViewClient.getLastShouldOverrideUrl()); + { + final int childCallCount = childWebViewClient.getShouldOverrideUrlLoadingCallCount(); + mOnUiThread.loadUrl(mWebServer.getAssetUrl(TestHtmlConstants.BLANK_TAG_URL)); + + new PollingCheck(TEST_TIMEOUT) { + @Override + protected boolean check() { + return childWebViewClient.hasOnPageFinishedCalled(); + } + }.run(); + new PollingCheck(TEST_TIMEOUT) { + @Override + protected boolean check() { + return childWebViewClient.getShouldOverrideUrlLoadingCallCount() > childCallCount; + } + }.run(); + assertEquals(mWebServer.getAssetUrl(TestHtmlConstants.PAGE_WITH_LINK_URL), + childWebViewClient.getLastShouldOverrideUrl()); + } - // Now test a navigation within the page - //TODO(hush) Enable this portion when b/12804986 is fixed. - /* - WebViewOnUiThread childWebViewOnUiThread = new WebViewOnUiThread(this, childWebView); final int childCallCount = childWebViewClient.getShouldOverrideUrlLoadingCallCount(); final int mainCallCount = mainWebViewClient.getShouldOverrideUrlLoadingCallCount(); clickOnLinkUsingJs("link", childWebViewOnUiThread); @@ -169,8 +175,8 @@ public class WebViewClientTest extends ActivityInstrumentationTestCase2<WebViewC } }.run(); assertEquals(mainCallCount, mainWebViewClient.getShouldOverrideUrlLoadingCallCount()); - assertEquals(TEST_URL, childWebViewClient.getLastShouldOverrideUrl()); - */ + assertEquals( + TestHtmlConstants.URL_IN_PAGE_WITH_LINK, childWebViewClient.getLastShouldOverrideUrl()); } private void clickOnLinkUsingJs(final String linkId, WebViewOnUiThread webViewOnUiThread) { @@ -685,7 +691,6 @@ public class WebViewClientTest extends ActivityInstrumentationTestCase2<WebViewC @Override public void onLoadResource(WebView view, String url) { super.onLoadResource(view, url); - assertTrue(mOnPageStartedCalled); mOnLoadResourceCalled = true; } diff --git a/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java b/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java index 6a8712d504e..83569aaea78 100755 --- a/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java +++ b/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java @@ -1311,7 +1311,7 @@ public class WebViewTest extends ActivityInstrumentationTestCase2<WebViewCtsActi assertNull(mWebView.getUrl()); String imgUrl = TestHtmlConstants.SMALL_IMG_URL; // relative // Snippet of HTML that will prevent favicon requests to the test server. - final String HTML_HEADER = "<html><head><link rel=\"shortcut icon\" href=\"#\" /></head>"; + final String HTML_HEADER = "<html><head><link rel=\"shortcut icon\" href=\"%23\" /></head>"; // Trying to resolve a relative URL against a data URL without a base URL // will fail and we won't make a request to the test web server. @@ -1918,8 +1918,8 @@ public class WebViewTest extends ActivityInstrumentationTestCase2<WebViewCtsActi final String imgUrl = mWebServer.getAssetUrl(TestHtmlConstants.LARGE_IMG_URL); mOnUiThread.loadDataAndWaitForCompletion( "<html><head><title>Title</title><style type=\"text/css\">" - + "#imgElement { -webkit-transform: translate3d(0,0,1); }" - + "#imgElement.finish { -webkit-transform: translate3d(0,0,0);" + + "%23imgElement { -webkit-transform: translate3d(0,0,1); }" + + "%23imgElement.finish { -webkit-transform: translate3d(0,0,0);" + " -webkit-transition-duration: 1ms; }</style>" + "<script type=\"text/javascript\">function imgLoad() {" + "imgElement = document.getElementById('imgElement');" diff --git a/tools/cts-tradefed/Android.mk b/tools/cts-tradefed/Android.mk index ba82f6b618c..153536e491d 100644 --- a/tools/cts-tradefed/Android.mk +++ b/tools/cts-tradefed/Android.mk @@ -25,7 +25,7 @@ LOCAL_SUITE_BUILD_NUMBER := $(BUILD_NUMBER_FROM_FILE) LOCAL_SUITE_TARGET_ARCH := $(TARGET_ARCH) LOCAL_SUITE_NAME := CTS LOCAL_SUITE_FULLNAME := "Compatibility Test Suite" -LOCAL_SUITE_VERSION := 7.0_r27 +LOCAL_SUITE_VERSION := 7.0_r28 LOCAL_MODULE := cts-tradefed |