From d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9 Mon Sep 17 00:00:00 2001 From: Eric Erfanian Date: Wed, 15 Mar 2017 14:41:07 -0700 Subject: Update Dialer source from latest green build. * Refactor voicemail component * Add new enriched calling components Test: treehugger, manual aosp testing Change-Id: I521a0f86327d4b42e14d93927c7d613044ed5942 --- .../android/voicemailomtp/mail/utils/LogUtils.java | 413 --------------------- .../android/voicemailomtp/mail/utils/Utility.java | 80 ---- 2 files changed, 493 deletions(-) delete mode 100644 java/com/android/voicemailomtp/mail/utils/LogUtils.java delete mode 100644 java/com/android/voicemailomtp/mail/utils/Utility.java (limited to 'java/com/android/voicemailomtp/mail/utils') diff --git a/java/com/android/voicemailomtp/mail/utils/LogUtils.java b/java/com/android/voicemailomtp/mail/utils/LogUtils.java deleted file mode 100644 index a213a835e..000000000 --- a/java/com/android/voicemailomtp/mail/utils/LogUtils.java +++ /dev/null @@ -1,413 +0,0 @@ -/** - * Copyright (c) 2015 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.voicemailomtp.mail.utils; - -import android.net.Uri; -import android.support.annotation.VisibleForTesting; -import android.text.TextUtils; -import android.util.Log; -import com.android.voicemailomtp.VvmLog; -import java.util.List; -import java.util.regex.Pattern; - -public class LogUtils { - public static final String TAG = "Email Log"; - - // "GMT" + "+" or "-" + 4 digits - private static final Pattern DATE_CLEANUP_PATTERN_WRONG_TIMEZONE = - Pattern.compile("GMT([-+]\\d{4})$"); - - private static final String ACCOUNT_PREFIX = "account:"; - - /** - * Priority constant for the println method; use LogUtils.v. - */ - public static final int VERBOSE = Log.VERBOSE; - - /** - * Priority constant for the println method; use LogUtils.d. - */ - public static final int DEBUG = Log.DEBUG; - - /** - * Priority constant for the println method; use LogUtils.i. - */ - public static final int INFO = Log.INFO; - - /** - * Priority constant for the println method; use LogUtils.w. - */ - public static final int WARN = Log.WARN; - - /** - * Priority constant for the println method; use LogUtils.e. - */ - public static final int ERROR = Log.ERROR; - - /** - * Used to enable/disable logging that we don't want included in production releases. This should - * be set to DEBUG for production releases, and VERBOSE for internal builds. - */ - private static final int MAX_ENABLED_LOG_LEVEL = DEBUG; - - private static Boolean sDebugLoggingEnabledForTests = null; - - /** - * Enable debug logging for unit tests. - */ - @VisibleForTesting - public static void setDebugLoggingEnabledForTests(boolean enabled) { - setDebugLoggingEnabledForTestsInternal(enabled); - } - - protected static void setDebugLoggingEnabledForTestsInternal(boolean enabled) { - sDebugLoggingEnabledForTests = Boolean.valueOf(enabled); - } - - /** - * Returns true if the build configuration prevents debug logging. - */ - @VisibleForTesting - public static boolean buildPreventsDebugLogging() { - return MAX_ENABLED_LOG_LEVEL > VERBOSE; - } - - /** - * Returns a boolean indicating whether debug logging is enabled. - */ - protected static boolean isDebugLoggingEnabled(String tag) { - if (buildPreventsDebugLogging()) { - return false; - } - if (sDebugLoggingEnabledForTests != null) { - return sDebugLoggingEnabledForTests.booleanValue(); - } - return Log.isLoggable(tag, Log.DEBUG) || Log.isLoggable(TAG, Log.DEBUG); - } - - /** - * Returns a String for the specified content provider uri. This will do - * sanitation of the uri to remove PII if debug logging is not enabled. - */ - public static String contentUriToString(final Uri uri) { - return contentUriToString(TAG, uri); - } - - /** - * Returns a String for the specified content provider uri. This will do - * sanitation of the uri to remove PII if debug logging is not enabled. - */ - public static String contentUriToString(String tag, Uri uri) { - if (isDebugLoggingEnabled(tag)) { - // Debug logging has been enabled, so log the uri as is - return uri.toString(); - } else { - // Debug logging is not enabled, we want to remove the email address from the uri. - List pathSegments = uri.getPathSegments(); - - Uri.Builder builder = new Uri.Builder() - .scheme(uri.getScheme()) - .authority(uri.getAuthority()) - .query(uri.getQuery()) - .fragment(uri.getFragment()); - - // This assumes that the first path segment is the account - final String account = pathSegments.get(0); - - builder = builder.appendPath(sanitizeAccountName(account)); - for (int i = 1; i < pathSegments.size(); i++) { - builder.appendPath(pathSegments.get(i)); - } - return builder.toString(); - } - } - - /** - * Sanitizes an account name. If debug logging is not enabled, a sanitized name - * is returned. - */ - public static String sanitizeAccountName(String accountName) { - if (TextUtils.isEmpty(accountName)) { - return ""; - } - - return ACCOUNT_PREFIX + sanitizeName(TAG, accountName); - } - - public static String sanitizeName(final String tag, final String name) { - if (TextUtils.isEmpty(name)) { - return ""; - } - - if (isDebugLoggingEnabled(tag)) { - return name; - } - - return String.valueOf(name.hashCode()); - } - - /** - * Checks to see whether or not a log for the specified tag is loggable at the specified level. - */ - public static boolean isLoggable(String tag, int level) { - if (MAX_ENABLED_LOG_LEVEL > level) { - return false; - } - return Log.isLoggable(tag, level) || Log.isLoggable(TAG, level); - } - - /** - * Send a {@link #VERBOSE} log message. - * @param tag Used to identify the source of a log message. It usually identifies - * the class or activity where the log call occurs. - * @param format the format string (see {@link java.util.Formatter#format}) - * @param args - * the list of arguments passed to the formatter. If there are - * more arguments than required by {@code format}, - * additional arguments are ignored. - */ - public static int v(String tag, String format, Object... args) { - if (isLoggable(tag, VERBOSE)) { - return VvmLog.v(tag, String.format(format, args)); - } - return 0; - } - - /** - * Send a {@link #VERBOSE} log message. - * @param tag Used to identify the source of a log message. It usually identifies - * the class or activity where the log call occurs. - * @param tr An exception to log - * @param format the format string (see {@link java.util.Formatter#format}) - * @param args - * the list of arguments passed to the formatter. If there are - * more arguments than required by {@code format}, - * additional arguments are ignored. - */ - public static int v(String tag, Throwable tr, String format, Object... args) { - if (isLoggable(tag, VERBOSE)) { - return VvmLog.v(tag, String.format(format, args), tr); - } - return 0; - } - - /** - * Send a {@link #DEBUG} log message. - * @param tag Used to identify the source of a log message. It usually identifies - * the class or activity where the log call occurs. - * @param format the format string (see {@link java.util.Formatter#format}) - * @param args - * the list of arguments passed to the formatter. If there are - * more arguments than required by {@code format}, - * additional arguments are ignored. - */ - public static int d(String tag, String format, Object... args) { - if (isLoggable(tag, DEBUG)) { - return VvmLog.d(tag, String.format(format, args)); - } - return 0; - } - - /** - * Send a {@link #DEBUG} log message. - * @param tag Used to identify the source of a log message. It usually identifies - * the class or activity where the log call occurs. - * @param tr An exception to log - * @param format the format string (see {@link java.util.Formatter#format}) - * @param args - * the list of arguments passed to the formatter. If there are - * more arguments than required by {@code format}, - * additional arguments are ignored. - */ - public static int d(String tag, Throwable tr, String format, Object... args) { - if (isLoggable(tag, DEBUG)) { - return VvmLog.d(tag, String.format(format, args), tr); - } - return 0; - } - - /** - * Send a {@link #INFO} log message. - * @param tag Used to identify the source of a log message. It usually identifies - * the class or activity where the log call occurs. - * @param format the format string (see {@link java.util.Formatter#format}) - * @param args - * the list of arguments passed to the formatter. If there are - * more arguments than required by {@code format}, - * additional arguments are ignored. - */ - public static int i(String tag, String format, Object... args) { - if (isLoggable(tag, INFO)) { - return VvmLog.i(tag, String.format(format, args)); - } - return 0; - } - - /** - * Send a {@link #INFO} log message. - * @param tag Used to identify the source of a log message. It usually identifies - * the class or activity where the log call occurs. - * @param tr An exception to log - * @param format the format string (see {@link java.util.Formatter#format}) - * @param args - * the list of arguments passed to the formatter. If there are - * more arguments than required by {@code format}, - * additional arguments are ignored. - */ - public static int i(String tag, Throwable tr, String format, Object... args) { - if (isLoggable(tag, INFO)) { - return VvmLog.i(tag, String.format(format, args), tr); - } - return 0; - } - - /** - * Send a {@link #WARN} log message. - * @param tag Used to identify the source of a log message. It usually identifies - * the class or activity where the log call occurs. - * @param format the format string (see {@link java.util.Formatter#format}) - * @param args - * the list of arguments passed to the formatter. If there are - * more arguments than required by {@code format}, - * additional arguments are ignored. - */ - public static int w(String tag, String format, Object... args) { - if (isLoggable(tag, WARN)) { - return VvmLog.w(tag, String.format(format, args)); - } - return 0; - } - - /** - * Send a {@link #WARN} log message. - * @param tag Used to identify the source of a log message. It usually identifies - * the class or activity where the log call occurs. - * @param tr An exception to log - * @param format the format string (see {@link java.util.Formatter#format}) - * @param args - * the list of arguments passed to the formatter. If there are - * more arguments than required by {@code format}, - * additional arguments are ignored. - */ - public static int w(String tag, Throwable tr, String format, Object... args) { - if (isLoggable(tag, WARN)) { - return VvmLog.w(tag, String.format(format, args), tr); - } - return 0; - } - - /** - * Send a {@link #ERROR} log message. - * @param tag Used to identify the source of a log message. It usually identifies - * the class or activity where the log call occurs. - * @param format the format string (see {@link java.util.Formatter#format}) - * @param args - * the list of arguments passed to the formatter. If there are - * more arguments than required by {@code format}, - * additional arguments are ignored. - */ - public static int e(String tag, String format, Object... args) { - if (isLoggable(tag, ERROR)) { - return VvmLog.e(tag, String.format(format, args)); - } - return 0; - } - - /** - * Send a {@link #ERROR} log message. - * @param tag Used to identify the source of a log message. It usually identifies - * the class or activity where the log call occurs. - * @param tr An exception to log - * @param format the format string (see {@link java.util.Formatter#format}) - * @param args - * the list of arguments passed to the formatter. If there are - * more arguments than required by {@code format}, - * additional arguments are ignored. - */ - public static int e(String tag, Throwable tr, String format, Object... args) { - if (isLoggable(tag, ERROR)) { - return VvmLog.e(tag, String.format(format, args), tr); - } - return 0; - } - - /** - * What a Terrible Failure: Report a condition that should never happen. - * The error will always be logged at level ASSERT with the call stack. - * Depending on system configuration, a report may be added to the - * {@link android.os.DropBoxManager} and/or the process may be terminated - * immediately with an error dialog. - * @param tag Used to identify the source of a log message. It usually identifies - * the class or activity where the log call occurs. - * @param format the format string (see {@link java.util.Formatter#format}) - * @param args - * the list of arguments passed to the formatter. If there are - * more arguments than required by {@code format}, - * additional arguments are ignored. - */ - public static int wtf(String tag, String format, Object... args) { - return VvmLog.wtf(tag, String.format(format, args), new Error()); - } - - /** - * What a Terrible Failure: Report a condition that should never happen. - * The error will always be logged at level ASSERT with the call stack. - * Depending on system configuration, a report may be added to the - * {@link android.os.DropBoxManager} and/or the process may be terminated - * immediately with an error dialog. - * @param tag Used to identify the source of a log message. It usually identifies - * the class or activity where the log call occurs. - * @param tr An exception to log - * @param format the format string (see {@link java.util.Formatter#format}) - * @param args - * the list of arguments passed to the formatter. If there are - * more arguments than required by {@code format}, - * additional arguments are ignored. - */ - public static int wtf(String tag, Throwable tr, String format, Object... args) { - return VvmLog.wtf(tag, String.format(format, args), tr); - } - - - /** - * Try to make a date MIME(RFC 2822/5322)-compliant. - * - * It fixes: - * - "Thu, 10 Dec 09 15:08:08 GMT-0700" to "Thu, 10 Dec 09 15:08:08 -0700" - * (4 digit zone value can't be preceded by "GMT") - * We got a report saying eBay sends a date in this format - */ - public static String cleanUpMimeDate(String date) { - if (TextUtils.isEmpty(date)) { - return date; - } - date = DATE_CLEANUP_PATTERN_WRONG_TIMEZONE.matcher(date).replaceFirst("$1"); - return date; - } - - - public static String byteToHex(int b) { - return byteToHex(new StringBuilder(), b).toString(); - } - - public static StringBuilder byteToHex(StringBuilder sb, int b) { - b &= 0xFF; - sb.append("0123456789ABCDEF".charAt(b >> 4)); - sb.append("0123456789ABCDEF".charAt(b & 0xF)); - return sb; - } - -} diff --git a/java/com/android/voicemailomtp/mail/utils/Utility.java b/java/com/android/voicemailomtp/mail/utils/Utility.java deleted file mode 100644 index c7286fa64..000000000 --- a/java/com/android/voicemailomtp/mail/utils/Utility.java +++ /dev/null @@ -1,80 +0,0 @@ -/** - * Copyright (c) 2015 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.voicemailomtp.mail.utils; - -import java.io.ByteArrayInputStream; -import java.nio.ByteBuffer; -import java.nio.CharBuffer; -import java.nio.charset.Charset; - -/** - * Simple utility methods used in email functions. - */ -public class Utility { - public static final Charset ASCII = Charset.forName("US-ASCII"); - - public static final String[] EMPTY_STRINGS = new String[0]; - - /** - * Returns a concatenated string containing the output of every Object's - * toString() method, each separated by the given separator character. - */ - public static String combine(Object[] parts, char separator) { - if (parts == null) { - return null; - } - StringBuilder sb = new StringBuilder(); - for (int i = 0; i < parts.length; i++) { - sb.append(parts[i].toString()); - if (i < parts.length - 1) { - sb.append(separator); - } - } - return sb.toString(); - } - - /** Converts a String to ASCII bytes */ - public static byte[] toAscii(String s) { - return encode(ASCII, s); - } - - /** Builds a String from ASCII bytes */ - public static String fromAscii(byte[] b) { - return decode(ASCII, b); - } - - private static byte[] encode(Charset charset, String s) { - if (s == null) { - return null; - } - final ByteBuffer buffer = charset.encode(CharBuffer.wrap(s)); - final byte[] bytes = new byte[buffer.limit()]; - buffer.get(bytes); - return bytes; - } - - private static String decode(Charset charset, byte[] b) { - if (b == null) { - return null; - } - final CharBuffer cb = charset.decode(ByteBuffer.wrap(b)); - return new String(cb.array(), 0, cb.length()); - } - - public static ByteArrayInputStream streamFromAsciiString(String ascii) { - return new ByteArrayInputStream(toAscii(ascii)); - } -} -- cgit v1.2.3