blob: 23212fe28c50e5226606180531ba9713f9e190b7 [file] [log] [blame]
/*
* Copyright (C) 2009 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.mms;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.util.Log;
import com.android.mms.data.Contact;
import com.android.mms.data.Conversation;
import com.android.mms.data.RecipientIdCache;
public class LogTag {
public static final String TAG = "Mms";
public static final String TRANSACTION = TAG;
public static final String APP = TAG;
public static final String THREAD_CACHE = TAG;
public static final String THUMBNAIL_CACHE = TAG;
public static final String PDU_CACHE = TAG;
public static final String WIDGET = TAG;
public static final String CONTACT = TAG;
/**
* Log tag for enabling/disabling StrictMode violation log.
* To enable: adb shell setprop log.tag.Mms:strictmode DEBUG
*/
public static final String STRICT_MODE_TAG = TAG;
public static final boolean VERBOSE = false;
public static final boolean SEVERE_WARNING = true; // Leave this true
private static final boolean SHOW_SEVERE_WARNING_DIALOG = false; // Set to false before ship
public static final boolean DEBUG_SEND = false; // Set to false before ship
public static final boolean DEBUG_DUMP = false; // Set to false before ship
public static final boolean ALLOW_DUMP_IN_LOGS = false; // Set to false before ship
private static String prettyArray(String[] array) {
if (array.length == 0) {
return "[]";
}
StringBuilder sb = new StringBuilder("[");
int len = array.length-1;
for (int i = 0; i < len; i++) {
sb.append(array[i]);
sb.append(", ");
}
sb.append(array[len]);
sb.append("]");
return sb.toString();
}
private static String logFormat(String format, Object... args) {
for (int i = 0; i < args.length; i++) {
if (args[i] instanceof String[]) {
args[i] = prettyArray((String[])args[i]);
}
}
String s = String.format(format, args);
s = "[" + Thread.currentThread().getId() + "] " + s;
return s;
}
public static void debug(String format, Object... args) {
Log.d(TAG, logFormat(format, args));
}
public static void warn(String format, Object... args) {
Log.w(TAG, logFormat(format, args));
}
public static void error(String format, Object... args) {
Log.e(TAG, logFormat(format, args));
}
public static void dumpInternalTables(final Context context) {
if (!ALLOW_DUMP_IN_LOGS) {
return;
}
new Thread(new Runnable() {
public void run() {
RecipientIdCache.canonicalTableDump();
RecipientIdCache.dump();
Conversation.dumpThreadsTable(context);
Conversation.dump();
Conversation.dumpSmsTable(context);
Contact.dump();
}
}).start();
}
public static void warnPossibleRecipientMismatch(final String msg, final Activity activity) {
Log.e(TAG, "WARNING!!!! " + msg, new RuntimeException());
if (SHOW_SEVERE_WARNING_DIALOG) {
dumpInternalTables(activity);
activity.runOnUiThread(new Runnable() {
public void run() {
new AlertDialog.Builder(activity)
.setIconAttribute(android.R.attr.alertDialogIcon)
.setTitle(R.string.error_state)
.setMessage(msg + "\n\n" + activity.getString(R.string.error_state_text))
.setPositiveButton(R.string.yes, new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
})
.show();
}
});
}
}
}