Compare commits

...

91 Commits

Author SHA1 Message Date
KevinX8 6814161c48
Remove the oop 2022-03-11 09:51:17 +00:00
KevinX8 309544601e
Merge pull request #183 from DavidBrazSan/master
Add translation of Portuguese Brazil
2022-03-09 12:20:17 +00:00
KevinX8 88f083616a
Merge pull request #184 from Oizaro/master
New stuff
2022-03-08 19:52:54 +00:00
Oizaro 895b6628fb Update deps 2022-03-08 20:18:59 +01:00
Oizaro 61582b63d0 Use new method for lifting idle restrictions temporarily when receiving PUSH messages 2022-03-08 20:18:49 +01:00
David BrazSan 77b560e620
Create strings.xml 2022-02-28 11:14:14 -03:00
David BrazSan 1899564f74
Create plurals.xml 2022-02-28 11:13:23 -03:00
David BrazSan 7e5f008906
Create arrays.xml 2022-02-28 11:12:39 -03:00
KevinX8 379346614c
Merge pull request #178 from Oizaro/master
Restore previous services list
2022-02-11 16:43:15 +00:00
KevinX8 cafd5ee4d4
Merge pull request #177 from novas78/master
Update of Czech translation
2022-02-11 15:43:14 +00:00
Lukas Novotny 2b2581d131
Update of Czech translation 2022-02-11 16:15:20 +01:00
Oizaro 6ca53537ee Restore previous services list 2022-02-11 16:06:20 +01:00
KevinX8 dc6426b9ff
Merge pull request #175 from Oizaro/master
Fix potential context crash + update deps
2022-02-09 21:39:28 +00:00
Oizaro 8a0361ea5e Fix potential context crash + update deps 2022-02-09 22:17:39 +01:00
KevinX8 d3092c4579
Merge pull request #174 from Oizaro/master
MicroG 0.2.24.220220
2022-02-07 09:40:00 +00:00
Oizaro 56538dd003 Merge remote-tracking branch 'upstream/master' 2022-02-05 12:52:03 +01:00
Oizaro a33a62ac79 MicroG 0.2.24.220220 2022-02-05 12:45:55 +01:00
Marvin W 17b8371b48
Update UnifiedNlp version 2022-02-01 20:23:12 +01:00
Marvin W adf534d20a
ENF: Replace invalid RSSI values in database 2022-02-01 14:47:52 +01:00
Tim Hetkämper 75aaeb1fc6 ENF: Fix average RSSI calculation
Correctly discard new measurements when the reported timestamp is older
than the timestamp in the database.
Fixes https://github.com/microg/GmsCore/issues/1655.
2022-02-01 13:50:37 +01:00
Marvin W 61957c33cd
ProfileManager: Allow overriding User-Agent in WebView 2022-02-01 13:36:39 +01:00
KevinX8 e6d706456e
Merge pull request #170 from Oizaro/master
MicroG 0.2.23.220217
2022-01-31 12:57:15 +00:00
KevinX8 d231e059f7 Update Dependencies and SDK target to match Vanced 2022-01-31 12:49:59 +00:00
Oizaro 5f2b3b5205 Cleanup 2022-01-31 00:31:49 +01:00
Oizaro 785ffe4933 Fix 2022-01-29 20:55:43 +01:00
Oizaro 8472943bb4 Optimize imports 2022-01-28 01:15:01 +01:00
Oizaro f600688264 Merge remote-tracking branch 'upstream/master' 2022-01-28 01:06:36 +01:00
Oizaro d64e4556f6 MicroG 0.2.23.220217 2022-01-28 00:47:01 +01:00
Marvin W af28974d97
Use different API key for SafetyNet checks 2022-01-25 18:31:32 +01:00
Marvin W 0497f7ead3
Make strings translatable 2022-01-25 18:31:24 +01:00
Torsten Grote f3c20333b0 Don't teardown things after sockets have been closed
Before, the call to closeAll() in McsService#connect() would trigger a SocketException (Socket closed) in McsOutputStream and/or McsInputStream. This would send a teardown message causing McsService to take the new connection down right away. In unlucky situations, this could cause small connect/teardown loops. This commit hopes to prevent those.

Change-Id: Id347d598e028bdd1ba2622cd6a5c6b07874335d6
2022-01-25 12:37:08 +01:00
Torsten Grote b9b1ef6246 Detect missing heartbeat ACKs and broken connections faster
Waiting twice the heartbeat interval since the last ACK can make us miss dead connections for more than 10min in which no push messages get received.

This change requires the ACK to come within 90 seconds of sending the heartbeat ping, otherwise the connection is considered dead which will trigger a re-connect.

We use a high timeout of 90 seconds, because in some mobile networks (like in trains) ping times of more than 60 seconds have been observed in practice.

Change-Id: I8e63843400b47e1a6d23faf180f9446bcb5e0cd8
2022-01-25 12:37:08 +01:00
Torsten Grote 2ba2c04cc0 Don't say we are connected when push is disabled for current network
This may cause a connection attempt, but in connect(), we'll notice that it is disabled and won't continue to connect.

Change-Id: Id5f00539a48fad16b5e5f55bd336fb8890aa1acc
2022-01-25 12:37:08 +01:00
Torsten Grote bb68674cae Initiate connection teardown only once
Otherwise, this gets called multiple times from different places via MSG_TEARDOWN. This causes the reconnect delay to increase with each call to scheduleReconnect(), increasing the time we stay disconnected.

This commit introduces a boolean flag preventing handleTeardown() to run twice or more until connect() was called again.

Change-Id: I3d7cb08d696be48532a61819fbb279a908919a3d
2022-01-25 12:37:08 +01:00
Marcus Hoffmann 10455df7e2 also catch potential stopAdvertising exceptions 2022-01-25 00:03:13 +01:00
Marcus Hoffmann 88d14e9e8a fix log message on BLE advertising on SDK < 26 2022-01-25 00:03:13 +01:00
Fynn Godau 15a1b15591 Really fix nearby permission check in settings view 2022-01-25 00:03:13 +01:00
Marcus Hoffmann 80b3129356 improve background location request flow
Instead of directly jumping to the settings screen (which is what the
"Request background location access" amounts to) and leaving the user
there without a clue what to do, we update the label, icon and button
with new text explaining what the user needs to do next.
2022-01-25 00:03:13 +01:00
Marcus Hoffmann 6cfc0aa255 request BLUETOOTH_SCAN and ADVERTISE permissions on Android 12
This also adds a warning notification when the app doesn't have the
required permission after an OS update.
2022-01-25 00:03:13 +01:00
Marvin W 4a5c98491b
Bump version 2022-01-24 19:53:07 +01:00
Marvin W 7969aa817b
Fix Lint issues 2022-01-24 19:51:54 +01:00
Marvin W 91071bbea1
Move ReCAPTCHA Activity to UI package 2022-01-24 19:11:36 +01:00
Marvin W 6e21b52bfe
Profile Manager: Add configuration features 2022-01-24 17:47:34 +01:00
Marvin W 3bbae67fda
Claim to provide tapandpay_token_listing feature 2022-01-24 17:47:34 +01:00
Marvin W 9f3a5ce329
Mapbox: Don't crash for invalid Polygons 2022-01-24 17:47:34 +01:00
Marvin W 711e5c7e12
Fix build of maps-vtm 2022-01-24 17:47:34 +01:00
Marvin W 552aaf856d
Update stub services 2022-01-24 17:47:34 +01:00
Marvin W 10de88b89f
Add new Auth API features 2022-01-24 17:47:34 +01:00
Marvin W 854f879da4
Update checkin service API 2022-01-24 17:47:34 +01:00
Marvin W 9304375da7
ENF: Use new base features 2022-01-24 17:47:34 +01:00
Marvin W fd8ce71a83
Add initial UI for new features 2022-01-24 17:47:34 +01:00
Marvin W e3b042ccd7
Update GCM/IID client code 2022-01-24 17:47:33 +01:00
Marvin W 050afb8f87
Update base 2022-01-24 17:47:33 +01:00
Marvin W 0bdcb1319b
Update location service 2022-01-24 17:47:33 +01:00
Marvin W d593de25ef
Update dependencies 2022-01-24 17:47:33 +01:00
Marvin W 56b8bc9f65
Update DroidGuard + SafetyNet 2022-01-18 18:42:23 +01:00
Marvin W ee91cc9b79
Update Gradle 2022-01-18 13:51:16 +01:00
Marvin W 2dd6b6b173
Fixes for profile manager 2022-01-18 13:50:45 +01:00
Marvin W 68e116388b
ENF: Add proper default for new columns 2022-01-16 23:08:51 +01:00
Marvin W 110157dab8
ENF: Handle issue with negative or 0 durations due to system time changes
With time synchronisation and can happen that timestamps in database are newer
than reported system time, which then can lead to reported exposure with
multiple measurements but negative or zero reported duration, resulting in
divide-by-zero and other issues in average RSSI calculation. This fixes the
issue, by ignoring new measurements of the same RPI when they are seemingly
older than a previous measurement.
2022-01-14 10:48:03 +01:00
Marvin W d16d438350
Location: Ensure we don't keep GPS active indoors when requesting app is already gone 2022-01-14 10:39:10 +01:00
Marvin W fba6fbdfd0
DotChartView: Format date without year 2022-01-14 10:39:10 +01:00
Marvin W 05d18bb8d2
Do not use application context when requesting resources
Application context is not properly themed, resulting in ugly UI on some devices
2022-01-14 10:39:10 +01:00
Marvin W a7b2b7e3f8
Add profile manager 2022-01-14 10:39:10 +01:00
Marvin W 6d45bfb7ed
Add DroidGuard support 2022-01-14 10:39:09 +01:00
Marvin W d8325870cb
Add basic chimera classes for DroidGuard compatibility 2022-01-14 10:39:09 +01:00
Marvin W 6202aa9b34
Add play-services-tasks-ktx 2022-01-14 10:39:09 +01:00
Marvin W 41a32d93fe
Move kotlin extension from play-services-basement to play-services-basement-ktx 2022-01-14 10:39:09 +01:00
Marvin W a7eb9a2732
Update firebase dynamic links API 2022-01-14 10:39:09 +01:00
Oliver S ac779f9ac8 Fix off by one error 2022-01-14 10:12:57 +01:00
Oliver S 7321ea7d25 Add missing fields to ENF database 2022-01-14 10:12:57 +01:00
Oliver S 24d6b5aef5 Use ENF version 1.1 to send confidence values 2022-01-14 10:07:23 +01:00
Kaukov 64f12230f7 Bump GMS version 2021-12-15 22:32:22 +01:00
Francesco Saltori 507c20aaac
Update and improve Italian translation (#1457) 2021-11-25 06:43:59 +01:00
Marcus Hoffmann 0ae3a82b4e add CWA and CCTG exposure file public signing keys
From: https://github.com/corona-warn-app/cwa-documentation/issues/740#issuecomment-963223074
2021-11-24 23:21:02 -06:00
Torsten Grote 222b03f7ee Respect bounds for heartbeat intervals when learning from timeouts
Without this it can happen that we learn the interval too close to 0 which causes us to assume that we are always disconnected breaking Mcs network functionality

Change-Id: I0dee59d1365a8e10941dd346bfcd7af19d79d523
2021-11-03 13:02:51 +01:00
Torsten Grote 00a06d4b94 Don't reconnect to gcm when opening settings
This doesn't treat the underlying issues and can make debugging harder if we suddenly auto-connect due to this.

Change-Id: I9c04c78e8ebda8472b0cd8c7b0b0deb2e2300139
2021-11-03 13:02:51 +01:00
Torsten Grote 14d666a163 Do a check-in if we are not actually checked in, but should be, e.g. cleared app data
Change-Id: If800339fa35644d8783203fbd511128457d6d101
2021-11-03 13:02:51 +01:00
Torsten Grote f806e1bcdb When check-in fails due to missing internet access, try again as soon as access is restored 2021-11-03 13:02:51 +01:00
Torsten Grote 1367649a18 Lower heartbeat interval when we find the connection reset when wanting to send a message 2021-11-03 13:02:51 +01:00
Torsten Grote d25e351c41 Re-connected in SettingsFragment if we are erroneously disconnected 2021-11-03 13:02:51 +01:00
Christian Grigis 9067f66f0c Instantiate key signatures on demand 2021-11-02 17:35:06 +01:00
Christian Grigis dd617e27b6 Verify keyfiles only when a backend PK exists 2021-11-02 17:35:06 +01:00
Christian Grigis 8a1ac35c4d Ensure zip keyfile has unique entries 2021-11-02 17:35:06 +01:00
Christian Grigis 3885ed6ef8 Verifiy signature of received keyfiles 2021-11-02 17:35:06 +01:00
David 925ce2ddd9 Fix UI crash in Asus 5.0 devices
Closes: #267 , #463 .
This is the same fix made by emv412 here: https://github.com/microg/android_external_MicroGUiTools/pull/11
2021-10-30 21:08:26 +02:00
Marcos Marado a4a20dc87a do not hardcode the apk path
The apk path is hardcoded, but it is in fact placed inside the build
path. This patch changes it, so the apk path is calculated from the
build path.

This patch does not change any behavior. However, it allows future
changes to build path to automaticly reflect on the apk path.
2021-10-30 21:07:26 +02:00
Torsten Grote a808476b7d Work around rare crashes that can happen when fragments are not attached to a context
while co-routines are still executing but requiring a context

Change-Id: Ie6c7cee50014b59c25384d3bf9a122081b9917fc
2021-10-30 20:48:40 +02:00
Marvin W ae8516a339
Add some Cast APIs 2021-10-29 15:29:52 +02:00
Francesco Saltori 82d11e4e7a Log which app was denied push permission 2021-10-07 12:21:48 +02:00
Marvin W e90ce370d4
Don't log callbacks of Google Sign-In page to logcat
Google seems to include sensitive account details in some of these fields.
Fixes #1567
2021-10-06 11:51:04 +02:00
309 changed files with 4362 additions and 1551 deletions

View File

@ -22,20 +22,20 @@ LOCAL_PACKAGE_NAME := GmsCore
gmscore_root := $(LOCAL_PATH)
gmscore_dir := play-services-core
gmscore_out := $(TARGET_COMMON_OUT_ROOT)/obj/APPS/$(LOCAL_MODULE)_intermediates
gmscore_build := $(gmscore_root)/$(gmscore_dir)/build
gmscore_apk := build/outputs/apk/release/play-services-core-release-unsigned.apk
gmscore_build := $(gmscore_dir)/build
gmscore_apk := $(gmscore_build)/outputs/apk/release/play-services-core-release-unsigned.apk
$(gmscore_root)/$(gmscore_dir)/$(gmscore_apk):
rm -Rf $(gmscore_build)
$(gmscore_root)/$(gmscore_apk):
rm -Rf $(gmscore_root)/$(gmscore_build)
mkdir -p $(ANDROID_BUILD_TOP)/$(gmscore_out)
ln -s $(ANDROID_BUILD_TOP)/$(gmscore_out) $(ANDROID_BUILD_TOP)/$(gmscore_build)
ln -s $(ANDROID_BUILD_TOP)/$(gmscore_out) $(ANDROID_BUILD_TOP)/$(gmscore_root)/$(gmscore_build)
echo "sdk.dir=$(ANDROID_HOME)" > $(gmscore_root)/local.properties
cd $(gmscore_root) && git submodule update --recursive --init
cd $(gmscore_root)/$(gmscore_dir) && JAVA_TOOL_OPTIONS="$(JAVA_TOOL_OPTIONS) -Dfile.encoding=UTF8" ../gradlew assembleRelease
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(gmscore_dir)/$(gmscore_apk)
LOCAL_SRC_FILES := $(gmscore_apk)
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
include $(BUILD_PREBUILT)
include $(BUILD_PREBUILT)

121
LICENSES/CC0-1.0.txt Normal file
View File

@ -0,0 +1,121 @@
Creative Commons Legal Code
CC0 1.0 Universal
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
HEREUNDER.
Statement of Purpose
The laws of most jurisdictions throughout the world automatically confer
exclusive Copyright and Related Rights (defined below) upon the creator
and subsequent owner(s) (each and all, an "owner") of an original work of
authorship and/or a database (each, a "Work").
Certain owners wish to permanently relinquish those rights to a Work for
the purpose of contributing to a commons of creative, cultural and
scientific works ("Commons") that the public can reliably and without fear
of later claims of infringement build upon, modify, incorporate in other
works, reuse and redistribute as freely as possible in any form whatsoever
and for any purposes, including without limitation commercial purposes.
These owners may contribute to the Commons to promote the ideal of a free
culture and the further production of creative, cultural and scientific
works, or to gain reputation or greater distribution for their Work in
part through the use and efforts of others.
For these and/or other purposes and motivations, and without any
expectation of additional consideration or compensation, the person
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
is an owner of Copyright and Related Rights in the Work, voluntarily
elects to apply CC0 to the Work and publicly distribute the Work under its
terms, with knowledge of his or her Copyright and Related Rights in the
Work and the meaning and intended legal effect of CC0 on those rights.
1. Copyright and Related Rights. A Work made available under CC0 may be
protected by copyright and related or neighboring rights ("Copyright and
Related Rights"). Copyright and Related Rights include, but are not
limited to, the following:
i. the right to reproduce, adapt, distribute, perform, display,
communicate, and translate a Work;
ii. moral rights retained by the original author(s) and/or performer(s);
iii. publicity and privacy rights pertaining to a person's image or
likeness depicted in a Work;
iv. rights protecting against unfair competition in regards to a Work,
subject to the limitations in paragraph 4(a), below;
v. rights protecting the extraction, dissemination, use and reuse of data
in a Work;
vi. database rights (such as those arising under Directive 96/9/EC of the
European Parliament and of the Council of 11 March 1996 on the legal
protection of databases, and under any national implementation
thereof, including any amended or successor version of such
directive); and
vii. other similar, equivalent or corresponding rights throughout the
world based on applicable law or treaty, and any national
implementations thereof.
2. Waiver. To the greatest extent permitted by, but not in contravention
of, applicable law, Affirmer hereby overtly, fully, permanently,
irrevocably and unconditionally waives, abandons, and surrenders all of
Affirmer's Copyright and Related Rights and associated claims and causes
of action, whether now known or unknown (including existing as well as
future claims and causes of action), in the Work (i) in all territories
worldwide, (ii) for the maximum duration provided by applicable law or
treaty (including future time extensions), (iii) in any current or future
medium and for any number of copies, and (iv) for any purpose whatsoever,
including without limitation commercial, advertising or promotional
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
member of the public at large and to the detriment of Affirmer's heirs and
successors, fully intending that such Waiver shall not be subject to
revocation, rescission, cancellation, termination, or any other legal or
equitable action to disrupt the quiet enjoyment of the Work by the public
as contemplated by Affirmer's express Statement of Purpose.
3. Public License Fallback. Should any part of the Waiver for any reason
be judged legally invalid or ineffective under applicable law, then the
Waiver shall be preserved to the maximum extent permitted taking into
account Affirmer's express Statement of Purpose. In addition, to the
extent the Waiver is so judged Affirmer hereby grants to each affected
person a royalty-free, non transferable, non sublicensable, non exclusive,
irrevocable and unconditional license to exercise Affirmer's Copyright and
Related Rights in the Work (i) in all territories worldwide, (ii) for the
maximum duration provided by applicable law or treaty (including future
time extensions), (iii) in any current or future medium and for any number
of copies, and (iv) for any purpose whatsoever, including without
limitation commercial, advertising or promotional purposes (the
"License"). The License shall be deemed effective as of the date CC0 was
applied by Affirmer to the Work. Should any part of the License for any
reason be judged legally invalid or ineffective under applicable law, such
partial invalidity or ineffectiveness shall not invalidate the remainder
of the License, and in such case Affirmer hereby affirms that he or she
will not (i) exercise any of his or her remaining Copyright and Related
Rights in the Work or (ii) assert any associated claims and causes of
action with respect to the Work, in either case contrary to Affirmer's
express Statement of Purpose.
4. Limitations and Disclaimers.
a. No trademark or patent rights held by Affirmer are waived, abandoned,
surrendered, licensed or otherwise affected by this document.
b. Affirmer offers the Work as-is and makes no representations or
warranties of any kind concerning the Work, express, implied,
statutory or otherwise, including without limitation warranties of
title, merchantability, fitness for a particular purpose, non
infringement, or the absence of latent or other defects, accuracy, or
the present or absence of errors, whether or not discoverable, all to
the greatest extent permissible under applicable law.
c. Affirmer disclaims responsibility for clearing rights of other persons
that may apply to the Work or any use thereof, including without
limitation any person's Copyright and Related Rights in the Work.
Further, Affirmer disclaims responsibility for obtaining any necessary
consents, permissions or other rights required for any use of the
Work.
d. Affirmer understands and acknowledges that Creative Commons is not a
party to this document and has no duty or obligation with respect to
this CC0 or use of the Work.

View File

@ -5,7 +5,7 @@
microG GmsCore is a FLOSS (Free/Libre Open Source Software) framework to allow applications designed for Google Play Services to run on systems, where Play Services is not available.
This fork tweaks MicroG to be usable by applications that require Google authentication such as Youtube Vanced.
This fork tweaks MicroG to be usable by applications that require Google authentication such as Vanced.
## Notable changes

View File

@ -4,31 +4,9 @@
*/
buildscript {
ext.cronetVersion = '91.0.4472.120.1'
ext.safeParcelVersion = '1.7.0'
ext.kotlinVersion = '1.4.32'
ext.coroutineVersion = '1.3.8'
ext.annotationVersion = '1.2.0'
ext.appcompatVersion = '1.2.0'
ext.fragmentVersion = '1.3.0'
ext.lifecycleVersion = '2.3.1'
ext.mediarouterVersion = '1.2.2'
ext.navigationVersion = '2.3.5'
ext.preferenceVersion = '1.1.1'
ext.recyclerviewVersion = '1.1.0'
ext.supportLibraryVersion = "28.0.0"
ext.wireVersion = '3.2.2'
ext.androidBuildGradleVersion = "4.1.0"
ext.androidBuildVersionTools = "30.0.2"
ext.androidMinSdk = 21
ext.androidTargetSdk = 29
ext.androidCompileSdk = 30
ext.androidMinSdk = 23
ext.androidTargetSdk = 30
ext.androidCompileSdk = 31
repositories {
jcenter()
@ -36,9 +14,9 @@ buildscript {
}
dependencies {
classpath 'com.android.tools.build:gradle:7.0.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
classpath "com.squareup.wire:wire-gradle-plugin:$wireVersion"
classpath 'com.android.tools.build:gradle:7.1.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10"
classpath "com.squareup.wire:wire-gradle-plugin:3.2.2"
}
}
@ -46,8 +24,8 @@ allprojects {
apply plugin: 'idea'
group = 'org.microg.gms'
version = "0.2.22.212658"
ext.appVersionCode = 212658001
version = "0.2.24.220220"
ext.appVersionCode = 220220001
ext.isReleaseVersion = false
}

View File

@ -1,6 +1,6 @@
#Sat Sep 11 09:04:01 CEST 2021
#Wed Feb 09 22:14:11 CET 2022
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME

274
gradlew vendored
View File

@ -1,7 +1,8 @@
#!/usr/bin/env sh
#!/bin/sh
# SPDX-License-Identifier: Apache-2.0
#
# Copyright 2015 the original author or authors.
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@ -17,67 +18,101 @@
#
##############################################################################
##
## Gradle start up script for UN*X
##
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
APP_BASE_NAME=${0##*/}
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
MAX_FD=maximum
warn () {
echo "$*"
}
} >&2
die () {
echo
echo "$*"
echo
exit 1
}
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
@ -87,99 +122,112 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD="$JAVA_HOME/bin/java"
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=`expr $i + 1`
done
case $i in
0) set -- ;;
1) set -- "$args0" ;;
2) set -- "$args0" "$args1" ;;
3) set -- "$args0" "$args1" "$args2" ;;
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=`save "$@"`
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
exec "$JAVACMD" "$@"
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"

View File

@ -18,7 +18,7 @@ apply plugin: 'com.android.library'
android {
compileSdkVersion androidCompileSdk
buildToolsVersion "$androidBuildVersionTools"
buildToolsVersion "30.0.3"
defaultConfig {
minSdkVersion androidMinSdk

View File

@ -0,0 +1,8 @@
package com.google.android.gms.auth.api.internal;
import com.google.android.gms.auth.api.proxy.ProxyResponse;
interface IAuthCallbacks {
void onProxyResponse(in ProxyResponse response) = 0;
void onSpatulaHeader(String spatulaHeader) = 1;
}

View File

@ -0,0 +1,11 @@
package com.google.android.gms.auth.api.internal;
import com.google.android.gms.auth.api.internal.IAuthCallbacks;
//import com.google.android.gms.auth.api.proxy.ProxyGrpcRequest;
import com.google.android.gms.auth.api.proxy.ProxyRequest;
interface IAuthService {
void performProxyRequest(IAuthCallbacks callbacks, in ProxyRequest request) = 0;
// void performProxyGrpcRequest(IAuthCallback callbacks, in ProxyGrpcRequest request) = 1;
void getSpatulaHeader(IAuthCallbacks callbacks) = 2;
}

View File

@ -0,0 +1,3 @@
package com.google.android.gms.auth.api.proxy;
parcelable ProxyRequest;

View File

@ -0,0 +1,3 @@
package com.google.android.gms.auth.api.proxy;
parcelable ProxyResponse;

View File

@ -0,0 +1,6 @@
package com.google.android.gms.auth.appcert;
interface IAppCertService {
boolean fetchDeviceKey() = 0;
String getSpatulaHeader(String packageName) = 1;
}

View File

@ -2,4 +2,6 @@ package com.google.android.gms.checkin.internal;
interface ICheckinService {
String getDeviceDataVersionInfo();
long getLastCheckinSuccessTime();
String getLastSimOperator();
}

View File

@ -1,7 +1,13 @@
package com.google.android.gms.clearcut.internal;
import com.google.android.gms.common.api.Status;
import com.google.android.gms.common.data.DataHolder;
interface IClearcutLoggerCallbacks {
oneway void onStatus(in Status status) = 0;
oneway void onLogResult(in Status status) = 0;
oneway void onForceUploadResult(in Status status) = 1;
oneway void onStartCollectForDebugResult(in Status status, long l) = 2;
oneway void onStopCollectForDebugResult(in Status status) = 3;
oneway void onCollectForDebugExpiryTime(in Status status, long l) = 4;
oneway void onLogEventParcelables(in DataHolder data) = 6;
}

View File

@ -4,5 +4,11 @@ import com.google.android.gms.clearcut.internal.IClearcutLoggerCallbacks;
import com.google.android.gms.clearcut.LogEventParcelable;
interface IClearcutLoggerService {
void log(IClearcutLoggerCallbacks callbacks, in LogEventParcelable event) = 0;
oneway void log(IClearcutLoggerCallbacks callbacks, in LogEventParcelable event) = 0;
oneway void forceUpload(IClearcutLoggerCallbacks callbacks) = 1;
oneway void startCollectForDebug(IClearcutLoggerCallbacks callbacks) = 2;
oneway void stopCollectForDebug(IClearcutLoggerCallbacks callbacks) = 3;
oneway void getCollectForDebugExpiryTime(IClearcutLoggerCallbacks callbacks) = 4;
oneway void getLogEventParcelablesLegacy(IClearcutLoggerCallbacks callbacks) = 5;
oneway void getLogEventParcelables(IClearcutLoggerCallbacks callbacks) = 6;
}

View File

@ -0,0 +1,3 @@
package com.google.android.gms.clearcut.internal;
parcelable PlayLoggerContext;

View File

@ -0,0 +1,55 @@
package com.google.android.gms.measurement.api.internal;
import com.google.android.gms.dynamic.IObjectWrapper;
import com.google.android.gms.measurement.api.internal.IBundleReceiver;
import com.google.android.gms.measurement.api.internal.IEventHandlerProxy;
import com.google.android.gms.measurement.api.internal.IStringProvider;
import com.google.android.gms.measurement.api.internal.InitializationParams;
interface IAppMeasurementDynamiteService {
void initialize(in IObjectWrapper context, in InitializationParams params, long timestamp) = 0;
void logEvent(String str, String str2, in Bundle bundle, boolean z, boolean z2, long timestamp) = 1;
void logEventAndBundle(String str, String str2, in Bundle bundle, IBundleReceiver receiver, long j) = 2;
void setUserProperty(String str, String str2, in IObjectWrapper obj, boolean z, long j) = 3;
void getUserProperties(String str, String str2, boolean z, IBundleReceiver receiver) = 4;
void getMaxUserProperties(String str, IBundleReceiver receiver) = 5;
void setUserId(String str, long j) = 6;
void setConditionalUserProperty(in Bundle bundle, long j) = 7;
void clearConditionalUserProperty(String str, String str2, in Bundle bundle) = 8;
void getConditionalUserProperties(String str, String str2, IBundleReceiver receiver) = 9;
void setMeasurementEnabled(boolean z, long j) = 10;
void resetAnalyticsData(long j) = 11;
void setMinimumSessionDuration(long j) = 12;
void setSessionTimeoutDuration(long j) = 13;
void setCurrentScreen(in IObjectWrapper obj, String str, String str2, long j) = 14;
void getCurrentScreenName(IBundleReceiver receiver) = 15;
void getCurrentScreenClass(IBundleReceiver receiver) = 16;
void setInstanceIdProvider(IStringProvider provider) = 17;
void getCachedAppInstanceId(IBundleReceiver receiver) = 18;
void getAppInstanceId(IBundleReceiver receiver) = 19;
void getGmpAppId(IBundleReceiver receiver) = 20;
void generateEventId(IBundleReceiver receiver) = 21;
void beginAdUnitExposure(String str, long j) = 22;
void endAdUnitExposure(String str, long j) = 23;
void onActivityStarted(in IObjectWrapper activity, long j) = 24;
void onActivityStopped(in IObjectWrapper activity, long j) = 25;
void onActivityCreated(in IObjectWrapper activity, in Bundle bundle, long j) = 26;
void onActivityDestroyed(in IObjectWrapper activity, long j) = 27;
void onActivityPaused(in IObjectWrapper activity, long j) = 28;
void onActivityResumed(in IObjectWrapper activity, long j) = 29;
void onActivitySaveInstanceState(in IObjectWrapper activity, IBundleReceiver receiver, long j) = 30;
void performAction(in Bundle bundle, IBundleReceiver receiver, long j) = 31;
void logHealthData(int i, String str, in IObjectWrapper obj, in IObjectWrapper obj2, in IObjectWrapper obj3) = 32;
void setEventInterceptor(IEventHandlerProxy proxy) = 33;
void registerOnMeasurementEventListener(IEventHandlerProxy proxy) = 34;
void unregisterOnMeasurementEventListener(IEventHandlerProxy proxy) = 35;
void initForTests(in Map map) = 36;
void getTestFlag(IBundleReceiver receiver, int i) = 37;
void setDataCollectionEnabled(boolean z) = 38;
void isDataCollectionEnabled(IBundleReceiver receiver) = 39;
void setDefaultEventParameters(in Bundle bundle) = 41;
void setConsent(in Bundle bundle, long j) = 43;
void setConsentThirdParty(in Bundle bundle, long j) = 44;
void clearMeasurementEnabled(long j) = 42;
}

View File

@ -0,0 +1,5 @@
package com.google.android.gms.measurement.api.internal;
interface IBundleReceiver {
void onBundle(in Bundle bundle);
}

View File

@ -0,0 +1,6 @@
package com.google.android.gms.measurement.api.internal;
interface IEventHandlerProxy {
void f1(String s1, String s2, in Bundle bundle, long j) = 0;
int f2() = 1;
}

View File

@ -0,0 +1,4 @@
package com.google.android.gms.measurement.api.internal;
interface IStringProvider {
}

View File

@ -0,0 +1,3 @@
package com.google.android.gms.measurement.api.internal;
parcelable InitializationParams;

View File

@ -3,23 +3,25 @@ package com.google.android.gms.measurement.internal;
import com.google.android.gms.measurement.internal.AppMetadata;
import com.google.android.gms.measurement.internal.ConditionalUserPropertyParcel;
import com.google.android.gms.measurement.internal.EventParcel;
import com.google.android.gms.measurement.internal.UserAttributeParcel;
interface IMeasurementService {
void f1(in EventParcel p0, in AppMetadata p1) = 0;
// void zza(UserAttributeParcel p0, AppMetadata p1) = 1;
void f4(in AppMetadata p0) = 3;
// void zza(EventParcel p0, String p1, String p2) = 4;
// void zzb(AppMetadata p0) = 5;
// List<UserAttributeParcel> zza(AppMetadata p0, boolean p1) = 6;
// byte[] zza(EventParcel p0, String p1) = 8;
void f1(in EventParcel event, in AppMetadata app) = 0;
void f2(in UserAttributeParcel attribute, in AppMetadata app) = 1;
void f4(in AppMetadata app) = 3;
// void f5(in EventParcel p0, String p1, String p2) = 4;
// void f6(in AppMetadata p0) = 5;
// List<UserAttributeParcel> f7(in AppMetadata p0, boolean p1) = 6;
// byte[] f9(in EventParcel p0, String p1) = 8;
void f10(long p0, String p1, String p2, String p3) = 9;
String f11(in AppMetadata p0) = 10;
void f12(in ConditionalUserPropertyParcel p0, in AppMetadata p1) = 11;
// void zza(ConditionalUserPropertyParcel p0) = 12;
// List<UserAttributeParcelzkr> zza(String p0, String p1, boolean p2, AppMetadata p3) = 13;
// List<UserAttributeParcel> zza(String p0, String p1, String p2, boolean p3) = 14;
// List<ConditionalUserPropertyParcel> zza(String p0, String p1, AppMetadata p2) = 15;
// List<ConditionalUserPropertyParcel> zza(String p0, String p1, String p2) = 16;
// void zzd(AppMetadata p0) = 17;
// void zza(Bundle p0, AppMetadata p1) = 18;
String f11(in AppMetadata app) = 10;
void f12(in ConditionalUserPropertyParcel property, in AppMetadata app) = 11;
// void f13(ConditionalUserPropertyParcel p0) = 12;
// List<UserAttributeParcel> getUserProperties(String p0, String p1, boolean p2, in AppMetadata p3) = 13;
// List<UserAttributeParcel> getUserPropertiesAs(String p0, String p1, String p2, boolean p3) = 14;
// List<ConditionalUserPropertyParcel> getConditionalUserProperties(String p0, String p1, in AppMetadata p2) = 15;
// List<ConditionalUserPropertyParcel> getCondtionalUserPropertiesAs(String p0, String p1, String p2) = 16;
// void f18(in AppMetadata p0) = 17;
void setDefaultEventParameters(in Bundle params, in AppMetadata app) = 18;
// void f20(in AppMetadata p0) = 19;
}

View File

@ -1,8 +1,9 @@
package com.google.android.gms.playlog.internal;
import com.google.android.gms.clearcut.internal.PlayLoggerContext;
import com.google.android.gms.playlog.internal.LogEvent;
import com.google.android.gms.playlog.internal.PlayLoggerContext;
// Deprecated
interface IPlayLogService {
void onEvent(String packageName, in PlayLoggerContext context, in LogEvent event) = 1;
void onMultiEvent(String packageName, in PlayLoggerContext context, in List<LogEvent> events) = 2;

View File

@ -1,3 +0,0 @@
package com.google.android.gms.playlog.internal;
parcelable PlayLoggerContext;

View File

@ -0,0 +1,3 @@
package com.google.android.gms.usagereporting;
parcelable UsageReportingOptInOptions;

View File

@ -0,0 +1,11 @@
package com.google.android.gms.usagereporting.internal;
import com.google.android.gms.common.api.Status;
import com.google.android.gms.usagereporting.UsageReportingOptInOptions;
interface IUsageReportingCallbacks {
oneway void onOptInOptions(in Status status, in UsageReportingOptInOptions options) = 1;
oneway void onOptInOptionsSet(in Status status) = 2;
oneway void onOptInOptionsChangedListenerAdded(in Status status) = 3;
oneway void onOptInOptionsChangedListenerRemoved(in Status status) = 4;
}

View File

@ -0,0 +1,5 @@
package com.google.android.gms.usagereporting.internal;
interface IUsageReportingOptInOptionsChangedListener {
oneway void onOptionsChanged() = 1;
}

View File

@ -0,0 +1,12 @@
package com.google.android.gms.usagereporting.internal;
import com.google.android.gms.usagereporting.internal.IUsageReportingCallbacks;
import com.google.android.gms.usagereporting.internal.IUsageReportingOptInOptionsChangedListener;
import com.google.android.gms.usagereporting.UsageReportingOptInOptions;
interface IUsageReportingService {
oneway void getOptInOptions(IUsageReportingCallbacks callbacks) = 1;
oneway void setOptInOptions(in UsageReportingOptInOptions options, IUsageReportingCallbacks callbacks) = 2;
oneway void addOptInOptionsChangedListener(IUsageReportingOptInOptionsChangedListener listener, IUsageReportingCallbacks callbacks) = 3;
oneway void removeOptInOptionsChangedListener(IUsageReportingOptInOptionsChangedListener listener, IUsageReportingCallbacks callbacks) = 4;
}

View File

@ -4,5 +4,6 @@ import com.mgoogle.android.gms.phenotype.internal.IPhenotypeCallbacks;
interface IPhenotypeService {
void register(IPhenotypeCallbacks callbacks, String p1, int p2, in String[] p3, in byte[] p4) = 0;
void register2(IPhenotypeCallbacks callbacks, String p1, int p2, in String[] p3, in int[] p4, in byte[] p5) = 1;
void getConfigurationSnapshot(IPhenotypeCallbacks callbacks, String p1, String p2, String p3) = 10;
}

View File

@ -24,7 +24,7 @@ import org.microg.safeparcel.SafeParceled;
public class CorpusStatus extends AutoSafeParcelable {
@SafeParceled(1000)
private int versionCode;
private final int versionCode;
@SafeParceled(1)
public boolean found;
@SafeParceled(2)

View File

@ -21,7 +21,7 @@ import org.microg.safeparcel.SafeParceled;
public class PIMEUpdateResponse extends AutoSafeParcelable {
@SafeParceled(1000)
private int versionCode;
private final int versionCode;
@SafeParceled(1)
private String b;

View File

@ -24,7 +24,7 @@ import java.util.List;
public class QuerySpecification extends AutoSafeParcelable {
@SafeParceled(1000)
private int versionCode = 2;
private final int versionCode = 2;
@SafeParceled(1)
public final boolean b;
//@SafeParceled(value = 2, subType = "TODO")

View File

@ -21,7 +21,7 @@ import org.microg.safeparcel.SafeParceled;
public class SearchResults extends AutoSafeParcelable {
@SafeParceled(1000)
private int versionCode = 2;
private final int versionCode = 2;
public static Creator<SearchResults> CREATOR = new AutoCreator<SearchResults>(SearchResults.class);
}

View File

@ -21,7 +21,7 @@ import org.microg.safeparcel.SafeParceled;
public class SuggestSpecification extends AutoSafeParcelable {
@SafeParceled(1000)
private int versionCode;
private final int versionCode;
public SuggestSpecification() {
versionCode = 2;

View File

@ -21,7 +21,7 @@ import org.microg.safeparcel.SafeParceled;
public class SuggestionResults extends AutoSafeParcelable {
@SafeParceled(1000)
private int versionCode;
private final int versionCode;
@SafeParceled(1)
public final String errorMessage;

View File

@ -19,5 +19,5 @@ package com.google.android.gms.auth;
import org.microg.safeparcel.AutoSafeParcelable;
public class AccountChangeEvent extends AutoSafeParcelable {
public static Creator<AccountChangeEvent> CREATOR = new AutoCreator<>(AccountChangeEvent.class);
public static Creator<AccountChangeEvent> CREATOR = new AutoCreator<AccountChangeEvent>(AccountChangeEvent.class);
}

View File

@ -21,12 +21,12 @@ import org.microg.safeparcel.SafeParceled;
public class AccountChangeEventsRequest extends AutoSafeParcelable {
@SafeParceled(1)
private int versionCode = 1;
private final int versionCode = 1;
@SafeParceled(2)
private int i;
@SafeParceled(3)
private String s;
public static Creator<AccountChangeEventsRequest> CREATOR = new AutoCreator<>(AccountChangeEventsRequest.class);
public static Creator<AccountChangeEventsRequest> CREATOR = new AutoCreator<AccountChangeEventsRequest>(AccountChangeEventsRequest.class);
}

View File

@ -24,13 +24,13 @@ import java.util.List;
public class AccountChangeEventsResponse extends AutoSafeParcelable {
@SafeParceled(1)
private int versionCode = 1;
private final int versionCode = 1;
@SafeParceled(value = 2, subClass = AccountChangeEvent.class)
private List<AccountChangeEvent> events;
private final List<AccountChangeEvent> events;
public AccountChangeEventsResponse() {
events = new ArrayList<>();
events = new ArrayList<AccountChangeEvent>();
}
public static Creator<AccountChangeEventsResponse> CREATOR = new AutoCreator<>(AccountChangeEventsResponse.class);
public static Creator<AccountChangeEventsResponse> CREATOR = new AutoCreator<AccountChangeEventsResponse>(AccountChangeEventsResponse.class);
}

View File

@ -25,7 +25,7 @@ import java.util.List;
public class TokenData extends AutoSafeParcelable {
@SafeParceled(1)
private int versionCode = 1;
private final int versionCode = 1;
@SafeParceled(2)
public final String token;
@ -60,5 +60,5 @@ public class TokenData extends AutoSafeParcelable {
this.scopes = null;
}
public static final Creator<TokenData> CREATOR = new AutoCreator<>(TokenData.class);
public static final Creator<TokenData> CREATOR = new AutoCreator<TokenData>(TokenData.class);
}

View File

@ -13,37 +13,29 @@ import android.text.TextUtils;
import org.microg.gms.common.PublicApi;
import org.microg.safeparcel.AutoSafeParcelable;
import org.microg.safeparcel.SafeParceled;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
@PublicApi
public class Credential extends AutoSafeParcelable {
@Field(1000)
private int versionCode = 1;
private final int versionCode = 1;
@Field(1)
private String id;
@Field(2)
private String name;
@Field(3)
private Uri profilePictureUri;
@Field(value = 4, subClass = IdToken.class)
private List<IdToken> tokens;
@Field(5)
private String password;
@Field(6)
private String accountType;
@Field(7)
private String generatedPassword;
@ -132,19 +124,19 @@ public class Credential extends AutoSafeParcelable {
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Credential)) return false;
if (o == null || !(o instanceof Credential)) return false;
Credential that = (Credential) o;
if (!Objects.equals(id, that.id)) return false;
if (!Objects.equals(name, that.name)) return false;
if (!Objects.equals(profilePictureUri, that.profilePictureUri))
if (id != null ? !id.equals(that.id) : that.id != null) return false;
if (name != null ? !name.equals(that.name) : that.name != null) return false;
if (profilePictureUri != null ? !profilePictureUri.equals(that.profilePictureUri) : that.profilePictureUri != null)
return false;
if (!Objects.equals(password, that.password))
if (password != null ? !password.equals(that.password) : that.password != null)
return false;
if (!Objects.equals(accountType, that.accountType))
if (accountType != null ? !accountType.equals(that.accountType) : that.accountType != null)
return false;
return Objects.equals(generatedPassword, that.generatedPassword);
return generatedPassword != null ? generatedPassword.equals(that.generatedPassword) : that.generatedPassword == null;
}
@ -154,7 +146,7 @@ public class Credential extends AutoSafeParcelable {
}
public static class Builder {
private String id;
private final String id;
private String name;
private Uri profilePictureUri;
private String password;
@ -238,5 +230,5 @@ public class Credential extends AutoSafeParcelable {
}
}
public static final Creator<Credential> CREATOR = new AutoCreator<>(Credential.class);
public static final Creator<Credential> CREATOR = new AutoCreator<Credential>(Credential.class);
}

View File

@ -10,20 +10,17 @@ package com.google.android.gms.auth.api.credentials;
import org.microg.gms.common.PublicApi;
import org.microg.safeparcel.AutoSafeParcelable;
import org.microg.safeparcel.SafeParceled;
@PublicApi
public class CredentialPickerConfig extends AutoSafeParcelable {
@Field(1000)
private int versionCode = 1;
private final int versionCode = 1;
@Field(1)
private boolean showAddAccountButton;
@Field(2)
private boolean showCancelButton;
@Field(3)
private boolean forNewAccount;
@ -60,7 +57,7 @@ public class CredentialPickerConfig extends AutoSafeParcelable {
'}';
}
public static class Builder {
public class Builder {
private boolean showAddAccountButton;
private boolean showCancelButton;
private boolean forNewAccount;
@ -94,5 +91,5 @@ public class CredentialPickerConfig extends AutoSafeParcelable {
}
}
public static final Creator<CredentialPickerConfig> CREATOR = new AutoCreator<>(CredentialPickerConfig.class);
public static final Creator<CredentialPickerConfig> CREATOR = new AutoCreator<CredentialPickerConfig>(CredentialPickerConfig.class);
}

View File

@ -9,7 +9,6 @@
package com.google.android.gms.auth.api.credentials;
import org.microg.safeparcel.AutoSafeParcelable;
import org.microg.safeparcel.SafeParceled;
/**
* Parameters for requesting a Credential, via Auth.CredentialsApi.request(). Instances can be
@ -18,17 +17,14 @@ import org.microg.safeparcel.SafeParceled;
public class CredentialRequest extends AutoSafeParcelable {
@Field(1000)
private int versionCode = 1;
private final int versionCode = 1;
@Field(1)
private boolean passwordLoginSupported;
@Field(2)
private String[] accountTypes;
@Field(3)
private CredentialPickerConfig credentialPickerConfig;
@Field(4)
private CredentialPickerConfig credentialHintPickerConfig;
@ -65,7 +61,7 @@ public class CredentialRequest extends AutoSafeParcelable {
return passwordLoginSupported;
}
public static final Creator<CredentialRequest> CREATOR = new AutoCreator<>(CredentialRequest.class);
public static final Creator<CredentialRequest> CREATOR = new AutoCreator<CredentialRequest>(CredentialRequest.class);
public static class Builder {
private boolean passwordLoginSupported;

View File

@ -20,7 +20,7 @@ import java.util.Arrays;
@PublicApi
public class HintRequest extends AutoSafeParcelable {
@Field(1000)
private int versionCode = 2;
private final int versionCode = 2;
@Field(1)
private CredentialPickerConfig hintPickerConfig;
@ -167,4 +167,4 @@ public class HintRequest extends AutoSafeParcelable {
this.serverClientId = serverClientId;
}
}
}
}

View File

@ -10,13 +10,12 @@ package com.google.android.gms.auth.api.credentials;
import org.microg.gms.common.PublicApi;
import org.microg.safeparcel.AutoSafeParcelable;
import org.microg.safeparcel.SafeParceled;
@PublicApi
public class IdToken extends AutoSafeParcelable {
@Field(1000)
private int versionCode = 1;
private final int versionCode = 1;
@Field(1)
private String accountType;
@ -46,5 +45,5 @@ public class IdToken extends AutoSafeParcelable {
return id;
}
public static final Creator<IdToken> CREATOR = new AutoCreator<>(IdToken.class);
public static final Creator<IdToken> CREATOR = new AutoCreator<IdToken>(IdToken.class);
}

View File

@ -31,4 +31,4 @@ public final class IdentityProviders {
public static String getIdentityProviderForAccount(Account account) {
return null;
}
}
}

View File

@ -19,5 +19,5 @@ package com.google.android.gms.auth.api.credentials.internal;
import org.microg.safeparcel.AutoSafeParcelable;
public class DeleteRequest extends AutoSafeParcelable {
public static final Creator<DeleteRequest> CREATOR = new AutoCreator<>(DeleteRequest.class);
public static final Creator<DeleteRequest> CREATOR = new AutoCreator<DeleteRequest>(DeleteRequest.class);
}

View File

@ -19,5 +19,5 @@ package com.google.android.gms.auth.api.credentials.internal;
import org.microg.safeparcel.AutoSafeParcelable;
public class GeneratePasswordRequest extends AutoSafeParcelable {
public static final Creator<GeneratePasswordRequest> CREATOR = new AutoCreator<>(GeneratePasswordRequest.class);
public static final Creator<GeneratePasswordRequest> CREATOR = new AutoCreator<GeneratePasswordRequest>(GeneratePasswordRequest.class);
}

View File

@ -19,5 +19,5 @@ package com.google.android.gms.auth.api.credentials.internal;
import org.microg.safeparcel.AutoSafeParcelable;
public class SaveRequest extends AutoSafeParcelable {
public static final Creator<SaveRequest> CREATOR = new AutoCreator<>(SaveRequest.class);
public static final Creator<SaveRequest> CREATOR = new AutoCreator<SaveRequest>(SaveRequest.class);
}

View File

@ -0,0 +1,41 @@
/*
* SPDX-FileCopyrightText: 2022 microG Project Team
* SPDX-License-Identifier: Apache-2.0
*/
package com.google.android.gms.auth.api.proxy;
import android.os.Bundle;
import org.microg.safeparcel.AutoSafeParcelable;
public class ProxyRequest extends AutoSafeParcelable {
public static final int HTTP_METHOD_GET = 0;
public static final int HTTP_METHOD_POST = 1;
public static final int HTTP_METHOD_PUT = 2;
public static final int HTTP_METHOD_DELETE = 3;
public static final int HTTP_METHOD_HEAD = 4;
public static final int HTTP_METHOD_OPTIONS = 5;
public static final int HTTP_METHOD_TRACE = 6;
public static final int HTTP_METHOD_PATCH = 7;
@Field(1000)
private final int versionCode = 2;
@Field(1)
public String url;
@Field(2)
public int httpMethod;
@Field(3)
public long timeoutMillis;
@Field(4)
public byte[] body;
@Field(5)
public Bundle headers;
@Override
public String toString() {
return url;
}
public static final Creator<ProxyRequest> CREATOR = new AutoCreator<>(ProxyRequest.class);
}

View File

@ -0,0 +1,30 @@
/*
* SPDX-FileCopyrightText: 2022 microG Project Team
* SPDX-License-Identifier: Apache-2.0
*/
package com.google.android.gms.auth.api.proxy;
import android.app.PendingIntent;
import android.os.Bundle;
import org.microg.safeparcel.AutoSafeParcelable;
public class ProxyResponse extends AutoSafeParcelable {
public static final int STATUS_CODE_NO_CONNECTION = -1;
@Field(1000)
private final int versionCode = 1;
@Field(1)
public int gmsStatusCode;
@Field(2)
public PendingIntent recoveryAction;
@Field(3)
public int httpStatusCode;
@Field(4)
public Bundle headers;
@Field(5)
public byte[] body;
public static final Creator<ProxyResponse> CREATOR = new AutoCreator<>(ProxyResponse.class);
}

View File

@ -25,7 +25,7 @@ import org.microg.safeparcel.SafeParceled;
public class AccountRecoveryGuidanceRequest extends AutoSafeParcelable {
@SafeParceled(1)
private int versionCode = 1;
private final int versionCode = 1;
@SafeParceled(2)
@Deprecated
public final String accountName;
@ -42,5 +42,5 @@ public class AccountRecoveryGuidanceRequest extends AutoSafeParcelable {
this.account = account;
}
public static final Creator<AccountRecoveryGuidanceRequest> CREATOR = new AutoCreator<>(AccountRecoveryGuidanceRequest.class);
public static final Creator<AccountRecoveryGuidanceRequest> CREATOR = new AutoCreator<AccountRecoveryGuidanceRequest>(AccountRecoveryGuidanceRequest.class);
}

View File

@ -25,7 +25,7 @@ import org.microg.safeparcel.SafeParceled;
public class AccountRemovalRequest extends AutoSafeParcelable {
@SafeParceled(1)
private int versionCode = 1;
private final int versionCode = 1;
@SafeParceled(2)
@Deprecated
public final String accountName;
@ -42,5 +42,5 @@ public class AccountRemovalRequest extends AutoSafeParcelable {
this.account = account;
}
public static final Creator<AccountRemovalRequest> CREATOR = new AutoCreator<>(AccountRemovalRequest.class);
public static final Creator<AccountRemovalRequest> CREATOR = new AutoCreator<AccountRemovalRequest>(AccountRemovalRequest.class);
}

View File

@ -24,11 +24,11 @@ import org.microg.safeparcel.SafeParceled;
public class ConfirmCredentialsRequest extends AutoSafeParcelable {
@SafeParceled(1)
private int versionCode = 1;
private final int versionCode = 1;
@SafeParceled(2)
public AccountCredentials accountCredentials;
@SafeParceled(3)
public CaptchaSolution captchaSolution;
public static final Creator<ConfirmCredentialsRequest> CREATOR = new AutoCreator<>(ConfirmCredentialsRequest.class);
public static final Creator<ConfirmCredentialsRequest> CREATOR = new AutoCreator<ConfirmCredentialsRequest>(ConfirmCredentialsRequest.class);
}

View File

@ -26,7 +26,7 @@ import org.microg.safeparcel.SafeParceled;
public class TokenRequest extends AutoSafeParcelable{
@SafeParceled(1)
private int versionCode = 4;
private final int versionCode = 4;
@SafeParceled(3)
public String accountName;
@SafeParceled(4)
@ -40,5 +40,5 @@ public class TokenRequest extends AutoSafeParcelable{
return new Account(accountName, accountType);
}
public static final Creator<TokenRequest> CREATOR = new AutoCreator<>(TokenRequest.class);
public static final Creator<TokenRequest> CREATOR = new AutoCreator<TokenRequest>(TokenRequest.class);
}

View File

@ -27,7 +27,7 @@ import org.microg.safeparcel.SafeParceled;
public class ConfirmCredentialsWorkflowRequest extends AutoSafeParcelable {
@SafeParceled(1)
private int versionCode = 3;
private final int versionCode = 3;
@SafeParceled(2)
public String accountName;
@SafeParceled(3)
@ -39,5 +39,5 @@ public class ConfirmCredentialsWorkflowRequest extends AutoSafeParcelable {
@SafeParceled(6)
public AccountAuthenticatorResponse accountAuthenticatorResponse;
public static final Creator<ConfirmCredentialsWorkflowRequest> CREATOR = new AutoCreator<>(ConfirmCredentialsWorkflowRequest.class);
public static final Creator<ConfirmCredentialsWorkflowRequest> CREATOR = new AutoCreator<ConfirmCredentialsWorkflowRequest>(ConfirmCredentialsWorkflowRequest.class);
}

View File

@ -24,7 +24,7 @@ import org.microg.safeparcel.SafeParceled;
// TODO
public class AccountCredentials extends AutoSafeParcelable {
@SafeParceled(1)
private int versionCode = 2;
private final int versionCode = 2;
@SafeParceled(3)
public String accountName;
@SafeParceled(9)
@ -34,5 +34,5 @@ public class AccountCredentials extends AutoSafeParcelable {
return new Account(accountName, accountType);
}
public static final Creator<AccountCredentials> CREATOR = new AutoCreator<>(AccountCredentials.class);
public static final Creator<AccountCredentials> CREATOR = new AutoCreator<AccountCredentials>(AccountCredentials.class);
}

View File

@ -21,7 +21,7 @@ import org.microg.safeparcel.SafeParceled;
public class AppDescription extends AutoSafeParcelable {
@SafeParceled(1)
private int versionCode = 1;
private final int versionCode = 1;
@SafeParceled(2)
public int callingUid;
@SafeParceled(3)
@ -31,5 +31,5 @@ public class AppDescription extends AutoSafeParcelable {
@SafeParceled(5)
public String callingPkg;
public static final Creator<AppDescription> CREATOR = new AutoCreator<>(AppDescription.class);
public static final Creator<AppDescription> CREATOR = new AutoCreator<AppDescription>(AppDescription.class);
}

View File

@ -23,7 +23,7 @@ import org.microg.safeparcel.SafeParceled;
public class CaptchaSolution extends AutoSafeParcelable {
@SafeParceled(1)
private int versionCode = 1;
private final int versionCode = 1;
public static final Creator<CaptchaSolution> CREATOR = new AutoCreator<>(CaptchaSolution.class);
public static final Creator<CaptchaSolution> CREATOR = new AutoCreator<CaptchaSolution>(CaptchaSolution.class);
}

View File

@ -18,12 +18,12 @@ package com.google.android.gms.clearcut;
import android.util.Base64;
import com.google.android.gms.phenotype.ExperimentToken;
import com.google.android.gms.phenotype.GenericDimension;
import com.google.android.gms.playlog.internal.PlayLoggerContext;
import com.google.android.gms.clearcut.internal.LogVerifierResultParcelable;
import com.google.android.gms.clearcut.internal.PlayLoggerContext;
import com.mgoogle.android.gms.phenotype.ExperimentToken;
import com.mgoogle.android.gms.phenotype.GenericDimension;
import org.microg.safeparcel.AutoSafeParcelable;
import org.microg.safeparcel.SafeParceled;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
@ -33,7 +33,7 @@ import java.util.Arrays;
public class LogEventParcelable extends AutoSafeParcelable {
@Field(1)
private int versionCode = 1;
private final int versionCode = 1;
@Field(2)
public final PlayLoggerContext context;
@ -62,6 +62,9 @@ public class LogEventParcelable extends AutoSafeParcelable {
@Field(10)
public final GenericDimension[] genericDimensions;
@Field(11)
public final LogVerifierResultParcelable logVerifierResult;
private LogEventParcelable() {
context = null;
bytes = null;
@ -71,6 +74,7 @@ public class LogEventParcelable extends AutoSafeParcelable {
addPhenotypeExperimentTokens = false;
experimentTokenParcelables = null;
genericDimensions = null;
logVerifierResult = null;
}
public LogEventParcelable(PlayLoggerContext context, byte[] bytes, int[] testCodes, String[] mendelPackages, int[] experimentIds, byte[][] experimentTokens, boolean addPhenotypeExperimentTokens) {
@ -81,8 +85,9 @@ public class LogEventParcelable extends AutoSafeParcelable {
this.experimentIds = experimentIds;
this.experimentTokens = experimentTokens;
this.addPhenotypeExperimentTokens = addPhenotypeExperimentTokens;
experimentTokenParcelables = null;
genericDimensions = null;
this.experimentTokenParcelables = null;
this.genericDimensions = null;
this.logVerifierResult = null;
}
@Override
@ -112,5 +117,5 @@ public class LogEventParcelable extends AutoSafeParcelable {
}
}
public static final Creator<LogEventParcelable> CREATOR = new AutoCreator<>(LogEventParcelable.class);
public static final Creator<LogEventParcelable> CREATOR = new AutoCreator<LogEventParcelable>(LogEventParcelable.class);
}

View File

@ -0,0 +1,15 @@
/*
* SPDX-FileCopyrightText: 2022 microG Project Team
* SPDX-License-Identifier: Apache-2.0
*/
package com.google.android.gms.clearcut.internal;
import org.microg.safeparcel.AutoSafeParcelable;
public class LogVerifierResultParcelable extends AutoSafeParcelable {
@Field(1)
public boolean b;
public static final Creator<LogVerifierResultParcelable> CREATOR = new AutoCreator<>(LogVerifierResultParcelable.class);
}

View File

@ -1,28 +1,16 @@
/*
* Copyright (C) 2013-2017 microG Project Team
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* SPDX-FileCopyrightText: 2022 microG Project Team
* SPDX-License-Identifier: Apache-2.0
*/
package com.google.android.gms.playlog.internal;
package com.google.android.gms.clearcut.internal;
import org.microg.safeparcel.AutoSafeParcelable;
import org.microg.safeparcel.SafeParceled;
public class PlayLoggerContext extends AutoSafeParcelable {
@Field(1)
private int versionCode = 1;
private final int versionCode = 1;
@Field(2)
public final String packageName;
@ -33,9 +21,6 @@ public class PlayLoggerContext extends AutoSafeParcelable {
@Field(4)
public final int logSource;
@Field(8)
public final String logSourceName;
@Field(5)
public final String uploadAccount;
@ -45,6 +30,9 @@ public class PlayLoggerContext extends AutoSafeParcelable {
@Field(7)
public final boolean logAndroidId;
@Field(8)
public final String logSourceName;
@Field(9)
public final boolean isAnonymous;
@ -57,13 +45,16 @@ public class PlayLoggerContext extends AutoSafeParcelable {
@Field(12)
public final boolean scrubMccMnc;
@Field(13)
public final Integer piiLevelset;
private PlayLoggerContext() {
packageName = uploadAccount = logSourceName = loggingId = null;
qosTier = packageVersionCode = logSource = appMobileSpecId = -1;
qosTier = packageVersionCode = logSource = appMobileSpecId = piiLevelset = -1;
isAnonymous = logAndroidId = scrubMccMnc = false;
}
public PlayLoggerContext(String packageName, int packageVersionCode, int logSource, String logSourceName, String uploadAccount, String loggingId, boolean isAnonymous, int qosTier, boolean scrubMccMnc) {
public PlayLoggerContext(String packageName, int packageVersionCode, int logSource, String logSourceName, String uploadAccount, String loggingId, boolean isAnonymous, int qosTier, boolean scrubMccMnc, int piiLevelset) {
this.packageName = packageName;
this.packageVersionCode = packageVersionCode;
this.logSource = logSource;
@ -75,6 +66,7 @@ public class PlayLoggerContext extends AutoSafeParcelable {
this.qosTier = qosTier;
this.appMobileSpecId = null;
this.scrubMccMnc = scrubMccMnc;
this.piiLevelset = piiLevelset;
}
@Override
@ -89,9 +81,12 @@ public class PlayLoggerContext extends AutoSafeParcelable {
sb.append(", logSourceName=").append(logSourceName);
sb.append(", isAnonymous=").append(isAnonymous);
sb.append(", qosTier=").append(qosTier);
sb.append(", appMobileSpecId=").append(appMobileSpecId);
sb.append(", scrubMccMnc=").append(scrubMccMnc);
sb.append(", piiLevelset=").append(piiLevelset);
sb.append(']');
return sb.toString();
}
public static Creator<PlayLoggerContext> CREATOR = new AutoCreator<PlayLoggerContext>(PlayLoggerContext.class);
}
}

View File

@ -71,5 +71,5 @@ public class GoogleCertificatesQuery extends AutoSafeParcelable {
return certData;
}
public static final Creator<GoogleCertificatesQuery> CREATOR = new AutoCreator<>(GoogleCertificatesQuery.class);
public static final Creator<GoogleCertificatesQuery> CREATOR = new AutoCreator<GoogleCertificatesQuery>(GoogleCertificatesQuery.class);
}

View File

@ -20,5 +20,5 @@ import org.microg.safeparcel.AutoSafeParcelable;
public class FavaDiagnosticsEntity extends AutoSafeParcelable {
public static final Creator<FavaDiagnosticsEntity> CREATOR = new AutoCreator<>(FavaDiagnosticsEntity.class);
public static final Creator<FavaDiagnosticsEntity> CREATOR = new AutoCreator<FavaDiagnosticsEntity>(FavaDiagnosticsEntity.class);
}

View File

@ -0,0 +1,45 @@
/*
* SPDX-FileCopyrightText: 2022 microG Project Team
* SPDX-License-Identifier: Apache-2.0
*/
package com.google.android.gms.measurement.api.internal;
import android.os.Bundle;
import org.microg.safeparcel.AutoSafeParcelable;
public class InitializationParams extends AutoSafeParcelable {
@Field(1)
public long field1;
@Field(2)
public long field2;
@Field(3)
public boolean field3;
@Field(4)
public String field4;
@Field(5)
public String field5;
@Field(6)
public String field6;
@Field(7)
public Bundle field7;
@Field(8)
public String field8;
@Override
public String toString() {
return "InitializationParams{" +
"field1=" + field1 +
", field2=" + field2 +
", field3=" + field3 +
", field4='" + field4 + '\'' +
", field5='" + field5 + '\'' +
", field6='" + field6 + '\'' +
", field7=" + field7 +
", field8='" + field8 + '\'' +
'}';
}
public static final Creator<InitializationParams> CREATOR = new AutoCreator<>(InitializationParams.class);
}

View File

@ -25,7 +25,7 @@ public class AppMetadata extends AutoSafeParcelable {
@Field(8)
private String field8;
@Field(9)
private boolean field9 = true;
private final boolean field9 = true;
@Field(10)
private boolean field10;
@Field(11)
@ -57,5 +57,9 @@ public class AppMetadata extends AutoSafeParcelable {
@Field(25)
private String field25;
public String toString() {
return "AppMetadata[" + packageName + "]";
}
public static final Creator<AppMetadata> CREATOR = new AutoCreator<>(AppMetadata.class);
}

View File

@ -0,0 +1,17 @@
/*
* SPDX-FileCopyrightText: 2020, microG Project Team
* SPDX-License-Identifier: Apache-2.0
*/
package com.google.android.gms.measurement.internal;
import android.os.Bundle;
import org.microg.safeparcel.AutoSafeParcelable;
public class EventParams extends AutoSafeParcelable {
@Field(2)
public Bundle data;
public static final Creator<EventParams> CREATOR = new AutoCreator<>(EventParams.class);
}

View File

@ -8,5 +8,14 @@ package com.google.android.gms.measurement.internal;
import org.microg.safeparcel.AutoSafeParcelable;
public class EventParcel extends AutoSafeParcelable {
@Field(2)
public String name;
@Field(3)
public EventParams params;
@Field(4)
public String origin;
@Field(5)
public long timestamp;
public static final Creator<EventParcel> CREATOR = new AutoCreator<>(EventParcel.class);
}

View File

@ -8,5 +8,20 @@ package com.google.android.gms.measurement.internal;
import org.microg.safeparcel.AutoSafeParcelable;
public class UserAttributeParcel extends AutoSafeParcelable {
@Field(1)
public int field1;
@Field(2)
public String name;
@Field(3)
public long timestamp;
@Field(4)
public Long field4;
@Field(6)
public String field6;
@Field(7)
public String field7;
@Field(8)
public Double field8;
public static final Creator<UserAttributeParcel> CREATOR = new AutoCreator<>(UserAttributeParcel.class);
}

View File

@ -21,7 +21,7 @@ import org.microg.safeparcel.SafeParceled;
public class ParcelableLoadImageOptions extends AutoSafeParcelable {
@SafeParceled(1000)
private int versionCode = 1;
private final int versionCode = 1;
@SafeParceled(1)
public int imageSize;
@ -32,5 +32,5 @@ public class ParcelableLoadImageOptions extends AutoSafeParcelable {
@SafeParceled(3)
public boolean useLargePictureForCp2Images;
public static final Creator<ParcelableLoadImageOptions> CREATOR = new AutoCreator<>(ParcelableLoadImageOptions.class);
public static final Creator<ParcelableLoadImageOptions> CREATOR = new AutoCreator<ParcelableLoadImageOptions>(ParcelableLoadImageOptions.class);
}

View File

@ -22,7 +22,7 @@ import org.microg.safeparcel.SafeParceled;
public class AccountMetadata extends AutoSafeParcelable {
@SafeParceled(1)
private int versionCode = 2;
private final int versionCode = 2;
@SafeParceled(2)
public boolean hasGooglePlus = true;
@ -36,5 +36,5 @@ public class AccountMetadata extends AutoSafeParcelable {
@SafeParceled(5)
public boolean hasFeature4 = true;
public static Creator<AccountMetadata> CREATOR = new AutoCreator<>(AccountMetadata.class);
public static Creator<AccountMetadata> CREATOR = new AutoCreator<AccountMetadata>(AccountMetadata.class);
}

View File

@ -30,5 +30,5 @@ public class AvatarReference extends AutoSafeParcelable {
@SafeParceled(2)
public String location;
public static final Creator<AvatarReference> CREATOR = new AutoCreator<>(AvatarReference.class);
public static final Creator<AvatarReference> CREATOR = new AutoCreator<AvatarReference>(AvatarReference.class);
}

View File

@ -21,10 +21,11 @@ import org.microg.safeparcel.SafeParceled;
import java.util.Date;
@Deprecated
public class LogEvent extends AutoSafeParcelable {
@SafeParceled(1)
private int versionCode = 1;
private final int versionCode = 1;
@SafeParceled(2)
public final long eventTime;
@ -50,5 +51,5 @@ public class LogEvent extends AutoSafeParcelable {
'}';
}
public static Creator<LogEvent> CREATOR = new AutoCreator<>(LogEvent.class);
public static Creator<LogEvent> CREATOR = new AutoCreator<LogEvent>(LogEvent.class);
}

View File

@ -22,7 +22,7 @@ import org.microg.safeparcel.SafeParceled;
public class GetCorpusStatusRequest extends AutoSafeParcelable {
@SafeParceled(1000)
private int versionCode = 1;
private final int versionCode = 1;
@SafeParceled(1)
public final String packageName;

View File

@ -22,7 +22,7 @@ import org.microg.safeparcel.SafeParceled;
public class RequestIndexingRequest extends AutoSafeParcelable {
@SafeParceled(1000)
private int versionCode = 1;
private final int versionCode = 1;
@SafeParceled(1)
public final String packageName;

View File

@ -22,7 +22,7 @@ import org.microg.safeparcel.SafeParceled;
public class GetCurrentExperimentIdsRequest extends AutoSafeParcelable {
@SafeParceled(1000)
private int versionCode = 1;
private final int versionCode = 1;
public static final Creator<GetCurrentExperimentIdsRequest> CREATOR = new AutoCreator<GetCurrentExperimentIdsRequest>(GetCurrentExperimentIdsRequest.class);
}

View File

@ -26,7 +26,7 @@ import java.util.Arrays;
public class GetCurrentExperimentIdsResponse extends AutoSafeParcelable {
@SafeParceled(1000)
private int versionCode = 1;
private final int versionCode = 1;
@SafeParceled(1)
public final Status status;

View File

@ -22,7 +22,7 @@ import org.microg.safeparcel.SafeParceled;
public class GetGlobalSearchSourcesRequest extends AutoSafeParcelable {
@SafeParceled(1000)
private int versionCode = 1;
private final int versionCode = 1;
@SafeParceled(1)
public boolean bool;

View File

@ -28,7 +28,7 @@ import java.util.Arrays;
public class GetGlobalSearchSourcesResponse extends AutoSafeParcelable {
@SafeParceled(1000)
private int versionCode = 1;
private final int versionCode = 1;
@SafeParceled(1)
public final Status status;

View File

@ -22,7 +22,7 @@ import org.microg.safeparcel.SafeParceled;
public class GetPendingExperimentIdsRequest extends AutoSafeParcelable {
@SafeParceled(1000)
private int versionCode = 1;
private final int versionCode = 1;
public static final Creator<GetPendingExperimentIdsRequest> CREATOR = new AutoCreator<GetPendingExperimentIdsRequest>(GetPendingExperimentIdsRequest.class);
}

View File

@ -26,7 +26,7 @@ import java.util.Arrays;
public class GetPendingExperimentIdsResponse extends AutoSafeParcelable {
@SafeParceled(1000)
private int versionCode = 1;
private final int versionCode = 1;
@SafeParceled(1)
public final Status status;

View File

@ -24,7 +24,7 @@ import java.util.Arrays;
public class SetExperimentIdsRequest extends AutoSafeParcelable {
@SafeParceled(1000)
private int versionCode = 1;
private final int versionCode = 1;
@SafeParceled(1)
public byte[] experimentIds;

View File

@ -24,7 +24,7 @@ import org.microg.safeparcel.SafeParceled;
public class SetExperimentIdsResponse extends AutoSafeParcelable {
@SafeParceled(1000)
private int versionCode = 1;
private final int versionCode = 1;
@SafeParceled(1)
public final Status status;

View File

@ -22,7 +22,7 @@ import org.microg.safeparcel.SafeParceled;
public class SetIncludeInGlobalSearchRequest extends AutoSafeParcelable {
@SafeParceled(1000)
private int versionCode = 1;
private final int versionCode = 1;
@SafeParceled(1)
public String packageName;

View File

@ -24,7 +24,7 @@ import org.microg.safeparcel.SafeParceled;
public class SetIncludeInGlobalSearchResponse extends AutoSafeParcelable {
@SafeParceled(1000)
private int versionCode = 1;
private final int versionCode = 1;
@SafeParceled(1)
public final Status status;

View File

@ -25,7 +25,7 @@ import org.microg.safeparcel.SafeParceled;
public class QueryResponse extends AutoSafeParcelable {
@SafeParceled(1000)
private int versionCode = 1;
private final int versionCode = 1;
@SafeParceled(1)
public final Status status;

View File

@ -0,0 +1,15 @@
/*
* SPDX-FileCopyrightText: 2022 microG Project Team
* SPDX-License-Identifier: Apache-2.0
*/
package com.google.android.gms.usagereporting;
import org.microg.safeparcel.AutoSafeParcelable;
public class UsageReportingOptInOptions extends AutoSafeParcelable {
@Field(2)
public int optInUsageReporting;
public static final Creator<UsageReportingOptInOptions> CREATOR = new AutoCreator<>(UsageReportingOptInOptions.class);
}

View File

@ -3,10 +3,10 @@
* SPDX-License-Identifier: Apache-2.0
*/
package com.google.android.gms.phenotype;
package com.mgoogle.android.gms.phenotype;
import org.microg.safeparcel.AutoSafeParcelable;
public class ExperimentToken extends AutoSafeParcelable {
public static final Creator<ExperimentToken> CREATOR = new AutoCreator<>(ExperimentToken.class);
}
}

View File

@ -3,7 +3,7 @@
* SPDX-License-Identifier: Apache-2.0
*/
package com.google.android.gms.phenotype;
package com.mgoogle.android.gms.phenotype;
import org.microg.safeparcel.AutoSafeParcelable;
@ -14,4 +14,4 @@ public class GenericDimension extends AutoSafeParcelable {
public int b;
public static final Creator<GenericDimension> CREATOR = new AutoCreator<>(GenericDimension.class);
}
}

View File

@ -22,10 +22,11 @@ dependencies {
android {
compileSdkVersion androidCompileSdk
buildToolsVersion "$androidBuildVersionTools"
buildToolsVersion "30.0.3"
aidlPackageWhiteList "com/google/android/gms/common/data/DataHolder.aidl"
aidlPackageWhiteList "com/google/android/gms/common/images/WebImage.aidl"
aidlPackageWhiteList "com/google/android/gms/common/api/internal/IStatusCallback.aidl"
defaultConfig {
minSdkVersion androidMinSdk

View File

@ -46,7 +46,7 @@ import java.util.Map;
@PublicApi(until = "1")
public class DataHolder extends AutoSafeParcelable implements Closeable {
@SafeParceled(1000)
private int versionCode = 1;
private final int versionCode = 1;
@SafeParceled(1)
private final String[] columns;

View File

@ -16,13 +16,13 @@
package com.google.android.gms.common.images;
import java.util.Locale;
import android.net.Uri;
import org.microg.safeparcel.AutoSafeParcelable;
import org.microg.safeparcel.SafeParceled;
import java.util.Locale;
public class WebImage extends AutoSafeParcelable {
public static final Creator<WebImage> CREATOR = new AutoCreator<>(WebImage.class);
@ -35,7 +35,7 @@ public class WebImage extends AutoSafeParcelable {
}
@SafeParceled(1)
private int versionCode = 1;
private final int versionCode = 1;
@SafeParceled(2)
private final Uri uri;

View File

@ -18,7 +18,7 @@ apply plugin: 'com.android.library'
android {
compileSdkVersion androidCompileSdk
buildToolsVersion "$androidBuildVersionTools"
buildToolsVersion "30.0.3"
defaultConfig {
minSdkVersion androidMinSdk
@ -32,12 +32,12 @@ android {
}
dependencies {
implementation 'com.google.android.gms:play-services-base:17.6.0'
implementation 'com.google.android.gms:play-services-base:18.0.1'
api project(':play-services-basement')
api project(':play-services-tasks')
api project(':play-services-base-api')
implementation 'androidx.fragment:fragment:1.3.6'
implementation 'com.google.android.gms:play-services-base:17.6.0'
implementation 'androidx.fragment:fragment:1.4.1'
implementation 'com.google.android.gms:play-services-base:18.0.1'
}

View File

@ -16,22 +16,6 @@
package com.google.android.gms.common;
import android.app.Activity;
import android.app.Dialog;
import android.app.PendingIntent;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import androidx.fragment.app.FragmentActivity;
import android.util.Log;
import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
import com.google.android.gms.tasks.Task;
import com.google.android.gms.tasks.Tasks;
import org.microg.gms.common.Constants;
import org.microg.gms.common.PublicApi;
import static com.google.android.gms.common.ConnectionResult.INTERNAL_ERROR;
import static com.google.android.gms.common.ConnectionResult.INVALID_ACCOUNT;
import static com.google.android.gms.common.ConnectionResult.NETWORK_ERROR;
@ -43,6 +27,23 @@ import static com.google.android.gms.common.ConnectionResult.SERVICE_VERSION_UPD
import static com.google.android.gms.common.ConnectionResult.SIGN_IN_REQUIRED;
import static com.google.android.gms.common.ConnectionResult.SUCCESS;
import android.app.Activity;
import android.app.Dialog;
import android.app.PendingIntent;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import androidx.fragment.app.FragmentActivity;
import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
import com.google.android.gms.tasks.Task;
import com.google.android.gms.tasks.Tasks;
import org.microg.gms.common.Constants;
import org.microg.gms.common.PublicApi;
@PublicApi
public class GoogleApiAvailability {
private static final String TAG = "GmsApiAvailability";

View File

@ -18,7 +18,7 @@ import org.microg.gms.common.api.PendingGoogleApiCall;
@PublicApi
public abstract class GoogleApi<O extends Api.ApiOptions> implements HasApiKey<O> {
private GoogleApiManager manager;
private final GoogleApiManager manager;
@PublicApi(exclude = true)
public Api<O> api;

View File

@ -28,7 +28,7 @@ import java.util.Iterator;
@PublicApi
public abstract class DataBuffer<T> implements Releasable, Iterable<T> {
private DataHolder dataHolder;
private final DataHolder dataHolder;
@PublicApi(exclude = true)
public DataBuffer(DataHolder dataHolder) {

View File

@ -44,7 +44,7 @@ public abstract class GmsClient<I extends IInterface> implements ApiClient {
protected ConnectionState state = ConnectionState.NOT_CONNECTED;
private ServiceConnection serviceConnection;
private I serviceInterface;
private String actionString;
private final String actionString;
protected int serviceId = -1;
protected Account account = null;
@ -110,7 +110,7 @@ public abstract class GmsClient<I extends IInterface> implements ApiClient {
@Override
public synchronized boolean isConnected() {
return state == ConnectionState.CONNECTED || state == ConnectionState.PSEUDO_CONNECTED;
return (state == ConnectionState.CONNECTED && serviceInterface != null && serviceInterface.asBinder().isBinderAlive() ) || state == ConnectionState.PSEUDO_CONNECTED;
}
@Override

View File

@ -16,6 +16,10 @@
package org.microg.gms.common;
import static android.os.Build.VERSION.SDK_INT;
import static android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH;
import static org.microg.gms.common.Constants.GMS_PACKAGE_NAME;
import android.annotation.SuppressLint;
import android.content.ComponentName;
import android.content.Context;
@ -29,10 +33,6 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import static android.os.Build.VERSION.SDK_INT;
import static android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH;
import static org.microg.gms.common.Constants.GMS_PACKAGE_NAME;
public class MultiConnectionKeeper {
private static final String TAG = "GmsMultiConKeeper";
@ -88,7 +88,7 @@ public class MultiConnectionKeeper {
private boolean connected = false;
private IBinder binder;
private ComponentName component;
private ServiceConnection serviceConnection = new ServiceConnection() {
private final ServiceConnection serviceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
Log.d(TAG, "Connection(" + actionString + ") : ServiceConnection : " +

View File

@ -21,9 +21,9 @@ import java.util.Objects;
public class GoogleApiManager {
private static GoogleApiManager instance;
private Context context;
private Map<ApiInstance, ApiClient> clientMap = new HashMap<>();
private Map<ApiInstance, List<WaitingApiCall<?>>> waitingApiCallMap = new HashMap<>();
private final Context context;
private final Map<ApiInstance, ApiClient> clientMap = new HashMap<>();
private final Map<ApiInstance, List<WaitingApiCall<?>>> waitingApiCallMap = new HashMap<>();
private GoogleApiManager(Context context) {
this.context = context;
@ -81,7 +81,7 @@ public class GoogleApiManager {
}
private class ConnectionCallback implements ConnectionCallbacks {
private ApiInstance apiInstance;
private final ApiInstance apiInstance;
public ConnectionCallback(ApiInstance apiInstance) {
this.apiInstance = apiInstance;
@ -99,7 +99,7 @@ public class GoogleApiManager {
}
private class ConnectionFailedListener implements OnConnectionFailedListener {
private ApiInstance apiInstance;
private final ApiInstance apiInstance;
public ConnectionFailedListener(ApiInstance apiInstance) {
this.apiInstance = apiInstance;
@ -112,8 +112,8 @@ public class GoogleApiManager {
}
private static class WaitingApiCall<R> {
private PendingGoogleApiCall<R, ApiClient> apiCall;
private TaskCompletionSource<R> completionSource;
private final PendingGoogleApiCall<R, ApiClient> apiCall;
private final TaskCompletionSource<R> completionSource;
public WaitingApiCall(PendingGoogleApiCall<R, ApiClient> apiCall, TaskCompletionSource<R> completionSource) {
this.apiCall = apiCall;
@ -148,8 +148,8 @@ public class GoogleApiManager {
}
private static class ApiInstance {
private Class<?> apiClass;
private Api.ApiOptions apiOptions;
private final Class<?> apiClass;
private final Api.ApiOptions apiOptions;
public ApiInstance(Class<?> apiClass, Api.ApiOptions apiOptions) {
this.apiClass = apiClass;

View File

@ -20,13 +20,13 @@ apply plugin: 'kotlin-android'
dependencies {
api "org.microg:safe-parcel:1.7.0"
implementation "androidx.annotation:annotation:1.2.0"
implementation 'androidx.annotation:annotation:1.3.0'
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.32'
}
android {
compileSdkVersion androidCompileSdk
buildToolsVersion "$androidBuildVersionTools"
buildToolsVersion "30.0.3"
aidlPackageWhiteList "com/google/android/gms/common/api/Status.aidl"
aidlPackageWhiteList "com/google/android/gms/common/internal/ICancelToken.aidl"

View File

@ -0,0 +1,36 @@
/*
* SPDX-FileCopyrightText: 2020, microG Project Team
* SPDX-License-Identifier: Apache-2.0
*/
package com.google.android.gms.common;
import org.microg.safeparcel.AutoSafeParcelable;
public class Feature extends AutoSafeParcelable {
@Field(1)
private String name;
@Field(2)
private int oldVersion;
@Field(3)
private long version = -1;
private Feature() {
}
public Feature(String name, long version) {
this.name = name;
this.version = version;
}
public String getName() {
return name;
}
public long getVersion() {
if (version == -1) return oldVersion;
return version;
}
public static final Creator<Feature> CREATOR = new AutoSafeParcelable.AutoCreator<>(Feature.class);
}

Some files were not shown because too many files have changed in this diff Show More