diff options
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/ddm/DdmHandleHello.java | 4 | ||||
| -rw-r--r-- | core/java/android/net/Uri.java | 61 | ||||
| -rw-r--r-- | core/java/android/os/Debug.java | 10 | ||||
| -rw-r--r-- | core/java/com/android/internal/logging/AndroidHandler.java | 65 |
4 files changed, 68 insertions, 72 deletions
diff --git a/core/java/android/ddm/DdmHandleHello.java b/core/java/android/ddm/DdmHandleHello.java index c5d591f..0603ca5 100644 --- a/core/java/android/ddm/DdmHandleHello.java +++ b/core/java/android/ddm/DdmHandleHello.java @@ -152,8 +152,8 @@ public class DdmHandleHello extends ChunkHandler { "hprof-heap-dump", "method-trace-profiling" }; - if (Config.LOGD) - Log.d("ddm-heap", "Got feature list request"); + if (Config.LOGV) + Log.v("ddm-heap", "Got feature list request"); int size = 4 + 4 * features.length; for (int i = features.length-1; i >= 0; i--) diff --git a/core/java/android/net/Uri.java b/core/java/android/net/Uri.java index 9a1b65d..f2ea539 100644 --- a/core/java/android/net/Uri.java +++ b/core/java/android/net/Uri.java @@ -1567,51 +1567,40 @@ public abstract class Uri implements Parcelable, Comparable<Uri> { if (isOpaque()) { throw new UnsupportedOperationException(NOT_HIERARCHICAL); } + if (key == null) { + throw new NullPointerException("key"); + } - String query = getEncodedQuery(); - + final String query = getEncodedQuery(); if (query == null) { return null; } - String encodedKey; - try { - encodedKey = URLEncoder.encode(key, DEFAULT_ENCODING); - } catch (UnsupportedEncodingException e) { - throw new AssertionError(e); - } - - String prefix = encodedKey + "="; + final String encodedKey = encode(key, null); + final int encodedKeyLength = encodedKey.length(); - if (query.length() < prefix.length()) { - return null; - } + int encodedKeySearchIndex = 0; + final int encodedKeySearchEnd = query.length() - (encodedKeyLength + 1); - int start; - if (query.startsWith(prefix)) { - // It's the first parameter. - start = prefix.length(); - } else { - // It must be later in the query string. - prefix = "&" + prefix; - start = query.indexOf(prefix); - - if (start == -1) { - // Not found. - return null; + while (encodedKeySearchIndex <= encodedKeySearchEnd) { + int keyIndex = query.indexOf(encodedKey, encodedKeySearchIndex); + if (keyIndex == -1) { + break; + } + final int equalsIndex = keyIndex + encodedKeyLength; + if (query.charAt(equalsIndex) != '=') { + encodedKeySearchIndex = equalsIndex + 1; + continue; + } + if (keyIndex == 0 || query.charAt(keyIndex - 1) == '&') { + int end = query.indexOf('&', equalsIndex); + if (end == -1) { + end = query.length(); + } + return decode(query.substring(equalsIndex + 1, end)); } - - start += prefix.length(); - } - - // Find end of value. - int end = query.indexOf('&', start); - if (end == -1) { - end = query.length(); } - - String value = query.substring(start, end); - return decode(value); + return null; } /** Identifies a null parcelled Uri. */ diff --git a/core/java/android/os/Debug.java b/core/java/android/os/Debug.java index b4f64b6..b33e8be 100644 --- a/core/java/android/os/Debug.java +++ b/core/java/android/os/Debug.java @@ -753,6 +753,16 @@ href="{@docRoot}guide/developing/tools/traceview.html">Traceview: A Graphical Lo } /** + * Dumps the contents of VM reference tables (e.g. JNI locals and + * globals) to the log file. + * + * @hide + */ + public static final void dumpReferenceTables() { + VMDebug.dumpReferenceTables(); + } + + /** * API for gathering and querying instruction counts. * * Example usage: diff --git a/core/java/com/android/internal/logging/AndroidHandler.java b/core/java/com/android/internal/logging/AndroidHandler.java index c4a1479..12f6a4f 100644 --- a/core/java/com/android/internal/logging/AndroidHandler.java +++ b/core/java/com/android/internal/logging/AndroidHandler.java @@ -17,12 +17,16 @@ package com.android.internal.logging; import android.util.Log; +import dalvik.system.DalvikLogging; +import dalvik.system.DalvikLogHandler; -import java.util.logging.*; -import java.util.Date; -import java.text.MessageFormat; import java.io.PrintWriter; import java.io.StringWriter; +import java.util.logging.Formatter; +import java.util.logging.Handler; +import java.util.logging.Level; +import java.util.logging.LogRecord; +import java.util.logging.Logger; /** * Implements a {@link java.util.logging.Logger} handler that writes to the Android log. The @@ -77,7 +81,7 @@ import java.io.StringWriter; * </tr> * </table> */ -public class AndroidHandler extends Handler { +public class AndroidHandler extends Handler implements DalvikLogHandler { /** * Holds the formatter for all Android log handlers. */ @@ -118,33 +122,13 @@ public class AndroidHandler extends Handler { @Override public void publish(LogRecord record) { - try { - int level = getAndroidLevel(record.getLevel()); - String tag = record.getLoggerName(); - - if (tag == null) { - // Anonymous logger. - tag = "null"; - } else { - // Tags must be <= 23 characters. - int length = tag.length(); - if (length > 23) { - // Most loggers use the full class name. Try dropping the - // package. - int lastPeriod = tag.lastIndexOf("."); - if (length - lastPeriod - 1 <= 23) { - tag = tag.substring(lastPeriod + 1); - } else { - // Use last 23 chars. - tag = tag.substring(tag.length() - 23); - } - } - } - - if (!Log.isLoggable(tag, level)) { - return; - } + int level = getAndroidLevel(record.getLevel()); + String tag = DalvikLogging.loggerNameToTag(record.getLoggerName()); + if (!Log.isLoggable(tag, level)) { + return; + } + try { String message = getFormatter().format(record); Log.println(level, tag, message); } catch (RuntimeException e) { @@ -152,12 +136,26 @@ public class AndroidHandler extends Handler { } } + public void publish(Logger source, String tag, Level level, String message) { + // TODO: avoid ducking into native 2x; we aren't saving any formatter calls + int priority = getAndroidLevel(level); + if (!Log.isLoggable(tag, priority)) { + return; + } + + try { + Log.println(priority, tag, message); + } catch (RuntimeException e) { + Log.e("AndroidHandler", "Error logging message.", e); + } + } + /** * Converts a {@link java.util.logging.Logger} logging level into an Android one. - * + * * @param level The {@link java.util.logging.Logger} logging level. - * - * @return The resulting Android logging level. + * + * @return The resulting Android logging level. */ static int getAndroidLevel(Level level) { int value = level.intValue(); @@ -171,5 +169,4 @@ public class AndroidHandler extends Handler { return Log.DEBUG; } } - } |
