Merge "Snap for 4604451 from 485c16b4d32168d7efa29dbc3b9d4828d46d8dfe to nougat-mr1-cts-release" into nougat-mr1-cts-release
diff --git a/apps/CtsVerifier/AndroidManifest.xml b/apps/CtsVerifier/AndroidManifest.xml
index bb41de2..6e51442 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.1_r14">
+ android:versionName="7.1_r15">
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="25"/>
diff --git a/hostsidetests/security/src/android/security/cts/SecurityTestCase.java b/hostsidetests/security/src/android/security/cts/SecurityTestCase.java
index b6599c1..17cdc2c 100644
--- a/hostsidetests/security/src/android/security/cts/SecurityTestCase.java
+++ b/hostsidetests/security/src/android/security/cts/SecurityTestCase.java
@@ -42,8 +42,10 @@
public void setUp() throws Exception {
super.setUp();
- kernelStartTime = System.currentTimeMillis()/1000 -
- Integer.parseInt(getDevice().executeShellCommand("cut -f1 -d. /proc/uptime").trim());
+ String cmdOut = getDevice().executeShellCommand("dumpsys meminfo");
+ long uptime = Long.parseLong(cmdOut.substring(cmdOut.indexOf("Uptime: ") + 8,
+ cmdOut.indexOf("Realtime: ") - 1))/1000;
+ kernelStartTime = System.currentTimeMillis()/1000 - uptime;
//TODO:(badash@): Watch for other things to track.
// Specifically time when app framework starts
}
@@ -70,10 +72,11 @@
@Override
public void tearDown() throws Exception {
getDevice().waitForDeviceOnline(60 * 1000);
+ String cmdOut = getDevice().executeShellCommand("dumpsys meminfo");
+ long uptime = Long.parseLong(cmdOut.substring(cmdOut.indexOf("Uptime: ") + 8,
+ cmdOut.indexOf("Realtime: ") - 1))/1000;
assertTrue("Phone has had a hard reset",
- (System.currentTimeMillis()/1000 -
- Integer.parseInt(getDevice().executeShellCommand("cut -f1 -d. /proc/uptime").trim())
- - kernelStartTime < 2));
+ (System.currentTimeMillis()/1000 - uptime - kernelStartTime < 2));
//TODO(badash@): add ability to catch runtime restart
getDevice().executeAdbCommand("unroot");
}
diff --git a/tests/tests/security/res/raw/bug_65483665.mp4 b/tests/tests/security/res/raw/bug_65483665.mp4
new file mode 100644
index 0000000..105e274
--- /dev/null
+++ b/tests/tests/security/res/raw/bug_65483665.mp4
Binary files differ
diff --git a/tests/tests/security/res/raw/bug_69478425.mp4 b/tests/tests/security/res/raw/bug_69478425.mp4
new file mode 100644
index 0000000..b8ff0c5
--- /dev/null
+++ b/tests/tests/security/res/raw/bug_69478425.mp4
Binary files differ
diff --git a/tests/tests/security/src/android/security/cts/StagefrightTest.java b/tests/tests/security/src/android/security/cts/StagefrightTest.java
index 551504c..95aa9e4 100644
--- a/tests/tests/security/src/android/security/cts/StagefrightTest.java
+++ b/tests/tests/security/src/android/security/cts/StagefrightTest.java
@@ -198,6 +198,11 @@
***********************************************************/
@SecurityTest
+ public void testStagefright_bug_65483665() throws Exception {
+ doStagefrightTest(R.raw.bug_65483665);
+ }
+
+ @SecurityTest
public void testStagefright_cve_2017_0852_b_62815506() throws Exception {
doStagefrightTest(R.raw.cve_2017_0852_b_62815506);
}
@@ -208,6 +213,11 @@
***********************************************************/
@SecurityTest
+ public void testStagefright_bug_69478425() throws Exception {
+ doStagefrightTest(R.raw.bug_69478425);
+ }
+
+ @SecurityTest
public void testStagefright_bug_65717533() throws Exception {
doStagefrightTest(R.raw.bug_65717533_header_corrupt);
}
diff --git a/tests/tests/webkit/src/android/webkit/cts/WebSettingsTest.java b/tests/tests/webkit/src/android/webkit/cts/WebSettingsTest.java
index 7729baf..d0fffae 100644
--- a/tests/tests/webkit/src/android/webkit/cts/WebSettingsTest.java
+++ b/tests/tests/webkit/src/android/webkit/cts/WebSettingsTest.java
@@ -22,10 +22,13 @@
import android.net.http.SslError;
import android.os.Build;
import android.test.ActivityInstrumentationTestCase2;
+import android.util.Base64;
import android.util.Log;
import android.webkit.ConsoleMessage;
import android.webkit.SslErrorHandler;
import android.webkit.WebIconDatabase;
+import android.webkit.WebResourceResponse;
+import android.webkit.WebResourceRequest;
import android.webkit.WebSettings;
import android.webkit.WebSettings.TextSize;
import android.webkit.WebStorage;
@@ -33,7 +36,10 @@
import android.webkit.WebViewClient;
import android.webkit.cts.WebViewOnUiThread.WaitForLoadedClient;
import android.webkit.cts.WebViewOnUiThread.WaitForProgressClient;
+
+import java.io.ByteArrayInputStream;
import java.io.FileOutputStream;
+import java.nio.charset.StandardCharsets;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -952,61 +958,77 @@
if (!NullWebViewUtils.isWebViewAvailable()) {
return;
}
- final class SslWebViewClient extends WaitForLoadedClient {
- public SslWebViewClient() {
+
+ final String INSECURE_BASE_URL = "http://www.example.com/";
+ final String INSECURE_JS_URL = INSECURE_BASE_URL + "insecure.js";
+ final String INSECURE_IMG_URL = INSECURE_BASE_URL + "insecure.png";
+ final String SECURE_URL = "/secure.html";
+ final String JS_HTML = "<script src=\"" + INSECURE_JS_URL + "\"></script>";
+ final String IMG_HTML = "<img src=\"" + INSECURE_IMG_URL + "\" />";
+ final String SECURE_HTML = "<body>" + IMG_HTML + " " + JS_HTML + "</body>";
+ final String JS_CONTENT = "window.loaded_js = 42;";
+ final String IMG_CONTENT = "R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7";
+
+ final class InterceptClient extends WaitForLoadedClient {
+ public int mInsecureJsCounter;
+ public int mInsecureImgCounter;
+
+ public InterceptClient() {
super(mOnUiThread);
}
+
@Override
- public void onReceivedSslError(WebView view,
- SslErrorHandler handler, SslError error) {
+ public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed();
}
+
+ @Override
+ public WebResourceResponse shouldInterceptRequest(
+ WebView view, WebResourceRequest request) {
+ if (request.getUrl().toString().equals(INSECURE_JS_URL)) {
+ mInsecureJsCounter++;
+ return new WebResourceResponse("text/javascript", "utf-8",
+ new ByteArrayInputStream(JS_CONTENT.getBytes(StandardCharsets.UTF_8)));
+ } else if (request.getUrl().toString().equals(INSECURE_IMG_URL)) {
+ mInsecureImgCounter++;
+ return new WebResourceResponse("image/gif", "utf-8",
+ new ByteArrayInputStream(Base64.decode(IMG_CONTENT, Base64.DEFAULT)));
+ }
+
+ if (request.getUrl().toString().startsWith(INSECURE_BASE_URL)) {
+ return new WebResourceResponse("text/html", "UTF-8", null);
+ }
+ return null;
+ }
}
+ InterceptClient interceptClient = new InterceptClient();
+ mOnUiThread.setWebViewClient(interceptClient);
mSettings.setJavaScriptEnabled(true);
TestWebServer httpsServer = null;
- TestWebServer httpServer = null;
try {
httpsServer = new TestWebServer(true);
- httpServer = new TestWebServer(false);
- final String JS_URL = "/insecure.js";
- final String IMG_URL = "/insecure.png";
- final String SECURE_URL = "/secure.html";
- final String JS_HTML = "<script src=\"" + httpServer.getResponseUrl(JS_URL) +
- "\"></script>";
- final String IMG_HTML = "<img src=\"" + httpServer.getResponseUrl(IMG_URL) + "\" />";
- final String SECURE_HTML = "<body>" + IMG_HTML + " " + JS_HTML + "</body>";
- httpServer.setResponse(JS_URL, "window.loaded_js = 42;", null);
- httpServer.setResponseBase64(IMG_URL,
- "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",
- null);
String secureUrl = httpsServer.setResponse(SECURE_URL, SECURE_HTML, null);
-
mOnUiThread.clearSslPreferences();
- mOnUiThread.setWebViewClient(new SslWebViewClient());
-
mSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_NEVER_ALLOW);
mOnUiThread.loadUrlAndWaitForCompletion(secureUrl);
assertEquals(1, httpsServer.getRequestCount(SECURE_URL));
- assertEquals(0, httpServer.getRequestCount(JS_URL));
- assertEquals(0, httpServer.getRequestCount(IMG_URL));
+ assertEquals(0, interceptClient.mInsecureJsCounter);
+ assertEquals(0, interceptClient.mInsecureImgCounter);
mSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
mOnUiThread.loadUrlAndWaitForCompletion(secureUrl);
assertEquals(2, httpsServer.getRequestCount(SECURE_URL));
- assertEquals(1, httpServer.getRequestCount(JS_URL));
- assertEquals(1, httpServer.getRequestCount(IMG_URL));
+ assertEquals(1, interceptClient.mInsecureJsCounter);
+ assertEquals(1, interceptClient.mInsecureImgCounter);
mSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE);
mOnUiThread.loadUrlAndWaitForCompletion(secureUrl);
assertEquals(3, httpsServer.getRequestCount(SECURE_URL));
- assertEquals(1, httpServer.getRequestCount(JS_URL));
- assertEquals(2, httpServer.getRequestCount(IMG_URL));
+ assertEquals(1, interceptClient.mInsecureJsCounter);
+ assertEquals(2, interceptClient.mInsecureImgCounter);
} finally {
- if (httpServer != null) {
- httpServer.shutdown();
- }
if (httpsServer != null) {
httpsServer.shutdown();
}
diff --git a/tools/cts-tradefed/Android.mk b/tools/cts-tradefed/Android.mk
index 8da934b..944b48e 100644
--- a/tools/cts-tradefed/Android.mk
+++ b/tools/cts-tradefed/Android.mk
@@ -25,7 +25,7 @@
LOCAL_SUITE_TARGET_ARCH := $(TARGET_ARCH)
LOCAL_SUITE_NAME := CTS
LOCAL_SUITE_FULLNAME := "Compatibility Test Suite"
-LOCAL_SUITE_VERSION := 7.1_r14
+LOCAL_SUITE_VERSION := 7.1_r15
LOCAL_MODULE := cts-tradefed