Merge changes I075a54dc,I0a9bc7c3

* changes:
  Add user visible name for USB peripheral MIDI device
  Add MidiDeviceInfo.getPortList()
diff --git a/api/current.txt b/api/current.txt
index 26ac1a7..9713b3c 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -16790,9 +16790,8 @@
     method public int describeContents();
     method public int getId();
     method public int getInputPortCount();
-    method public android.media.midi.MidiDeviceInfo.PortInfo getInputPortInfo(int);
     method public int getOutputPortCount();
-    method public android.media.midi.MidiDeviceInfo.PortInfo getOutputPortInfo(int);
+    method public android.media.midi.MidiDeviceInfo.PortInfo[] getPortList();
     method public android.os.Bundle getProperties();
     method public int getType();
     method public boolean isPrivate();
diff --git a/api/system-current.txt b/api/system-current.txt
index 37e6db5..18b7091 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -18066,9 +18066,8 @@
     method public int describeContents();
     method public int getId();
     method public int getInputPortCount();
-    method public android.media.midi.MidiDeviceInfo.PortInfo getInputPortInfo(int);
     method public int getOutputPortCount();
-    method public android.media.midi.MidiDeviceInfo.PortInfo getOutputPortInfo(int);
+    method public android.media.midi.MidiDeviceInfo.PortInfo[] getPortList();
     method public android.os.Bundle getProperties();
     method public int getType();
     method public boolean isPrivate();
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 4285ea1..578aa45 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -5235,10 +5235,12 @@
     <string name="stk_cc_ss_to_ussd">SS request is modified to USSD request.</string>
     <string name="stk_cc_ss_to_ss">SS request is modified to new SS request.</string>
 
+    <!-- User visible name for USB MIDI Peripheral port -->
+    <string name="usb_midi_peripheral_name">Android USB Peripheral Port</string>
     <!-- Manufacturer name for USB MIDI Peripheral port -->
     <string name="usb_midi_peripheral_manufacturer_name">Android</string>
-    <!-- Model name for USB MIDI Peripheral port -->
-    <string name="usb_midi_peripheral_model_name">USB Peripheral Port</string>
+    <!-- Product name for USB MIDI Peripheral port -->
+    <string name="usb_midi_peripheral_product_name">USB Peripheral Port</string>
 
     <!-- Floating toolbar strings -->
     <!-- Content description for the button that opens the floating toolbar overflow. [CHAR LIMIT=NONE] -->
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 54eb8f9..42d187d 100755
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -2181,8 +2181,9 @@
   <java-symbol type="bool" name="config_LTE_eri_for_network_name" />
   <java-symbol type="bool" name="config_defaultInTouchMode" />
 
+  <java-symbol type="string" name="usb_midi_peripheral_name" />
   <java-symbol type="string" name="usb_midi_peripheral_manufacturer_name" />
-  <java-symbol type="string" name="usb_midi_peripheral_model_name" />
+  <java-symbol type="string" name="usb_midi_peripheral_product_name" />
 
   <java-symbol type="bool" name="allow_stacked_button_bar" />
   <java-symbol type="id" name="spacer" />
diff --git a/media/java/android/media/midi/MidiDeviceInfo.java b/media/java/android/media/midi/MidiDeviceInfo.java
index 7201e25..af108eb 100644
--- a/media/java/android/media/midi/MidiDeviceInfo.java
+++ b/media/java/android/media/midi/MidiDeviceInfo.java
@@ -237,29 +237,23 @@
     }
 
     /**
-     * Returns information about an input port.
+     * Returns information about the device's ports.
+     * The ports are in unspecified order.
      *
-     * @param portNumber the number of the input port
-     * @return the input port's information object
+     * @return array of {@link PortInfo}
      */
-    public PortInfo getInputPortInfo(int portNumber) {
-        if (portNumber < 0 || portNumber >= mInputPortCount) {
-            throw new IllegalArgumentException("portNumber out of range");
-        }
-        return new PortInfo(PortInfo.TYPE_INPUT, portNumber, mInputPortNames[portNumber]);
-    }
+    public PortInfo[] getPortList() {
+        PortInfo[] portInfoList = new PortInfo[mInputPortCount + mOutputPortCount];
 
-    /**
-     * Returns information about an output port.
-     *
-     * @param portNumber the number of the output port
-     * @return the output port's information object
-     */
-    public PortInfo getOutputPortInfo(int portNumber) {
-        if (portNumber < 0 || portNumber >= mOutputPortCount) {
-            throw new IllegalArgumentException("portNumber out of range");
+        int index = 0;
+        for (int i = 0; i < mInputPortCount; i++) {
+            portInfoList[index++] = new PortInfo(PortInfo.TYPE_INPUT, i, mInputPortNames[i]);
         }
-        return new PortInfo(PortInfo.TYPE_OUTPUT, portNumber, mOutputPortNames[portNumber]);
+        for (int i = 0; i < mOutputPortCount; i++) {
+            portInfoList[index++] = new PortInfo(PortInfo.TYPE_OUTPUT, i, mOutputPortNames[i]);
+        }
+
+        return portInfoList;
     }
 
     /**
diff --git a/media/java/android/media/midi/MidiDeviceService.java b/media/java/android/media/midi/MidiDeviceService.java
index 8b1de3e..ce12a4f 100644
--- a/media/java/android/media/midi/MidiDeviceService.java
+++ b/media/java/android/media/midi/MidiDeviceService.java
@@ -91,7 +91,7 @@
     /**
      * Returns an array of {@link MidiReceiver} for the device's input ports.
      * Subclasses must override this to provide the receivers which will receive
-     * data sent to the device's input ports. An empty array or null should be returned if
+     * data sent to the device's input ports. An empty array should be returned if
      * the device has no input ports.
      * @return array of MidiReceivers
      */
diff --git a/services/usb/java/com/android/server/usb/UsbAlsaManager.java b/services/usb/java/com/android/server/usb/UsbAlsaManager.java
index 2728af1..8f0c6c8 100644
--- a/services/usb/java/com/android/server/usb/UsbAlsaManager.java
+++ b/services/usb/java/com/android/server/usb/UsbAlsaManager.java
@@ -469,10 +469,12 @@
         if (enabled && mPeripheralMidiDevice == null) {
             Bundle properties = new Bundle();
             Resources r = mContext.getResources();
+            properties.putString(MidiDeviceInfo.PROPERTY_NAME, r.getString(
+                    com.android.internal.R.string.usb_midi_peripheral_name));
             properties.putString(MidiDeviceInfo.PROPERTY_MANUFACTURER, r.getString(
                     com.android.internal.R.string.usb_midi_peripheral_manufacturer_name));
             properties.putString(MidiDeviceInfo.PROPERTY_PRODUCT, r.getString(
-                    com.android.internal.R.string.usb_midi_peripheral_model_name));
+                    com.android.internal.R.string.usb_midi_peripheral_product_name));
             properties.putInt(MidiDeviceInfo.PROPERTY_ALSA_CARD, card);
             properties.putInt(MidiDeviceInfo.PROPERTY_ALSA_DEVICE, device);
             mPeripheralMidiDevice = UsbMidiDevice.create(mContext, properties, card, device);