From 08822df147f7794559870d6de01f9a5cea6f1cd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5rten=20Kongstad?= Date: Thu, 20 Dec 2012 10:08:54 +0100 Subject: [PATCH 1/3] Document the 'aapt dump strings' command Update the usage page for aapt to mention 'strings' as a valid subcommand to 'dump'. Change-Id: Iadb2b8ce36951ff36ffbf6b5ea349ba1e2b12582 --- tools/aapt/Main.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/aapt/Main.cpp b/tools/aapt/Main.cpp index f398de0630b98..74ffeb00d9d31 100644 --- a/tools/aapt/Main.cpp +++ b/tools/aapt/Main.cpp @@ -48,6 +48,7 @@ void usage(void) " List contents of Zip-compatible archive.\n\n", gProgName); fprintf(stderr, " %s d[ump] [--values] WHAT file.{apk} [asset [asset ...]]\n" + " strings Print the contents of the resource table string pool in the APK.\n" " badging Print the label and icon for the app declared in APK.\n" " permissions Print the permissions from the APK.\n" " resources Print the resource table from the APK.\n" From 28b1f0ee02e14241ffb81f431fc54053771c1c90 Mon Sep 17 00:00:00 2001 From: Kenny Root Date: Tue, 23 Apr 2013 22:33:18 -0700 Subject: [PATCH 2/3] Don't use X509CertImpl directly Change-Id: Ibabee35c90c2636c6f362e4d778d6795a0cef6c2 --- .../net/http/CertificateChainValidator.java | 13 ++++++++++--- core/java/android/webkit/BrowserFrame.java | 17 ++++++++++------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/core/java/android/net/http/CertificateChainValidator.java b/core/java/android/net/http/CertificateChainValidator.java index f66075d66b75a..155ab93cd4740 100644 --- a/core/java/android/net/http/CertificateChainValidator.java +++ b/core/java/android/net/http/CertificateChainValidator.java @@ -17,18 +17,19 @@ package android.net.http; +import java.io.ByteArrayInputStream; import java.io.IOException; import java.security.GeneralSecurityException; import java.security.KeyManagementException; import java.security.cert.Certificate; import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; import javax.net.ssl.DefaultHostnameVerifier; import javax.net.ssl.SSLHandshakeException; import javax.net.ssl.SSLSession; import javax.net.ssl.SSLSocket; import javax.net.ssl.X509TrustManager; -import org.apache.harmony.security.provider.cert.X509CertImpl; import org.apache.harmony.xnet.provider.jsse.SSLParametersImpl; import org.apache.harmony.xnet.provider.jsse.TrustManagerImpl; @@ -118,8 +119,14 @@ public class CertificateChainValidator { X509Certificate[] serverCertificates = new X509Certificate[certChain.length]; - for (int i = 0; i < certChain.length; ++i) { - serverCertificates[i] = new X509CertImpl(certChain[i]); + try { + CertificateFactory cf = CertificateFactory.getInstance("X.509"); + for (int i = 0; i < certChain.length; ++i) { + serverCertificates[i] = (X509Certificate) cf.generateCertificate( + new ByteArrayInputStream(certChain[i])); + } + } catch (CertificateException e) { + throw new IOException("can't read certificate", e); } return verifyServerDomainAndCertificates(serverCertificates, domain, authType); diff --git a/core/java/android/webkit/BrowserFrame.java b/core/java/android/webkit/BrowserFrame.java index 023dfa8dafe46..e627af15ffe3e 100644 --- a/core/java/android/webkit/BrowserFrame.java +++ b/core/java/android/webkit/BrowserFrame.java @@ -40,13 +40,13 @@ import android.view.WindowManager; import junit.framework.Assert; +import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.lang.ref.WeakReference; import java.net.URLEncoder; -import java.nio.charset.Charsets; import java.security.PrivateKey; -import java.security.cert.CertificateEncodingException; +import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.HashMap; @@ -55,7 +55,6 @@ import java.util.Iterator; import java.util.Map; import java.util.Set; -import org.apache.harmony.security.provider.cert.X509CertImpl; import org.apache.harmony.xnet.provider.jsse.OpenSSLKey; import org.apache.harmony.xnet.provider.jsse.OpenSSLKeyHolder; @@ -1079,10 +1078,12 @@ class BrowserFrame extends Handler { String url) { final SslError sslError; try { - X509Certificate cert = new X509CertImpl(certDER); + CertificateFactory cf = CertificateFactory.getInstance("X.509"); + X509Certificate cert = (X509Certificate) cf.generateCertificate( + new ByteArrayInputStream(certDER)); SslCertificate sslCert = new SslCertificate(cert); sslError = SslError.SslErrorFromChromiumErrorCode(certError, sslCert, url); - } catch (IOException e) { + } catch (Exception e) { // Can't get the certificate, not much to do. Log.e(LOGTAG, "Can't get the certificate from WebKit, canceling"); nativeSslCertErrorCancel(handle, certError); @@ -1200,9 +1201,11 @@ class BrowserFrame extends Handler { */ private void setCertificate(byte cert_der[]) { try { - X509Certificate cert = new X509CertImpl(cert_der); + CertificateFactory cf = CertificateFactory.getInstance("X.509"); + X509Certificate cert = (X509Certificate) cf.generateCertificate( + new ByteArrayInputStream(cert_der)); mCallbackProxy.onReceivedCertificate(new SslCertificate(cert)); - } catch (IOException e) { + } catch (Exception e) { // Can't get the certificate, not much to do. Log.e(LOGTAG, "Can't get the certificate from WebKit, canceling"); return; From 2ac9d8d0f0ea65aae6ba43490b5be6617ad97125 Mon Sep 17 00:00:00 2001 From: Diego Torres Milano Date: Thu, 4 Apr 2013 13:44:34 -0400 Subject: [PATCH 3/3] input: added support for multiple keyevents - Multiple keyevents can now be send from the command line: input keyevent ... Sometimes invoking 'input' repeatedly does not send the events fast enough, this change solves the problem by allowing multiple key code number or names be added to the command line. Change-Id: I0d0f34bddd99e0195c9badff2f8b3e2aa9a51737 --- .../src/com/android/commands/input/Input.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/cmds/input/src/com/android/commands/input/Input.java b/cmds/input/src/com/android/commands/input/Input.java index a21df0d2c8b22..6dc9f3d562c0a 100644 --- a/cmds/input/src/com/android/commands/input/Input.java +++ b/cmds/input/src/com/android/commands/input/Input.java @@ -56,12 +56,14 @@ public class Input { return; } } else if (command.equals("keyevent")) { - if (args.length == 2) { - int keyCode = KeyEvent.keyCodeFromString(args[1]); - if (keyCode == KeyEvent.KEYCODE_UNKNOWN) { - keyCode = KeyEvent.keyCodeFromString("KEYCODE_" + args[1]); + if (args.length >= 2) { + for (int i=1; i < args.length; i++) { + int keyCode = KeyEvent.keyCodeFromString(args[i]); + if (keyCode == KeyEvent.KEYCODE_UNKNOWN) { + keyCode = KeyEvent.keyCodeFromString("KEYCODE_" + args[i]); + } + sendKeyEvent(keyCode); } - sendKeyEvent(keyCode); return; } } else if (command.equals("tap")) { @@ -223,7 +225,7 @@ public class Input { DEFAULT_META_STATE, DEFAULT_PRECISION_X, DEFAULT_PRECISION_Y, DEFAULT_DEVICE_ID, DEFAULT_EDGE_FLAGS); event.setSource(inputSource); - Log.i("Input", "injectMotionEvent: " + event); + Log.i(TAG, "injectMotionEvent: " + event); InputManager.getInstance().injectInputEvent(event, InputManager.INJECT_INPUT_EVENT_MODE_WAIT_FOR_FINISH); } @@ -235,7 +237,7 @@ public class Input { private void showUsage() { System.err.println("usage: input ..."); System.err.println(" input text "); - System.err.println(" input keyevent "); + System.err.println(" input keyevent ..."); System.err.println(" input [touchscreen|touchpad] tap "); System.err.println(" input [touchscreen|touchpad] swipe "); System.err.println(" input trackball press");