Add dumpsys handler for telephony

Overriding dump() in the binder is required to  make "dumpsys phone"
work. Currently only visual voicemail local log is dumped.

Bug: 29517754
Change-Id: I01f655940ca55915c0af1ff45a586a19f59ab5ef
diff --git a/src/com/android/phone/DumpsysHandler.java b/src/com/android/phone/DumpsysHandler.java
new file mode 100644
index 0000000..cf3bde2
--- /dev/null
+++ b/src/com/android/phone/DumpsysHandler.java
@@ -0,0 +1,18 @@
+
+package com.android.phone;
+
+import com.android.phone.vvm.omtp.LocalLogHelper;
+
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+
+/**
+ * Handles "adb shell dumpsys phone" and bug report dump.
+ */
+public class DumpsysHandler {
+
+    public static void dump(FileDescriptor fd, final PrintWriter writer, String[] args) {
+        // Dump OMTP visual voicemail log.
+        LocalLogHelper.dump(fd, writer, args);
+    }
+}
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 2ace8e1..ecefe24 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -85,6 +85,8 @@
 import com.android.internal.util.HexDump;
 import com.android.phone.settings.VoicemailNotificationSettingsUtil;
 
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -3289,4 +3291,12 @@
         }
     }
 
+    /**
+     * Called when "adb shell dumpsys phone" is invoked. Dump is also automatically invoked when a
+     * bug report is being generated.
+     */
+    @Override
+    protected void dump(FileDescriptor fd, final PrintWriter writer, String[] args) {
+        DumpsysHandler.dump(fd, writer, args);
+    }
 }
diff --git a/src/com/android/phone/vvm/omtp/LocalLogHelper.java b/src/com/android/phone/vvm/omtp/LocalLogHelper.java
index a3de74f..13a55c0 100644
--- a/src/com/android/phone/vvm/omtp/LocalLogHelper.java
+++ b/src/com/android/phone/vvm/omtp/LocalLogHelper.java
@@ -15,21 +15,31 @@
  */
 package com.android.phone.vvm.omtp;
 
-import com.android.internal.telephony.PhoneFactory;
+import android.util.LocalLog;
+
+import com.android.internal.util.IndentingPrintWriter;
+
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
 
 /**
- * Helper methods for adding to Telephony local logs.
+ * Helper methods for adding to OMTP visual voicemail local logs.
  */
 public class LocalLogHelper {
-    public static final String KEY = "OmtpVvm";
-    private static final int MAX_OMTP_VVM_LOGS = 20;
+
+    private static final int MAX_OMTP_VVM_LOGS = 100;
+
+    private static final LocalLog sLocalLog = new LocalLog(MAX_OMTP_VVM_LOGS);
 
     public static void log(String tag, String log) {
-        try {
-            PhoneFactory.addLocalLog(KEY, MAX_OMTP_VVM_LOGS);
-        } catch (IllegalArgumentException e){
-        } finally {
-            PhoneFactory.localLog(KEY, tag + ": " + log);
-        }
+        sLocalLog.log(tag + ": " + log);
+    }
+
+    public static void dump(FileDescriptor fd, PrintWriter printwriter, String[] args) {
+        IndentingPrintWriter indentingPrintWriter = new IndentingPrintWriter(printwriter, "  ");
+        indentingPrintWriter.println("OmtpVvm:");
+        indentingPrintWriter.increaseIndent();
+        sLocalLog.dump(fd, indentingPrintWriter, args);
+        indentingPrintWriter.decreaseIndent();
     }
 }