Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e2060c20 authored by Robert Greenwalt's avatar Robert Greenwalt Committed by Android (Google) Code Review
Browse files

Merge "Add logs to PhoneFactory" into mnc-dev

parents 0772582c 265445ed
Loading
Loading
Loading
Loading
+54 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import android.provider.Settings.SettingNotFoundException;
import android.telephony.Rlog;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.util.LocalLog;

import com.android.internal.telephony.cdma.CDMALTEPhone;
import com.android.internal.telephony.cdma.CDMAPhone;
@@ -42,9 +43,11 @@ import com.android.internal.telephony.sip.SipPhone;
import com.android.internal.telephony.sip.SipPhoneFactory;
import com.android.internal.telephony.uicc.IccCardProxy;
import com.android.internal.telephony.uicc.UiccController;
import com.android.internal.util.IndentingPrintWriter;

import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.HashMap;

/**
 * {@hide}
@@ -74,6 +77,8 @@ public class PhoneFactory {
    static private PhoneNotifier sPhoneNotifier;
    static private Context sContext;

    static private final HashMap<String, LocalLog>sLocalLogs = new HashMap<String, LocalLog>();

    //***** Class Methods

    public static void makeDefaultPhones(Context context) {
@@ -412,6 +417,43 @@ public class PhoneFactory {
        return ImsPhoneFactory.makePhone(sContext, phoneNotifier, defaultPhone);
    }

    /**
     * Adds a local log category.
     *
     * Only used within the telephony process.  Use localLog to add log entries.
     *
     * TODO - is there a better way to do this?  Think about design when we have a minute.
     *
     * @param key the name of the category - will be the header in the service dump.
     * @param size the number of lines to maintain in this category
     */
    public static void addLocalLog(String key, int size) {
        synchronized(sLocalLogs) {
            if (sLocalLogs.containsKey(key)) {
                throw new IllegalArgumentException("key " + key + " already present");
            }
            sLocalLogs.put(key, new LocalLog(size));
        }
    }

    /**
     * Add a line to the named Local Log.
     *
     * This will appear in the TelephonyDebugService dump.
     *
     * @param key the name of the log category to put this in.  Must be created
     *            via addLocalLog.
     * @param log the string to add to the log.
     */
    public static void localLog(String key, String log) {
        synchronized(sLocalLogs) {
            if (sLocalLogs.containsKey(key) == false) {
                throw new IllegalArgumentException("key " + key + " not found");
            }
            sLocalLogs.get(key).log(log);
        }
    }

    public static void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
        pw.println("PhoneFactory:");
        PhoneProxy [] phones = (PhoneProxy[])PhoneFactory.getPhones();
@@ -468,5 +510,17 @@ public class PhoneFactory {
            e.printStackTrace();
        }
        pw.flush();

        pw.println("++++++++++++++++++++++++++++++++");
        synchronized (sLocalLogs) {
            final IndentingPrintWriter ipw = new IndentingPrintWriter(pw, "  ");
            for (String key : sLocalLogs.keySet()) {
                ipw.println(key);
                ipw.increaseIndent();
                sLocalLogs.get(key).dump(fd, ipw, args);
                ipw.decreaseIndent();
            }
            ipw.flush();
        }
    }
}