OSDN Git Service

am 673ccfd4: Merge "UsbDeviceManager: add back support for USB overlays" into mnc-dev
authorNick Kralevich <nnk@google.com>
Tue, 21 Jul 2015 17:25:46 +0000 (17:25 +0000)
committerAndroid Git Automerger <android-git-automerger@android.com>
Tue, 21 Jul 2015 17:25:46 +0000 (17:25 +0000)
* commit '673ccfd45a81482d97eecf76dc0fef0dfd57be73':
  UsbDeviceManager: add back support for USB overlays

services/usb/java/com/android/server/usb/UsbDeviceManager.java

index 653cbd8..1787b91 100644 (file)
@@ -122,6 +122,8 @@ public class UsbDeviceManager {
     // Request is cancelled if host does not configure device within 10 seconds.
     private static final int ACCESSORY_REQUEST_TIMEOUT = 10 * 1000;
 
+    private static final String BOOT_MODE_PROPERTY = "ro.bootmode";
+
     private UsbHandler mHandler;
     private boolean mBootCompleted;
 
@@ -468,6 +470,7 @@ public class UsbDeviceManager {
                 functions = getDefaultFunctions();
             }
             functions = applyAdbFunction(functions);
+            functions = applyOemOverrideFunction(functions);
             functions = applyUserRestrictions(functions);
 
             if (!mCurrentFunctions.equals(functions) || !mCurrentFunctionsApplied
@@ -888,6 +891,24 @@ public class UsbDeviceManager {
         }
     }
 
+    private String applyOemOverrideFunction(String usbFunctions) {
+        if ((usbFunctions == null) || (mOemModeMap == null)) return usbFunctions;
+
+        String bootMode = SystemProperties.get(BOOT_MODE_PROPERTY, "unknown");
+
+        List<Pair<String, String>> overrides = mOemModeMap.get(bootMode);
+        if (overrides != null) {
+            for (Pair<String, String> pair: overrides) {
+                if (pair.first.equals(usbFunctions)) {
+                    Slog.d(TAG, "OEM USB override: " + pair.first + " ==> " + pair.second);
+                    return pair.second;
+                }
+            }
+        }
+        // return passed in functions as is.
+        return usbFunctions;
+    }
+
     public void allowUsbDebugging(boolean alwaysAllow, String publicKey) {
         if (mDebuggingManager != null) {
             mDebuggingManager.allowUsbDebugging(alwaysAllow, publicKey);