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

Commit f1c9d4ec authored by Yang Ren's avatar Yang Ren Committed by Android (Google) Code Review
Browse files

Merge "TIF: Add information of TvInputHardwareManager to dumpsys"

parents 5f08b3c0 ab47b753
Loading
Loading
Loading
Loading
+88 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.hardware.hdmi.HdmiControlManager;
import android.hardware.hdmi.HdmiDeviceInfo;
import android.hardware.hdmi.HdmiHotplugEvent;
@@ -45,6 +46,7 @@ import android.media.tv.ITvInputHardwareCallback;
import android.media.tv.TvInputHardwareInfo;
import android.media.tv.TvInputInfo;
import android.media.tv.TvStreamConfig;
import android.os.Binder;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
@@ -57,8 +59,11 @@ import android.util.SparseBooleanArray;
import android.view.KeyEvent;
import android.view.Surface;

import com.android.internal.util.IndentingPrintWriter;
import com.android.server.SystemService;

import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
@@ -549,6 +554,70 @@ class TvInputHardwareManager implements TvInputHal.Callback {
        return (float) mCurrentIndex / (float) mCurrentMaxIndex;
    }

    public void dump(FileDescriptor fd, final PrintWriter writer, String[] args) {
        final IndentingPrintWriter pw = new IndentingPrintWriter(writer, "  ");
        if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
                != PackageManager.PERMISSION_GRANTED) {
            pw.println("Permission Denial: can't dump TvInputHardwareManager from pid="
                    + Binder.getCallingPid() + ", uid=" + Binder.getCallingUid());
            return;
        }

        synchronized (mLock) {
            pw.println("TvInputHardwareManager Info:");
            pw.increaseIndent();
            pw.println("Connections Info:");
            pw.increaseIndent();
            for (int i = 0; i < mConnections.size(); i++) {
                int deviceId = mConnections.keyAt(i);
                Connection mConnection = mConnections.valueAt(i);
                pw.println("Connection (" + deviceId + "): " + mConnection);

            }
            pw.decreaseIndent();

            pw.println("HardwareList:");
            pw.increaseIndent();
            for (TvInputHardwareInfo tvInputHardwareInfo : mHardwareList) {
                pw.println(tvInputHardwareInfo);
            }
            pw.decreaseIndent();

            pw.println("HdmiDeviceList:");
            pw.increaseIndent();
            for (HdmiDeviceInfo hdmiDeviceInfo : mHdmiDeviceList) {
                pw.println(hdmiDeviceInfo);
            }
            pw.decreaseIndent();

            pw.println("HardwareInputMap: TvInputId-> DeviceId");
            pw.increaseIndent();
            for (int i = 0 ; i < mHardwareInputIdMap.size(); i++) {
                int deviceId = mHardwareInputIdMap.keyAt(i);
                String tvInputId = mHardwareInputIdMap.valueAt(i);
                pw.println(deviceId + ": " + tvInputId);
            }
            pw.decreaseIndent();

            pw.println("HdmiInputIdMap: TvInputId -> HDMI Address");
            pw.increaseIndent();
            for (int i = 0; i < mHdmiInputIdMap.size(); i++) {
                int hdmiAddress = mHdmiInputIdMap.keyAt(i);
                String tvInputId = mHdmiInputIdMap.valueAt(i);
                pw.println(hdmiAddress + ": " + tvInputId);
            }
            pw.decreaseIndent();

            pw.println("InputMap: inputId -> TvInputInfo");
            pw.increaseIndent();
            for(Map.Entry<String, TvInputInfo> entry : mInputMap.entrySet()) {
                pw.println(entry.getKey() + ": " + entry.getValue());
            }
            pw.decreaseIndent();
            pw.decreaseIndent();
        }
    }

    private class Connection implements IBinder.DeathRecipient {
        private final TvInputHardwareInfo mHardwareInfo;
        private TvInputInfo mInfo;
@@ -641,6 +710,25 @@ class TvInputHardwareManager implements TvInputHal.Callback {
                resetLocked(null, null, null, null, null);
            }
        }

        public String toString() {
            StringBuilder s = new StringBuilder();
            s.append("Connection {HardwareInfo: ").append(mHardwareInfo.toString()).append(" ");
            s.append("TvInputInfo: ").append(mInfo).append(" ");
            s.append("callback: ").append(mCallback).append(" ");
            if (mConfigs != null) {
                for (int i = 0; i < mConfigs.length; i++) {
                    s.append("Config[").append(i).append("]: ").append(mConfigs[i].toString())
                            .append(" ");
                }
            } else {
                s.append("Configs: ").append(mConfigs).append(" ");
            }
            s.append("CallingUid: ").append(mCallingUid).append(" ");
            s.append("ResolvedUserId: ").append(mResolvedUserId).append(" ");
            s.append("}");
            return s.toString();
        }
    }

    private class TvInputHardwareImpl extends ITvInputHardware.Stub {
+1 −0
Original line number Diff line number Diff line
@@ -1923,6 +1923,7 @@ public final class TvInputManagerService extends SystemService {
                    pw.decreaseIndent();
                }
            }
            mTvInputHardwareManager.dump(fd, writer, args);
        }
    }