Commit Graph

326 Commits

Author SHA1 Message Date
Philip P. Moltmann
278685d468 Merge "Remove forward matches before checking for default" into oc-dev am: d53cbfd0dc
am: ba8b3f05b6

Change-Id: Ic35779f6b6ad97dc1a6f83356dfa45e0d5b5f406
2017-05-12 20:29:15 +00:00
TreeHugger Robot
d53cbfd0dc Merge "Remove forward matches before checking for default" into oc-dev 2017-05-12 19:17:37 +00:00
TreeHugger Robot
81e8d4b340 Merge "Prevent multiple copies of android.hidl.manager-V1.0-java" into oc-dev 2017-05-12 19:07:41 +00:00
Philip P. Moltmann
0d78363a39 Remove forward matches before checking for default
A forward match is a intent-target (aka. match) that switches between the
personal and work profile's intent resolver.

This can be unnecessary if there are no work profile matches.

We need to remove these unnecessary matches early as the default activity
resolution code considers a system app as default _only_ if it is the only
match. Before there could still the an unnecessary forward match under
consideration.

Test: Connected USB accessory that only matches a system app on the personal
      profile.
      Before we showed a confirm-dialog, now we consider the system app
      as default and automatically launch it.
Fixes: 37530439

Change-Id: I7bc9b969fc0b9abae4d15dd3f268783d05b91f9a
2017-05-11 10:23:41 -07:00
Badhri Jagan Sridharan
e5bf826525 Prevent multiple copies of android.hidl.manager-V1.0-java
Link to android.hidl.manager-V1.0-java shared libraryto prevent
duplicate copies of the library present in process address
space.

Bug: 38036660
Test: Verified that the UsbService reports status of the ports through
dumpsys usb.
Change-Id: Ie3de4f9bbe28061e7cc464fa3cab2f6bd6fe6995
2017-05-10 07:27:24 -07:00
Philip P. Moltmann
16bcd7219d Merge "Merge "Fixes for handling users + default for USB" into oc-dev am: 5262ae9b87" into oc-dev-plus-aosp
am: bc535b11b6

Change-Id: I6e20b889abbb7d2c037d71c271a733e0639b3e1e
2017-05-10 02:32:54 +00:00
TreeHugger Robot
5262ae9b87 Merge "Fixes for handling users + default for USB" into oc-dev 2017-05-10 01:39:33 +00:00
Jerry Zhang
9507d70718 Merge "Always force set functions on disconnect" into oc-dev am: bf783e24cf
am: 4fdcb5d6fe

Change-Id: I8d7656a046fe2e649c73f4ad1505e9b7cf2625f0
2017-05-09 21:38:00 +00:00
Badhri Jagan Sridharan
6f286b270d Prevent multiple copies of android.hidl.manager-V1.0-java
Link to android.hidl.manager-V1.0-java shared library to prevent
duplicate copies of the library present in process address
space.

Bug: 38036660
Test: Verified that the UsbService reports status of the ports through
dumpsys usb.
Change-Id: Ie3de4f9bbe28061e7cc464fa3cab2f6bd6fe6995
2017-05-09 14:33:32 -07:00
Philip P. Moltmann
d4b09d4e16 Fixes for handling users + default for USB
Once a user plugs in a USB device (or accessory) the user can decide
which app should be started by default once the device is plugged in.
I.e. this app becomes the "default" for this USB device. If the user has
a work profile the default app is set for all profiles of the current
profile group (i.e. personal and work profile) as at any point in time
one profile group is visible on the screen.

There were some issues in the code:
- fix small obvious bugs

- use userPackage (==packageName + user) everywhere instead of only
  packageName as we have to distinguish between apps of different
  profiles.
- Stop accessing userPackage.packageName whereever possible to avoid
  mistakenly ignoring the user

- Monitor packages of all users and deal only with users of the current
  profile group.
- Do not react to package changes/updates/modifications. While it is
  possible that an app gained the ability to deal with new USB devices on
  update, we should not clear the default app for a default device. This
  is because (1) this situation is exceedingly rare and (2) we do not
  easily know when an app gained the ability to deal with a device. The
  user can still manually clear the USB default app via Settings.

- The old DeviceFilter.matches code did not make sense. An app that
  wanted to replace the previous default app would have needed to know
  the serial number of the device.

Test: - Searched for access to UserPackage.packageName and we only use it
        directly three times now. I checked these occurances and it is save
        to use.
      - Ran the following test
        - Install app that can handle a USB device in personal profile
	- make this app the default for this USB device
	- Install same app in work profile -> default was be cleared as
                                              it is not clear if the user
					      might prefer the other app
	- make the work app the default for this USB device
	- update non-work app -> default should not be cleared as the the
                                 update is usually not triggered by the
				 user and we should just keep the
				 selection the user made before
	- update work app -> App is already default
	- uninstall work app -> default should be cleared as the default
                                app was removed
Fixes: 36610004
Change-Id: I294b582c36228169ac12a02d8007a4541e386d57
2017-05-09 10:18:41 -07:00
Jerry Zhang
f706fe2f60 Always force set functions on disconnect
Functionfs no_disconnect mode will close the function on
disconnect so the current handling won't suffice for cases
where the mtp process is killed while MtpService is running.
This can happen when anything in Media/DownloadProvider ANRs
or similar.

Solve this by always setting the config at disconnect time.

Bug: 38010151
Test: Connect with MTP, am force-stop com.android.providers.media,
reconnect

Change-Id: Iaf012f6e2f11151f34d834efe08777dd02c0aec5
2017-05-08 15:17:17 -07:00
Badhri Jagan Sridharan
405ce17abb Notify the user when an unsupported accessory is attached
This CL pops up a notification to the user when the device does not
support Analog Type-C headphones but the user connects one.
i.e when the Usb port status reports currentMode=audio_acc, but
audio_acc is not present in the supportedModes list.

Bug: 36604276
Test: Manually test inserting an Audio accessory
Change-Id: If514b9f238da196a7157e1aacb6d7690fde66f21
2017-05-01 10:30:49 -07:00
Glenn Kasten
20137dc148 USB audio: increase protection of member fields
Replace public by private or package access in field declarations,
and add getters and setters as needed.

Test: compiles OK
Change-Id: Ief3fffb6a21d2e4d05153839f444617ea5e70846
2017-04-28 09:13:14 -07:00
Glenn Kasten
f9e6e70687 Merge "Add comments" 2017-04-27 16:33:17 +00:00
Julia Reynolds
d6247427ac Merge "Api updates" into oc-dev am: f84467e19f
am: 7ee513c27b

Change-Id: Iafbf2f2ca92b288de7bded40772cd15eca2012ee
2017-04-27 05:15:11 +00:00
TreeHugger Robot
f84467e19f Merge "Api updates" into oc-dev 2017-04-27 04:51:46 +00:00
Thierry Strudel
ece721f8cd Merge "Update UsbService to V1_1 usb hal" 2017-04-27 03:28:12 +00:00
Badhri Jagan Sridharan
ef4b303fc2 Update UsbService to V1_1 usb hal
This CL adapts Usb service to V1_1 hal.
V1_1 hal supports reporting audio_adapter accessory
and debug accessory.

Bug: 36604276
Test: Manually test inserting an Audio accessory.
Also tested to made sure that change is compatible with V1_0
implementations
Change-Id: I8e44f5e9ae14b0e41965e8d355c99ac42af93f23
2017-04-26 21:43:07 +00:00
Julia Reynolds
bad4297600 Api updates
- Better documentation on DEFAULT_CHANNEL_ID
- Renaming getChannel/setChannel/getTimeout/setTimeout
- Add documentation to getShortcutId
- @hide parcel constructors

Test: make, make cts
Bug: 37672218

Change-Id: I695b2620c51638a84930e9d1c5fbfd6d85699b55
2017-04-25 17:00:05 -04:00
Jerry Zhang
6f9dbb1203 Reorder USB_STATE updates so config_changed is not replaced.
Because of flag INTENT.ACTION_REPLACE_PENDING, intents
sent in rapid succession could replace previous intents
that have not been processed, and it is unreliable when
or whether this happens. Since CONFIG_CHANGED cannot afford
to be lost, make sure it is sent last, so it is always
processed.

Bug: 34873000
Test: lots of unplugging/plugging
Change-Id: I9264d5129139cf3f433bbcd068e8b292fec6cd31
2017-04-24 16:58:06 -07:00
Jerry Zhang
740ca0f9f0 Don't skip intents where config changed.
Since we are adding ffs.mtp.ready to the init
scripts, we can no longer skip intents that cause
that property to be set.

This fixes the case where device is disconnected
and adb is repeatedly enabled/disabled.

Test: enable/disable adb, usb mtp
Bug: 33220530
Change-Id: I48e687c1af3f9da9e522ebe879285877c0168da8
2017-04-24 14:46:32 -07:00
Jerry Zhang
768dd994f3 Reorder USB_STATE updates so config_changed is not replaced.
Because of flag INTENT.ACTION_REPLACE_PENDING, intents
sent in rapid succession could replace previous intents
that have not been processed, and it is unreliable when
or whether this happens. Since CONFIG_CHANGED cannot afford
to be lost, make sure it is sent last, so it is always
processed.

Bug: 34873000
Test: lots of unplugging/plugging
Change-Id: I9264d5129139cf3f433bbcd068e8b292fec6cd31
2017-04-24 12:40:41 -07:00
Jerry Zhang
58bffb24d7 Merge "Upgrade logging for UsbDeviceManager to narrow down bugs." into oc-dev am: 6d3747ebe2
am: 7f986ba87b

Change-Id: I45d4b1f7fbf9268206e0c90636f02bf0d3ae5d66
2017-04-22 01:45:19 +00:00
Jerry Zhang
c889b4f4eb Upgrade logging for UsbDeviceManager to narrow down bugs.
Will be reverted once bugs are caught.

Bug: 34873000
Test: None
Change-Id: Ia43e0ccb1c22c767c6ef3edbf04cef024662cd15
2017-04-21 16:22:13 -07:00
Jerry Zhang
2c284916d7 Merge "Only send HOST_STATE intents when host mode is used." into oc-dev am: a73f9f874a
am: bf51f836ae

Change-Id: Ie358c38f98d186ed0197248fcf82db2913cfe97d
2017-04-20 13:11:48 +00:00
Jerry Zhang
41ebde2bb3 Only send HOST_STATE intents when host mode is used.
Previously HOST_STATE update intents would broadcast if the
device was in gadget mode but not configured. This would
override the sticky intent, causing MtpReceiver to fail.

This is fixed by only updating host state if host is connected
or if host is being disconnected (was connected before).

Bug: 34873000
Test: set up lockscreen, reboot device while plugged in, unplug before
unlocking, verify usb works.

Change-Id: Ic424e678ba72401ee8ec975e915727272edf3767
2017-04-18 12:06:27 -07:00
Badhri Jagan Sridharan
82d49dfbef Repost USB and ADB notification when locale changes
Bug: 37266276
Test: Manually tested the language of active notifications after
switching language.

Change-Id: I0cef61fbd155e0c9789f52a140561c71969fbab7
2017-04-14 12:01:59 -07:00
Andreas Huber
f13eb2e0c7 Changed the naming scheme for Treble java libraries (both static and dynamic)
android.hardware.foo@1.0-java => android.hardware.foo-V1.0-java

Bug: 37207894
Test: make
Change-Id: Ica91a6813956f4ea99001c5f427be94865e48fde
Merged-In: I2d8912dc752f904188457c3e6dac10da1afd287a
2017-04-13 15:21:31 -07:00
Andreas Huber
4baa03b3c0 Changed the naming scheme for Treble java libraries (both static and dynamic)
android.hardware.foo@1.0-java => android.hardware.foo-V1.0-java

Bug: 37207894
Test: make
Change-Id: I2d8912dc752f904188457c3e6dac10da1afd287a
2017-04-13 14:27:10 -07:00
Glenn Kasten
19d6c7a9cd Add comments
Test: builds OK
Change-Id: I3745b04473d0a3878845708c9847001d936ba9b2
2017-04-13 11:32:59 -07:00
David Stevens
9a2b5e9828 Merge "Reset the default usb package less often" into oc-dev am: 1654143680
am: 8e40723876

Change-Id: I041f7fdaf689fde58f7853af075f708b30418201
2017-04-12 01:23:07 +00:00
David Stevens
1654143680 Merge "Reset the default usb package less often" into oc-dev 2017-04-12 00:12:15 +00:00
puma_hsu
6040887f78 Just broadcast intent to bring up MTP/PTP as soon as switching function
Bug: 36113457
Bug: 34451451
Test: Turn on tethering
Change-Id: I3a7ab6fdcd157740b8e55ded67b3d5dddf15b0e0
Signed-off-by: puma_hsu <puma_hsu@htc.com>
(cherry picked from commit 4b3e46c787)
2017-04-07 12:35:21 -07:00
David Stevens
f4a2e1df94 Reset the default usb package less often
This CL makes logic for resetting the default package for handling USB
intents less agressive (added in ag/101452). First, instead of listening
for package changed events, we now listen for package replaced
broadcasts. Second, we don't reset the default package if the app being
added/updated is already the default package.

Bug: 35491880
Test: Manually tested with a work profile
Change-Id: Id1992239b5d8ace87fefeb4acd6ca1031c3c1085
2017-04-06 22:51:05 -07:00
Badhri Jagan Sridharan
5227374951 Do not show Usb dialog for USB peripherals.
This CL prevents the USB Dialog to show for peripherals such as
keyboard, mouse, flash drives etc. Usb Dialog is redundant in these
cases as the Type-C stack is expected to manage power automatically
as these devices are most likely SNK devices.

Bug: 36141499
Test: Manually tested that USB dialog doesnt show up when
a keyboard or mouse is connected.

Change-Id: I3ee45f137817425bf9acd675b044a97d1cb91d7d
2017-04-05 17:13:34 -07:00
Badhri Jagan Sridharan
d81d8d854a Pass the right index to query the descriptors
Bug: 36897770
Test: Manually tested with headset jack plugged in.
Change-Id: Icd7a983423f3c8986404770a78e3904ee095e758
2017-04-04 15:46:37 -07:00
Badhri Jagan Sridharan
f63de8831f Merge "Do not display USB charging dialogue for AUDIO class devices" 2017-04-04 17:16:29 +00:00
Badhri Jagan Sridharan
7dee1a6347 Do not display USB charging dialogue for AUDIO class devices
The CL prevents the "Supplying power to the attached device"
notification from showing up when USB digital headphones are
connected. Although, the phone is actually powering the headphones
here, there seems to be an opinion that this might confuse the users.
So, disabling the notification for better user experience.

Also, the mode chooser activity might not be applicable here as
the headphones are not expected to be a dual role device in the
near future. When connected through a hub, the power management
of the Type-c link is expected to be managed by the Type-C stack
in the hub and phone's kernel. So user might not have to manage
the direction of power flow.

Bug: 36141499
Test: Manually tested that USB dialog doesnt show up when
digital usb headphones are connected but shows up otherwise.
Change-Id: I187da9c77e294cbbceb633365adbb4623fc14a3d
2017-04-03 17:24:08 -07:00
Philip P. Moltmann
7530670d33 Merge "Not send switch intents if there is no real intent" into oc-dev am: 82331f7f73
am: 09b5ec8ee1

Change-Id: I790378322f543762ef7fda0253e48259e9bf5d3e
2017-04-03 23:57:27 +00:00
Philip P. Moltmann
09b5ec8ee1 Merge "Not send switch intents if there is no real intent" into oc-dev
am: 82331f7f73

Change-Id: Ief39b33a90bbc6d9428006baccd6b293572d17f3
2017-04-03 23:51:02 +00:00
TreeHugger Robot
82331f7f73 Merge "Not send switch intents if there is no real intent" into oc-dev 2017-04-03 23:44:45 +00:00
Philip P. Moltmann
ebc8ee266c Not send switch intents if there is no real intent
When resolving activtities for the USB device/accessory connection UI a
special intent that allows to switch between profiles get added. This
also gets added if there is no activity in the secondary profile that
can be started.

Fixes: 36544815
Test: Added work profile. Add USB handling app only to personal profile
      and plugged in USB device -> no crash anymore

Change-Id: I311ddd53b3ff0c8406e62bac57972d4b790ebddc
2017-04-03 09:06:09 -07:00
Jeff Sharkey
558b0dd418 Consistent dump() permission checking. am: fe9a53bc45
am: 020de02854

Change-Id: Iffbf78a7b48cea41ed4b0763f2452738e084225c
2017-04-03 06:26:04 +00:00
Jeff Sharkey
020de02854 Consistent dump() permission checking.
am: fe9a53bc45

Change-Id: I300f8bc07e1266b9e78f56d085cd458862176a85
2017-04-03 06:19:02 +00:00
Jeff Sharkey
fe9a53bc45 Consistent dump() permission checking.
This change introduces new methods on DumpUtils that can check if the
caller has DUMP and/or PACKAGE_USAGE_STATS access.  It then moves all
existing dump() methods to use these checks so that we emit
consistent error messages.

Test: cts-tradefed run commandAndExit cts-dev -m CtsSecurityTestCases -t android.security.cts.ServicePermissionsTest
Bug: 32806790
Change-Id: Iaff6b9506818ee082b1e169c89ebe1001b3bfeca
2017-04-02 22:29:07 -06:00
TreeHugger Robot
1810e88e82 Merge "Persist the functions from the 3rd column in oemOverride" 2017-03-31 23:07:56 +00:00
Chris Wren
e04a449143 Merge "restore the title string un UsbDeviceManager" into oc-dev
am: b0db4017e5

Change-Id: Ia3610251a9fa31b179bee8b5bae21dc24c3bed65
2017-03-31 19:58:59 +00:00
Chris Wren
a71b5918b0 restore the title string un UsbDeviceManager
Bug: 32584866
Test: make
Change-Id: I4e4dea064a1af194db5660b0765cc4c4b666584a
2017-03-31 15:39:12 -04:00
Badhri Jagan Sridharan
31af86f8ed Persist the functions from the 3rd column in oemOverride
The oemOverrides were incorrectly persisted when adb was disabled.
This CL makes the functions in the 3rd column to be persisted.

Bug: 31947358
Test: Verify oemOverride
Change-Id: Iaef19f8ffd0c829a852a33778af96a6772d1c2ad
2017-03-31 11:02:59 -07:00
Chris Wren
72eb5da93b Merge "standardize system notification IDs" into oc-dev
am: 441162562b

Change-Id: Idb39af001fefa77b6899c3c9d8816532b5e54dea
2017-03-31 17:16:30 +00:00