Commit Graph

127 Commits

Author SHA1 Message Date
Anil Admal
500b316a02 Merge "Update getGnssCapabilities() in LMS to include sub-HAL capabilities" 2019-03-20 23:05:12 +00:00
Anil Admal
993497864e Update getGnssCapabilities() in LMS to include sub-HAL capabilities
The GNSS capabilities in the gnss@2.0 HAL have been refactored
(b/128028791, b/127434062, b/128309220). The sub-HAL capabilities
in the top level IGnssCallback.hal have been moved into their
respective sub-HALs. Consequently, the getGnssCapabilities()
method in LocationManagerService is hereby modified to include
the capabilities from all sub-HALs and the top level HAL.

A new GnssCapabilities class needs to be added so that we don't
expose the implementation details of the capabilities (a Java
int bitmask of capability flags) to the LocationManager client.

Bug: 128913861
Test: TBD
Change-Id: I5ed90332c7c0e783de771f573a58f79d1d6d89ff
2019-03-20 09:51:39 -07:00
Soonil Nagarkar
eaffea6d57 Update API documentation
Add information on exact API level for intent extra.

Bug: 128904083
Test: manual
Change-Id: Ie45feeea43b0fed72bee682b1c6a2076a2f85824
2019-03-19 12:31:28 -07:00
Soonil Nagarkar
3126c90786 Add PROVIDERS_CHANGED_ACTION extra for provider
Give clients a way to know which providers have changed state, useful
since LOCATION_PROVIDERS_ALLOWED will be removed in the future.

Bug: 127372321
Test: manual
Change-Id: I16c0acbaad97930bea23084b50193582cc918fa2
2019-03-18 12:00:44 -07:00
TreeHugger Robot
9c5458edb7 Merge "Remove deprecated Settings APIs." 2019-03-14 17:06:04 +00:00
Soonil Nagarkar
a491b7abb1 Revert removal of GpsStatus APIs
Bug: 126698813
Test: manual
Change-Id: I174d3f4cd21259e59381fc79990005c644380065
2019-03-13 17:36:44 -07:00
Soonil Nagarkar
6dac9d1bf5 Remove deprecated Settings APIs.
Bug: 128348646
Test: manual
Change-Id: I40dbfc78ee983ffacc56a68d2c5ba2aefb16357f
2019-03-13 10:13:31 -07:00
Soonil Nagarkar
1cc1db0ab2 Merge "Remove unused broadcasts from GNSS" 2019-03-07 04:48:02 +00:00
Soonil Nagarkar
00fe7e2d78 Remove deprecated GNSS APIs + add nullability
Cleans up location APIs by removing old deprecated APIs (deprecated
since API 24) and adding nullability annotations everywhere.

Bug:126698813,126701422,126702274
Test: built
Change-Id: I6caf7f9778100bb3eee53178c25ce1694fb2d395
2019-03-05 16:38:45 -08:00
Soonil Nagarkar
d08180c49f Remove unused broadcasts from GNSS
Test: manual
Change-Id: Iad78fac0071a443d75cfc1d57b25017db7f84de3
2019-03-05 16:04:18 -08:00
Kweku Adams
4fb074e7f4 Adding new Battery Saver location mode.
When this new mode (LOCATION_MODE_THROTTLE_REQUESTS_WHEN_SCREEN_OFF) is
enabled, LocationManagerService will avoid sending almost all
LocationRequests to providers. The only requests that will continue to
be sent will be providers are the requests that ignore location
settings.

Bug: 121256487
Bug: 122849003
Bug: 119261320
Test: atest android.os.cts.batterysaving.BatterySaverLocationTest
Change-Id: Iee95a6fb5ca11d4db7a0f0661bf3cb1051a5d710
2019-02-28 14:55:39 -08:00
Soonil Nagarkar
5140e4fb86 Add API to expose ignore settings whitelist for GTS
Bug: 124517571
Test: manually
Change-Id: I846f9112c3cc3dde1466ff13e740ccf72c16b833
2019-02-15 19:29:06 +00:00
Soonil Nagarkar
11a7994c7a Merge "Add TestApi annotations to LocationManager" 2019-02-05 21:07:52 +00:00
Soonil Nagarkar
ec2718d4e8 Remove unused API
getNetworkProviderPackage() has been replaced by isProviderPackage().

Bug: 123766886
Test: manually
Change-Id: I39eda1910af0d298beabc224ab33c35190d0e21f
2019-02-04 17:52:59 -08:00
Soonil Nagarkar
0d77ea6893 Change provider packages API to test all providers
This will replace the LocationManager.getNetworkProviderPackage() API
with LocationManager.isProviderPackage(). The network provider should
not be considered special.

In addition, providers now have the ability to specify additional
packages that may make location requests on their behalf, so that those
packages can be considered location providers as well.

Bug: 117177078
Test: manually
Change-Id: I204b56e7bb40874ac3347988474fb8afa787feb8
2019-02-04 10:58:24 -08:00
Soonil Nagarkar
ac1879ab06 Add TestApi annotations to LocationManager
Expose some APIs for CTS tests.

Bug: 123766886
Test: N/A
Change-Id: I4fe7d05cf13c3cff793803297698452c1bfc247e
2019-02-04 10:29:10 -08:00
Soonil Nagarkar
5e185019f0 Location settings documentation and migration
-Add new LOCATION_MODE_ON for internal use only
-Update location docs for Q
-Fix egregious copy/pasta bug

Bug: 118883513
Test: NA
Change-Id: I5c04786f912f1b8db33930449ae2ba5854a55981
2019-01-30 14:42:04 -08:00
Soonil Nagarkar
90da1ab3d2 Use LOCATION_MODE to control location
Completely deprecate LOCATION_PROVIDERS_ALLOWED (but still support it).
Adds additional locking and @GuardedBy annotations where appropriate,
and some minor code cleanup is copied from previous CLs.

Bug: 118885128
Test: Manual + CTS
Change-Id: I3c0b4b2354a4c2b6a120fc467af60cb3409dd671
2019-01-10 14:43:43 -08:00
Mathew Inwood
31755f94e1 Limit access to suspected false positives.
Members modified herein are suspected to be false positives: i.e. things
that were added to the greylist in P, but subsequent data analysis
suggests that they are not, in fact, used after all.

Add a maxTargetSdk=P to these APIs. This is lower-risk that simply
removing these things from the greylist, as none of out data sources are
perfect nor complete.

For APIs that are not supported yet by annotations, move them to
hiddenapi-greylist-max-p.txt instead which has the same effect.

Exempted-From-Owner-Approval: Automatic changes to the codebase
affecting only @UnsupportedAppUsage annotations, themselves added
without requiring owners approval earlier.

Bug: 115609023
Test: m
Change-Id: I020a9c09672ebcae64c5357abc4993e07e744687
2018-12-28 11:50:04 +00:00
gomo
226b7b7775 Bluesky Android Q Platform Changes
- Changes to C++ HAL and GNSS Location Provder Code to inject
corrections to chipset
- Changes to JNI bridge to translate the Java corrections to C++
- Changes to JAVA side of the bridge: GnssLocationProvider.cpp to pipe
the corrections through the JNI
- Build the Locaiton Manager First Party APIs and methods
- Build needed Java containers: GnssMeasuremetCorrections.java,
GnssSingleSatCorrections.java and ReflectingPlane.java
- Build the Parcelables to send all our Java objects through processes
- Build piping methods in CallbackTransport.java,
LocationMangerservice.java, etc to pass the data in both direcions
- update API docs: current.txt and system-current.txt

Bug: 111441283
Test: Existing tests pass.
Change-Id: I8650fea21c69c8f31ba9cabe63d4a6676ffe38d7
2018-12-20 15:27:08 -08:00
Wei Wang
980b7c20d6 Add APIs to set Location History package name.
The package name will be used by Permission Controller to properly
handle permissions for location history package.

Bug: 119226131

Test: manually tested on device
Change-Id: I522517272c132a054c44489d16626509cf2b42ee
2018-12-12 16:48:51 -08:00
Soonil Nagarkar
1575a04e7b Refactor how location providers are managed
Put enabled/disabled state under location provider control, and use it
to represent whether a location provider may be used, not whether the
user has enabled or disabled a location provider.

Bug: 118885128
Test: manually
Change-Id: I1209c49c13ca8995b223f383ad332322fffc7a96
2018-12-10 10:29:17 -08:00
Philip P. Moltmann
c20f1b78a9 Revert "Allow location provider to deep link into permissions UI"
This reverts commit ed98828335.

Reason for revert: The exposed API is not needed anymore

Test: Built
Bug: 118437704
Change-Id: I155eb0f7241327b34ea5beaabee514ba2a018998
2018-11-27 17:03:24 -08:00
Soonil Nagarkar
94749f7ad1 Deprecate location provider status callbacks
Deprecate and remove logic around location provider status.

Bug: 118885128
Test: Tested manually on device
Change-Id: I68289cb5ed22e66532847758c36155a4ce607bbc
2018-11-26 23:19:00 +00:00
Philip P. Moltmann
ed98828335 Allow location provider to deep link into permissions UI
Test: Built
Bug: 118437704
Change-Id: I566acaf09bad27a47ec3822816c136c01b18bfc9
2018-11-08 09:11:05 -08:00
Philip P. Moltmann
39e00d53c9 Add Doc and nullability to LocationManager#getNetworkProviderPackage
Test: Built
Bug: 116798569
Change-Id: Iead34b0f93e4f5331ba49ec0d170f1ec0db0d4c3
2018-10-08 16:37:06 -07:00
Philip P. Moltmann
71225ecc0c Expose LocationManager#getNetworkProviderPackage as @SystemApi
The PermissonController is going to become a mainline module, hence it
has to compile against @SystemApi.

The permission controller needs to know which package is the network
provider as it treats the location permission of the location provider
page special.

As far as I understood the current API is not protected. I would like to
leave adding the protection to the location team.

Bug: 110953302
Test: Built
Change-Id: Ic0691bd2254137273160ee6c2e6bb10257205d54
2018-08-31 11:30:57 -07:00
Mathew Inwood
735497ed3e Add @UnsupportedAppUsage annotations
For packages:
  android.location

This is an automatically generated CL. See go/UnsupportedAppUsage
for more details.

Exempted-From-Owner-Approval: Mechanical changes to the codebase
which have been approved by Android API council and announced on
android-eng@

Bug: 110868826
Test: m
Change-Id: I2e49951f49072866906ecb8fba133ff16293e65a
2018-08-09 16:44:32 +01:00
Yu-Han Yang
a9b72b30eb Update JavaDoc of LocationManager#requestLocationUpdates
Bug: 111522117
Change-Id: If92dd8b2517769ef2964c671fcbd41b58e8727f2
Fixes: 111522117
Test: n/a (javadoc only)
2018-07-23 11:06:31 -07:00
Yu-Han Yang
241898259e Release wakelock in LocationManagerService if client thread is dead
- also put a timeout on the wakelock so that it won't be held forever.

Bug: 111321558
Fixes: 111321558
Test: Tested on device.
Change-Id: I36e90f73143ff12d8622dbbb3aad643b283d17ce
2018-07-16 17:39:24 -07:00
Philip P. Moltmann
f80809ffd7 Expose TestAPIs needed by GtsOsTestCases
Test: atest GtsOsTestCases on pi-dev:taimen and oc-mr1:sailfish
Bug: 77497338
Change-Id: I5de976991a857bfbed2faa943822af542601fa8b
2018-04-06 14:59:07 -07:00
Maggie
2a9409e914 Fix test location provider bug
LocationManager.isProviderEnabled should return true for a test provider if:
1. A test provider is added through LocationManager.addTestProvider
2. The test provider is enabled through LocationManager.setTestProviderEnabled

This fix changes the logic if LocationManager.isProviderEnabled and
LocationManager.setProviderEnabledForUser to allow users get/set test
location provider status.

Bug: 72647543
Bug: 77238940
Test: Manual
Test: run cts --module CtsLocationTestCases -t android.location.cts.LocationManagerTest
Change-Id: Ib241e5b487fd873c1fa0d7ac34b82b8592fc0906
2018-04-03 18:56:47 +00:00
Wyatt Riley
aa8cbab151 Merge "GNSS Model Name constant string and comment updates" into pi-dev 2018-03-22 16:10:08 +00:00
Maggie
83e03f5559 Fix location settings bug on non-GPS devices
The old location_mode API hardcoded gps and network location provider when it enables/disables location, without checking whether the providers exist on device.
It causes bugs when used together with the new
LocationManager.setLocationEnabled() APIs.

This fix modified LocationManager.setLocationEnabled() API when user
tries to disable location on device. Besides turning off the providers
from LocationManager.getAllProviders(), it also turns off GPS and
network provider explicitly.

To reduce times of binding to the service and chance of race condition, we also
modified SettingsProvider.updateLocationProvidersAllowedLocked() to
accept a string param with multiple location providers to be
enabled or disalbed at the same time.

Bug: 73261572
Test: Manual on chromebook
Change-Id: I2e59e0d4cf395b98cd481af5d7f3c762274d7826
2018-03-21 12:14:47 -07:00
Wyatt Riley
49097c0b99 GNSS Model Name constant string and comment updates
Addressing API review feedback
Removed string, returning Null instead
Updated comments

Bug: 73951626
Test: Runs on device w/GnssLogger
Change-Id: I54d05a7ae000e9ff52ec1f6646f83aed7de81b94
2018-03-15 10:52:12 -07:00
Maggie
2e17d3f4f8 Remove javadoc for return value
LocationManager#setLocationEnabledForUser has documentation for return value even though it's void. Fix the bug by removing the return javadoc.

Bug: 73751024
Test: Manual
Change-Id: I785e9f08674f472fe0f248972d5cc6055e64412a
2018-03-02 11:46:59 -08:00
Jeff Sharkey
98af2e4fec Add RequiresFeature annotation.
Certain APIs require that a device have a specific feature to operate
correctly, so start annotating them.

Test: builds, boots
Bug: 72284763
Change-Id: Ie2f30284bdfdb6acc4067f434eba3b5433837606
Exempt-From-Owner-Approval: simple annotations
2018-02-16 20:45:22 +00:00
Maggie
9ca162532e Check for null LOCATION_PROVIDERS_ALLOWED value
After reading LOCATION_PROVIDERS_ALLOWED value from settings provider,
check for null first.

Bug: 72711160
Bug: 72732478
Test: Manual
Change-Id: I813e40f11f078d80c4cc20986f030fdadfe433c6
2018-02-07 16:19:42 -08:00
Maggie
589f038d63 LocationManager constants for footer injector
Add broadcast actions and metadata names in LocationManager for
injecting footers under Settings -> Security & Location -> Location.

Bug: 70350519
Test: Manual
Change-Id: I4d187a54cd87d8964d84bfef44515ac9ef77db29
2018-02-01 18:23:13 -08:00
Lifu Tang
7c30c68cc5 Move location-related code into client library
These first-party only methods can only be called by privileged
packages, and Settings.Secure already applies strict permission check to
them. Therefore moving the code into client library can save us from
unnecessary binder calls, and can also make checking the caller package
name much easier.

Test: Manual
Change-Id: I76a939a660357f87b01ff4ac07ec3f17093d3c41
2018-01-26 16:42:05 -08:00
Maggie
aa080f9676 Deprecate location modes
1. Mark public fields as deprecated: LOCATION_MODE, LOCATION_MODE_HIGH_ACCURACY, LOCATION_MODE_SENSORS_ONLY,
LOCATION_MODE_BATTERY_SAVING, LOCATION_MODE_OFF.

2. Add new public  methods to LocationManager:
setLocationEnabled(boolean)
isLocationEnabled()
setLocationProviderEnabled(String, boolean)

3. Remove LOCATION_PREVIOUS_MODE and constant
LOCATION_MODE_PREVIOUS. Refactor code that references
LOCATION_MODE_PREVIOUS to use LocationManager.setLocationEnabled or
LOCATION_MODE_HIGH_ACCURACY.

4. Mark deprecated fields and methods as removed: LOCATION_PROVIDERS_ALLOWED, setLocationProviderEnabled(), isLocationProviderEnabled()

5. Refactor logic in Settings app and Quick Settings to call
LocationManager.setLocationEnabled() instead of setting location mode.

Bug: 70990911
Test: Manual
Change-Id: Ia49b385f8b6a358b62291983eb0146af0ecf8e02
2018-01-23 10:45:49 -08:00
Ram Periathiruvadi
8671feab63 Add a hidden API to inject location.
New API allows system clients with LOCATION_HARDWARE and
ACCESS_FINE_LOCATION to inject a location to the Location Manager.  This
is useful in products like Auto, where the location needs to be cached
across reboots.

Bug: b/64125396
Test: Foll. were tested:
1. location can be injected when lastLocation is not available
2. location cannot be injected when lastLocation is already available
Also, tested location availability on different devices for sanity.
Change-Id: I1fd060caafed0431074ae64439ac52e99e0d6032
2018-01-08 08:25:17 -08:00
Wyatt Riley
d87cf91762 Providing GNSS Model Name & Year
GNSS Model Year moves from a TestApi to public
GNSS Model Name is connected from a new .hal to public

Bug: 38003769
Test: Builds, works with CTS & Test App on Pixel 2
Change-Id: I3e0a56c60e1a4d298e120df11ffd37b06ecea050
2017-12-21 13:07:03 -08:00
Maggie
fab2e2cbaa Send MODE_CHANGING broadcast before location mode change.
When location mode is about to change in Settings app, send
MODE_CHANGING broadcast.

Fixes: 28057031
Test: manual
Test: robotests
Change-Id: Id26325520211a8934c1670dfcd12e8d339766308
2017-12-07 23:22:35 +00:00
Wyatt Riley
7f2cfed525 Ensure complete GnssStatus construction
Using volatile reference & final member pattern.

Bug: 37517406
Test: basic GNSS & GPS Status output works
Change-Id: I5650149e0a3f63a52734c8f044d38f3956819921
2017-06-28 15:13:10 -07:00
Jeff Sharkey
bfc4fcde9f Give Doclava our manifest; more permission docs.
We've seen some @SystemApi methods protected with non-system
permissions, so give Doclava the platform AndroidManifest.xml so it
can parse the actual permission protection levels to look for APIs
that are letting in non-system apps.

Also document more @SystemApi permissions.

This is purely a docs change; no logic changes are being made.

Test: make -j32 update-api
Bug: 62263906
Change-Id: Ie0f0a5fb0033817bcc95060f2183a52ae4ae7b06
2017-06-05 17:38:19 -06:00
Jeff Sharkey
d86b8fea43 Annotate @SystemApi with required permissions.
Most @SystemApi methods should be protected with system (or higher)
permissions, so annotate common methods with @RequiresPermission to
make automatic verification easier.

Verification is really only relevant when calling into system
services (where permissions checking can happen on the other side of
a Binder call), so annotate managers with the new @SystemService
annotation, which is now automatically documented.

This is purely a docs change; no logic changes are being made.

Test: make -j32 update-api && make -j32 offline-sdk-docs
Bug: 62263906
Change-Id: I2554227202d84465676aa4ab0dd336b5c45fc651
2017-06-05 13:27:11 -06:00
Wyatt Riley
cf879db366 GNSS Batching - Default Implementation
Connections from .hal layer, through to
Location Manager System APIs

Bug: 31974439
Test: builds, boots, ordinary GNSS & new GNSS batching
      basic functional checks on Marlin
Change-Id: If75118c27b5ed34cfc16c9f817b60a3be5485095
2017-02-07 14:55:21 -08:00
gomo
4402af6be9 GNSS O Features according to go/o-gps-hal
Added "Tow Known" as a possible gnss measurement state. As well added Automatic Gain Control (AGC)
to allow jammer detection. Also added the GNSS carrier frequeny to SV status. Also added vertical
GPS position uncertainty, speed uncertainty and bearing uncertainty. Also propagate locaton new
fields to geofence engine.
Test: Existing unit tests still pass.

Change-Id: I472b2fd2516cb7614877dea4bb054a34f50844dc
2017-01-15 18:02:21 -08:00
Wyatt Riley
a2bbfbcf89 Removing @removed methods and constants
Several methods, plus a few hashmaps,
helper classes, and some constants
existed for an early builds
of NYC, and were marked @removed, and are
here finally removed.

Bug: 28208055
Change-Id: If650d83c0dc573e922342d09360ecf9a5bb0c98a
Fixes: 28208055
Test: GMaps, AndroiTS GPS Test, GnssLogger & CtsVerifier
      All run fine on a Pixel
2016-12-23 13:18:16 -08:00