diff options
| author | Xin Li <delphij@google.com> | 2021-10-06 22:54:15 +0000 |
|---|---|---|
| committer | Xin Li <delphij@google.com> | 2021-10-06 22:54:15 +0000 |
| commit | 89d23e9569f95ca6c50451e51c81df4524b99ca9 (patch) | |
| tree | c2f876e790df9f3bf1faa6a1355bd5a516649c11 | |
| parent | e365ae93b18931a44014478c1ca30356de934d3b (diff) | |
| parent | 3d791e886925e506dc1446301a24dc8ae1c6610e (diff) | |
| download | platform_packages_services_Mtp-master.tar.gz platform_packages_services_Mtp-master.tar.bz2 platform_packages_services_Mtp-master.zip | |
Bug: 202323961
Merged-In: I3b3ef768bb004daf8222e4171b72b02bb76497ab
Change-Id: I8e55721c6f5a3e85af63ed0721ebefd72adf235d
| -rw-r--r-- | AndroidManifest.xml | 76 | ||||
| -rw-r--r-- | perf_tests/Android.bp | 2 | ||||
| -rw-r--r-- | perf_tests/AndroidTest.xml | 4 | ||||
| -rw-r--r-- | src/com/android/mtp/MtpManager.java | 28 | ||||
| -rw-r--r-- | tests/Android.bp | 1 | ||||
| -rw-r--r-- | tests/AndroidManifest.xml | 20 | ||||
| -rw-r--r-- | tests/AndroidTest.xml | 6 |
7 files changed, 84 insertions, 53 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index fc3b7cb..0647979 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1,65 +1,67 @@ <?xml version="1.0" encoding="utf-8"?> + <manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.android.mtp" - android:sharedUserId="android.media"> - <uses-feature android:name="android.hardware.usb.host" /> - <uses-permission android:name="android.permission.ACCESS_MTP" /> + package="com.android.mtp" + android:sharedUserId="android.media"> + <uses-feature android:name="android.hardware.usb.host"/> + <uses-permission android:name="android.permission.ACCESS_MTP"/> <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/> - <uses-permission android:name="android.permission.MANAGE_USB" /> - <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> - <uses-permission android:name="android.permission.MANAGE_USERS" /> - <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" /> - <uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" /> - <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" /> + <uses-permission android:name="android.permission.MANAGE_USB"/> + <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> + <uses-permission android:name="android.permission.MANAGE_USERS"/> + <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS"/> + <uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE"/> + <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/> - <application - android:process="android.process.media" - android:label="@string/app_label" - android:allowBackup="false" - android:usesCleartextTraffic="true"> - <provider - android:name=".MtpDocumentsProvider" - android:authorities="com.android.mtp.documents" - android:grantUriPermissions="true" - android:exported="true" - android:permission="android.permission.MANAGE_DOCUMENTS"> + <application android:process="android.process.media" + android:label="@string/app_label" + android:allowBackup="false" + android:usesCleartextTraffic="true"> + <provider android:name=".MtpDocumentsProvider" + android:authorities="com.android.mtp.documents" + android:grantUriPermissions="true" + android:exported="true" + android:permission="android.permission.MANAGE_DOCUMENTS"> <intent-filter> - <action android:name="android.content.action.DOCUMENTS_PROVIDER" /> + <action android:name="android.content.action.DOCUMENTS_PROVIDER"/> </intent-filter> </provider> - <service android:name=".MtpDocumentsService" /> + <service android:name=".MtpDocumentsService"/> <activity android:name=".ReceiverActivity" - android:label="@string/downloads_app_label" - android:icon="@mipmap/ic_launcher_download" - android:theme="@android:style/Theme.NoDisplay" - android:excludeFromRecents="true"> + android:label="@string/downloads_app_label" + android:icon="@mipmap/ic_launcher_download" + android:theme="@android:style/Theme.NoDisplay" + android:excludeFromRecents="true" + android:exported="true"> <intent-filter> - <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" /> + <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"/> </intent-filter> <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" - android:resource="@xml/device_filter" /> + android:resource="@xml/device_filter"/> </activity> - <receiver android:name=".UsbIntentReceiver" android:exported="true"> + <receiver android:name=".UsbIntentReceiver" + android:exported="true"> <intent-filter> - <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" /> - <action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" /> + <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"/> + <action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED"/> </intent-filter> <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" - android:resource="@xml/device_filter" /> + android:resource="@xml/device_filter"/> </receiver> - <receiver android:name=".MtpReceiver"> + <receiver android:name=".MtpReceiver" + android:exported="true"> <intent-filter> - <action android:name="android.intent.action.BOOT_COMPLETED" /> + <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> <intent-filter> - <action android:name="android.hardware.usb.action.USB_STATE" /> + <action android:name="android.hardware.usb.action.USB_STATE"/> </intent-filter> </receiver> - <service android:name="MtpService" /> + <service android:name="MtpService"/> </application> </manifest> diff --git a/perf_tests/Android.bp b/perf_tests/Android.bp index e25a0ca..a49949a 100644 --- a/perf_tests/Android.bp +++ b/perf_tests/Android.bp @@ -1,5 +1,4 @@ package { - // See: http://go/android-license-faq default_applicable_licenses: ["Android-Apache-2.0"], } @@ -11,4 +10,5 @@ android_test { instrumentation_for: "MtpService", certificate: "media", test_suites: ["device-tests"], + } diff --git a/perf_tests/AndroidTest.xml b/perf_tests/AndroidTest.xml index 8b7292b..8d1b349 100644 --- a/perf_tests/AndroidTest.xml +++ b/perf_tests/AndroidTest.xml @@ -13,12 +13,12 @@ See the License for the specific language governing permissions and limitations under the License. --> -<configuration description="Runs MtpDocumentsProviderPerfTests metric instrumentation."> +<configuration description="Runs MtpServicePerfTests metric instrumentation."> <option name="test-suite-tag" value="apct" /> <option name="test-suite-tag" value="apct-metric-instrumentation" /> <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller"> <option name="cleanup-apks" value="true" /> - <option name="test-file-name" value="MtpDocumentsProviderPerfTests.apk" /> + <option name="test-file-name" value="MtpServicePerfTests.apk" /> </target_preparer> <test class="com.android.tradefed.testtype.AndroidJUnitTest" > diff --git a/src/com/android/mtp/MtpManager.java b/src/com/android/mtp/MtpManager.java index a7de631..6b211e4 100644 --- a/src/com/android/mtp/MtpManager.java +++ b/src/com/android/mtp/MtpManager.java @@ -29,6 +29,7 @@ import android.mtp.MtpDeviceInfo; import android.mtp.MtpEvent; import android.mtp.MtpObjectInfo; import android.mtp.MtpStorageInfo; +import android.os.Build; import android.os.CancellationSignal; import android.os.ParcelFileDescriptor; import android.util.Log; @@ -108,6 +109,9 @@ class MtpManager { "Not found MTP storages in the device."); mDevices.put(deviceId, device); + + setInitVersion(rawDevice); + return createDeviceRecord(rawDevice); } @@ -263,6 +267,28 @@ class MtpManager { } } + private void setInitVersion(UsbDevice device) { + final MtpDevice mtpDevice = mDevices.get(device.getDeviceId()); + final boolean opened = mtpDevice != null; + final String name = device.getProductName(); + int[] devicePropertySupported = null; + + if (opened) { + final MtpDeviceInfo info = mtpDevice.getDeviceInfo(); + + if (info != null) { + devicePropertySupported = info.getDevicePropertySupported(); + + if (MtpDeviceRecord.isSupported(devicePropertySupported, + MtpConstants.DEVICE_PROPERTY_SESSION_INITIATOR_VERSION_INFO)) { + mtpDevice.setDevicePropertyInitVersion("Android/" + + Build.VERSION.RELEASE + + " Build/" + Build.VERSION.INCREMENTAL); + } + } + } + } + private MtpDeviceRecord createDeviceRecord(UsbDevice device) { final MtpDevice mtpDevice = mDevices.get(device.getDeviceId()); final boolean opened = mtpDevice != null; @@ -270,6 +296,8 @@ class MtpManager { MtpRoot[] roots; int[] operationsSupported = null; int[] eventsSupported = null; + int[] devicePropertySupported = null; + if (opened) { try { roots = getRoots(device.getDeviceId()); diff --git a/tests/Android.bp b/tests/Android.bp index 6278272..1d96b6e 100644 --- a/tests/Android.bp +++ b/tests/Android.bp @@ -1,5 +1,4 @@ package { - // See: http://go/android-license-faq default_applicable_licenses: ["Android-Apache-2.0"], } diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml index e1307e9..a064e50 100644 --- a/tests/AndroidManifest.xml +++ b/tests/AndroidManifest.xml @@ -1,21 +1,23 @@ <?xml version="1.0" encoding="utf-8"?> + <manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.android.mtp.tests" - android:sharedUserId="android.media"> + package="com.android.mtp.tests" + android:sharedUserId="android.media"> <application> - <uses-library android:name="android.test.runner" /> + <uses-library android:name="android.test.runner"/> <activity android:name="com.android.mtp.TestResultActivity" - android:screenOrientation="locked" - android:launchMode="singleInstance"> + android:screenOrientation="locked" + android:launchMode="singleInstance" + android:exported="true"> <intent-filter> - <action android:name="android.intent.action.MAIN" /> - <category android:name="android.intent.category.LAUNCHER" /> + <action android:name="android.intent.action.MAIN"/> + <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> <instrumentation android:name="com.android.mtp.TestResultInstrumentation" - android:targetPackage="com.android.mtp" - android:label="Tests for MtpDocumentsProvider with the UI for output." /> + android:targetPackage="com.android.mtp" + android:label="Tests for MtpDocumentsProvider with the UI for output."/> </manifest> diff --git a/tests/AndroidTest.xml b/tests/AndroidTest.xml index f84131c..83b287a 100644 --- a/tests/AndroidTest.xml +++ b/tests/AndroidTest.xml @@ -13,13 +13,13 @@ See the License for the specific language governing permissions and limitations under the License. --> -<configuration description="Runs Tests for MtpDocumentsProvider with the UI for output."> +<configuration description="Runs Tests for MtpService with the UI for output."> <target_preparer class="com.android.tradefed.targetprep.TestAppInstallSetup"> - <option name="test-file-name" value="MtpDocumentsProviderTests.apk" /> + <option name="test-file-name" value="MtpServiceTests.apk" /> </target_preparer> <option name="test-suite-tag" value="apct" /> - <option name="test-tag" value="MtpDocumentsProviderTests" /> + <option name="test-tag" value="MtpServiceTests" /> <test class="com.android.tradefed.testtype.InstrumentationTest" > <option name="package" value="com.android.mtp.tests" /> <option name="runner" value="com.android.mtp.TestResultInstrumentation" /> |
