Commit Graph

930 Commits

Author SHA1 Message Date
Soonil Nagarkar
51c43292b6 Location OWNERS updates
Change-Id: I0c3debf00a28d4ca930582fb23bd34159ef1ddd4
2020-12-09 14:28:28 -08:00
Soonil Nagarkar
34c8c17451 Make FUSED_PROVIDER public API
Expose the fused provider publicly, and change API results to reflect
this.

Bug: 174580458
Test: none
Change-Id: I61956fbe2b15d1c0c19f6ca2b6ff435146625e9f
2020-12-09 12:01:15 -08:00
Wei Wang
5675ee40c3 Nullable annoation for Location#setExtras.
Bug: 175073579
Test: it complies.
Change-Id: I43b57289bb47703c1e2486de57dbf5642eae8d89
2020-12-09 01:39:07 -08:00
Jeff Sharkey
0ab7007631 resolve merge conflicts of 358f0d4fc8 to master
Bug: 174932174
Test: I solemnly swear I tested this conflict resolution.
Exempt-From-Owner-Approval: refactoring with team leads buy-in
Change-Id: I9262a08ffc1ccede8e519d0eed90ed2bfcf0232c
2020-12-08 11:01:05 -07:00
Jeff Sharkey
c7c4a74a78 Improve OWNERS coverage across frameworks/base/. am: fab0ab3c9c
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1519383

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I0211462ecbcd9ad66f66af87e31cf12e1582fc65
2020-12-08 16:01:16 +00:00
Jeff Sharkey
fab0ab3c9c Improve OWNERS coverage across frameworks/base/.
As general background, OWNERS files expedite code reviews by helping
code authors quickly find relevant reviewers, and they also ensure
that stakeholders are involved in code changes in their areas.

Some teams under frameworks/base/ have been using OWNERS files
successfully for many years, and we're ready to expand them to cover
more areas.  Here's the historical coverage statistics for the last
two years of changes before these new OWNERS changes land:

-- 56% of changes are fully covered by OWNERS
-- 17% of changes are partially covered by OWNERS
-- 25% of changes have no OWNERS coverage

Working closely with team leads, we've now identified clear OWNERS on
a per-package basis, and we're using "include" directives whenever
possible to to simplify future maintenance.  With this extensive
effort, we've now improved our coverage as follows:

-- 98% of changes are fully covered by OWNERS
-- 1% of changes are partially covered by OWNERS
-- 1% of changes have no OWNERS coverage

This specific change is automatically generated by a script from
detailed ownership information confirmed by team leads.

Bug: 174932174
Test: manual
Exempt-From-Owner-Approval: refactoring with team leads buy-in
Merged-In: I9789c97c1de8e5d962b48c29c57d82fe83729eba
Change-Id: I9789c97c1de8e5d962b48c29c57d82fe83729eba
2020-12-08 08:36:27 -07:00
TreeHugger Robot
4103bfdf2e Merge "Adds LastLocationRequest SystemApi" 2020-12-07 18:22:20 +00:00
TreeHugger Robot
e1af0f920f Merge "Clarifying documentation on removeUpdates and flushing" 2020-12-04 21:26:41 +00:00
Soonil Nagarkar
7d6333e824 Clarifying documentation on removeUpdates and flushing
Document how batch flushes interact with removing updates.

Test: n/a
Change-Id: Ie65f517a7bda6273739f9c59df18e290fd0d770a
2020-12-04 09:21:54 -08:00
Soonil Nagarkar
ffc0b6e79a Adds LastLocationRequest SystemApi
Creates a new LastLocationRequest object similar to LocationRequest,
specifically for useage with the getLastLocation() APIs. This allows
SystemApi clients to pass in important parameters like
locationSettingsIgnored, etc...

Bug: 173666111
Test: manual + presubmits
Change-Id: I2e0253e5275d9d17cfb5a9243de0ef12ab33348c
2020-12-03 11:20:10 -08:00
Xin Li
d31ee38811 Merge rvc-qpr-dev-plus-aosp-without-vendor@6881855
Bug: 172690556
Merged-In: I78222391b83a4add8e964340ec08bb8a1306e1c6
Change-Id: I28bbf40820674675ccf765c912aa8140d3f74ab2
2020-12-02 00:38:58 -08:00
Neil Fuller
110409d776 Change LocationTimeZoneEvent elapsed realtime
Switch LocationTimeZoneEvent to elapsedRealtimeMillis from nanos. This
makes it more consistent with other usages of the elapsed realtime clock
in time zone detection. This information is currently only used for
debug so there will be no functional change.

Also change LocationTimeZoneEvent toString() to additionally report
mElapsedRealtimeMillis value using Duration.toString(); this is done
elsewhere in debug output for time zone detection so makes understanding
log output easier.

Bug: 169304499
Test: build only
Change-Id: If307c9b27d64ca49a4fcc0d9bb6e36f362990b3e
2020-11-25 10:41:11 +00:00
Neil Fuller
ecadc4195d Merge "Move LocationTimeZoneEvent to com.android" 2020-11-24 18:01:24 +00:00
Neil Fuller
bd14141056 Move LocationTimeZoneEvent to com.android
LocationTimeZoneEvent was originally supposed to fulfil the same role as
Location does in the LocationProvider. Since Location is public SDK, it
was in android.location. LocationTimeZoneEvent is not public SDK (or any
form of API), so it can be moved to com.android instead.
LocationTimeZoneEventUnbundled is in the API in its place.

Bug: 169304499
Test: treehugger only
Change-Id: I5d382362383000b16852928895a18ac4e4269a8f
2020-11-24 14:47:16 +00:00
Soonil Nagarkar
0d108d8f4c Normalize user active logic across Location APIs
Adds additional logic for location requests coming from the system
server, such that those requests may allowed so long as location is on
for the current user, even if the system user has location disabled.
Even though the system server runs under the system user, it may need
to service requests from or on behalf of other users.

Test: presubmits + manual
Change-Id: Ic9d7762e75fc930b7d26f1d1bf20b272d562939c
2020-11-20 23:21:51 +00:00
Soonil Nagarkar
11a0b63bb4 Make FUSED_PROVIDER SystemApi
This should always have been SystemApi, as most fused providers are
implemented outside system server. There is a strong argument this
should actually be public API, but I'm punting on that for now until we
can give it more consideration.

Bug: 173030969
Test: none
Change-Id: If5ba10accbe2f6ce47d749536d053e1bd8e297f8
2020-11-11 11:16:53 -08:00
Soonil Nagarkar
bf126a7af3 Merge "Add batching APIs and Location.equals()" 2020-11-10 23:33:35 +00:00
Yu-Han Yang
5f084f88db Merge "GNSS Satellite Blocklist Renaming" 2020-11-10 23:06:24 +00:00
Soonil Nagarkar
be6ed5aa14 Add batching APIs and Location.equals()
-Moves batching APIs from SystemApi to Public, and makes them
multi-client safe.
-Adds equals/hashcode to Location.

Bug: 171512333
Test: manual + presubmit
Change-Id: I6ee28f8229fdf49386cd370ea785de63b97e7cde
2020-11-10 10:14:34 -08:00
Neil Fuller
ca04b8dd17 Merge "Remove use of UserHandle in LocationTimeZoneEvent" 2020-11-06 09:50:02 +00:00
Neil Fuller
95600ac273 Remove use of UserHandle in LocationTimeZoneEvent
It causes problems with permissions in testing and isn't strictly
required so it can be removed.

Bug: 152744911
Bug: 149014708
Test: atest services/tests/servicestests/src/android/location/timezone/LocationTimeZoneEventTest.java
Change-Id: Iba9c07780e3cc9f94f2c77144c48916236f31e60
2020-11-05 19:56:26 +00:00
TreeHugger Robot
53fee0433c Merge "Fix security hole in Geocoder APIs" 2020-11-05 03:35:08 +00:00
Soonil Nagarkar
de38982c30 Fix security hole in Geocoder APIs
Geocoder APIs are a mess, but this will at least validate the caller
properly, and pass the relevant information along to clients.

Bug: 158318462
Test: presubmits
Change-Id: I47b09962598a2346bd79caa643ba1d83069c0c19
2020-11-04 14:55:07 -08:00
Soonil Nagarkar
0875bf8c70 Block immutable PIs from location APIs
Bug: 171317480
Test: atest CtsLocationFineTestCases
Change-Id: Ifba03b853f0681a5949d89c4a8e7c2de9a5c6018
2020-11-04 08:58:18 -08:00
Mathew Inwood
5d123b6775 Add maxTargetSdk restriction to unused APIs.
These are APIs that have @UnsupportedAppUsage but for which we don't
have any evidence of them currently being used, so should be safe to
remove from the unsupported list.

Bug: 170729553
Test: Treehugger
Merged-In: I626caf7c1fe46c5ab1f39c2895b42a34319f771a
Change-Id: I54e5ecd11e76ca1de3c5893e3a98b0108e735413
2020-11-04 09:45:53 +00:00
Yu-Han Yang
8318aba8ed GNSS Satellite Blocklist Renaming
Test: on device
Bug: 168111993
Change-Id: I2ee4414fbc1fcb7abe8a3d5b1099a3e6e58a6777
2020-11-02 17:47:59 -08:00
Sasha Kuznetsov
65186049b1 Merge "Clarifiy ADR states in documentation" 2020-10-29 17:10:51 +00:00
Mathew Inwood
8e742f928e Add maxTargetSdk restriction to unused APIs.
These are APIs that have @UnsupportedAppUsage but for which we don't
have any evidence of them currently being used, so should be safe to
remove from the unsupported list.

This is a resubmit of ag/12929664 with some APIs excluded that caused
test failures; see bugs 171886397, 171888296, 171864568.

APIs excluded:
Landroid/bluetooth/le/ScanRecord;->parseFromBytes([B)Landroid/bluetooth/le/ScanRecord;
Landroid/os/Process;->myPpid()I
Landroid/os/SharedMemory;->getFd()I
Landroid/hardware/input/InputManager;->INJECT_INPUT_EVENT_MODE_WAIT_FOR_FINISH:I

Bug: 170729553
Test: Treehugger
Change-Id: I8285daa8530260251ecad6f3f38f98e263629ca7
2020-10-29 11:51:12 +00:00
Sasha Kuznetsov
405047318b Clarifiy ADR states in documentation
Bug: 167930284
Test: n/a

Change-Id: I34b7d61bcff7e43861d66c6a3cda5a77ec66ee4c
2020-10-28 17:21:47 -07:00
Hongwei Wang
050275cd83 Revert "Add maxTargetSdk restriction to unused APIs."
This reverts commit 72f07d6a8a.

Reason for revert: Droidcop-triggered revert due to breakage https://android-build.googleplex.com/builds/quarterdeck?testMethod=testAppZygotePreload&testClass=android.app.cts.ServiceTest&atpConfigName=suite%2Ftest-mapping-presubmit-retry_cloud-tf&testModule=CtsAppTestCases&fkbb=6936597&lkbb=6936969&lkgb=6936551&testResults=true&branch=git_master&target=cf_x86_phone-userdebug>, bug b/171886397

Bug: 171886397
Change-Id: Ibe0f0430a3451477c1ee8ef56a596e91ea1e7672
2020-10-28 20:16:22 +00:00
Mathew Inwood
72f07d6a8a Add maxTargetSdk restriction to unused APIs.
These are APIs that have @UnsupportedAppUsage but for which we don't
have any evidence of them currently being used, so should be safe to
remove from the unsupported list.

Bug: 170729553
Test: Treehugger
Change-Id: I4c8fd0006f950de9955242e93968fb0996ceb372
2020-10-27 15:46:07 +00:00
TreeHugger Robot
8a531bb4af Merge "Make ListenerMultiplexer more flexible" 2020-10-27 00:13:04 +00:00
Soonil Nagarkar
3a983cb95f Make ListenerMultiplexer more flexible
Previously ListenerMultiplexer attempted to be perscriptive about when
individual listener invocations should be allowed, but this is not
proving flexible enough. So, we allow registrations to invoke listeners
at any time without being perscriptive about it instead.

Test: manual + presubmit
Change-Id: I6ff8c6bd4f3e3af15d6ebc4b484b971df5a8c0e2
2020-10-26 13:40:00 -07:00
Jeff Sharkey
1992cdb4de Merge changes from topic "oct16c"
* changes:
  Apply fixes for EfficientStrings.
  Apply fixes for EfficientStrings.
  Apply fixes for EfficientStringsChecker.
  Apply fixes for EfficientCollections.
  Trivial refactor for consistent naming.
  Expand formatSimple() to support widths.
  Refinement of EfficientStringsChecker.
2020-10-21 15:27:15 +00:00
Jeff Sharkey
1c08f48253 Apply fixes for EfficientStringsChecker.
The recently-built Error Prone checker has found many instances where
we're always paying the cost of StringBuilder concatenation, even in
the typical cases where preconditions are successfully met.

Benchmarks have shown that even when replacing these with varargs
formatter strings, the default case is 20x faster.

Bug: 170978902
Test: none
Exempt-From-Owner-Approval: trivial refactoring
Change-Id: If8c00bc73467bfb91ec16c162969c9d26ca53646
2020-10-20 22:00:16 -06:00
Soonil Nagarkar
c73cecefc1 Improve QUALITY_* constant documentation
Given devs a better idea of how these quality constant may work.

Bug: 168624248
Test: n/a
Change-Id: I16910bc45d013b4a366d4e8036f63fdfbef55461
2020-10-20 11:36:22 -07:00
Anton Hansson
586a3cf229 Remove @TestApi from @SystemApi symbols
I ran these commands:
    cd frameworks/base
    grep -rl '@TestApi' --include '*.java' | xargs perl -i -p0e \
        's/\@SystemApi[\s\n]+(\@\w+[\s\n]+)?\@TestApi/\@SystemApi\1/gs'
    grep -rl '@TestApi' --include '*.java' | xargs perl -i -p0e \
        's/\@TestApi[\s\n]+(\@\w+[\s\n]+)?\@SystemApi/\1\@SystemApi/gs'

Bug: 171179806
Test: m checkapi
Change-Id: I772790b783b0a8730b8bf680c9e569a886b8d789
2020-10-20 09:04:03 +01:00
Anton Hansson
dd7d52f963 Remove @TestApi from @SystemApi symbols
I ran these commands:
    cd frameworks/base
    grep -rl '@TestApi' --include '*.java' | xargs perl -i -p0e \
        's/\@SystemApi[\s\n]+(\@\w+[\s\n]+)?\@TestApi/\@SystemApi\1/gs'
    grep -rl '@TestApi' --include '*.java' | xargs perl -i -p0e \
        's/\@TestApi[\s\n]+(\@\w+[\s\n]+)?\@SystemApi/\1\@SystemApi/gs'

Bug: 171179806
Test: m checkapi
Change-Id: I772790b783b0a8730b8bf680c9e569a886b8d789
Merged-In: I772790b783b0a8730b8bf680c9e569a886b8d789
2020-10-19 16:41:01 +01:00
Soonil Nagarkar
f6a861a34f Add quality to LocationRequest/ProviderRequest
Expose quality APIs publically after refactoring them to match external
usage of quality constants. Removes list of location requests from
provider request, as there is no client that really uses this, and it
feels like too much information to give to providers.

Bug: 168624248
Test: presubmits
Change-Id: Icf8a9f6096da0071d97190d3f7196948492e52a1
2020-10-14 16:53:50 -07:00
Taesu Lee
b40a55ccc9 Use TelephonyManager#isEmergencyNumber() instead
Replace deprecated PhoneNumberUtils#isLocalEmergencyNumber() and
isEmergencyNumber() with TelephonyManager#isEmergencyNumber().

Test: Build
Bug: 132703886

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: I232d7f7d23efd963b6d30938f0fa304c90fca8a8
Merged-In: I232d7f7d23efd963b6d30938f0fa304c90fca8a8
2020-10-14 02:31:14 +00:00
Taesu Lee
902b89d936 Use TelephonyManager#isEmergencyNumber() instead
Replace deprecated PhoneNumberUtils#isLocalEmergencyNumber() and
isEmergencyNumber() with TelephonyManager#isEmergencyNumber().

Test: Build
Bug: 132703886

Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: I232d7f7d23efd963b6d30938f0fa304c90fca8a8
2020-10-13 15:52:20 -07:00
Soonil Nagarkar
de402cf5b1 Remove getTestProviderLocationRequests TestApi
This API is no longer necessary for testing, and inappropriately exposes
internals. Also updates battery saver TEST_MAPPING to include location
tests.

Bug: 170224294
Test: presubmits
Change-Id: I1322f21ced86d3622650ecf02dfa959a484660d0
2020-10-08 10:04:03 -07:00
Soonil Nagarkar
5d47f1e2cd Various location fixes
-Prevent PendingIntents from using LocationRequest SystemApis. We don't
track permission removal, so we don't current reset the request if the
permission is lost.
-Make LocationRequest.getWorkSource() NonNull. Small quality of life
change to reduce null checks all over.
-Don't spend CPU coarsening location until we actually need to. The vast
majority of locations will never need to be coarsened. Don't bother
doing so until we actually need to.

Bug: 169887240
Test: manual + presubmit
Change-Id: I7ad6fe886eaede3ed9f46cebe4246d29d6b6e187
2020-10-06 00:14:55 -07:00
Soonil Nagarkar
dbc7965fba Merge "Refactor background/system user behavior" 2020-10-05 23:31:58 +00:00
Soonil Nagarkar
8325967542 Refactor location event log
Log a much wider variety of important events in memory for bugreports
and dumpsys. This will make debugging much easier, hopefully at a
minimal memory cost. Memory cost could be improved in the future as
well.

Test: manual + presubmits
Change-Id: Iab867575f783f1c5f41a405da66f72d5f52691bf
2020-09-30 18:24:35 -07:00
Soonil Nagarkar
e963789b7f Refactor background/system user behavior
This is a breaking change so that providers are no longer disabled for
non-current (ie background users). Instead, location requests from
background users are now considered inactive. This brings provider
behavior more in line with other APIs (such as GNSS and geofencing),
and allows us to special case requests from the system UID.

Without this change, the system UID would see incorrect provider
enabled/disabled notifications. Impact on clients is expected to be
minimal, as by far the vast majority of android applications run on
single user devices. For multiuser devices, applications will no longer
see enabled/disabled notifications in response to current user changes.

Bug: 157682495
Test: manual + presubmit
Change-Id: I0edb15f0792bf1426855baefcda8477ba3a32b28
2020-09-30 17:00:42 -07:00
Soonil Nagarkar
6e41050612 Fix background request throttling + jitter calculation
Prevent applications from bypassing background location throttling by
adding/removing requests. This allows provider managers to delay
requests in the event the interval has decreased so that power can be
saved. Clients that target S and above may now receive historical
locations in exchange, so that they are not losing locations overall.
Locationp providers can optionally implement delays themselves in the
event of an interval increase.

Also updates jitter calculation to be a capped percentage of the
request interval, rather than a flat cap.

Bug: 73144566
Test: manual + presubmits
Change-Id: I243e813f0c0c504850e2a3e777787f49fc6f7a57
2020-09-30 11:38:09 -07:00
Soonil Nagarkar
2d6bcbecd3 DO NOT MERGE Local timeout should cancel remote work
Ensure that when getCurrentLocation() times out locally, remote work in
system server is also canceled.

Bug: 168666216
Test: manual
Change-Id: Idde2156323c3fca0ed94ff886a4277122c598753
2020-09-24 09:41:24 -07:00
Neil Fuller
3299f0913f Tidy up the "unbundled" provider API
This commit introduces a LocationTimeZoneEventUnbundled, as
LocationTimeZoneEvent will not be on another API surface so cannot be
reused. (The equivalent from LocationProvider is Location, which is
public API so there is no LocationUnbundled.)

Add an initialization timeout to LocationTimeZoneProviderRequest so that
providers can make intelligent choices about (for example) how long to
spend waiting for geolocation to happen passively.

Test: atest services/tests/servicestests/src/com/android/internal/location/timezone/
Test: atest services/tests/servicestests/src/com/android/server/location/timezone/
Bug: 152744911
Change-Id: Id3e9e6916e8c3a132d8fc892338578ab9d2ff574
2020-09-24 17:38:10 +01:00
Soonil Nagarkar
05f32ddfab DO NOT MERGE Fix bug in getCurrentLocation cancellation
Cancellation was not being propagated to the system server due to a
misunderstanding on how CancellationSignal functions. There is no
noticable impact for the user, as cancellation did properly prevent any
further locations, however this would have resulted in extra
power draw since the system server would not have canceled the
associated provider location request. This would have left
getCurrentLocation() as equivalent to requestSingleUpdate() where it was
supposed to be an all-around improvement that could save power.

Bug: 168666216
Test: manual + presubmits
Change-Id: I5c77db4cc56cce1b984587f65d2bcfb488436bb8
2020-09-22 10:33:11 -07:00