Commit Graph

707 Commits

Author SHA1 Message Date
Pavlin Radoslavov
ddf48e3962 Add Settings support for Bluetooth Multi-A2DP and Multi-HFP
Test: Code compilation
Bug: 64767509

[NOTE: The cherry-pick removed changes to non-existent code and log
message description that doesn't apply here.]

Change-Id: Iee76286110ed87703d6a968f50273c22cd7c7086
Merged-In: Iee76286110ed87703d6a968f50273c22cd7c7086
(cherry picked from commit 4b796e5d2e)
2018-01-26 11:16:23 -08:00
Hemant Gupta
13197bcc1e Bluetooth: Add support for PBAP UI preference
Usecase:
1) Connect with carkit that supports PBAP/MAP
2) Try to uncheck the checkbox for contact sharing from device sub
   settings menu

Expected Result:
1) DUT should display "Connected (No Media or Phone)"
1) Should be able to disconnect when checkbox moves from selected->unselected,
and carkit should be able to connect when checkbox is selected again

Observation:
1) No UI updates when PBAP/MAP are connected.
2) On unchecking Contact sharing checkbox nothing happens. PBAP connection
   remains active and user is not asked to disconnect profile level connection.

Fix:
Add support for PBAP UI preference in SettingsLib. Also Fix issues related to MAP
profile addition/removal.
Test: Connect from carkit, try disconnecting from sub settings menu by unchecking
Contact Sharing checkbox and check if PBAP is successfully disconnected.

Bug: 35014213
Change-Id: I4981aa063b2541b58ce1d36e3576578cbeb02acc
2017-12-07 09:31:03 +05:30
Hemant Gupta
a84a535729 Merge "Bluetooth: Give PBAP permission only if device is AUDIO_VIDEO_HANDSFREE"
am: b21a10b2ff

Change-Id: Id0378b1c410afcc0566652e3308cd812dcd68470
2017-11-30 17:40:31 +00:00
Hemant Gupta
5b84cfae44 Bluetooth: Give PBAP permission only if device is AUDIO_VIDEO_HANDSFREE
Step by step:
1. Pair and connect with BTHS (e.g. SBH50).
2. Click the settings icon of paired device, and check "Use for" items.
-----------------------------------------------------------------
Expected Result:
After step 2, "Contact sharing" should not be checked.

Actual Result:
After step 2, "Contact sharing" is checked.

Fix:
Set phone book permission as REJECTED if class of Device is
not AUDIO_VIDEO_HANDSFREE

Test: Checked above usecase and issue is not observed

Bug: 64372703
Change-Id: I178a09dd9e76d67c461c4b04d9b2ee0078ed24c9
2017-11-29 20:37:05 +00:00
jackqdyulei
e6f052e928 Merge "Add owners to setting packages."
am: f82cd59476

Change-Id: Ic7c94f6ba65149cdc799332a0cc5976ff285f16f
2017-11-21 16:41:50 +00:00
jackqdyulei
d6a00cfa3f Add owners to setting packages.
Bug: 65294119
Fixes: 69384604
Test: Build

Change-Id: Ib4fddc1f04087671d8445fd967d4262287e5c4f3
Merged-In: I927052a73f639d0894600611cd5c79293f43ff5e
Merged-In: Ia1eb8155f2d4359d56b0babd474083295ba38a0b
Merged-In: I24ec103ff5013ad416e3dfb1c548acd387b4ba64
Merged-In: If9fddc8b4e2e6d4d7db185ab16063e824323b9a7
Merged-In: I49159950521a013422b1087ea2c3e6cd5151457c
Merged-In: I69af58183c5b89af96c1a8808665fa506a620012
Merged-In: Ie9492f497824cd2b2727dde9d3a48452c72f1084
Merged-In: I2fd0249fd8b555e5ca93c3aec13857e6c74e157c
Merged-In: Id1c2d9233643a18c1e104255a9e2b8b1aaefc44e
Merged-In: Icdcfaaf6cc7a1e1cf77e89a79d0425cab4405ffc
Merged-In: I697528ff260a0f8e54aa1188e35143e668800e7d
Merged-In: I1486782f476acaf1e2e4b66df57869409239986f
Merged-In: I804b50a38c877da80b5ef3251e16029259014152
Merged-In: I39eec9ebc1db2dc14669f27b17624394e25eb47f
Merged-In: I054a6df08046cda1c2f202390ed24839a6b10349
Merged-In: I9da5bd71ed6aa3922a7f2e2ac4729e3247a204ce
Merged-In: I63778c68f1ab9edc36a9e12aa1729f8fd6a5e073
2017-11-20 16:39:59 -08:00
Jack He
1197438540 Bluetooth: remove unnecessary state tracking in BluetoothSummaryUpdater
am: ac040e3b1f

Change-Id: I13a2bd7e40a94773fc0afe37d71d7ba60e2b625b
2017-09-20 21:43:24 +00:00
Jack He
ac040e3b1f Bluetooth: remove unnecessary state tracking in BluetoothSummaryUpdater
* LocalBluetoothAdapter is already a cache of BluetoothAdapter and its
  methods should be used directly to obtain states instead of caching them
  in BluetoothSummaryUpdater
    - Use LocalBluetoothAdapter.isEnabled() to check whether Bluetooth
      is enabled
    - Use LocalBluetoothAdapter.getBondedDevices() to get list of bonded
      devices
* BluetoothDevice is a stable Bluetooth API and its methods should not
  incur large latency. We should use API methods as much as possible to
  avoid intermediate wrappers
    - Use BluetoothDevice.isConnected() to check if a device is connected
* Add more logging messages in error conditions
* Show status as "Not Connected" when there is a state mismatch (i.e.
  adapter says it is connected, but no bonded device is connected)
* Updated unit tests to reflect the latest behavior

Bug: 65591907
Test: make, unit test, pair with Bluetooth devices, check Settings UI
Change-Id: I0fa54959c8bed8ac67a935f150785ba8197d0411
2017-09-20 11:35:19 -07:00
Lei Yu
e01900d9c5 Merge "Update the bluetooth battery icon" into oc-mr1-dev
am: 04ba0f5067

Change-Id: Ibc55937908be092c78ddac484226187276e87ee2
2017-09-14 21:40:26 +00:00
Lei Yu
04ba0f5067 Merge "Update the bluetooth battery icon" into oc-mr1-dev 2017-09-14 21:31:13 +00:00
jackqdyulei
2c6a016b10 Update the bluetooth battery icon
In ag/2863892, we add a new parameter to tune the size of battery icon.
This cl use this parameter and update the icon in bluetooth detail page.

Bug: 65397557
Test: RunSettingsLibRoboTests & Screenshots
Change-Id: I6dd26f14b3209101dd39320b3720fbd4f79acf54
2017-09-14 10:34:30 -07:00
Jack He
d9de1ecc03 Bluetooth: add metrics for pairing with devices without names
am: 5b017f7b05

Change-Id: If74bd132ee1352888a7f9513444e998537f11145
2017-09-07 23:25:43 +00:00
Jack He
5b017f7b05 Bluetooth: add metrics for pairing with devices without names
* Also caches context in onClick() method

Bug: 34685932
Test: make, unit test
Change-Id: I99beab2c85b8e48c4bc41f69146759d4b7c62428
2017-09-07 12:09:00 -07:00
Antony Sargent
f92f6c24f1 Merge "Fix Bluetooth switch status in Connected devices screen" into oc-mr1-dev
am: c3b47925e3

Change-Id: I7c9a07543340992e8bd3ff15538d74d28a1aab22
2017-09-06 16:53:28 +00:00
Antony Sargent
c3b47925e3 Merge "Fix Bluetooth switch status in Connected devices screen" into oc-mr1-dev 2017-09-06 16:42:41 +00:00
Antony Sargent
c626fcc028 Fix Bluetooth switch status in Connected devices screen
The symptom observed is that the Bluetooth master switch on the
Connected devices page doesn't properly respond to Bluetooth turning off
via quicksettings - either turning on airplane mode or just toggling
Bluetooth.

The root cause was that MasterSwitchPreference's isChecked method would
not return the true value of whether the switch was checked - if the
control is disabled, it always just returns false. This interacts badly
with code in BluetoothEnabler - we disable the switch when the Bluetooth
state is in transition (eg becomes STATE_TURNING_OFF), and we also
attempt to avoid calling setChecked if the switch is already in the
desired state. So the switch would be checked but disabled, and we'd
avoid ever calling setChecked(false) on it.

A thorough fix would be to remove the code from MasterSwitchPreference's
isChecked method that looks at the enabled state, since enabled and
checked really should be treated as separate concerns. But given the
timeframe of MR1, we're opting for a more conservative fix of directly
accessing the switch and checking it's state, to avoid introducing bugs
in other consumers that might be depending on the current
behavior. We'll then do the thorough fix on the master branch which will
give a lot more time for any unexpected issues to be found (I audited
other usages and none seemed likely to be a problem, but it's better to
be safe than sorry).

Change-Id: I19a6c6b71e74595be3ef32a9718a430b67a89d53
Bug: 64940731
Test: make RunSettingsRoboTests
2017-09-05 17:10:30 +00:00
Jack He
4dddaf18e1 Merge "Bluetooth: do not dimiss fragment when Activity.finish() is called" into oc-mr1-dev
am: bf66bf30b1

Change-Id: Id5f413c21eb39e540d2417f9c19b7553f57d6b6a
2017-08-31 19:25:33 +00:00
Jack He
6108d6c22e Bluetooth: do not dimiss fragment when Activity.finish() is called
* When Activity.finish() is called, it's associtated fragments are all
  dismissed automatically
* Cached used fragments are dimissed in onCreate() before new ones are
  created

Bug: 62230203
Test: Pair with Bluetooth device, Settings unit tests
Change-Id: Ieca88ba0660c5407f0d88d572d06a722c642ac39
2017-08-30 18:44:39 -07:00
Jack He
7a6aadce4b Bluetooth: Only show devices when their names are resolved
am: 19ba320263

Change-Id: I23300ac9541f88b3aeb978be0771e93b85fe834f
2017-08-26 02:51:48 +00:00
Jack He
19ba320263 Bluetooth: Only show devices when their names are resolved
* Add a developer menu option to allow name-less devices to be shown
  when a Bluetooth developer needs it, but hide it for non-developer
  users.
* Set BluetoothDevicePreference to invisible when CachedBluetoothDevice
  does not have a name besides MAC address and the above developer option
  is false.
* This affects BluetoothPairingDetail and DevicePickerFragment, but does
  not affect BluetoothSettings. BluetoothSettings will show all paired
  devices regardless whether an user friendly name exists.

Bug: 34685932
Test: pair Bluetooth device, send file over Bluetooth, unit tests
Change-Id: Idd7ad4b1671dfdcf3204efb50eddb6dae1065aa5
2017-08-25 16:27:30 -07:00
jackqdyulei
c26876ade7 Merge "Add battery indicator to bluetooth icon" into oc-mr1-dev
am: 77bd8c3a73

Change-Id: I36f5729dd042c88c9f8d6a2d4abf720a05748246
2017-08-25 18:37:53 +00:00
jackqdyulei
7661137981 Add battery indicator to bluetooth icon
This cl change util method in bluetooth package to return
drawable instead of resId.

If the bt device has battery level, then method return customized
layerDrawable, otherwise return a simple drawable created from
resId.

Bug: 63393322
Test: RunSettingsRoboTests

Change-Id: Ib21822eafda0e8570212ce5cb070478e4f4876a2
Merged-In: Ib21822eafda0e8570212ce5cb070478e4f4876a2
2017-08-24 16:53:01 -07:00
Antony Sargent
811b25ac2b Merge "Fix rotation bug in Bluetooth pairing PIN dialog" into oc-mr1-dev
am: 53a77a2452

Change-Id: I5d750adc4623eacf704a12577b34f3434108b28f
2017-08-17 01:22:27 +00:00
Antony Sargent
563c4a6557 Fix rotation bug in Bluetooth pairing PIN dialog
BluetoothPairingDialogFragment has code that makes the OK button on the
dialog disabled until the user has entered at least one character into
the PIN field. However it didn't properly handle the case where the user
had entered some text and then rotated the screen - because it always
marked the OK button as disabled during onShow even if it already had
some content. This CL fixes that by looking at the text content and only
disabling the OK button if the content is empty.

Bug: 36514895
Test: make RunSettingsRoboTests
Change-Id: I4e8e70089a862e67b20ff614bbaa64fc2b641fd4
2017-08-16 15:19:47 -07:00
Antony Sargent
d9456d807b Merge "Stay discoverable in Bluetooth settings and pairing pages" into oc-dr1-dev am: 49cd8f2327
am: 0fe460a8e3

Change-Id: I000eba2d8266b3d86f08c336f4ae3217ae48b8ac
2017-08-10 07:28:51 +00:00
Antony Sargent
8cd8519eab Merge "Stay discoverable in Bluetooth settings and pairing pages" into oc-dr1-dev
am: 49cd8f2327

Change-Id: I4b8989fd95405bfeb7ada518b0ce2f76dec5cdb3
2017-08-10 07:25:53 +00:00
Antony Sargent
0fe460a8e3 Merge "Stay discoverable in Bluetooth settings and pairing pages" into oc-dr1-dev
am: 49cd8f2327

Change-Id: I02c6056ab8efb238cb8ba97ea4d4ea6de247c13d
2017-08-10 07:25:52 +00:00
Antony Sargent
c86440538f Stay discoverable in Bluetooth settings and pairing pages
There are two problems with the Bluetooth settings and pairing pages
that are fixed by this CL:

(1) We advertise on the page that the local device is visible to other
devices, but that only lasts for the length of the default timeout (120
seconds) for the local adapter being in discoverable mode.

(2) Both the BluetoothSettings and BluetoothPairingDetail fragments
enter discoverable mode in their onStart handler and exit it in their
onStop handler. Unfortunately when doing a fragment navigation the
onStart and onStop events interleave in a non-intuitive manner. When you
go from BluetoothSettings to BluetoothPairingDetail, we see the onStop
event for BluetoothSettings *after* the onStart event for
BluetoothPairingDetail, and similarly when going back from
BluetoothSettings to BluetoothPairingDetail. What this means in practice
is that if you go to the BluetoothSettings page, the device will be
discoverable, but once you navigate to BluetoothPairingDetail or back
again you won't be discoverable again until you go somewhere else or end
the settings activity.

This CL adds a new object called AlwaysDiscoverable which can be used to
start and stop a mode of "always being discoverable". While started, it
will listen for changes to the discoverable state, and return to
discoverable mode. This fixes (1) by returning to discoverable mode
whenever the normal timeout expires, and (2) similary by returning to
discoverable mode when we accidentally exit it due to the onStop/onStart
mismatch.

A better fix for (2) would be to avoid the "glitch" of briefly exiting
discoverable mode only to re-enter it, but the implementation of that is
a little more complicated so that's being left as future work in order
to keep this CL as small as possible.

Bug: 64130265
Test: make RunSettingsRoboTests
Change-Id: I559dd8187263ea6a0008be1a8abdfffac97cb87a
2017-08-09 22:10:40 -07:00
mingliang.x.lei
cc6b8a868d Merge "Fix memory leak in Bluetooth settings" am: 5a652c0286 am: 8d3bb3e2ad am: c46b5e60b9
am: 8ba28798aa

Change-Id: Ib0f0e1d0ec3bbcf2223e5609bc6218f0c360a5cb
2017-08-10 00:06:32 +00:00
mingliang.x.lei
8ba28798aa Merge "Fix memory leak in Bluetooth settings" am: 5a652c0286 am: 8d3bb3e2ad
am: c46b5e60b9

Change-Id: I1c8766701e83c9354bebf6554742c24756de7117
2017-08-09 18:53:07 +00:00
mingliang.x.lei
8d3bb3e2ad Merge "Fix memory leak in Bluetooth settings"
am: 5a652c0286

Change-Id: Ica95ac1bed6dbbc305315a32c1c9a92bb83d4574
2017-08-09 18:34:07 +00:00
Julia Reynolds
fabe766958 Use colorful +s
Instead of grey

Change-Id: Iac0454110d3af9045a83098e67957130987ad718
Fixes: 63820885
Test: manual
2017-08-08 14:00:09 -04:00
Salvador Martinez
b1c0e38284 Refactor permissions code for bluetooth controller enabler
am: a8db5ccea8

Change-Id: I6288cf595419229f58abb396cbe9b6cf6e2c5fc4
2017-08-08 03:04:45 +00:00
Salvador Martinez
a8db5ccea8 Refactor permissions code for bluetooth controller enabler
Bluetooth may be disabled for a user. This CL refactors the code
that determines this a bit so we can query that without having to
have the UI open.

Test: robotests still pass
Bug: 62022517
Change-Id: Ic0837d21bdc4007a20d6ad138753d4f5d37ceceb
Merged-In: I3b54529865e16b7e1640b0adda7f7edb9d1a41f7
2017-08-07 17:51:02 -07:00
Jack He
a65e3e6795 Merge "Bluetooth: reset mConnectionState when adapter is OFF" into oc-dr1-dev
am: 0c6f001c09

Change-Id: I2a161d403cf0c8e34a16b1ac9328135c40f7e50a
2017-07-26 06:34:30 +00:00
Jack He
70f293ee50 Bluetooth: reset mConnectionState when adapter is OFF
* No device is connected when Bluetooth adapter is OFF
* BluetoothSummaryUpdater should reset its connection state tracker in
  order to display the correct summary message on ConnectedDevice
  preference
* Otherwise, "Connected to null" will be shown because no device is
  connected while BluetoothSummaryUpdater is still in CONNECTED state
* Removed unused imports from BluetoothSummaryUpdater
* Write additional unit test to verify the above behaviour
* Add additional logging when deviceName is null in CONNECTED state

Bug: 62492716
Test: Pair and connect to Bluetooth device, turning Bluetooth ON/OFF,
      unit tests
Change-Id: I30726636f5678d61d6052f5b8d211aa20f26f409
2017-07-26 00:31:55 +00:00
Fan Zhang
3ecdee573b Merge "Tweak bluetooth name preference" into oc-dr1-dev
am: 03c595ce24

Change-Id: I1d2f8d65fb7ba48bac656222c4501306103b385c
2017-07-22 00:32:42 +00:00
Antony Sargent
0531bd48e3 Merge "Switch to using gray icon for Bluetooth imaging devices" into oc-dr1-dev
am: a6ac4890ed

Change-Id: Ib4cbffa94b0372419f60f16972836df27ad1fecf
2017-07-22 00:32:00 +00:00
Fan Zhang
03c595ce24 Merge "Tweak bluetooth name preference" into oc-dr1-dev 2017-07-21 21:41:29 +00:00
Fan Zhang
9218e3b7df Tweak bluetooth name preference
- remove accent color from device name
- remove useless ripple when tap

Change-Id: I7800523eb27bafa24f3a4549b1acf02c869ac8c8
Fix: 62891178
Test: robotests
2017-07-21 11:38:09 -07:00
Antony Sargent
64fab6f4cd Switch to using gray icon for Bluetooth imaging devices
All the other Bluetooth icons were switched to gray at some point in the
past, but we must have missed this one.

Bug: 63858978
Test: make RunSettingsRoboTests
Change-Id: I2ebefa42f3ecff8ae6d58f4bdb22dce39ae4dbd4
2017-07-20 09:54:29 -07:00
Fan Zhang
0e13d6c8a7 Fix a bug where bt name is updated to wrong preference. am: f6e6ae2441
am: c1d04860d5

Change-Id: I42525051bd0471dece01807c87adb0f2a38af1d1
2017-07-18 01:00:29 +00:00
Fan Zhang
f6e6ae2441 Fix a bug where bt name is updated to wrong preference.
Change-Id: Ica0ef6763e8868fc33773f2db917aba29193b632
Fix: 63772093
Test: robotests
2017-07-17 23:06:07 +00:00
Lei Yu
70966973a1 Merge "Add metric action for bt rename dialog" into oc-dr1-dev am: 8e1f509b5d
am: 23de6959af

Change-Id: I68b23030c05e9d0949675dc158f8fb7dd8ab6479
2017-07-14 17:38:25 +00:00
Philipp Weiß
036304f32d Merge "Bluetooth Settings Policy Transparency" 2017-07-14 09:51:14 +00:00
jackqdyulei
7190797b73 Add metric action for bt rename dialog
Bug: 63553537
Test: runtest -x BluetoothNetworkSettingsTests
Change-Id: Ic618133da513bb0c22ac4d79e5d7cb75412a93dd
2017-07-13 14:58:24 -07:00
TreeHugger Robot
c0ca084622 Merge "UI refresh on bluetooth list page" into oc-dr1-dev 2017-07-13 20:05:25 +00:00
Antony Sargent
27afdf0c26 Merge "Make sure PIN edit control is focused" into oc-dr1-dev am: 61e61d96d1
am: d1b5116213

Change-Id: I1df59b4c237b0daff4f5c44a444d35df8cc77cb0
2017-07-13 20:00:37 +00:00
Fan Zhang
7b9568c10d UI refresh on bluetooth list page
- xml layout clean up
- add "Device name" preference, tapping will bring up rename dialog
- Remove tap target from original device_name pref

Merged-In: I6e9764dbb6c51f94be6d6a61d5a6401141407409
Change-Id: I9cb67cc557a9b932d7cf795a8d4a6fb5215c4365
Fix: 62890841
Fix: 62891178
Test: robotests
2017-07-13 11:08:18 -07:00
phweiss
df4bb2a84f Bluetooth Settings Policy Transparency
If handleStateChanged() is called after
maybeEnforceRestriction, the disabled switch will be
enabled again, only to be disabled when the user touches it.

Bug: 37737621
Test: make RunSettingsRoboTests -j40 ROBOTEST_FILTER=*BluetoothEnablerTest

Change-Id: I3086806dfd6d911d6d7fca1f1d30fa7d8b8757d1
2017-07-13 18:47:30 +02:00