Minimal skeleton for location time zone providers. Most behavior has
been stripped and more detail will be added later.
Test: atest services/tests/servicestests/src/android/location/timezone/LocationTimeZoneEventTest.java
Test: services/tests/servicestests/src/com/android/internal/location/timezone/LocationTimeZoneProviderRequestTest.java
Change-Id: I64102df0970e6cfbcc07c9377b226c8663a29a74
-Use more idiomatic and efficient parceling
-Cleanup LocationRequest a bit
Bug: 151026407
Test: presubmits
Change-Id: I3865421a128417a5096e39ee110139a13ab9ab3b
-Add a new app ops helper to make testing easier.
-Consolidate app identity within CallerIdentity class.
-Remove location age restriction for coarse locations, was a bit
arbitrary.
-Remove listener identifiers from LM. These were not being properly
propagated and add a lot of binder overhead with what appears to be
little benefit since we have featureIds, which contain much better
information.
-Remove appops checks from some GNSS APIs that shouldn't require it.
-Move location fudger into location providers and reset them after mock
providers are used so that offset information cannot be leaked.
Bug: 149375028
Test: presubmits + manual
(cherry picked from commit 6033344baa)
Change-Id: I18e2cf3c39836f31d28180e1a4613df4ad675ab7
This saves 24 bytes per serialization and makes code simpler. Also
includes some cleanup in GnssMetrics.
Bug: 152442920
Test: presubmits
Change-Id: I1eb1dfb68190c68e896e87c5bea1f2ec44065e80
Previous versions of GNSS listeners commited to not holding locks even
when running directly unfortunately. We do some extra work to avoid
holding locks while running listeners.
Bug: 151291181
Test: manual
Change-Id: I0b7f46c30df2f97ce11db45b69443a9994885309
- Rename recieverInterSignalBiasNs into interSignalBiasNs, which refers
to the sum of receiver ISB and satellite ISB.
Bug: 150724332
Test: atest GnssMeasurementTest
Change-Id: I322cbe42d24d1f0fe60351c47579323a8715d4d7
In the core functionality this changes everything including aidl's and
field names:
- Context
- ContentProvider
- AppOps*
- Package parsing
For the rest, this is a shallow change to only change to the changed
APIs. This keeps the change small-ish
Exempt-From-Owner-Approval: Rename
Fixes: 148792795
Test: TH
Change-Id: I2a2245fe76e09e62cb13d5785d2efb4a304ba54a
Merged-In: I2a2245fe76e09e62cb13d5785d2efb4a304ba54a
In the core functionality this changes everything including aidl's and
field names:
- Context
- ContentProvider
- AppOps*
- Package parsing
For the rest, this is a shallow change to only change to the changed
APIs. This keeps the change small-ish
Exempt-From-Owner-Approval: Rename
Fixes: 148792795
Test: TH
Change-Id: I2a2245fe76e09e62cb13d5785d2efb4a304ba54a
This lets us ignore updates to properties which are the same, and spend
less cycles giving everyone state updates when nothing has changed. Also
updates the Parcelable format for ProviderProperties, and removes dead
code from ServiceWatcher.
Test: presubmits
Change-Id: Ia6517438ff8988064247cc8d3288d576f73a1aa9
For apps that do not target R+, throw SecurityExceptions within
getProvider().
Bug: 150935354
Test: na
Change-Id: I37e9fc1cbcc1cb6ed941c3905ff253d798fc0ac8
1. Rename registerPullAtomCallback to setPullAtomCallback
2. Rename unregisterPullAtomCallback to clearPullAtomCallback
3. Add getters to PullAtomMetadata
4. Change Ns to Millis (when I tried to make it Nanos, I received a
built time error saying to prefer millis unless we need the precision.
We do not need the precision, so I changed it).
5. Fix out of order params.
I did not change usePooledBuffer to setPooledBuffer because I think use
is more appropriate for our use case.
Test: make
Test: atest PullAtomMetadataTest
Test: atest GtsStatsdHostTestCases
Bug: 149475498
Change-Id: Ib07aa57a6e02c77917fe0e65a3d4a77c00ce8565
Providers no longer need the ability to specify additional packages,
this can be replaced with tracking the provider identity.
In addition, move CallerIdentity into the client space, and fix some
minor GNSS bugs.
Bug: 149839935
Test: atest LocationProviderTest
Change-Id: Ide107abc61531946b20d2ac50cd9555fc215ef03
All calls out of system server must be oneway to prevent the system from
being blocked by external code. Geocode has been the very last interface
not to conform to this - this is now fixed.
Bug: 146677166
Test: atest GeocoderTest
Change-Id: Ib04d36a9b759f1737ebc2806e49f0bf1e53cea7c
LMS dispatches in-process location events while holding locks, which
can lead to deadlock if combined with another lock. This went from a
possibility to a definitive deadlock with the introduction of the
getCurrentLocation cancel() API. This fix prevents that deadlock by
not holding a lock while canceling. It is still technically possible
for other components to introduce deadlock by using their own locks
within the system process, but as there are very few location clients
inside the system server, and none of them appear to be at risk right
now, a complete fix is delayed until S.
Bug: 149780283
Test: presubmits
Change-Id: I9d202adc65380881969d276c470ef1bf52828e82
Listen for changes to developer full tracking setting, and respect that
from within GnssMeasurementsProvider, and fix some nullable
inconsistencies.
Test: manual + presubmits
Change-Id: Id000d97d528ed579f064c2f89ed2025ef97aa7b5
Gnss listeners currently simply ignore requests that are not made in the
foreground or with appropriate permissions, even though these are
transitory attributes. In addition, some gnss listener use appops APIs
incorrectly. The RemoteListenerHelper pattern is not great either, and
makes it extremely difficult to write clear code, as well as duplicates
much of the functionality provided by AbstractListenerManager on the
client side. This CL unifies logic for multiplexing listeners so it can
be used across both the client and server side, and updates all GNSS
listeners to use the new model, which properly respects foreground,
appops, permissions, gnss enablement, and capabilities.
Test: presubmits + manual
Change-Id: I8f158e860e10c3ed43b246f6f3687169ac134343
-Add a new app ops helper to make testing easier.
-Consolidate app identity within CallerIdentity class.
-Remove location age restriction for coarse locations, was a bit
arbitrary.
-Remove listener identifiers from LM. These were not being properly
propagated and add a lot of binder overhead with what appears to be
little benefit since we have featureIds, which contain much better
information.
-Remove appops checks from some GNSS APIs that shouldn't require it.
-Move location fudger into location providers and reset them after mock
providers are used so that offset information cannot be leaked.
Test: presubmits + manual
Change-Id: I0ab6318093b1a7c7210ce9e39ccccf75d4f2eb66
This method is in the hot path for all location tasks but whether
location is enabled for a particular user doesn't change that
often. Cache the result and invalidate from system_server in order to
reduce CPU consumption.
Test: boots, works, gets location
Bug: 140788621
Change-Id: I84ad2c570e7024187a728071dcbb6f72b177e17a
These metrics will pull different metrics that tell the performance of the gnss subsystem.
Metrics include:
Location reports
% of location failure
Num times GPS had to first fix
Mean time to first fix on signal
Num position accuracy logs
Mean position accuracy in meters
Num top 4 Cn0 messages
Mean top 4 average Cn0 (signal quality)
Num L5 top 4 Cn0 messages
Mean L5 top 4 average Cn0 (signal quality)
Num Satellite status messages received
Num of Satellites used in fix
L5 Satellite status messages received
L5 of Satellites used in fix
metric_id: 1111
gauge_metrics {
data {
bucket_info {
atom {
gnss_stats {
location_reports: 12
location_failure_reports: 3
time_to_first_fix_reports: 2
time_to_first_fix_milli_s: 43588
position_accuracy_reports: 9
position_accuracy_meters: 112
top_four_average_cn0_reports: 31
top_four_average_cn0_db_mhz: 734711
l5_top_four_average_cn0_reports: 1
l5_top_four_average_cn0_db_mhz: 21500
sv_status_reports: 1015
sv_status_reports_used_in_fix: 100
l5_sv_status_reports: 7
l5_sv_status_reports_used_in_fix: 0
}
}
elapsed_timestamp_nanos: 537249375445
start_bucket_elapsed_millis: 522186
end_bucket_elapsed_millis: 549283
}
}
}
time_base_elapsed_nano_seconds: 9283624934
bucket_size_nano_seconds: 60000000000
is_active: true
Bug: 147910698
Test: On Device using test script and gnsslogger.apk
> make statsd_testdrive
> ./out/host/linux-x86/bin/statsd_testdrive <ATOM_ID>
Change-Id: I92461eb8533ec810bb67d76a25931295cfa1efbd