(R.id.web)
+ view.setPadding(pad, pad, pad, pad)
+ val settings = view.settings
+ settings.javaScriptEnabled = true
+ settings.useWideViewPort = false
+ settings.setSupportZoom(false)
+ settings.displayZoomControls = false
+ settings.cacheMode = WebSettings.LOAD_NO_CACHE
+ ProfileManager.ensureInitialized(this)
+ settings.userAgentString = Build.generateWebViewUserAgentString(settings.userAgentString)
+ view.addJavascriptInterface(ReCaptchaCallback(this), "MyCallback")
+ val captcha = assets.open("recaptcha.html").bufferedReader().readText().replace("%apikey%", apiKey!!)
+ view.loadDataWithBaseURL("https://$hostname/", captcha, null, null, "https://$hostname/")
+ windowManager?.addView(container, params)
+ }
+ }
+
+ fun finishResult(resultCode: Int, token: String? = null) {
+ if (!finished) {
+ finished = true
+ receiver?.send(resultCode, token?.let { Bundle().apply { putString(EXTRA_TOKEN, it) } })
+ }
+ container?.let { windowManager?.removeView(it) }
+ }
+
+ companion object {
+
+ private val recaptchaServiceConnection = object : ServiceConnection {
+ override fun onServiceConnected(name: ComponentName?, service: IBinder?) {
+ Log.d(TAG, "onReCaptchaToken: onServiceConnected: $name")
+ }
+
+ override fun onServiceDisconnected(name: ComponentName?) {
+ Log.d(TAG, "onReCaptchaToken: onServiceDisconnected: $name")
+ }
+ }
+
+ class ReCaptchaCallback(private val overlay: ReCaptchaOverlayService) {
+ @JavascriptInterface
+ fun onReCaptchaToken(token: String) {
+ Log.d(TAG, "onReCaptchaToken: $token")
+ overlay.finishResult(Activity.RESULT_OK, token)
+ }
+ }
+
+ fun isSupported(context: Context): Boolean = android.os.Build.VERSION.SDK_INT < 23 || Settings.canDrawOverlays(context)
+
+ suspend fun awaitToken(context: Context, apiKey: String, hostname: String? = null) = suspendCoroutine { continuation ->
+ val intent = Intent(context, ReCaptchaOverlayService::class.java)
+ val resultReceiver = object : ResultReceiver(null) {
+ override fun onReceiveResult(resultCode: Int, resultData: Bundle?) {
+ context.unbindService(recaptchaServiceConnection)
+ try {
+ if (resultCode == Activity.RESULT_OK) {
+ continuation.resume(resultData?.getString(EXTRA_TOKEN)!!)
+ }
+ } catch (e: Exception) {
+ continuation.resumeWithException(e)
+ }
+ }
+ }
+ intent.putExtra(EXTRA_API_KEY, apiKey)
+ intent.putExtra(EXTRA_RESULT_RECEIVER, resultReceiver)
+ intent.putExtra(EXTRA_HOSTNAME, hostname)
+ context.bindService(intent, recaptchaServiceConnection, BIND_AUTO_CREATE)
+ }
+ }
+}
diff --git a/firebase-auth/core/src/main/kotlin/org/microg/gms/firebase/auth/extensions.kt b/firebase-auth/core/src/main/kotlin/org/microg/gms/firebase/auth/extensions.kt
new file mode 100644
index 0000000..66fd1b1
--- /dev/null
+++ b/firebase-auth/core/src/main/kotlin/org/microg/gms/firebase/auth/extensions.kt
@@ -0,0 +1,11 @@
+/**
+ * SPDX-FileCopyrightText: 2024 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package org.microg.gms.firebase.auth
+
+const val EXTRA_TOKEN = "token"
+const val EXTRA_API_KEY = "api_key"
+const val EXTRA_HOSTNAME = "hostname"
+const val EXTRA_RESULT_RECEIVER = "receiver"
\ No newline at end of file
diff --git a/firebase-auth/core/src/main/res/layout/activity_recaptcha.xml b/firebase-auth/core/src/main/res/layout/activity_recaptcha.xml
new file mode 100644
index 0000000..36ea80b
--- /dev/null
+++ b/firebase-auth/core/src/main/res/layout/activity_recaptcha.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
diff --git a/firebase-auth/src/main/AndroidManifest.xml b/firebase-auth/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..c256eb4
--- /dev/null
+++ b/firebase-auth/src/main/AndroidManifest.xml
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/ActionCodeSettings.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/ActionCodeSettings.aidl
new file mode 100644
index 0000000..adedd19
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/ActionCodeSettings.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth;
+
+parcelable ActionCodeSettings;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/EmailAuthCredential.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/EmailAuthCredential.aidl
new file mode 100644
index 0000000..20cabbd
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/EmailAuthCredential.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth;
+
+parcelable EmailAuthCredential;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/PhoneAuthCredential.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/PhoneAuthCredential.aidl
new file mode 100644
index 0000000..b3d6abb
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/PhoneAuthCredential.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth;
+
+parcelable PhoneAuthCredential;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/UserProfileChangeRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/UserProfileChangeRequest.aidl
new file mode 100644
index 0000000..123af80
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/UserProfileChangeRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth;
+
+parcelable UserProfileChangeRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/ApplyActionCodeAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/ApplyActionCodeAidlRequest.aidl
new file mode 100644
index 0000000..9e0520b
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/ApplyActionCodeAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable ApplyActionCodeAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/ChangeEmailAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/ChangeEmailAidlRequest.aidl
new file mode 100644
index 0000000..e95043a
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/ChangeEmailAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable ChangeEmailAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/ChangePasswordAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/ChangePasswordAidlRequest.aidl
new file mode 100644
index 0000000..55457b4
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/ChangePasswordAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable ChangePasswordAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/CheckActionCodeAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/CheckActionCodeAidlRequest.aidl
new file mode 100644
index 0000000..6d4afa8
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/CheckActionCodeAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable CheckActionCodeAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/ConfirmPasswordResetAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/ConfirmPasswordResetAidlRequest.aidl
new file mode 100644
index 0000000..12f79de
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/ConfirmPasswordResetAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable ConfirmPasswordResetAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/CreateAuthUriResponse.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/CreateAuthUriResponse.aidl
new file mode 100644
index 0000000..fae4215
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/CreateAuthUriResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable CreateAuthUriResponse;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/CreateUserWithEmailAndPasswordAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/CreateUserWithEmailAndPasswordAidlRequest.aidl
new file mode 100644
index 0000000..9191617
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/CreateUserWithEmailAndPasswordAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable CreateUserWithEmailAndPasswordAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/DeleteAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/DeleteAidlRequest.aidl
new file mode 100644
index 0000000..d45bda0
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/DeleteAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable DeleteAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/FinalizeMfaEnrollmentAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/FinalizeMfaEnrollmentAidlRequest.aidl
new file mode 100644
index 0000000..50bfa3b
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/FinalizeMfaEnrollmentAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable FinalizeMfaEnrollmentAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/FinalizeMfaSignInAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/FinalizeMfaSignInAidlRequest.aidl
new file mode 100644
index 0000000..2453bd6
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/FinalizeMfaSignInAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable FinalizeMfaSignInAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/GetAccessTokenAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/GetAccessTokenAidlRequest.aidl
new file mode 100644
index 0000000..cc44192
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/GetAccessTokenAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable GetAccessTokenAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/GetAccountInfoUser.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/GetAccountInfoUser.aidl
new file mode 100644
index 0000000..50c3316
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/GetAccountInfoUser.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable GetAccountInfoUser;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/GetProvidersForEmailAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/GetProvidersForEmailAidlRequest.aidl
new file mode 100644
index 0000000..0760f59
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/GetProvidersForEmailAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable GetProvidersForEmailAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/GetTokenResponse.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/GetTokenResponse.aidl
new file mode 100644
index 0000000..b6838f6
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/GetTokenResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable GetTokenResponse;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/IFirebaseAuthCallbacks.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/IFirebaseAuthCallbacks.aidl
new file mode 100644
index 0000000..cd2ea94
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/IFirebaseAuthCallbacks.aidl
@@ -0,0 +1,22 @@
+package com.google.firebase.auth.api.internal;
+
+import com.google.android.gms.common.api.Status;
+import com.google.firebase.auth.PhoneAuthCredential;
+import com.google.firebase.auth.api.internal.CreateAuthUriResponse;
+import com.google.firebase.auth.api.internal.GetAccountInfoUser;
+import com.google.firebase.auth.api.internal.GetTokenResponse;
+import com.google.firebase.auth.api.internal.ResetPasswordResponse;
+
+interface IFirebaseAuthCallbacks {
+ oneway void onGetTokenResponse(in GetTokenResponse response) = 0;
+ oneway void onGetTokenResponseAndUser(in GetTokenResponse response, in GetAccountInfoUser user) = 1;
+ oneway void onCreateAuthUriResponse(in CreateAuthUriResponse response) = 2;
+ oneway void onResetPasswordResponse(in ResetPasswordResponse response) = 3;
+ oneway void onFailure(in Status status) = 4;
+ oneway void onDeleteAccountResponse() = 5;
+ oneway void onEmailVerificationResponse() = 6;
+ //oneway void onSetAccountInfo(String s) = 7
+ oneway void onSendVerificationCodeResponse(String sessionInfo) = 8;
+ oneway void onVerificationCompletedResponse(in PhoneAuthCredential credential) = 9;
+ oneway void onVerificationAutoTimeOut(String sessionInfo) = 10;
+}
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/IFirebaseAuthService.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/IFirebaseAuthService.aidl
new file mode 100644
index 0000000..0714492
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/IFirebaseAuthService.aidl
@@ -0,0 +1,108 @@
+package com.google.firebase.auth.api.internal;
+
+import com.google.firebase.auth.api.internal.ApplyActionCodeAidlRequest;
+import com.google.firebase.auth.api.internal.ChangeEmailAidlRequest;
+import com.google.firebase.auth.api.internal.ChangePasswordAidlRequest;
+import com.google.firebase.auth.api.internal.CheckActionCodeAidlRequest;
+import com.google.firebase.auth.api.internal.ConfirmPasswordResetAidlRequest;
+import com.google.firebase.auth.api.internal.CreateUserWithEmailAndPasswordAidlRequest;
+import com.google.firebase.auth.api.internal.DeleteAidlRequest;
+import com.google.firebase.auth.api.internal.FinalizeMfaEnrollmentAidlRequest;
+import com.google.firebase.auth.api.internal.FinalizeMfaSignInAidlRequest;
+import com.google.firebase.auth.api.internal.GetAccessTokenAidlRequest;
+import com.google.firebase.auth.api.internal.GetProvidersForEmailAidlRequest;
+import com.google.firebase.auth.api.internal.IFirebaseAuthCallbacks;
+import com.google.firebase.auth.api.internal.LinkEmailAuthCredentialAidlRequest;
+import com.google.firebase.auth.api.internal.LinkFederatedCredentialAidlRequest;
+import com.google.firebase.auth.api.internal.LinkPhoneAuthCredentialAidlRequest;
+import com.google.firebase.auth.api.internal.ReloadAidlRequest;
+import com.google.firebase.auth.api.internal.SendEmailVerificationWithSettingsAidlRequest;
+import com.google.firebase.auth.api.internal.SendGetOobConfirmationCodeEmailAidlRequest;
+import com.google.firebase.auth.api.internal.SendVerificationCodeAidlRequest;
+import com.google.firebase.auth.api.internal.SendVerificationCodeRequest;
+import com.google.firebase.auth.api.internal.SetFirebaseUiVersionAidlRequest;
+import com.google.firebase.auth.api.internal.SignInAnonymouslyAidlRequest;
+import com.google.firebase.auth.api.internal.SignInWithCredentialAidlRequest;
+import com.google.firebase.auth.api.internal.SignInWithCustomTokenAidlRequest;
+import com.google.firebase.auth.api.internal.SignInWithEmailAndPasswordAidlRequest;
+import com.google.firebase.auth.api.internal.SignInWithEmailLinkAidlRequest;
+import com.google.firebase.auth.api.internal.SignInWithPhoneNumberAidlRequest;
+import com.google.firebase.auth.api.internal.StartMfaPhoneNumberEnrollmentAidlRequest;
+import com.google.firebase.auth.api.internal.StartMfaPhoneNumberSignInAidlRequest;
+import com.google.firebase.auth.api.internal.UnenrollMfaAidlRequest;
+import com.google.firebase.auth.api.internal.UnlinkEmailCredentialAidlRequest;
+import com.google.firebase.auth.api.internal.UnlinkFederatedCredentialAidlRequest;
+import com.google.firebase.auth.api.internal.UpdateProfileAidlRequest;
+import com.google.firebase.auth.api.internal.VerifyAssertionRequest;
+import com.google.firebase.auth.api.internal.VerifyBeforeUpdateEmailAidlRequest;
+import com.google.firebase.auth.ActionCodeSettings;
+import com.google.firebase.auth.EmailAuthCredential;
+import com.google.firebase.auth.PhoneAuthCredential;
+import com.google.firebase.auth.UserProfileChangeRequest;
+
+interface IFirebaseAuthService {
+ void getAccessTokenCompat(String refreshToken, IFirebaseAuthCallbacks callbacks) = 0;
+ void signInWithCustomTokenCompat(String token, IFirebaseAuthCallbacks callbacks) = 1;
+ void signInWithCredentialCompat(in VerifyAssertionRequest verifyAssertionRequest, IFirebaseAuthCallbacks callbacks) = 2;
+ void updateProfileCompat(String cachedState, in UserProfileChangeRequest userProfileChangeRequest, IFirebaseAuthCallbacks callbacks) = 3;
+ void changeEmailCompat(String cachedState, String email, IFirebaseAuthCallbacks callbacks) = 4;
+ void changePasswordCompat(String cachedState, String password, IFirebaseAuthCallbacks callbacks) = 5;
+ void createUserWithEmailAndPasswordCompat(String email, String password, IFirebaseAuthCallbacks callbacks) = 6;
+ void signInWithEmailAndPasswordCompat(String email, String password, IFirebaseAuthCallbacks callbacks) = 7;
+ void getProvidersForEmailCompat(String email, IFirebaseAuthCallbacks callbacks) = 8;
+
+ void linkEmailAuthCredentialCompat(String email, String password, String cachedState, IFirebaseAuthCallbacks callbacks) = 10;
+ void linkFederatedCredentialCompat(String cachedState, in VerifyAssertionRequest verifyAssertionRequest, IFirebaseAuthCallbacks callbacks) = 11;
+ void unlinkEmailCredentialCompat(String cachedState, IFirebaseAuthCallbacks callbacks) = 12;
+ void unlinkFederatedCredentialCompat(String provider, String cachedState, IFirebaseAuthCallbacks callbacks) = 13;
+ void reloadCompat(String cachedState, IFirebaseAuthCallbacks callbacks) = 14;
+ void signInAnonymouslyCompat(IFirebaseAuthCallbacks callbacks) = 15;
+ void deleteCompat(String cachedState, IFirebaseAuthCallbacks callbacks) = 16;
+ void checkActionCodeCompat(String code, IFirebaseAuthCallbacks callbacks) = 18;
+ void applyActionCodeCompat(String code, IFirebaseAuthCallbacks callbacks) = 19;
+ void confirmPasswordResetCompat(String code, String newPassword, IFirebaseAuthCallbacks callbacks) = 20;
+ void sendVerificationCodeCompat(in SendVerificationCodeRequest request, IFirebaseAuthCallbacks callbacks) = 21;
+ void signInWithPhoneNumberCompat(in PhoneAuthCredential credential, IFirebaseAuthCallbacks callbacks) = 22;
+ void linkPhoneAuthCredentialCompat(String cachedState, in PhoneAuthCredential credential, IFirebaseAuthCallbacks callbacks) = 23;
+
+ void sendEmailVerificationCompat(String token, in ActionCodeSettings actionCodeSettings, IFirebaseAuthCallbacks callbacks) = 25;
+ void setFirebaseUIVersionCompat(String firebaseUiVersion, IFirebaseAuthCallbacks callbacks) = 26;
+ void sendGetOobConfirmationCodeEmailCompat(String email, in ActionCodeSettings actionCodeSettings, IFirebaseAuthCallbacks callbacks) = 27;
+ void signInWithEmailLinkCompat(in EmailAuthCredential credential, IFirebaseAuthCallbacks callbacks) = 28;
+
+ void getAccessToken(in GetAccessTokenAidlRequest request, IFirebaseAuthCallbacks callbacks) = 100;
+ void signInWithCustomToken(in SignInWithCustomTokenAidlRequest request, IFirebaseAuthCallbacks callbacks) = 101;
+ void signInWithCredential(in SignInWithCredentialAidlRequest request, IFirebaseAuthCallbacks callbacks) = 102;
+ void updateProfile(in UpdateProfileAidlRequest request, IFirebaseAuthCallbacks callbacks) = 103;
+ void changeEmail(in ChangeEmailAidlRequest request, IFirebaseAuthCallbacks callbacks) = 104;
+ void changePassword(in ChangePasswordAidlRequest request, IFirebaseAuthCallbacks callbacks) = 105;
+ void createUserWithEmailAndPassword(in CreateUserWithEmailAndPasswordAidlRequest request, IFirebaseAuthCallbacks callbacks) = 106;
+ void signInWithEmailAndPassword(in SignInWithEmailAndPasswordAidlRequest request, IFirebaseAuthCallbacks callbacks) = 107;
+ void getProvidersForEmail(in GetProvidersForEmailAidlRequest request, IFirebaseAuthCallbacks callbacks) = 108;
+
+ void linkEmailAuthCredential(in LinkEmailAuthCredentialAidlRequest request, IFirebaseAuthCallbacks callbacks) = 110;
+ void linkFederatedCredential(in LinkFederatedCredentialAidlRequest request, IFirebaseAuthCallbacks callbacks) = 111;
+ void unlinkEmailCredential(in UnlinkEmailCredentialAidlRequest request, IFirebaseAuthCallbacks callbacks) = 112;
+ void unlinkFederatedCredential(in UnlinkFederatedCredentialAidlRequest request, IFirebaseAuthCallbacks callbacks) = 113;
+ void reload(in ReloadAidlRequest request, IFirebaseAuthCallbacks callbacks) = 114;
+ void signInAnonymously(in SignInAnonymouslyAidlRequest request, IFirebaseAuthCallbacks callbacks) = 115;
+ void delete(in DeleteAidlRequest request, IFirebaseAuthCallbacks callbacks) = 116;
+ void checkActionCode(in CheckActionCodeAidlRequest request, IFirebaseAuthCallbacks callbacks) = 118;
+ void applyActionCode(in ApplyActionCodeAidlRequest request, IFirebaseAuthCallbacks callbacks) = 119;
+ void confirmPasswordReset(in ConfirmPasswordResetAidlRequest request, IFirebaseAuthCallbacks callbacks) = 120;
+ void sendVerificationCode(in SendVerificationCodeAidlRequest request, IFirebaseAuthCallbacks callbacks) = 121;
+ void signInWithPhoneNumber(in SignInWithPhoneNumberAidlRequest request, IFirebaseAuthCallbacks callbacks) = 122;
+ void linkPhoneAuthCredential(in LinkPhoneAuthCredentialAidlRequest request, IFirebaseAuthCallbacks callbacks) = 123;
+
+ void sendEmailVerification(in SendEmailVerificationWithSettingsAidlRequest request, IFirebaseAuthCallbacks callbacks) = 125;
+ void setFirebaseUiVersion(in SetFirebaseUiVersionAidlRequest request, IFirebaseAuthCallbacks callbacks) = 126;
+ void sendGetOobConfirmationCodeEmail(in SendGetOobConfirmationCodeEmailAidlRequest request, IFirebaseAuthCallbacks callbacks) = 127;
+ void signInWithEmailLink(in SignInWithEmailLinkAidlRequest request, IFirebaseAuthCallbacks callbacks) = 128;
+
+ void startMfaEnrollmentWithPhoneNumber(in StartMfaPhoneNumberEnrollmentAidlRequest request, IFirebaseAuthCallbacks callbacks) = 129;
+ void unenrollMfa(in UnenrollMfaAidlRequest request, IFirebaseAuthCallbacks callbacks) = 130;
+ void finalizeMfaEnrollment(in FinalizeMfaEnrollmentAidlRequest request, IFirebaseAuthCallbacks callbacks) = 131;
+ void startMfaSignInWithPhoneNumber(in StartMfaPhoneNumberSignInAidlRequest request, IFirebaseAuthCallbacks callbacks) = 132;
+ void finalizeMfaSignIn(in FinalizeMfaSignInAidlRequest request, IFirebaseAuthCallbacks callbacks) = 133;
+ void verifyBeforeUpdateEmail(in VerifyBeforeUpdateEmailAidlRequest request, IFirebaseAuthCallbacks callbacks) = 134;
+}
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/LinkEmailAuthCredentialAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/LinkEmailAuthCredentialAidlRequest.aidl
new file mode 100644
index 0000000..bee0011
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/LinkEmailAuthCredentialAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable LinkEmailAuthCredentialAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/LinkFederatedCredentialAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/LinkFederatedCredentialAidlRequest.aidl
new file mode 100644
index 0000000..3894901
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/LinkFederatedCredentialAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable LinkFederatedCredentialAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/LinkPhoneAuthCredentialAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/LinkPhoneAuthCredentialAidlRequest.aidl
new file mode 100644
index 0000000..62caaf6
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/LinkPhoneAuthCredentialAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable LinkPhoneAuthCredentialAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/ReloadAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/ReloadAidlRequest.aidl
new file mode 100644
index 0000000..5057e2e
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/ReloadAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable ReloadAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/ResetPasswordResponse.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/ResetPasswordResponse.aidl
new file mode 100644
index 0000000..572587f
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/ResetPasswordResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable ResetPasswordResponse;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SendEmailVerificationWithSettingsAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SendEmailVerificationWithSettingsAidlRequest.aidl
new file mode 100644
index 0000000..6db47c5
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SendEmailVerificationWithSettingsAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable SendEmailVerificationWithSettingsAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SendGetOobConfirmationCodeEmailAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SendGetOobConfirmationCodeEmailAidlRequest.aidl
new file mode 100644
index 0000000..5e1e519
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SendGetOobConfirmationCodeEmailAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable SendGetOobConfirmationCodeEmailAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SendVerificationCodeAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SendVerificationCodeAidlRequest.aidl
new file mode 100644
index 0000000..21b4971
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SendVerificationCodeAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable SendVerificationCodeAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SendVerificationCodeRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SendVerificationCodeRequest.aidl
new file mode 100644
index 0000000..3f797f5
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SendVerificationCodeRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable SendVerificationCodeRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SetFirebaseUiVersionAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SetFirebaseUiVersionAidlRequest.aidl
new file mode 100644
index 0000000..39ff41a
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SetFirebaseUiVersionAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable SetFirebaseUiVersionAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SignInAnonymouslyAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SignInAnonymouslyAidlRequest.aidl
new file mode 100644
index 0000000..2b4c21f
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SignInAnonymouslyAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable SignInAnonymouslyAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithCredentialAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithCredentialAidlRequest.aidl
new file mode 100644
index 0000000..acda7af
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithCredentialAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable SignInWithCredentialAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithCustomTokenAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithCustomTokenAidlRequest.aidl
new file mode 100644
index 0000000..047489e
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithCustomTokenAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable SignInWithCustomTokenAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithEmailAndPasswordAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithEmailAndPasswordAidlRequest.aidl
new file mode 100644
index 0000000..77a277d
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithEmailAndPasswordAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable SignInWithEmailAndPasswordAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithEmailLinkAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithEmailLinkAidlRequest.aidl
new file mode 100644
index 0000000..1bb2d32
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithEmailLinkAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable SignInWithEmailLinkAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithPhoneNumberAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithPhoneNumberAidlRequest.aidl
new file mode 100644
index 0000000..270d342
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithPhoneNumberAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable SignInWithPhoneNumberAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/StartMfaPhoneNumberEnrollmentAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/StartMfaPhoneNumberEnrollmentAidlRequest.aidl
new file mode 100644
index 0000000..630a4c9
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/StartMfaPhoneNumberEnrollmentAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable StartMfaPhoneNumberEnrollmentAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/StartMfaPhoneNumberSignInAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/StartMfaPhoneNumberSignInAidlRequest.aidl
new file mode 100644
index 0000000..65c8063
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/StartMfaPhoneNumberSignInAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable StartMfaPhoneNumberSignInAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/StringList.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/StringList.aidl
new file mode 100644
index 0000000..6244601
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/StringList.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable StringList;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/UnenrollMfaAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/UnenrollMfaAidlRequest.aidl
new file mode 100644
index 0000000..5ce470b
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/UnenrollMfaAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable UnenrollMfaAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/UnlinkEmailCredentialAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/UnlinkEmailCredentialAidlRequest.aidl
new file mode 100644
index 0000000..735a319
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/UnlinkEmailCredentialAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable UnlinkEmailCredentialAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/UnlinkFederatedCredentialAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/UnlinkFederatedCredentialAidlRequest.aidl
new file mode 100644
index 0000000..eb47391
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/UnlinkFederatedCredentialAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable UnlinkFederatedCredentialAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/UpdateProfileAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/UpdateProfileAidlRequest.aidl
new file mode 100644
index 0000000..db6603c
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/UpdateProfileAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable UpdateProfileAidlRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/VerifyAssertionRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/VerifyAssertionRequest.aidl
new file mode 100644
index 0000000..7f4787f
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/VerifyAssertionRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable VerifyAssertionRequest;
diff --git a/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/VerifyBeforeUpdateEmailAidlRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/VerifyBeforeUpdateEmailAidlRequest.aidl
new file mode 100644
index 0000000..7929892
--- /dev/null
+++ b/firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/VerifyBeforeUpdateEmailAidlRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.auth.api.internal;
+
+parcelable VerifyBeforeUpdateEmailAidlRequest;
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/ActionCodeSettings.java b/firebase-auth/src/main/java/com/google/firebase/auth/ActionCodeSettings.java
new file mode 100644
index 0000000..df07dd6
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/ActionCodeSettings.java
@@ -0,0 +1,182 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+
+package com.google.firebase.auth;
+
+import org.microg.gms.common.PublicApi;
+import org.microg.safeparcel.AutoSafeParcelable;
+
+/**
+ * Structure that contains the required continue/state URL with optional Android and iOS bundle identifiers.
+ * The stateUrl used to initialize this class is the link/deep link/fallback url used while constructing the Firebase dynamic link.
+ */
+@PublicApi
+public class ActionCodeSettings extends AutoSafeParcelable {
+ @Field(1)
+ @PublicApi(exclude = true)
+ public String url;
+ @Field(2)
+ @PublicApi(exclude = true)
+ public String iOSBundle;
+ @Field(3)
+ @PublicApi(exclude = true)
+ public String iOSAppStoreId;
+ @Field(4)
+ @PublicApi(exclude = true)
+ public String androidPackageName;
+ @Field(5)
+ @PublicApi(exclude = true)
+ public boolean androidInstallApp;
+ @Field(6)
+ @PublicApi(exclude = true)
+ public String androidMinimumVersion;
+ @Field(7)
+ @PublicApi(exclude = true)
+ public boolean handleCodeInApp;
+ @Field(8)
+ @PublicApi(exclude = true)
+ public String localeHeader;
+ @Field(9)
+ @PublicApi(exclude = true)
+ public int requestType;
+ @Field(10)
+ @PublicApi(exclude = true)
+ public String dynamicLinkDomain;
+
+ private ActionCodeSettings() {
+ }
+
+ /**
+ * @return whether the oob code should be handled by the app. See {@link Builder#setHandleCodeInApp(boolean)}
+ */
+ public boolean canHandleCodeInApp() {
+ return handleCodeInApp;
+ }
+
+ /**
+ * @return the preference for whether to attempt to install the app if it is not present. See {@link Builder#setAndroidPackageName(String, boolean, String)}
+ */
+ public boolean getAndroidInstallApp() {
+ return androidInstallApp;
+ }
+
+ /**
+ * @return the minimum Android app version. See {@link Builder#setAndroidPackageName(String, boolean, String)}
+ */
+ public String getAndroidMinimumVersion() {
+ return androidMinimumVersion;
+ }
+
+ /**
+ * @return the Android Package Name. See {@link Builder#setAndroidPackageName(String, boolean, String)}
+ */
+ public String getAndroidPackageName() {
+ return androidPackageName;
+ }
+
+ /**
+ * @return the iOS Bundle. See {@link Builder#setIOSBundleId(String)}
+ */
+ public String getIOSBundle() {
+ return iOSBundle;
+ }
+
+ /**
+ * @return the URL. See {@link Builder#setUrl(String)}
+ */
+ public String getUrl() {
+ return url;
+ }
+
+ /**
+ * @return a new instance of {@link ActionCodeSettings.Builder}.
+ */
+ public static Builder newBuilder() {
+ return new Builder();
+ }
+
+ /**
+ * A Builder class for {@link ActionCodeSettings}. Get an instance of this Builder using {@link #newBuilder()}.
+ */
+ public static class Builder {
+ private String url;
+ private String iOSBundleId;
+ private String androidPackageName;
+ private boolean androidInstallApp;
+ private String androidMinimumVersion;
+ private boolean canHandleCodeInApp;
+ private String dynamicLinkDomain;
+
+ public ActionCodeSettings build() {
+ ActionCodeSettings settings = new ActionCodeSettings();
+ settings.url = url;
+ settings.iOSBundle = iOSBundleId;
+ settings.androidPackageName = androidPackageName;
+ settings.androidInstallApp = androidInstallApp;
+ settings.handleCodeInApp = canHandleCodeInApp;
+ settings.dynamicLinkDomain = dynamicLinkDomain;
+ return settings;
+ }
+
+ /**
+ * Sets the Android package name and returns the current builder instance.
+ * If {@code installIfNotAvailable} is set to true and the link is opened on an android device, it will try to install the app if not already available.
+ * Otherwise the web URL is used.
+ *
+ * A minimum version string is also available. If the installed app is an older version, the user is taken to the Play Store to upgrade the app.
+ */
+ public Builder setAndroidPackageName(String androidPackageName, boolean installIfNotAvailable, String minimumVersion) {
+ this.androidPackageName = androidPackageName;
+ this.androidInstallApp = installIfNotAvailable;
+ this.androidMinimumVersion = minimumVersion;
+ return this;
+ }
+
+ /**
+ * Sets the optional FDL domain, overriding the default FDL domain that would be used.
+ * Must be one of the 5 domains configured in the Firebase console.
+ */
+ public Builder setDynamicLinkDomain(String dynamicLinkDomain) {
+ this.dynamicLinkDomain = dynamicLinkDomain;
+ return this;
+ }
+
+ /**
+ * The default is false. When set to true, the action code link will be sent as a universal link and will be open by the app if installed.
+ * In the false case, the code will be sent to the web widget first and then on continue will redirect to the app if installed.
+ */
+ public Builder setHandleCodeInApp(boolean status) {
+ this.canHandleCodeInApp = status;
+ return this;
+ }
+
+ /**
+ * To be used if the email link that is sent might be opened on an iOS device.
+ *
+ * Sets the iOS bundle Id and returns the current {@link ActionCodeSettings.Builder} instance.
+ */
+ public Builder setIOSBundleId(String iOSBundleId) {
+ this.iOSBundleId = iOSBundleId;
+ return this;
+ }
+
+ /**
+ * Sets the URL, which has different meanings in different contexts. For email actions, this is the state/continue URL.
+ * When the app is not installed, this is the web continue URL with any developer provided state appended (the continueURL query parameter).
+ * When the app is installed, this is contained in the Firebase dynamic link payload.
+ * In the case where the code is sent directly to the app and the app is installed, this is the continueURL query parameter in the dynamic link payload.
+ * Otherwise, when the code is handled by the widget itself, it is the payload itself.
+ */
+ public Builder setUrl(String url) {
+ this.url = url;
+ return this;
+ }
+ }
+
+ public static final Creator CREATOR = new AutoCreator<>(ActionCodeSettings.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/AuthCredential.java b/firebase-auth/src/main/java/com/google/firebase/auth/AuthCredential.java
new file mode 100644
index 0000000..bf3b7e6
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/AuthCredential.java
@@ -0,0 +1,28 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+
+package com.google.firebase.auth;
+
+import org.microg.gms.common.PublicApi;
+import org.microg.safeparcel.AutoSafeParcelable;
+
+/**
+ * Represents a credential that the Firebase Authentication server can use to authenticate a user.
+ */
+@PublicApi
+public abstract class AuthCredential extends AutoSafeParcelable {
+ /**
+ * Returns the unique string identifier for the provider type with which the credential is associated.
+ */
+ public abstract String getProvider();
+
+ /**
+ * Returns the unique string identifier for the sign in method with which the credential is associated. Should match that returned by {@link FirebaseAuth#fetchSignInMethodsForEmail(String)} after this user has signed in with this type of credential.
+ */
+ public abstract String getSignInMethod();
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/DefaultOAuthCredential.java b/firebase-auth/src/main/java/com/google/firebase/auth/DefaultOAuthCredential.java
new file mode 100644
index 0000000..f224434
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/DefaultOAuthCredential.java
@@ -0,0 +1,66 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+
+package com.google.firebase.auth;
+
+import com.google.firebase.auth.api.internal.VerifyAssertionRequest;
+
+import org.microg.gms.common.PublicApi;
+
+@PublicApi
+public class DefaultOAuthCredential extends OAuthCredential {
+ @Field(1)
+ @PublicApi(exclude = true)
+ public String provider;
+ @Field(2)
+ @PublicApi(exclude = true)
+ public String idToken;
+ @Field(3)
+ @PublicApi(exclude = true)
+ public String accessToken;
+ @Field(4)
+ @PublicApi(exclude = true)
+ public VerifyAssertionRequest webSignInToken;
+ @Field(5)
+ @PublicApi(exclude = true)
+ public String pendingToken;
+ @Field(6)
+ @PublicApi(exclude = true)
+ public String secret;
+ @Field(7)
+ @PublicApi(exclude = true)
+ public String rawNonce;
+
+
+ @Override
+ public String getAccessToken() {
+ return accessToken;
+ }
+
+ @Override
+ public String getIdToken() {
+ return idToken;
+ }
+
+ @Override
+ public String getSecret() {
+ return secret;
+ }
+
+ @Override
+ public String getProvider() {
+ return provider;
+ }
+
+ @Override
+ public String getSignInMethod() {
+ return provider;
+ }
+
+ public static final Creator CREATOR = new AutoCreator<>(DefaultOAuthCredential.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/EmailAuthCredential.java b/firebase-auth/src/main/java/com/google/firebase/auth/EmailAuthCredential.java
new file mode 100644
index 0000000..d6adfd2
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/EmailAuthCredential.java
@@ -0,0 +1,54 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+
+package com.google.firebase.auth;
+
+import org.microg.gms.common.PublicApi;
+
+/**
+ * Wraps an email and password tuple for authentication purposes.
+ */
+@PublicApi
+public class EmailAuthCredential extends AuthCredential {
+ @Field(1)
+ @PublicApi(exclude = true)
+ public String email;
+ @Field(2)
+ @PublicApi(exclude = true)
+ public String password;
+ @Field(3)
+ @PublicApi(exclude = true)
+ public String signInLink;
+ @Field(4)
+ @PublicApi(exclude = true)
+ public String cachedState;
+ @Field(5)
+ @PublicApi(exclude = true)
+ public boolean isForLinking;
+
+ /**
+ * Returns the unique string identifier for the provider type with which the credential is associated.
+ */
+ @Override
+ public String getProvider() {
+ return "password";
+ }
+
+ /**
+ * Returns either {@link EmailAuthProvider#EMAIL_LINK_SIGN_IN_METHOD} for a credential generated with {@link EmailAuthProvider#getCredentialWithLink(String, String)} or {@link EmailAuthProvider#EMAIL_PASSWORD_SIGN_IN_METHOD} for a credential generated with {@link EmailAuthProvider#getCredential(String, String)}.
+ */
+ @Override
+ public String getSignInMethod() {
+ if (password != null && !password.isEmpty()) {
+ return "password";
+ }
+ return "emailLink";
+ }
+
+ public static final Creator CREATOR = new AutoCreator<>(EmailAuthCredential.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/OAuthCredential.java b/firebase-auth/src/main/java/com/google/firebase/auth/OAuthCredential.java
new file mode 100644
index 0000000..772a456
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/OAuthCredential.java
@@ -0,0 +1,32 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+
+package com.google.firebase.auth;
+
+import org.microg.gms.common.PublicApi;
+
+/**
+ * Holds credentials generated by a sign-in with a credential to an IDP that uses OAuth
+ */
+@PublicApi
+public abstract class OAuthCredential extends AuthCredential {
+ /**
+ * Returns the OAuth access token associated with this credential.
+ */
+ public abstract String getAccessToken();
+
+ /**
+ * Returns the OAuth ID token associated with this credential.
+ */
+ public abstract String getIdToken();
+
+ /**
+ * Returns the OAuth secret associated with this credential. This will be null for OAuth 2.0 providers.
+ */
+ public abstract String getSecret();
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/PhoneAuthCredential.java b/firebase-auth/src/main/java/com/google/firebase/auth/PhoneAuthCredential.java
new file mode 100644
index 0000000..1798a30
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/PhoneAuthCredential.java
@@ -0,0 +1,64 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+
+package com.google.firebase.auth;
+
+import org.microg.gms.common.PublicApi;
+
+/**
+ * Wraps phone number and verification information for authentication purposes.
+ */
+@PublicApi
+public class PhoneAuthCredential extends AuthCredential {
+ @Field(1)
+ @PublicApi(exclude = true)
+ public String sessionInfo;
+ @Field(2)
+ @PublicApi(exclude = true)
+ public String smsCode;
+ @Field(3)
+ @PublicApi(exclude = true)
+ public boolean hasVerificationCode;
+ @Field(4)
+ @PublicApi(exclude = true)
+ public String phoneNumber;
+ @Field(5)
+ @PublicApi(exclude = true)
+ public boolean autoCreate;
+ @Field(6)
+ @PublicApi(exclude = true)
+ public String temporaryProof;
+ @Field(7)
+ @PublicApi(exclude = true)
+ public String mfaEnrollmentId;
+
+ /**
+ * Returns the unique string identifier for the provider type with which the credential is associated.
+ */
+ @Override
+ public String getProvider() {
+ return "phone";
+ }
+
+ /**
+ * Returns the unique string identifier for the sign in method with which the credential is associated. Should match that returned by {@link FirebaseAuth#fetchSignInMethodsForEmail(String)} after this user has signed in with this type of credential.
+ */
+ @Override
+ public String getSignInMethod() {
+ return "phone";
+ }
+
+ /**
+ * Gets the auto-retrieved SMS verification code if applicable. When SMS verification is used, you will be called back first via onCodeSent(String, PhoneAuthProvider.ForceResendingToken), and later onVerificationCompleted(PhoneAuthCredential) with a {@link PhoneAuthCredential} containing a non-null SMS code if auto-retrieval succeeded. If Firebase used another approach to verify the phone number and triggers a callback via onVerificationCompleted(PhoneAuthCredential), then SMS code can be null.
+ */
+ public String getSmsCode() {
+ return smsCode;
+ }
+
+ public static final Creator CREATOR = new AutoCreator<>(PhoneAuthCredential.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/UserProfileChangeRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/UserProfileChangeRequest.java
new file mode 100644
index 0000000..a86c21d
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/UserProfileChangeRequest.java
@@ -0,0 +1,88 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+
+package com.google.firebase.auth;
+
+import android.net.Uri;
+
+import org.microg.gms.common.PublicApi;
+import org.microg.safeparcel.AutoSafeParcelable;
+
+/**
+ * Request used to update user profile information.
+ */
+@PublicApi
+public class UserProfileChangeRequest extends AutoSafeParcelable {
+ @Field(1)
+ @PublicApi(exclude = true)
+ public String displayName;
+ @Field(2)
+ @PublicApi(exclude = true)
+ public String photoUrl;
+ @Field(3)
+ @PublicApi(exclude = true)
+ public boolean shouldRemoveDisplayName;
+ @Field(4)
+ @PublicApi(exclude = true)
+ public boolean shouldRemovePhotoUri;
+
+ private UserProfileChangeRequest() {
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public Uri getPhotoUri() {
+ return Uri.parse(photoUrl);
+ }
+
+ /**
+ * The request builder.
+ */
+ public static class Builder {
+ private String displayName;
+ private Uri photoUri;
+ private boolean shouldRemoveDisplayName;
+ private boolean shouldRemovePhotoUri;
+
+ /**
+ * Sets the updated display name.
+ * @return the {@link UserProfileChangeRequest.Builder} for chaining
+ */
+ public Builder setDisplayName(String displayName) {
+ this.displayName = displayName;
+ shouldRemoveDisplayName = displayName == null;
+ return this;
+ }
+
+ /**
+ * Sets the updated photo {@link Uri}.
+ * @return the {@link UserProfileChangeRequest.Builder} for chaining
+ */
+ public Builder setPhotoUri(Uri photoUri) {
+ this.photoUri = photoUri;
+ shouldRemovePhotoUri = photoUri == null;
+ return this;
+ }
+
+ /**
+ * Returns a {@link UserProfileChangeRequest} instance
+ */
+ public UserProfileChangeRequest build() {
+ UserProfileChangeRequest request = new UserProfileChangeRequest();
+ request.displayName = displayName;
+ request.photoUrl = photoUri.toString();
+ request.shouldRemoveDisplayName = shouldRemoveDisplayName;
+ request.shouldRemovePhotoUri = shouldRemovePhotoUri;
+ return request;
+ }
+ }
+
+ public static final Creator CREATOR = new AutoCreator<>(UserProfileChangeRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ApplyActionCodeAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ApplyActionCodeAidlRequest.java
new file mode 100644
index 0000000..d68ed77
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ApplyActionCodeAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ApplyActionCodeAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(ApplyActionCodeAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ChangeEmailAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ChangeEmailAidlRequest.java
new file mode 100644
index 0000000..70b4e10
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ChangeEmailAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ChangeEmailAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(ChangeEmailAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ChangePasswordAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ChangePasswordAidlRequest.java
new file mode 100644
index 0000000..70823da
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ChangePasswordAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ChangePasswordAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(ChangePasswordAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/CheckActionCodeAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/CheckActionCodeAidlRequest.java
new file mode 100644
index 0000000..57f3f94
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/CheckActionCodeAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class CheckActionCodeAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(CheckActionCodeAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ConfirmPasswordResetAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ConfirmPasswordResetAidlRequest.java
new file mode 100644
index 0000000..f9505ed
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ConfirmPasswordResetAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ConfirmPasswordResetAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(ConfirmPasswordResetAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/CreateAuthUriResponse.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/CreateAuthUriResponse.java
new file mode 100644
index 0000000..e32735a
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/CreateAuthUriResponse.java
@@ -0,0 +1,27 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class CreateAuthUriResponse extends AutoSafeParcelable {
+ @Field(2)
+ public String authUri;
+ @Field(3)
+ public boolean isRegistered;
+ @Field(4)
+ public String providerId;
+ @Field(5)
+ public boolean isForExistingProvider;
+ @Field(6)
+ public StringList stringList = new StringList();
+ @Field(7)
+ public List signInMethods = new ArrayList<>();
+ public static final Creator CREATOR = new AutoCreator<>(CreateAuthUriResponse.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/CreateUserWithEmailAndPasswordAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/CreateUserWithEmailAndPasswordAidlRequest.java
new file mode 100644
index 0000000..a1eb8b9
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/CreateUserWithEmailAndPasswordAidlRequest.java
@@ -0,0 +1,19 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class CreateUserWithEmailAndPasswordAidlRequest extends AutoSafeParcelable {
+ @Field(1)
+ public String email;
+ @Field(2)
+ public String password;
+ @Field(3)
+ public String tenantId;
+
+ public static final Creator CREATOR = new AutoCreator<>(CreateUserWithEmailAndPasswordAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/DeleteAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/DeleteAidlRequest.java
new file mode 100644
index 0000000..3d815a6
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/DeleteAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class DeleteAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(DeleteAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/FinalizeMfaEnrollmentAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/FinalizeMfaEnrollmentAidlRequest.java
new file mode 100644
index 0000000..d76ac82
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/FinalizeMfaEnrollmentAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class FinalizeMfaEnrollmentAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(FinalizeMfaEnrollmentAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/FinalizeMfaSignInAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/FinalizeMfaSignInAidlRequest.java
new file mode 100644
index 0000000..f578a74
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/FinalizeMfaSignInAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class FinalizeMfaSignInAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(FinalizeMfaSignInAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/GetAccessTokenAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/GetAccessTokenAidlRequest.java
new file mode 100644
index 0000000..6b7d9e9
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/GetAccessTokenAidlRequest.java
@@ -0,0 +1,15 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class GetAccessTokenAidlRequest extends AutoSafeParcelable {
+ @Field(1)
+ public String refreshToken;
+
+ public static final Creator CREATOR = new AutoCreator<>(GetAccessTokenAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/GetAccountInfoUser.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/GetAccountInfoUser.java
new file mode 100644
index 0000000..6113649
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/GetAccountInfoUser.java
@@ -0,0 +1,43 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import com.google.firebase.auth.DefaultOAuthCredential;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+import java.util.List;
+
+public class GetAccountInfoUser extends AutoSafeParcelable {
+ @Field(2)
+ public String localId;
+ @Field(3)
+ public String email;
+ @Field(4)
+ public boolean isEmailVerified;
+ @Field(5)
+ public String displayName;
+ @Field(6)
+ public String photoUrl;
+ @Field(7)
+ public ProviderUserInfoList providerInfoList = new ProviderUserInfoList();
+ @Field(8)
+ public String password;
+ @Field(9)
+ public String phoneNumber;
+ @Field(10)
+ public long creationTimestamp;
+ @Field(11)
+ public long lastSignInTimestamp;
+ @Field(12)
+ public boolean isNewUser;
+ @Field(13)
+ public DefaultOAuthCredential defaultOAuthCredential;
+ @Field(14)
+ public List mfaInfoList;
+
+ public static final Creator CREATOR = new AutoCreator<>(GetAccountInfoUser.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/GetProvidersForEmailAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/GetProvidersForEmailAidlRequest.java
new file mode 100644
index 0000000..393bf11
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/GetProvidersForEmailAidlRequest.java
@@ -0,0 +1,16 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class GetProvidersForEmailAidlRequest extends AutoSafeParcelable {
+ @Field(1)
+ public String email;
+ @Field(2)
+ public String tenantId;
+ public static final Creator CREATOR = new AutoCreator<>(GetProvidersForEmailAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/GetTokenResponse.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/GetTokenResponse.java
new file mode 100644
index 0000000..66e786f
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/GetTokenResponse.java
@@ -0,0 +1,44 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class GetTokenResponse extends AutoSafeParcelable {
+ @Field(2)
+ public String refreshToken;
+ @Field(3)
+ public String accessToken;
+ @Field(4)
+ public Long expiresIn;
+ @Field(5)
+ public String tokenType;
+ @Field(6)
+ public Long issuedAt;
+
+ public GetTokenResponse() {
+ issuedAt = System.currentTimeMillis();
+ }
+
+ public static GetTokenResponse parseJson(String json) {
+ try {
+ JSONObject object = new JSONObject(json);
+ GetTokenResponse response = new GetTokenResponse();
+ response.refreshToken = object.optString("refresh_token", null);
+ response.accessToken = object.optString("access_token", null);
+ response.tokenType = object.optString("token_type", null);
+ response.expiresIn = object.optLong("expires_in");
+ response.issuedAt = object.optLong("issued_at");
+ return response;
+ } catch (JSONException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public static final Creator CREATOR = new AutoCreator<>(GetTokenResponse.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/LinkEmailAuthCredentialAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/LinkEmailAuthCredentialAidlRequest.java
new file mode 100644
index 0000000..f80f2ce
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/LinkEmailAuthCredentialAidlRequest.java
@@ -0,0 +1,18 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class LinkEmailAuthCredentialAidlRequest extends AutoSafeParcelable {
+ @Field(1)
+ public String email;
+ @Field(2)
+ public String password;
+ @Field(3)
+ public String cachedState;
+ public static final Creator CREATOR = new AutoCreator<>(LinkEmailAuthCredentialAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/LinkFederatedCredentialAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/LinkFederatedCredentialAidlRequest.java
new file mode 100644
index 0000000..6fd8122
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/LinkFederatedCredentialAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class LinkFederatedCredentialAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(LinkFederatedCredentialAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/LinkPhoneAuthCredentialAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/LinkPhoneAuthCredentialAidlRequest.java
new file mode 100644
index 0000000..afc653b
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/LinkPhoneAuthCredentialAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class LinkPhoneAuthCredentialAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(LinkPhoneAuthCredentialAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/MfaInfo.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/MfaInfo.java
new file mode 100644
index 0000000..1e2ddaf
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/MfaInfo.java
@@ -0,0 +1,14 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class MfaInfo extends AutoSafeParcelable {
+
+
+ public static final Creator CREATOR = new AutoCreator<>(MfaInfo.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ProviderUserInfo.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ProviderUserInfo.java
new file mode 100644
index 0000000..1f7a19b
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ProviderUserInfo.java
@@ -0,0 +1,27 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ProviderUserInfo extends AutoSafeParcelable {
+ @Field(2)
+ public String federatedId;
+ @Field(3)
+ public String displayName;
+ @Field(4)
+ public String photoUrl;
+ @Field(5)
+ public String providerId;
+ @Field(6)
+ public String rawUserInfo;
+ @Field(7)
+ public String phoneNumber;
+ @Field(8)
+ public String email;
+
+ public static final Creator CREATOR = new AutoCreator<>(ProviderUserInfo.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ProviderUserInfoList.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ProviderUserInfoList.java
new file mode 100644
index 0000000..ff99d31
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ProviderUserInfoList.java
@@ -0,0 +1,19 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ProviderUserInfoList extends AutoSafeParcelable {
+ @Field(2)
+ public List providerUserInfos = new ArrayList<>();
+
+
+ public static final Creator CREATOR = new AutoCreator<>(ProviderUserInfoList.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ReloadAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ReloadAidlRequest.java
new file mode 100644
index 0000000..de609f7
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ReloadAidlRequest.java
@@ -0,0 +1,14 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ReloadAidlRequest extends AutoSafeParcelable {
+ @Field(1)
+ public String cachedState;
+ public static final Creator CREATOR = new AutoCreator<>(ReloadAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ResetPasswordResponse.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ResetPasswordResponse.java
new file mode 100644
index 0000000..06af063
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ResetPasswordResponse.java
@@ -0,0 +1,20 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ResetPasswordResponse extends AutoSafeParcelable {
+ @Field(2)
+ public String email;
+ @Field(3)
+ public String newEmail;
+ @Field(4)
+ public String requestType;
+ @Field(5)
+ public MfaInfo mfaInfo;
+ public static final Creator CREATOR = new AutoCreator<>(ResetPasswordResponse.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SendEmailVerificationWithSettingsAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SendEmailVerificationWithSettingsAidlRequest.java
new file mode 100644
index 0000000..9bda971
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SendEmailVerificationWithSettingsAidlRequest.java
@@ -0,0 +1,18 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import com.google.firebase.auth.ActionCodeSettings;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SendEmailVerificationWithSettingsAidlRequest extends AutoSafeParcelable {
+ @Field(1)
+ public String token;
+ @Field(2)
+ public ActionCodeSettings settings;
+ public static final Creator CREATOR = new AutoCreator<>(SendEmailVerificationWithSettingsAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SendGetOobConfirmationCodeEmailAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SendGetOobConfirmationCodeEmailAidlRequest.java
new file mode 100644
index 0000000..04dd49c
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SendGetOobConfirmationCodeEmailAidlRequest.java
@@ -0,0 +1,20 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import com.google.firebase.auth.ActionCodeSettings;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SendGetOobConfirmationCodeEmailAidlRequest extends AutoSafeParcelable {
+ @Field(1)
+ public String email;
+ @Field(2)
+ public ActionCodeSettings settings;
+ @Field(3)
+ public String tenantId;
+ public static final Creator CREATOR = new AutoCreator<>(SendGetOobConfirmationCodeEmailAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SendVerificationCodeAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SendVerificationCodeAidlRequest.java
new file mode 100644
index 0000000..9b3eccd
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SendVerificationCodeAidlRequest.java
@@ -0,0 +1,14 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SendVerificationCodeAidlRequest extends AutoSafeParcelable {
+ @Field(1)
+ public SendVerificationCodeRequest request;
+ public static final Creator CREATOR = new AutoCreator<>(SendVerificationCodeAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SendVerificationCodeRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SendVerificationCodeRequest.java
new file mode 100644
index 0000000..971d6fa
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SendVerificationCodeRequest.java
@@ -0,0 +1,25 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SendVerificationCodeRequest extends AutoSafeParcelable {
+ @Field(1)
+ public String phoneNumber;
+ @Field(2)
+ public Long timeoutInSeconds;
+ @Field(3)
+ public boolean forceNewSmsVerificationSession;
+ @Field(4)
+ public String languageHeader;
+ @Field(5)
+ public String tenantId;
+ @Field(6)
+ public String recaptchaToken;
+
+ public static final Creator CREATOR = new AutoCreator<>(SendVerificationCodeRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SetFirebaseUiVersionAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SetFirebaseUiVersionAidlRequest.java
new file mode 100644
index 0000000..964382e
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SetFirebaseUiVersionAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SetFirebaseUiVersionAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(SetFirebaseUiVersionAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SignInAnonymouslyAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SignInAnonymouslyAidlRequest.java
new file mode 100644
index 0000000..2549412
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SignInAnonymouslyAidlRequest.java
@@ -0,0 +1,14 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SignInAnonymouslyAidlRequest extends AutoSafeParcelable {
+ @Field(1)
+ public String tenantId;
+ public static final Creator CREATOR = new AutoCreator<>(SignInAnonymouslyAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SignInWithCredentialAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SignInWithCredentialAidlRequest.java
new file mode 100644
index 0000000..8e45a2d
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SignInWithCredentialAidlRequest.java
@@ -0,0 +1,36 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import android.os.Parcel;
+
+import androidx.annotation.NonNull;
+
+import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
+
+@SafeParcelable.Class
+public class SignInWithCredentialAidlRequest extends AbstractSafeParcelable {
+
+ @Field(1)
+ public VerifyAssertionRequest request;
+
+ public SignInWithCredentialAidlRequest(VerifyAssertionRequest request) {
+ this.request = request;
+ }
+
+ public SignInWithCredentialAidlRequest() {
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ CREATOR.writeToParcel(this, dest, flags);
+ }
+
+ public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(SignInWithCredentialAidlRequest.class);
+
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SignInWithCustomTokenAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SignInWithCustomTokenAidlRequest.java
new file mode 100644
index 0000000..0f7f107
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SignInWithCustomTokenAidlRequest.java
@@ -0,0 +1,17 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SignInWithCustomTokenAidlRequest extends AutoSafeParcelable {
+ @Field(1)
+ public String token;
+ @Field(2)
+ public String tenantId;
+
+ public static final Creator CREATOR = new AutoCreator<>(SignInWithCustomTokenAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SignInWithEmailAndPasswordAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SignInWithEmailAndPasswordAidlRequest.java
new file mode 100644
index 0000000..c8aa04d
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SignInWithEmailAndPasswordAidlRequest.java
@@ -0,0 +1,18 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SignInWithEmailAndPasswordAidlRequest extends AutoSafeParcelable {
+ @Field(1)
+ public String email;
+ @Field(2)
+ public String password;
+ @Field(3)
+ public String tenantId;
+ public static final Creator CREATOR = new AutoCreator<>(SignInWithEmailAndPasswordAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SignInWithEmailLinkAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SignInWithEmailLinkAidlRequest.java
new file mode 100644
index 0000000..71028fa
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SignInWithEmailLinkAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SignInWithEmailLinkAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(SignInWithEmailLinkAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SignInWithPhoneNumberAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SignInWithPhoneNumberAidlRequest.java
new file mode 100644
index 0000000..d076cf3
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SignInWithPhoneNumberAidlRequest.java
@@ -0,0 +1,19 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import com.google.firebase.auth.PhoneAuthCredential;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SignInWithPhoneNumberAidlRequest extends AutoSafeParcelable {
+ @Field(1)
+ public PhoneAuthCredential credential;
+ @Field(2)
+ public String tenantId;
+
+ public static final Creator CREATOR = new AutoCreator<>(SignInWithPhoneNumberAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/StartMfaPhoneNumberEnrollmentAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/StartMfaPhoneNumberEnrollmentAidlRequest.java
new file mode 100644
index 0000000..b4a93b6
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/StartMfaPhoneNumberEnrollmentAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class StartMfaPhoneNumberEnrollmentAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(StartMfaPhoneNumberEnrollmentAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/StartMfaPhoneNumberSignInAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/StartMfaPhoneNumberSignInAidlRequest.java
new file mode 100644
index 0000000..151d4e6
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/StartMfaPhoneNumberSignInAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class StartMfaPhoneNumberSignInAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(StartMfaPhoneNumberSignInAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/StringList.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/StringList.java
new file mode 100644
index 0000000..8c72245
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/StringList.java
@@ -0,0 +1,19 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class StringList extends AutoSafeParcelable {
+ @Field(1)
+ public int versionCode = 1;
+ @Field(2)
+ public List values = new ArrayList<>();
+ public static final Creator CREATOR = new AutoCreator<>(StringList.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/UnenrollMfaAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/UnenrollMfaAidlRequest.java
new file mode 100644
index 0000000..49c4b0f
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/UnenrollMfaAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class UnenrollMfaAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(UnenrollMfaAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/UnlinkEmailCredentialAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/UnlinkEmailCredentialAidlRequest.java
new file mode 100644
index 0000000..55770dd
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/UnlinkEmailCredentialAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class UnlinkEmailCredentialAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(UnlinkEmailCredentialAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/UnlinkFederatedCredentialAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/UnlinkFederatedCredentialAidlRequest.java
new file mode 100644
index 0000000..1533997
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/UnlinkFederatedCredentialAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class UnlinkFederatedCredentialAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(UnlinkFederatedCredentialAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/UpdateProfileAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/UpdateProfileAidlRequest.java
new file mode 100644
index 0000000..25d4020
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/UpdateProfileAidlRequest.java
@@ -0,0 +1,18 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import com.google.firebase.auth.UserProfileChangeRequest;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class UpdateProfileAidlRequest extends AutoSafeParcelable {
+ @Field(1)
+ public UserProfileChangeRequest request;
+ @Field(2)
+ public String cachedState;
+ public static final Creator CREATOR = new AutoCreator<>(UpdateProfileAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/VerifyAssertionRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/VerifyAssertionRequest.java
new file mode 100644
index 0000000..0a0b130
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/VerifyAssertionRequest.java
@@ -0,0 +1,59 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import android.os.Parcel;
+
+import androidx.annotation.NonNull;
+
+import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
+
+@SafeParcelable.Class
+public class VerifyAssertionRequest extends AbstractSafeParcelable {
+
+ @Field(2)
+ public String requestUri;
+ @Field(3)
+ public String accessToken;
+ @Field(4)
+ public String idToken;
+ @Field(5)
+ public String instanceId;
+ @Field(6)
+ public String providerId;
+ @Field(7)
+ public String pendingIdToken;
+ @Field(8)
+ public String postBody;
+ @Field(9)
+ public String localId;
+ @Field(10)
+ public boolean returnIdpCredential;
+ @Field(11)
+ public boolean returnSecureToken;
+ @Field(12)
+ public String delegatedProjectNumber;
+ @Field(13)
+ public String sessionId;
+ @Field(14)
+ public String queryParameter;
+ @Field(15)
+ public String tenantId;
+ @Field(16)
+ public boolean returnRefreshToken;
+ @Field(17)
+ public String tenantProjectNumber;
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ CREATOR.writeToParcel(this, dest, flags);
+ }
+
+ public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(VerifyAssertionRequest.class);
+
+}
diff --git a/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/VerifyBeforeUpdateEmailAidlRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/VerifyBeforeUpdateEmailAidlRequest.java
new file mode 100644
index 0000000..d6d5c12
--- /dev/null
+++ b/firebase-auth/src/main/java/com/google/firebase/auth/api/internal/VerifyBeforeUpdateEmailAidlRequest.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.auth.api.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class VerifyBeforeUpdateEmailAidlRequest extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(VerifyBeforeUpdateEmailAidlRequest.class);
+}
diff --git a/firebase-auth/src/main/java/org/microg/gms/firebase/auth/Constants.java b/firebase-auth/src/main/java/org/microg/gms/firebase/auth/Constants.java
new file mode 100644
index 0000000..0f83c9f
--- /dev/null
+++ b/firebase-auth/src/main/java/org/microg/gms/firebase/auth/Constants.java
@@ -0,0 +1,11 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package org.microg.gms.firebase.auth;
+
+public class Constants {
+ public static final String EXTRA_API_KEY = "com.google.firebase.auth.API_KEY";
+ public static final String EXTRA_LIBRARY_VERSION = "com.google.firebase.auth.LIBRARY_VERSION";
+}
diff --git a/firebase-dynamic-links/build.gradle b/firebase-dynamic-links/build.gradle
new file mode 100644
index 0000000..7e10a72
--- /dev/null
+++ b/firebase-dynamic-links/build.gradle
@@ -0,0 +1,51 @@
+/*
+ * SPDX-FileCopyrightText: 2019 e Foundation
+ * SPDX-FileCopyrightText: 2020 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+apply plugin: 'com.android.library'
+apply plugin: 'maven-publish'
+apply plugin: 'signing'
+
+android {
+ namespace "com.google.firebase.dynamiclinks"
+
+ compileSdkVersion androidCompileSdk
+ buildToolsVersion "$androidBuildVersionTools"
+
+ buildFeatures {
+ aidl = true
+ }
+
+ defaultConfig {
+ versionName version
+ minSdkVersion androidMinSdk
+ targetSdkVersion androidTargetSdk
+ }
+
+ compileOptions {
+ sourceCompatibility = 1.8
+ targetCompatibility = 1.8
+ }
+}
+
+dependencies {
+ // Dependencies from firebase-dynamic-links:21.2.0
+ api 'androidx.annotation:annotation:1.2.0'
+ api project(':play-services-base')
+ api project(':play-services-basement')
+ api project(':play-services-tasks')
+// api project(':firebase-auth-interop')
+// api project(':firebase-measurement-connector')
+// api project(':firebase-common')
+// api project(':firebase-common-ktx')
+// api project(':firebase-components')
+ api 'org.jetbrains.kotlin:kotlin-stdlib:1.7.10'
+ annotationProcessor project(':safe-parcel-processor')
+}
+
+apply from: '../gradle/publish-android.gradle'
+
+description = 'microG API for firebase-dynamic-links'
+
diff --git a/firebase-dynamic-links/src/main/AndroidManifest.xml b/firebase-dynamic-links/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..b6845e5
--- /dev/null
+++ b/firebase-dynamic-links/src/main/AndroidManifest.xml
@@ -0,0 +1,18 @@
+
+
+
+
diff --git a/firebase-dynamic-links/src/main/aidl/com/google/firebase/dynamiclinks/internal/DynamicLinkData.aidl b/firebase-dynamic-links/src/main/aidl/com/google/firebase/dynamiclinks/internal/DynamicLinkData.aidl
new file mode 100644
index 0000000..978e72c
--- /dev/null
+++ b/firebase-dynamic-links/src/main/aidl/com/google/firebase/dynamiclinks/internal/DynamicLinkData.aidl
@@ -0,0 +1,10 @@
+/*
+ * SPDX-FileCopyrightText: 2019, e Foundation
+ * SPDX-FileCopyrightText: 2021, Google LLC
+ * SPDX-FileCopyrightText: 2021, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.dynamiclinks.internal;
+
+parcelable DynamicLinkData;
diff --git a/firebase-dynamic-links/src/main/aidl/com/google/firebase/dynamiclinks/internal/IDynamicLinksCallbacks.aidl b/firebase-dynamic-links/src/main/aidl/com/google/firebase/dynamiclinks/internal/IDynamicLinksCallbacks.aidl
new file mode 100644
index 0000000..d13b9f2
--- /dev/null
+++ b/firebase-dynamic-links/src/main/aidl/com/google/firebase/dynamiclinks/internal/IDynamicLinksCallbacks.aidl
@@ -0,0 +1,17 @@
+/*
+ * SPDX-FileCopyrightText: 2019, e Foundation
+ * SPDX-FileCopyrightText: 2021, Google LLC
+ * SPDX-FileCopyrightText: 2021, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.dynamiclinks.internal;
+
+import com.google.android.gms.common.api.Status;
+import com.google.firebase.dynamiclinks.internal.DynamicLinkData;
+import com.google.firebase.dynamiclinks.internal.ShortDynamicLinkImpl;
+
+interface IDynamicLinksCallbacks {
+ void onStatusDynamicLinkData(in Status status, in DynamicLinkData dldata) = 0;
+ void onStatusShortDynamicLink(in Status status, in ShortDynamicLinkImpl sdlink) = 1;
+}
diff --git a/firebase-dynamic-links/src/main/aidl/com/google/firebase/dynamiclinks/internal/IDynamicLinksService.aidl b/firebase-dynamic-links/src/main/aidl/com/google/firebase/dynamiclinks/internal/IDynamicLinksService.aidl
new file mode 100644
index 0000000..b5d4e52
--- /dev/null
+++ b/firebase-dynamic-links/src/main/aidl/com/google/firebase/dynamiclinks/internal/IDynamicLinksService.aidl
@@ -0,0 +1,16 @@
+/*
+ * SPDX-FileCopyrightText: 2019, e Foundation
+ * SPDX-FileCopyrightText: 2021, Google LLC
+ * SPDX-FileCopyrightText: 2021, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.dynamiclinks.internal;
+
+import com.google.firebase.dynamiclinks.internal.IDynamicLinksCallbacks;
+import android.os.Bundle;
+
+interface IDynamicLinksService {
+ void getDynamicLink(IDynamicLinksCallbacks callback, String link) = 0;
+ void createShortDynamicLink(IDynamicLinksCallbacks callback, in Bundle extras) = 1;
+}
diff --git a/firebase-dynamic-links/src/main/aidl/com/google/firebase/dynamiclinks/internal/ShortDynamicLinkImpl.aidl b/firebase-dynamic-links/src/main/aidl/com/google/firebase/dynamiclinks/internal/ShortDynamicLinkImpl.aidl
new file mode 100644
index 0000000..cfca953
--- /dev/null
+++ b/firebase-dynamic-links/src/main/aidl/com/google/firebase/dynamiclinks/internal/ShortDynamicLinkImpl.aidl
@@ -0,0 +1,10 @@
+/*
+ * SPDX-FileCopyrightText: 2019, e Foundation
+ * SPDX-FileCopyrightText: 2021, Google LLC
+ * SPDX-FileCopyrightText: 2021, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.dynamiclinks.internal;
+
+parcelable ShortDynamicLinkImpl;
diff --git a/firebase-dynamic-links/src/main/aidl/com/google/firebase/dynamiclinks/internal/WarningImpl.aidl b/firebase-dynamic-links/src/main/aidl/com/google/firebase/dynamiclinks/internal/WarningImpl.aidl
new file mode 100644
index 0000000..fbdb3f8
--- /dev/null
+++ b/firebase-dynamic-links/src/main/aidl/com/google/firebase/dynamiclinks/internal/WarningImpl.aidl
@@ -0,0 +1,10 @@
+/*
+ * SPDX-FileCopyrightText: 2019, e Foundation
+ * SPDX-FileCopyrightText: 2021, Google LLC
+ * SPDX-FileCopyrightText: 2021, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.dynamiclinks.internal;
+
+parcelable WarningImpl;
diff --git a/firebase-dynamic-links/src/main/java/com/google/firebase/dynamiclinks/ShortDynamicLink.java b/firebase-dynamic-links/src/main/java/com/google/firebase/dynamiclinks/ShortDynamicLink.java
new file mode 100644
index 0000000..f613347
--- /dev/null
+++ b/firebase-dynamic-links/src/main/java/com/google/firebase/dynamiclinks/ShortDynamicLink.java
@@ -0,0 +1,72 @@
+/*
+ * SPDX-FileCopyrightText: 2021, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+
+package com.google.firebase.dynamiclinks;
+
+import android.net.Uri;
+
+import org.microg.gms.common.PublicApi;
+
+import java.util.List;
+
+/**
+ * Response from {@link DynamicLink.Builder#buildShortDynamicLink()} that returns the shortened Dynamic Link, link flow chart, and warnings from the requested Dynamic Link.
+ */
+@PublicApi
+public interface ShortDynamicLink {
+ /**
+ * Gets the preview link to show the link flow chart.
+ */
+ Uri getPreviewLink();
+
+ /**
+ * Gets the short Dynamic Link value.
+ */
+ Uri getShortLink();
+
+ /**
+ * Gets information about potential warnings on link creation.
+ */
+ List extends Warning> getWarnings();
+
+ /**
+ * Path generation option for short Dynamic Link length
+ */
+ @interface Suffix {
+ /**
+ * Shorten the path to an unguessable string. Such strings are created by base62-encoding randomly generated
+ * 96-bit numbers, and consist of 17 alphanumeric characters. Use unguessable strings to prevent your Dynamic
+ * Links from being crawled, which can potentially expose sensitive information.
+ */
+ int UNGUESSABLE = 1;
+ /**
+ * Shorten the path to a string that is only as long as needed to be unique, with a minimum length of 4
+ * characters. Use this method if sensitive information would not be exposed if a short Dynamic Link URL were
+ * guessed.
+ */
+ int SHORT = 2;
+ }
+
+ /**
+ * Information about potential warnings on short Dynamic Link creation.
+ */
+ interface Warning {
+ /**
+ * Gets the warning code.
+ *
+ * @deprecated See {@link #getMessage()} for more information on this warning and how to correct it.
+ */
+ @Deprecated
+ String getCode();
+
+ /**
+ * Gets the warning message to help developers improve their requests.
+ */
+ String getMessage();
+ }
+}
diff --git a/firebase-dynamic-links/src/main/java/com/google/firebase/dynamiclinks/internal/DynamicLinkData.java b/firebase-dynamic-links/src/main/java/com/google/firebase/dynamiclinks/internal/DynamicLinkData.java
new file mode 100644
index 0000000..a2b0e42
--- /dev/null
+++ b/firebase-dynamic-links/src/main/java/com/google/firebase/dynamiclinks/internal/DynamicLinkData.java
@@ -0,0 +1,69 @@
+/*
+ * SPDX-FileCopyrightText: 2019, e Foundation
+ * SPDX-FileCopyrightText: 2021, Google LLC
+ * SPDX-FileCopyrightText: 2021, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.dynamiclinks.internal;
+
+import android.os.Parcel;
+import androidx.annotation.NonNull;
+import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
+
+import android.os.Bundle;
+import android.net.Uri;
+import org.microg.gms.utils.ToStringHelper;
+
+@SafeParcelable.Class
+public class DynamicLinkData extends AbstractSafeParcelable {
+ @Field(1)
+ public final String dynamicLink;
+
+ @Field(2)
+ public final String deepLink;
+
+ @Field(3)
+ public final int minVersion;
+
+ @Field(4)
+ public final long clickTimestamp;
+
+ @Field(5)
+ public final Bundle extensionBundle;
+
+ @Field(6)
+ public final Uri redirectUrl;
+
+ @Constructor
+ public DynamicLinkData(@Param(1) String dynamicLink, @Param(2) String deepLink, @Param(3) int minVersion, @Param(4) long clickTimestamp, @Param(5) Bundle extensionBundle, @Param(6) Uri redirectUrl) {
+ this.dynamicLink = dynamicLink;
+ this.deepLink = deepLink;
+ this.minVersion = minVersion;
+ this.clickTimestamp = clickTimestamp;
+ this.extensionBundle = extensionBundle;
+ this.redirectUrl = redirectUrl;
+ }
+
+ @NonNull
+ @Override
+ public String toString() {
+ return ToStringHelper.name("DynamicLinkData")
+ .field("dynamicLink", dynamicLink)
+ .field("deepLink", deepLink)
+ .field("minVersion", minVersion)
+ .field("clickTimestamp", clickTimestamp)
+ .field("extensionBundle", extensionBundle)
+ .field("redirectUrl", redirectUrl)
+ .end();
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ CREATOR.writeToParcel(this, dest, flags);
+ }
+
+ public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(DynamicLinkData.class);
+}
diff --git a/firebase-dynamic-links/src/main/java/com/google/firebase/dynamiclinks/internal/ShortDynamicLinkImpl.java b/firebase-dynamic-links/src/main/java/com/google/firebase/dynamiclinks/internal/ShortDynamicLinkImpl.java
new file mode 100644
index 0000000..350b34d
--- /dev/null
+++ b/firebase-dynamic-links/src/main/java/com/google/firebase/dynamiclinks/internal/ShortDynamicLinkImpl.java
@@ -0,0 +1,43 @@
+/*
+ * SPDX-FileCopyrightText: 2019, e Foundation
+ * SPDX-FileCopyrightText: 2021, Google LLC
+ * SPDX-FileCopyrightText: 2021, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.dynamiclinks.internal;
+
+import android.net.Uri;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+public class ShortDynamicLinkImpl extends AutoSafeParcelable {
+ @Field(1)
+ public final Uri shortLink;
+
+ @Field(2)
+ public final Uri previewLink;
+
+ @Field(3)
+ public final List warnings;
+
+
+ public ShortDynamicLinkImpl() {
+ shortLink = Uri.EMPTY;
+ previewLink = Uri.EMPTY;
+
+ warnings = new ArrayList<>();
+ }
+
+ public ShortDynamicLinkImpl(Uri shortLink, Uri previewLink, List warnings) {
+ this.shortLink = shortLink;
+ this.previewLink = previewLink;
+ this.warnings = warnings;
+ }
+
+ public static final Creator CREATOR = new AutoCreator(ShortDynamicLinkImpl.class);
+}
diff --git a/firebase-dynamic-links/src/main/java/com/google/firebase/dynamiclinks/internal/WarningImpl.java b/firebase-dynamic-links/src/main/java/com/google/firebase/dynamiclinks/internal/WarningImpl.java
new file mode 100644
index 0000000..ae8e9e1
--- /dev/null
+++ b/firebase-dynamic-links/src/main/java/com/google/firebase/dynamiclinks/internal/WarningImpl.java
@@ -0,0 +1,40 @@
+/*
+ * SPDX-FileCopyrightText: 2021, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.firebase.dynamiclinks.internal;
+
+import com.google.firebase.dynamiclinks.ShortDynamicLink;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class WarningImpl extends AutoSafeParcelable implements ShortDynamicLink.Warning {
+ @Field(1)
+ @Deprecated
+ private int code = 1;
+
+ @Field(2)
+ private final String message;
+
+ private WarningImpl() {
+ this.message = null;
+ }
+
+ public WarningImpl(String message) {
+ this.message = message;
+ }
+
+ @Override
+ public String getCode() {
+ return null;
+ }
+
+ @Override
+ public String getMessage() {
+ return message;
+ }
+
+ public static final Creator CREATOR = new AutoCreator(WarningImpl.class);
+}
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 0000000..1c50760
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,4 @@
+android.useAndroidX=true
+org.gradle.configuration-cache=true
+org.gradle.caching=true
+org.gradle.jvmargs=-Xmx4096m -XX:+UseParallelGC --add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED
diff --git a/gradle/publish-android.gradle b/gradle/publish-android.gradle
new file mode 100644
index 0000000..46c6e63
--- /dev/null
+++ b/gradle/publish-android.gradle
@@ -0,0 +1,64 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+android {
+ publishing {
+ singleVariant("release") {
+ withSourcesJar()
+ withJavadocJar()
+ }
+ }
+}
+
+afterEvaluate {
+ publishing {
+ publications {
+ release(MavenPublication) {
+ pom {
+ name = project.name
+ description = project.description
+ url = 'https://github.com/microg/GmsCore'
+ licenses {
+ license {
+ name = 'The Apache Software License, Version 2.0'
+ url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
+ }
+ }
+ developers {
+ developer {
+ id = 'microg'
+ name = 'microG Team'
+ }
+ }
+ scm {
+ url = 'https://github.com/microg/GmsCore'
+ connection = 'scm:git:https://github.com/microg/GmsCore.git'
+ developerConnection = 'scm:git:ssh://github.com/microg/GmsCore.git'
+ }
+ }
+
+ from components.release
+ }
+ }
+ if (project.hasProperty('sonatype.username')) {
+ repositories {
+ maven {
+ name = 'sonatype'
+ url = 'https://oss.sonatype.org/service/local/staging/deploy/maven2/'
+ credentials {
+ username project.getProperty('sonatype.username')
+ password project.getProperty('sonatype.password')
+ }
+ }
+ }
+ }
+ }
+ if (project.hasProperty('signing.keyId')) {
+ signing {
+ sign publishing.publications
+ }
+ }
+ tasks.getByPath("sourceReleaseJar").duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+}
diff --git a/gradle/publish-java.gradle b/gradle/publish-java.gradle
new file mode 100644
index 0000000..95d9ad9
--- /dev/null
+++ b/gradle/publish-java.gradle
@@ -0,0 +1,76 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+task javaSourcesJar(type: Jar) {
+ archiveClassifier.set("sources")
+ from sourceSets.main.allJava
+}
+
+javadoc {
+ classpath = configurations.compileClasspath
+ source = sourceSets.main.allJava
+}
+
+task javaJavadocsJar(type: Jar) {
+ archiveClassifier.set("javadoc")
+ from javadoc
+}
+
+artifacts {
+ archives javaSourcesJar
+ archives javaJavadocsJar
+}
+
+afterEvaluate {
+ publishing {
+ publications {
+ release(MavenPublication) {
+ pom {
+ name = project.name
+ description = project.description
+ url = 'https://github.com/microg/GmsCore'
+ licenses {
+ license {
+ name = 'The Apache Software License, Version 2.0'
+ url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
+ }
+ }
+ developers {
+ developer {
+ id = 'microg'
+ name = 'microG Team'
+ }
+ }
+ scm {
+ url = 'https://github.com/microg/GmsCore'
+ connection = 'scm:git:https://github.com/microg/GmsCore.git'
+ developerConnection = 'scm:git:ssh://github.com/microg/GmsCore.git'
+ }
+ }
+
+ from components.java
+ artifact javaSourcesJar
+ artifact javaJavadocsJar
+ }
+ }
+ if (project.hasProperty('sonatype.username')) {
+ repositories {
+ maven {
+ name = 'sonatype'
+ url = 'https://oss.sonatype.org/service/local/staging/deploy/maven2/'
+ credentials {
+ username project.getProperty('sonatype.username')
+ password project.getProperty('sonatype.password')
+ }
+ }
+ }
+ }
+ }
+ if (project.hasProperty('signing.keyId')) {
+ signing {
+ sign publishing.publications
+ }
+ }
+}
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..a4b76b9
Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..00277a3
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,10 @@
+# SPDX-FileCopyrightText: 2015, microG Project Team
+# SPDX-License-Identifier: CC0-1.0
+
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
+networkTimeout=10000
+validateDistributionUrl=true
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
new file mode 100755
index 0000000..f5feea6
--- /dev/null
+++ b/gradlew
@@ -0,0 +1,252 @@
+#!/bin/sh
+
+#
+# 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.
+# You may obtain a copy of the License at
+#
+# https://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-License-Identifier: Apache-2.0
+#
+
+##############################################################################
+#
+# 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/HEAD/platforms/jvm/plugins-application/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
+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
+
+# This is normally unused
+# shellcheck disable=SC2034
+APP_BASE_NAME=${0##*/}
+# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
+APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
+' "$PWD" ) || exit
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+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 ;; #(
+ MSYS* | MINGW* ) msys=true ;; #(
+ NONSTOP* ) nonstop=true ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+
+# Determine the Java command to use to start the JVM.
+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
+ else
+ 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
+ if ! command -v java >/dev/null 2>&1
+ then
+ 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
+fi
+
+# Increase the maximum file descriptors if we can.
+if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
+ case $MAX_FD in #(
+ max*)
+ # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC2039,SC3045
+ MAX_FD=$( ulimit -H -n ) ||
+ warn "Could not query maximum file descriptor limit"
+ esac
+ case $MAX_FD in #(
+ '' | soft) :;; #(
+ *)
+ # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC2039,SC3045
+ ulimit -n "$MAX_FD" ||
+ warn "Could not set maximum file descriptor limit to $MAX_FD"
+ esac
+fi
+
+# 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.
+
+# 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" )
+
+ 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
+
+
+# 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"'
+
+# Collect all arguments for the java command:
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
+# and any embedded shellness will be escaped.
+# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
+# treated as '${Hostname}' itself on the command line.
+
+set -- \
+ "-Dorg.gradle.appname=$APP_BASE_NAME" \
+ -classpath "$CLASSPATH" \
+ org.gradle.wrapper.GradleWrapperMain \
+ "$@"
+
+# Stop when "xargs" is not available.
+if ! command -v xargs >/dev/null 2>&1
+then
+ die "xargs is not available"
+fi
+
+# 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" "$@"
diff --git a/gradlew.bat b/gradlew.bat
new file mode 100644
index 0000000..9b42019
--- /dev/null
+++ b/gradlew.bat
@@ -0,0 +1,94 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+@rem SPDX-License-Identifier: Apache-2.0
+@rem
+
+@if "%DEBUG%"=="" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%"=="" set DIRNAME=.
+@rem This is normally unused
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if %ERRORLEVEL% equ 0 goto execute
+
+echo. 1>&2
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo. 1>&2
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
+
+goto fail
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+
+:end
+@rem End local scope for the variables with windows NT shell
+if %ERRORLEVEL% equ 0 goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+set EXIT_CODE=%ERRORLEVEL%
+if %EXIT_CODE% equ 0 set EXIT_CODE=1
+if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
+exit /b %EXIT_CODE%
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/play-services-ads-base/build.gradle b/play-services-ads-base/build.gradle
new file mode 100644
index 0000000..bb5ae3d
--- /dev/null
+++ b/play-services-ads-base/build.gradle
@@ -0,0 +1,38 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+apply plugin: 'com.android.library'
+apply plugin: 'maven-publish'
+apply plugin: 'signing'
+
+android {
+ namespace "com.google.android.gms.ads_base"
+
+ compileSdkVersion androidCompileSdk
+ buildToolsVersion "$androidBuildVersionTools"
+
+ buildFeatures {
+ aidl = true
+ }
+
+ defaultConfig {
+ versionName version
+ minSdkVersion androidMinSdk
+ targetSdkVersion androidTargetSdk
+ }
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+apply from: '../gradle/publish-android.gradle'
+
+description = 'microG implementation of play-services-ads-base'
+
+dependencies {
+ api project(':play-services-basement')
+}
diff --git a/play-services-ads-base/src/main/AndroidManifest.xml b/play-services-ads-base/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..7f3bbf2
--- /dev/null
+++ b/play-services-ads-base/src/main/AndroidManifest.xml
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/play-services-ads-identifier/build.gradle b/play-services-ads-identifier/build.gradle
new file mode 100644
index 0000000..9c5a4d8
--- /dev/null
+++ b/play-services-ads-identifier/build.gradle
@@ -0,0 +1,38 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+apply plugin: 'com.android.library'
+apply plugin: 'maven-publish'
+apply plugin: 'signing'
+
+android {
+ namespace "com.google.android.gms.ads.identifier"
+
+ compileSdkVersion androidCompileSdk
+ buildToolsVersion "$androidBuildVersionTools"
+
+ buildFeatures {
+ aidl = true
+ }
+
+ defaultConfig {
+ versionName version
+ minSdkVersion androidMinSdk
+ targetSdkVersion androidTargetSdk
+ }
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+apply from: '../gradle/publish-android.gradle'
+
+description = 'microG implementation of play-services-ads-identifier'
+
+dependencies {
+ api project(':play-services-basement')
+}
diff --git a/play-services-ads-identifier/core/build.gradle b/play-services-ads-identifier/core/build.gradle
new file mode 100644
index 0000000..5b63bd5
--- /dev/null
+++ b/play-services-ads-identifier/core/build.gradle
@@ -0,0 +1,42 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+apply plugin: 'com.android.library'
+apply plugin: 'kotlin-android'
+
+dependencies {
+ api project(':play-services-ads-identifier')
+ implementation project(':play-services-base-core')
+}
+
+android {
+ namespace "org.microg.gms.ads.identifier"
+
+ compileSdkVersion androidCompileSdk
+ buildToolsVersion "$androidBuildVersionTools"
+
+ defaultConfig {
+ versionName version
+ minSdkVersion androidMinSdk
+ targetSdkVersion androidTargetSdk
+ }
+
+ sourceSets {
+ main.java.srcDirs += 'src/main/kotlin'
+ }
+
+ compileOptions {
+ sourceCompatibility = 1.8
+ targetCompatibility = 1.8
+ }
+
+ kotlinOptions {
+ jvmTarget = 1.8
+ }
+
+ lintOptions {
+ disable 'MissingTranslation', 'GetLocales'
+ }
+}
diff --git a/play-services-ads-identifier/core/src/main/AndroidManifest.xml b/play-services-ads-identifier/core/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..b97bc37
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/AndroidManifest.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/play-services-ads-identifier/core/src/main/kotlin/org/microg/gms/ads/identifier/AdvertisingIdService.kt b/play-services-ads-identifier/core/src/main/kotlin/org/microg/gms/ads/identifier/AdvertisingIdService.kt
new file mode 100644
index 0000000..0c4f96d
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/kotlin/org/microg/gms/ads/identifier/AdvertisingIdService.kt
@@ -0,0 +1,139 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package org.microg.gms.ads.identifier
+
+import android.app.Service
+import android.content.Context
+import android.content.Intent
+import android.content.pm.PackageManager
+import android.os.Binder
+import android.os.Bundle
+import android.os.IBinder
+import android.util.Log
+import androidx.core.os.bundleOf
+import com.google.android.gms.ads.identifier.internal.IAdvertisingIdService
+import org.microg.gms.common.GooglePackagePermission
+import org.microg.gms.common.PackageUtils
+import java.util.UUID
+
+const val TAG = "AdvertisingId"
+const val EMPTY_AD_ID = "00000000-0000-0000-0000-000000000000"
+
+class AdvertisingIdService : Service() {
+ override fun onBind(intent: Intent): IBinder? {
+ return AdvertisingIdServiceImpl(this).asBinder()
+ }
+}
+
+class MemoryAdvertisingIdConfiguration(context: Context) : AdvertisingIdConfiguration(context) {
+ override val adTrackingLimitedPerApp: MutableMap = hashMapOf()
+ override var adTrackingLimitedGlobally: Boolean = true
+ override var debugLogging: Boolean = false
+ override var adId: String = EMPTY_AD_ID
+ override var debugAdId: String = EMPTY_AD_ID
+
+ init {
+ resetAdvertisingId()
+ }
+}
+
+abstract class AdvertisingIdConfiguration(private val context: Context) {
+ abstract val adTrackingLimitedPerApp: MutableMap
+ abstract var adTrackingLimitedGlobally: Boolean
+ abstract var debugLogging: Boolean
+ abstract var adId: String
+ abstract var debugAdId: String
+
+ fun isAdTrackingLimitedForApp(uid: Int): Boolean {
+ if (adTrackingLimitedGlobally) return true
+ return adTrackingLimitedPerApp[uid] ?: false
+ }
+
+ fun resetAdvertisingId(): String {
+ adId = UUID.randomUUID().toString()
+ debugAdId = UUID.randomUUID().toString().dropLast(12) + "10ca1ad1abe1"
+ return if (debugLogging) debugAdId else adId
+ }
+
+ fun getAdvertisingIdForApp(uid: Int): String {
+ if (isAdTrackingLimitedForApp(uid)) return EMPTY_AD_ID
+ try {
+ val packageNames = context.packageManager.getPackagesForUid(uid) ?: return EMPTY_AD_ID
+ for (packageName in packageNames) {
+ val applicationInfo = context.packageManager.getApplicationInfo(packageName, 0)
+ if (applicationInfo.targetSdkVersion > 33) {
+ if (context.packageManager.checkPermission("com.google.android.gms.permission.AD_ID", packageName) == PackageManager.PERMISSION_DENIED) {
+ throw SecurityException("Permission not granted")
+ }
+ }
+ }
+ } catch (e: Exception) {
+ Log.w(TAG, "Permission check failed", e)
+ return EMPTY_AD_ID
+ }
+ val adId = if (debugLogging) debugAdId else adId
+ return adId.ifEmpty { resetAdvertisingId() }
+ }
+}
+
+class AdvertisingIdServiceImpl(private val context: Context) : IAdvertisingIdService.Stub() {
+ private val configuration = MemoryAdvertisingIdConfiguration(context)
+
+ override fun getAdvertisingId(): String {
+ return configuration.getAdvertisingIdForApp(Binder.getCallingUid())
+ }
+
+ override fun isAdTrackingLimited(ignored: Boolean): Boolean {
+ return configuration.isAdTrackingLimitedForApp(Binder.getCallingUid())
+ }
+
+ override fun resetAdvertisingId(packageName: String): String {
+ PackageUtils.checkPackageUid(context, packageName, getCallingUid())
+ PackageUtils.assertGooglePackagePermission(context, GooglePackagePermission.AD_ID)
+ return configuration.resetAdvertisingId()
+ }
+
+ override fun setAdTrackingLimitedGlobally(packageName: String, limited: Boolean) {
+ PackageUtils.checkPackageUid(context, packageName, getCallingUid())
+ PackageUtils.assertGooglePackagePermission(context, GooglePackagePermission.AD_ID)
+ configuration.adTrackingLimitedGlobally = limited
+ }
+
+ override fun setDebugLoggingEnabled(packageName: String, enabled: Boolean): String {
+ PackageUtils.checkPackageUid(context, packageName, getCallingUid())
+ PackageUtils.assertGooglePackagePermission(context, GooglePackagePermission.AD_ID)
+ configuration.debugLogging = enabled
+ return advertisingId
+ }
+
+ override fun isDebugLoggingEnabled(): Boolean {
+ return configuration.debugLogging
+ }
+
+ override fun isAdTrackingLimitedGlobally(): Boolean {
+ PackageUtils.assertGooglePackagePermission(context, GooglePackagePermission.AD_ID)
+ return configuration.adTrackingLimitedGlobally
+ }
+
+ override fun setAdTrackingLimitedForApp(uid: Int, limited: Boolean) {
+ PackageUtils.assertGooglePackagePermission(context, GooglePackagePermission.AD_ID)
+ configuration.adTrackingLimitedPerApp[uid] = limited
+ }
+
+ override fun resetAdTrackingLimitedForApp(uid: Int) {
+ PackageUtils.assertGooglePackagePermission(context, GooglePackagePermission.AD_ID)
+ configuration.adTrackingLimitedPerApp.remove(uid)
+ }
+
+ override fun getAllAppsLimitedAdTrackingConfiguration(): Bundle {
+ PackageUtils.assertGooglePackagePermission(context, GooglePackagePermission.AD_ID)
+ return bundleOf(*configuration.adTrackingLimitedPerApp.map { it.key.toString() to it.value }.toTypedArray())
+ }
+
+ override fun getAdvertisingIdForApp(uid: Int): String {
+ PackageUtils.assertGooglePackagePermission(context, GooglePackagePermission.AD_ID)
+ return configuration.getAdvertisingIdForApp(uid)
+ }
+}
diff --git a/play-services-ads-identifier/core/src/main/res/values-ar/strings.xml b/play-services-ads-identifier/core/src/main/res/values-ar/strings.xml
new file mode 100644
index 0000000..7d308cd
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-ar/strings.xml
@@ -0,0 +1,7 @@
+
+
+ إشعار مُعَرِّف الإعلان
+ إذن مُعَرِّف الإعلان
+ يتيح للتطبيق تلقي إشعار عند تحديث مُعَرِّف الإعلان أو تحديد تفضيلات تتبع الإعلانات للمستخدم.
+ يتيح لتطبيق الناشر بالوصول إلى مُعَرِّف إعلان صالح بشكل مباشر أو غير مباشر.
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/core/src/main/res/values-ast/strings.xml b/play-services-ads-identifier/core/src/main/res/values-ast/strings.xml
new file mode 100644
index 0000000..faf5aa5
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-ast/strings.xml
@@ -0,0 +1,7 @@
+
+
+ Permite qu\'una aplicación reciba un avisu al anovar la ID de publicidá o al llendar la preferencia de rastrexu publicitariu del usuariu.
+ Avisu d\'ID de publicidá
+ Permite que l\'aplicación d\'un espublizador acceda in/direutamente a una ID de publicidá.
+ Permisu d\'ID de publicidá
+
diff --git a/play-services-ads-identifier/core/src/main/res/values-az/strings.xml b/play-services-ads-identifier/core/src/main/res/values-az/strings.xml
new file mode 100644
index 0000000..5209fd0
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-az/strings.xml
@@ -0,0 +1,7 @@
+
+
+ Reklam ID İcazəsi
+ Dərc edici tətbiq birbaşa və ya dolayı yolla etibarlı reklam ID-ə keçid icazəsi verir.
+ Reklam ID bildirişi
+ İstifadəçinin reklam ID-i və ya reklam izləmə seçiminin məhdudlaşdırılması yeniləndikdə, tətbiqə bildiriş almaq icazəsi verir.
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/core/src/main/res/values-be/strings.xml b/play-services-ads-identifier/core/src/main/res/values-be/strings.xml
new file mode 100644
index 0000000..0648bca
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-be/strings.xml
@@ -0,0 +1,7 @@
+
+
+ Дазвол рэкламнага ідэнтыфікатара
+ Дазваляе выдаўцу дадатку прама ці ўскосна атрымліваць доступ да рэкламнага ідэнтыфікатара.
+ Апавяшчэнне рэкламнага ідэнтыфікатара
+ Дазваляе дадаткам атрымліваць апавяшчэнне калі рэкламны ідэнтыфікатар або перавага аб ліміце рэкламнай сачэння карыстальніка абноўленыя.
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/core/src/main/res/values-cs/strings.xml b/play-services-ads-identifier/core/src/main/res/values-cs/strings.xml
new file mode 100644
index 0000000..846d2d0
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-cs/strings.xml
@@ -0,0 +1,7 @@
+
+
+ Oprávnění k reklamnímu ID
+ Umožní vydavatelské aplikaci přímý nebo nepřímý přístup k platnému reklamnímu ID.
+ Oznámení o reklamním ID
+ Umožní aplikaci obdržet oznámení při aktualizaci reklamního ID nebo uživatelské předvolby omezení reklamního sledování.
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/core/src/main/res/values-de/strings.xml b/play-services-ads-identifier/core/src/main/res/values-de/strings.xml
new file mode 100644
index 0000000..f565613
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-de/strings.xml
@@ -0,0 +1,7 @@
+
+
+ Erlaubt einer App, eine Benachrichtigung zu erhalten, wenn sich die Werbe-ID ändert oder der Nutzer das Tracking einschränkt.
+ Werbe-ID-Benachrichtigung
+ Erlaubt einer App, direkt oder indirekt, auf die Werbe-ID zuzugreifen.
+ Werbe-ID-Berechtigung
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/core/src/main/res/values-eo/strings.xml b/play-services-ads-identifier/core/src/main/res/values-eo/strings.xml
new file mode 100644
index 0000000..a6b3dae
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-eo/strings.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/core/src/main/res/values-es/strings.xml b/play-services-ads-identifier/core/src/main/res/values-es/strings.xml
new file mode 100644
index 0000000..90c47f7
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-es/strings.xml
@@ -0,0 +1,7 @@
+
+
+ Permiso de identificación publicitaria
+ Permite que una aplicación de editor acceda directa o indirectamente a un ID de publicidad válido.
+ Notificación del ID de publicidad
+ Permite que una aplicación reciba una notificación cuando se actualiza el ID de publicidad o la preferencia de limitar el seguimiento de anuncios del usuario.
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/core/src/main/res/values-fa/strings.xml b/play-services-ads-identifier/core/src/main/res/values-fa/strings.xml
new file mode 100644
index 0000000..2239807
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-fa/strings.xml
@@ -0,0 +1,7 @@
+
+
+ مجوز شناسه آگهی
+ به یک برنامه ناشر اجازه میدهد تا به شیوه مستقیم یا غیرمستقیم به یک شناسه آگهی معتبر دسترسی پیدا کند.
+ آگاهساز شناسه آگهی
+ به یک برنامه اجازه میدهد تا هنگام بهروزرسانی شناسه آگهی یا تنظیمات ردیابی محدود آگهی کاربر، آگاهساز دریافت کند.
+
diff --git a/play-services-ads-identifier/core/src/main/res/values-fi/strings.xml b/play-services-ads-identifier/core/src/main/res/values-fi/strings.xml
new file mode 100644
index 0000000..eca968d
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-fi/strings.xml
@@ -0,0 +1,7 @@
+
+
+ Sallii sovelluksen vastaanottaa ilmoituksen, kun käyttäjän mainostunnus tai mainonnan seurantaa rajoittava asetus päivitetään.
+ Mainostunnuslupa
+ Mainostunnusilmoitus
+ Mahdollistaa julkaisijasovellukselle pääsyn voimassa olevaan mainostunnukseen suoraan tai välillisesti.
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/core/src/main/res/values-fil/strings.xml b/play-services-ads-identifier/core/src/main/res/values-fil/strings.xml
new file mode 100644
index 0000000..c00c7dc
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-fil/strings.xml
@@ -0,0 +1,7 @@
+
+
+ Pahintulot ng Advertising ID
+ Nagbibigay-daan sa isang publisher app na mag-access ng wastong advertising ID nang direkta o hindi direkta.
+ Notification ng Advertising ID
+ Nagbibigay-daan sa isang app na makatanggap ng notification kapag na-update ang advertising ID o limitahan ang kagustuhan sa pagsubaybay sa ad ng user.
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/core/src/main/res/values-fr/strings.xml b/play-services-ads-identifier/core/src/main/res/values-fr/strings.xml
new file mode 100644
index 0000000..c82f144
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-fr/strings.xml
@@ -0,0 +1,7 @@
+
+
+ Permission de l\'identifiant publicitaire
+ Autorise une application affichant de la publicité à accéder directement ou indirectement à un identifiant publicitaire valide.
+ Notification de l\'identifiant publicitaire
+ Autorise une application à être notifiée de la modification de l\'identifiant publicitaire ou de la limitation du suivi publicitaire de l\'utilisateur.
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/core/src/main/res/values-ga/strings.xml b/play-services-ads-identifier/core/src/main/res/values-ga/strings.xml
new file mode 100644
index 0000000..51d2e13
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-ga/strings.xml
@@ -0,0 +1,7 @@
+
+
+ Ligeann sé d’aip fógra a fháil nuair a nuashonraítear an t-aitheantas fógraíochta nó an rogha rianaithe teorann atá ag an úsáideoir.
+ Fógra aitheantais fógraíochta
+ Cead ID Fógraíochta
+ Ligeann sé d’aip foilsitheora rochtain a fháil ar aitheantas bailí fógraíochta go díreach nó go hindíreach.
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/core/src/main/res/values-in/strings.xml b/play-services-ads-identifier/core/src/main/res/values-in/strings.xml
new file mode 100644
index 0000000..0570563
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-in/strings.xml
@@ -0,0 +1,7 @@
+
+
+ Memungkinkan aplikasi penerbit mengakses ID periklanan yang valid secara langsung atau tidak langsung.
+ Izin ID Periklanan
+ Pemberitahuan ID periklanan
+ Memungkinkan aplikasi menerima notifikasi ketika ID periklanan atau batas preferensi pelacakan iklan pengguna diperbarui.
+
diff --git a/play-services-ads-identifier/core/src/main/res/values-is/strings.xml b/play-services-ads-identifier/core/src/main/res/values-is/strings.xml
new file mode 100644
index 0000000..a6b3dae
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-is/strings.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/core/src/main/res/values-it/strings.xml b/play-services-ads-identifier/core/src/main/res/values-it/strings.xml
new file mode 100644
index 0000000..ab94b6f
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-it/strings.xml
@@ -0,0 +1,7 @@
+
+
+ Consente a un\'app di ricevere una notifica in caso di aggiornamento dell\'ID pubblicità o della preferenza dell\'utente relativa alla limitazione del tracciamento degli annunci.
+ Notifica sull\'ID pubblicità
+ Consente a un\'app dell\'autore di accedere direttamente o indirettamente a un ID pubblicità valido.
+ Autorizzazione accesso all\'ID pubblicità
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/core/src/main/res/values-ja/strings.xml b/play-services-ads-identifier/core/src/main/res/values-ja/strings.xml
new file mode 100644
index 0000000..c3499ac
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-ja/strings.xml
@@ -0,0 +1,7 @@
+
+
+ ユーザーの広告 ID またはトラッキング拒否設定が更新されたときに、アプリが通知を受信できるようにします。
+ 広告 ID の通知
+ 外部アプリが有効な広告 ID に直接的または間接的にアクセスできるようにします。
+ 広告 ID の許可
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/core/src/main/res/values-ko/strings.xml b/play-services-ads-identifier/core/src/main/res/values-ko/strings.xml
new file mode 100644
index 0000000..2593e7a
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-ko/strings.xml
@@ -0,0 +1,7 @@
+
+
+ 광고 ID 권한
+ 퍼블리셔 앱이 유효한 광고 ID에 직접 또는 간접적으로 접근할 수 있도록 합니다.
+ 광고 ID 알림
+ 사용자의 광고 ID 또는 광고 추적 제한 설정이 변경되면 앱이 알림을 받을 수 있습니다.
+
diff --git a/play-services-ads-identifier/core/src/main/res/values-lv/strings.xml b/play-services-ads-identifier/core/src/main/res/values-lv/strings.xml
new file mode 100644
index 0000000..53ee814
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-lv/strings.xml
@@ -0,0 +1,7 @@
+
+
+ Reklāmas identifikatora atļauja
+ Ļauj lietotnes izdevējam tieši vai netieši piekļūt derīgam reklāmas identifikatoram.
+ Reklāmas identifikatora paziņojums
+ Ļauj informēt lietotni, ja mainās reklāmas identifikators vai lietotāja ierobežotie, iestatītie reklāmu izsekošanas iestatījumi.
+
diff --git a/play-services-ads-identifier/core/src/main/res/values-lzh/strings.xml b/play-services-ads-identifier/core/src/main/res/values-lzh/strings.xml
new file mode 100644
index 0000000..a6b3dae
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-lzh/strings.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/core/src/main/res/values-ml/strings.xml b/play-services-ads-identifier/core/src/main/res/values-ml/strings.xml
new file mode 100644
index 0000000..28a8ba2
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-ml/strings.xml
@@ -0,0 +1,7 @@
+
+
+ പരസ്യ ഐഡി അനുമതി
+ ഒരു പ്രസാധക ആപ്പിന് സാധുവായ ഒരു പരസ്യ ഐഡി നേരിട്ടോ അല്ലാതെയോ ആക്സസ് ചെയ്യാൻ അനുവദിക്കുന്നു.
+ പരസ്യ ഐഡി അറിയിപ്പ്
+ ഉപയോക്താവിന്റെ പരസ്യ ഐഡി അല്ലെങ്കിൽ പരസ്യ ട്രാക്കിംഗ് മുൻഗണന പരിമിതപ്പെടുത്തുമ്പോൾ ഒരു ആപ്പിന് അറിയിപ്പ് ലഭിക്കാൻ അനുവദിക്കുന്നു.
+
diff --git a/play-services-ads-identifier/core/src/main/res/values-nb-rNO/strings.xml b/play-services-ads-identifier/core/src/main/res/values-nb-rNO/strings.xml
new file mode 100644
index 0000000..e931b20
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-nb-rNO/strings.xml
@@ -0,0 +1,7 @@
+
+
+ Tillatelse til reklame-ID
+ Lar en app få tilgang til en gyldig reklame-ID direkte eller indirekte.
+ Reklame-ID-varsling
+ Lar en app bli varslet når reklame-ID-en til brukeren eller innstillingene til denne oppdateres.
+
diff --git a/play-services-ads-identifier/core/src/main/res/values-nl/strings.xml b/play-services-ads-identifier/core/src/main/res/values-nl/strings.xml
new file mode 100644
index 0000000..3bb25c5
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-nl/strings.xml
@@ -0,0 +1,7 @@
+
+
+ Staart een app om een bericht te ontvangen wanneer de reclame ID of de beperkte advertentie verkiesbaar is.
+ Adverteren van ID Permissie
+ Staart een uitgever app toe om toegang te krijgen tot een geldige advertentie ID direct of indirect.
+ Adverteren van ID-informatie
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/core/src/main/res/values-pl/strings.xml b/play-services-ads-identifier/core/src/main/res/values-pl/strings.xml
new file mode 100644
index 0000000..e21a8ab
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-pl/strings.xml
@@ -0,0 +1,7 @@
+
+
+ Umożliwia aplikacji otrzymywanie powiadomień w przypadku aktualizacji identyfikatora reklamowego lub ograniczenia preferencji śledzenia użytkownika w celach reklamowych.
+ Powiadomienie o indentyfikatorze reklamowym
+ Umożliwia wydawcy aplikacji na bezpośredni lub pośredni dostęp do ważnego identyfikatora reklamowego.
+ Pozwolenie na używanie identyfikatora reklamowego
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/core/src/main/res/values-pt-rBR/strings.xml b/play-services-ads-identifier/core/src/main/res/values-pt-rBR/strings.xml
new file mode 100644
index 0000000..b3aa44e
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-pt-rBR/strings.xml
@@ -0,0 +1,7 @@
+
+
+ Permissão do ID de publicidade
+ Permite que o app publicante acesse um ID de publicidade válido diretamente ou indiretamente.
+ Notificação do ID de publicidade
+ Permite que um app receba uma notificação quando o ID de publicidade muda ou a configuração de limitação de rastreamento de anúncios do usuário muda.
+
diff --git a/play-services-ads-identifier/core/src/main/res/values-pt/strings.xml b/play-services-ads-identifier/core/src/main/res/values-pt/strings.xml
new file mode 100644
index 0000000..a217bf6
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-pt/strings.xml
@@ -0,0 +1,7 @@
+
+
+ Permissão do ID de publicidade
+ Permite que a app de publicação aceda um ID de publicidade válido direta ou indireto.
+ Notificação do ID de publicidade
+ Permite que uma app receba uma notificação quando o ID de publicidade muda ou a configuração de limitação de rastreamento de anúncios do utilizador muda.
+
diff --git a/play-services-ads-identifier/core/src/main/res/values-ro/strings.xml b/play-services-ads-identifier/core/src/main/res/values-ro/strings.xml
new file mode 100644
index 0000000..9051e7a
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-ro/strings.xml
@@ -0,0 +1,7 @@
+
+
+ Permite unei aplicații să primească o notificare atunci când ID-ul de publicitate sau preferința limitată de urmărire a anunțurilor a utilizatorului este actualizată.
+ Notificare de identificare publicitară
+ Permite unei aplicații de editor să acceseze direct sau indirect un ID de publicitate valid.
+ Permisiune de identificare publicitară
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/core/src/main/res/values-ru/strings.xml b/play-services-ads-identifier/core/src/main/res/values-ru/strings.xml
new file mode 100644
index 0000000..dc46f14
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-ru/strings.xml
@@ -0,0 +1,7 @@
+
+
+ Разрешает приложению получать уведомление когда рекламный идентификатор или предпочтение о лимите рекламной слежки пользователя обновлены.
+ Разрешение рекламного идентификатора
+ Разрешает издателю приложения прямо или косвенно получать доступ к рекламному идентификатору.
+ Уведомление рекламного идентификатора
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/core/src/main/res/values-sl/strings.xml b/play-services-ads-identifier/core/src/main/res/values-sl/strings.xml
new file mode 100644
index 0000000..55344e5
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-sl/strings.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/core/src/main/res/values-sr/strings.xml b/play-services-ads-identifier/core/src/main/res/values-sr/strings.xml
new file mode 100644
index 0000000..cc171f7
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-sr/strings.xml
@@ -0,0 +1,7 @@
+
+
+ Обавештење за ID оглашавања
+ Дозвољава апликацији објављивача да директно или индиректно приступи важећем ID-у оглашавања.
+ Дозвола за ID оглашавања
+ Дозвољава апликацији да прими обавештење када се ажурира ID оглашавања или ограничење праћења огласа корисника.
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/core/src/main/res/values-sv/strings.xml b/play-services-ads-identifier/core/src/main/res/values-sv/strings.xml
new file mode 100644
index 0000000..8d4211a
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-sv/strings.xml
@@ -0,0 +1,7 @@
+
+
+ Tillåter en app att ta emot ett meddelande när annons-ID eller begränsad annonsspårningsinställning för användaren uppdateras.
+ Avisering av annons-ID
+ Tillåter en publicerad app att få tillgång till ett giltigt annons-ID direkt eller indirekt.
+ Behörighet för annons-ID
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/core/src/main/res/values-ta/strings.xml b/play-services-ads-identifier/core/src/main/res/values-ta/strings.xml
new file mode 100644
index 0000000..afc6fdc
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-ta/strings.xml
@@ -0,0 +1,7 @@
+
+
+ விளம்பர அடையாளம் அறிவிப்பு
+ விளம்பர அடையாளம் அல்லது பயனரின் விளம்பர கண்காணிப்பு விருப்பம் புதுப்பிக்கப்படும்போது ஒரு பயன்பாட்டை அறிவிப்பைப் பெற அனுமதிக்கிறது.
+ விளம்பர அடையாளம் இசைவு
+ சரியான விளம்பர அடையளத்தை நேரடியாகவோ அல்லது மறைமுகமாகவோ அணுக ஒரு வெளியீட்டாளர் பயன்பாட்டை அனுமதிக்கிறது.
+
diff --git a/play-services-ads-identifier/core/src/main/res/values-th/strings.xml b/play-services-ads-identifier/core/src/main/res/values-th/strings.xml
new file mode 100644
index 0000000..73a203b
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-th/strings.xml
@@ -0,0 +1,7 @@
+
+
+ การอนุญาติให้เข้าถึงรหัสประจำตัวของโฆษณา
+ การแจ้งเตือน รหัสประจำตัวของโฆษณา
+ อนุญาตให้ผู้สร้างแอปเข้าถึง รหัสประจำตัวของโฆษณาที่ถูกต้องได้โดยตรงหรือโดยอ้อม
+ อนุญาตให้แอปรับการแจ้งเตือนเมื่อมีการอัปเดต รหัสประจำตัวของโฆษณา หรือ การตั้งค่าการติดตามโฆษณาของผู้ใช้
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/core/src/main/res/values-tr/strings.xml b/play-services-ads-identifier/core/src/main/res/values-tr/strings.xml
new file mode 100644
index 0000000..c505b7c
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-tr/strings.xml
@@ -0,0 +1,7 @@
+
+
+ Reklam kimliği izni
+ Reklam kimliği bildirimi
+ Bir uygulamanın, kullanıcının reklam takibini kısıtlama ayarını veya reklam kimliğini değiştirdiğinde bildirim almasına izin verir.
+ Bir uygulamanın geçerli bir reklam kimliğine doğrudan veya dolaylı olarak erişmesine izin verir.
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/core/src/main/res/values-ug/strings.xml b/play-services-ads-identifier/core/src/main/res/values-ug/strings.xml
new file mode 100644
index 0000000..ae7324b
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-ug/strings.xml
@@ -0,0 +1,7 @@
+
+
+ ئېلان كىملىك ئۇقتۇرۇشى
+ ئېلان كىملىك ئىجازىتى
+ ئەپنىڭ ئىشلەتكۈچى ئېلان كىملىكى ياكى ئېلان ئىزلاشنى چەكلەش مايىللىقى ئۆزگەرگەندە ئۇقتۇرۇش تاپشۇرۇۋېلىشىغا يول قويىدۇ.
+ تارقاتقۇچىنىڭ ئەپىنىڭ بىۋاسىتە ياكى ۋاسىتىلىك ھالدا ئېلان كىملىكىنى زىيارەت قىلىشىغا يول قويىدۇ.
+
diff --git a/play-services-ads-identifier/core/src/main/res/values-uk/strings.xml b/play-services-ads-identifier/core/src/main/res/values-uk/strings.xml
new file mode 100644
index 0000000..d4bc556
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-uk/strings.xml
@@ -0,0 +1,7 @@
+
+
+ Дозволяє програмі отримувати сповіщення, коли рекламний ідентифікатор або обмеження налаштувань відстеження реклами користувача оновлюється.
+ Сповіщення рекламного ідентифікатора
+ Дозволяє застосунку видавця отримувати доступ до дійсного рекламного ідентифікатор прямо або опосередковано.
+ Дозвіл на рекламний ідентифікатор
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/core/src/main/res/values-vi/strings.xml b/play-services-ads-identifier/core/src/main/res/values-vi/strings.xml
new file mode 100644
index 0000000..8bdcdc6
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-vi/strings.xml
@@ -0,0 +1,7 @@
+
+
+ Cho phép một ứng dụng nhận thông báo khi ID quảng cáo hoặc tùy chọn giới hạn theo dõi quảng cáo của người dùng được cập nhật.
+ Quyền truy cập ID quảng cáo
+ Thông báo về ID quảng cáo
+ Cho phép ứng dụng của nhà phát hành truy cập trực tiếp hoặc gián tiếp vào ID quảng cáo hợp lệ.
+
diff --git a/play-services-ads-identifier/core/src/main/res/values-zh-rCN/strings.xml b/play-services-ads-identifier/core/src/main/res/values-zh-rCN/strings.xml
new file mode 100644
index 0000000..f3c478c
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-zh-rCN/strings.xml
@@ -0,0 +1,7 @@
+
+
+ 广告 ID 权限
+ 允许发布者应用直接或间接地访问广告 ID。
+ 广告 ID 通知
+ 允许应用在用户的广告 ID 或限制广告跟踪设置更改时接收通知。
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/core/src/main/res/values-zh-rTW/strings.xml b/play-services-ads-identifier/core/src/main/res/values-zh-rTW/strings.xml
new file mode 100644
index 0000000..24e84f3
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values-zh-rTW/strings.xml
@@ -0,0 +1,7 @@
+
+
+ 廣告 ID 權限
+ 廣告 ID 通知
+ 允許應用程式在使用者更新廣告 ID 或限制廣告追蹤設定時收到通知。
+ 允許發布商應用程式直接或間接存取有效的廣告 ID。
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/core/src/main/res/values/strings.xml b/play-services-ads-identifier/core/src/main/res/values/strings.xml
new file mode 100644
index 0000000..865dd6a
--- /dev/null
+++ b/play-services-ads-identifier/core/src/main/res/values/strings.xml
@@ -0,0 +1,11 @@
+
+
+
+ Advertising ID Permission
+ Allows a publisher app to access a valid advertising ID directly or indirectly.
+ Advertising ID notification
+ Allows an app to receive a notification when the advertising ID or limit ad tracking preference of the user is updated.
+
\ No newline at end of file
diff --git a/play-services-ads-identifier/src/main/AndroidManifest.xml b/play-services-ads-identifier/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..7f3bbf2
--- /dev/null
+++ b/play-services-ads-identifier/src/main/AndroidManifest.xml
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/play-services-ads-identifier/src/main/aidl/com/google/android/gms/ads/identifier/internal/IAdvertisingIdService.aidl b/play-services-ads-identifier/src/main/aidl/com/google/android/gms/ads/identifier/internal/IAdvertisingIdService.aidl
new file mode 100644
index 0000000..bda8695
--- /dev/null
+++ b/play-services-ads-identifier/src/main/aidl/com/google/android/gms/ads/identifier/internal/IAdvertisingIdService.aidl
@@ -0,0 +1,17 @@
+package com.google.android.gms.ads.identifier.internal;
+
+import android.os.Bundle;
+
+interface IAdvertisingIdService {
+ String getAdvertisingId() = 0;
+ boolean isAdTrackingLimited(boolean ignored) = 1;
+ String resetAdvertisingId(String packageName) = 2;
+ void setAdTrackingLimitedGlobally(String packageName, boolean limited) = 3;
+ String setDebugLoggingEnabled(String packageName, boolean enabled) = 4;
+ boolean isDebugLoggingEnabled() = 5;
+ boolean isAdTrackingLimitedGlobally() = 6;
+ void setAdTrackingLimitedForApp(int uid, boolean limited) = 7;
+ void resetAdTrackingLimitedForApp(int uid) = 8;
+ Bundle getAllAppsLimitedAdTrackingConfiguration() = 9; // Map packageName -> Boolean
+ String getAdvertisingIdForApp(int uid) = 10;
+}
diff --git a/play-services-ads-identifier/src/main/java/com/google/android/gms/ads/identifier/AdvertisingIdClient.java b/play-services-ads-identifier/src/main/java/com/google/android/gms/ads/identifier/AdvertisingIdClient.java
new file mode 100644
index 0000000..657c4a5
--- /dev/null
+++ b/play-services-ads-identifier/src/main/java/com/google/android/gms/ads/identifier/AdvertisingIdClient.java
@@ -0,0 +1,80 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+
+package com.google.android.gms.ads.identifier;
+
+import android.app.Activity;
+import android.content.Context;
+import android.provider.Settings;
+import com.google.android.gms.common.GooglePlayServicesNotAvailableException;
+import com.google.android.gms.common.GooglePlayServicesRepairableException;
+
+import java.io.IOException;
+
+/**
+ * Helper library for retrieval of advertising ID and related information such as the limit ad tracking setting.
+ *
+ * It is intended that the advertising ID completely replace existing usage of other identifiers for ads purposes (such as use
+ * of {@code ANDROID_ID} in {@link Settings.Secure}) when Google Play Services is available. Cases where Google Play Services is
+ * unavailable are indicated by a {@link GooglePlayServicesNotAvailableException} being thrown by getAdvertisingIdInfo().
+ */
+public class AdvertisingIdClient {
+ /**
+ * Retrieves the user's advertising ID and limit ad tracking preference.
+ *
+ * This method cannot be called in the main thread as it may block leading to ANRs. An {@code IllegalStateException} will be
+ * thrown if this is called on the main thread.
+ *
+ * @param context Current {@link Context} (such as the current {@link Activity}).
+ * @return AdvertisingIdClient.Info with user's advertising ID and limit ad tracking preference.
+ * @throws IOException signaling connection to Google Play Services failed.
+ * @throws IllegalStateException indicating this method was called on the main thread.
+ * @throws GooglePlayServicesNotAvailableException indicating that Google Play is not installed on this device.
+ * @throws GooglePlayServicesRepairableException indicating that there was a recoverable error connecting to Google Play Services.
+ */
+ public static Info getAdvertisingIdInfo(Context context) {
+ // We don't actually implement this functionality, but always claim that ad tracking was limited by user preference
+ return new Info("00000000-0000-0000-0000-000000000000", true);
+ }
+
+ /**
+ * Includes both the advertising ID as well as the limit ad tracking setting.
+ */
+ public static class Info {
+ private final String advertisingId;
+ private final boolean limitAdTrackingEnabled;
+
+ /**
+ * Constructs an {@code Info} Object with the specified advertising Id and limit ad tracking setting.
+ *
+ * @param advertisingId The advertising ID.
+ * @param limitAdTrackingEnabled The limit ad tracking setting. It is true if the user has limit ad tracking enabled. False, otherwise.
+ */
+ public Info(String advertisingId, boolean limitAdTrackingEnabled) {
+ this.advertisingId = advertisingId;
+ this.limitAdTrackingEnabled = limitAdTrackingEnabled;
+ }
+
+ /**
+ * Retrieves the advertising ID.
+ */
+ public String getId() {
+ return advertisingId;
+ }
+
+ /**
+ * Retrieves whether the user has limit ad tracking enabled or not.
+ *
+ * When the returned value is true, the returned value of {@link #getId()} will always be
+ * {@code 00000000-0000-0000-0000-000000000000} starting with Android 12.
+ */
+ public boolean isLimitAdTrackingEnabled() {
+ return limitAdTrackingEnabled;
+ }
+ }
+}
diff --git a/play-services-ads-identifier/src/main/java/com/google/android/gms/ads/identifier/package-info.java b/play-services-ads-identifier/src/main/java/com/google/android/gms/ads/identifier/package-info.java
new file mode 100644
index 0000000..ff949da
--- /dev/null
+++ b/play-services-ads-identifier/src/main/java/com/google/android/gms/ads/identifier/package-info.java
@@ -0,0 +1,11 @@
+/*
+ * SPDX-FileCopyrightText: 2022 microG Project Team
+ * SPDX-License-Identifier: CC-BY-4.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+/**
+ * Contains classes relating to the Android Advertising ID (AAID).
+ */
+package com.google.android.gms.ads.identifier;
diff --git a/play-services-ads-lite/build.gradle b/play-services-ads-lite/build.gradle
new file mode 100644
index 0000000..1c8dbe1
--- /dev/null
+++ b/play-services-ads-lite/build.gradle
@@ -0,0 +1,42 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+apply plugin: 'com.android.library'
+apply plugin: 'maven-publish'
+apply plugin: 'signing'
+
+android {
+ namespace "com.google.android.gms.ads"
+
+ compileSdkVersion androidCompileSdk
+ buildToolsVersion "$androidBuildVersionTools"
+
+ buildFeatures {
+ aidl = true
+ }
+
+ defaultConfig {
+ versionName version
+ minSdkVersion androidMinSdk
+ targetSdkVersion androidTargetSdk
+ }
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+apply from: '../gradle/publish-android.gradle'
+
+description = 'microG implementation of play-services-ads-lite'
+
+dependencies {
+ api 'androidx.work:work-runtime:2.7.0'
+ api project(':play-services-ads-base')
+ api project(':play-services-basement')
+// api project(':play-services-measurement-sdk-api')
+// api project(':user-messaging-platform')
+}
diff --git a/play-services-ads-lite/core/build.gradle b/play-services-ads-lite/core/build.gradle
new file mode 100644
index 0000000..4c4832e
--- /dev/null
+++ b/play-services-ads-lite/core/build.gradle
@@ -0,0 +1,38 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+apply plugin: 'com.android.library'
+apply plugin: 'kotlin-android'
+
+dependencies {
+ api project(':play-services-ads-lite')
+ implementation project(':play-services-base-core')
+}
+
+android {
+ namespace "org.microg.gms.ads"
+
+ compileSdkVersion androidCompileSdk
+ buildToolsVersion "$androidBuildVersionTools"
+
+ defaultConfig {
+ versionName version
+ minSdkVersion androidMinSdk
+ targetSdkVersion androidTargetSdk
+ }
+
+ sourceSets {
+ main.java.srcDirs += 'src/main/kotlin'
+ }
+
+ compileOptions {
+ sourceCompatibility = 1.8
+ targetCompatibility = 1.8
+ }
+
+ kotlinOptions {
+ jvmTarget = 1.8
+ }
+}
diff --git a/play-services-ads-lite/core/src/main/AndroidManifest.xml b/play-services-ads-lite/core/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..a9ef493
--- /dev/null
+++ b/play-services-ads-lite/core/src/main/AndroidManifest.xml
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/AdLoaderBuilderCreatorImpl.kt b/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/AdLoaderBuilderCreatorImpl.kt
new file mode 100644
index 0000000..dc258c2
--- /dev/null
+++ b/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/AdLoaderBuilderCreatorImpl.kt
@@ -0,0 +1,26 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.ads
+
+import android.os.IBinder
+import android.os.Parcel
+import android.util.Log
+import androidx.annotation.Keep
+import com.google.android.gms.ads.internal.client.IAdLoaderBuilderCreator
+import com.google.android.gms.ads.internal.mediation.client.IAdapterCreator
+import com.google.android.gms.dynamic.IObjectWrapper
+import org.microg.gms.utils.warnOnTransactionIssues
+
+private const val TAG = "AdLoaderBuilder"
+
+@Keep
+class AdLoaderBuilderCreatorImpl : IAdLoaderBuilderCreator.Stub() {
+ override fun newAdLoaderBuilder(context: IObjectWrapper?, adUnitId: String, adapterCreator: IAdapterCreator?, clientVersion: Int): IBinder? {
+ Log.d(TAG, "newAdLoaderBuilder: adUnitId=$adUnitId clientVersion=$clientVersion")
+ return null
+ }
+
+ override fun onTransact(code: Int, data: Parcel, reply: Parcel?, flags: Int): Boolean = warnOnTransactionIssues(code, reply, flags, TAG) { super.onTransact(code, data, reply, flags) }
+}
diff --git a/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/AdManagerCreatorImpl.kt b/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/AdManagerCreatorImpl.kt
new file mode 100644
index 0000000..398956f
--- /dev/null
+++ b/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/AdManagerCreatorImpl.kt
@@ -0,0 +1,17 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.ads
+
+import android.os.Parcel
+import androidx.annotation.Keep
+import org.microg.gms.utils.warnOnTransactionIssues
+
+private const val TAG = "AdManager"
+
+@Keep
+class AdManagerCreatorImpl : AdManagerCreator.Stub() {
+ override fun onTransact(code: Int, data: Parcel, reply: Parcel?, flags: Int): Boolean =
+ warnOnTransactionIssues(code, reply, flags, TAG) { super.onTransact(code, data, reply, flags) }
+}
diff --git a/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/MobileAdsSettingManagerCreatorImpl.kt b/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/MobileAdsSettingManagerCreatorImpl.kt
new file mode 100644
index 0000000..176a17d
--- /dev/null
+++ b/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/MobileAdsSettingManagerCreatorImpl.kt
@@ -0,0 +1,29 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.ads
+
+import android.content.Context
+import android.os.IBinder
+import android.os.Parcel
+import android.util.Log
+import androidx.annotation.Keep
+import com.google.android.gms.ads.internal.client.IMobileAdsSettingManagerCreator
+import com.google.android.gms.dynamic.IObjectWrapper
+import com.google.android.gms.dynamic.ObjectWrapper
+import org.microg.gms.ads.MobileAdsSettingManagerImpl
+import org.microg.gms.utils.warnOnTransactionIssues
+
+private const val TAG = "AdsSettingManager"
+
+@Keep
+class MobileAdsSettingManagerCreatorImpl : IMobileAdsSettingManagerCreator.Stub() {
+ override fun getMobileAdsSettingManager(context: IObjectWrapper?, clientVersion: Int): IBinder {
+ Log.d(TAG, "getMobileAdsSettingManager($clientVersion)")
+ return MobileAdsSettingManagerImpl(ObjectWrapper.unwrap(context) as Context)
+ }
+
+ override fun onTransact(code: Int, data: Parcel, reply: Parcel?, flags: Int): Boolean = warnOnTransactionIssues(code, reply, flags, TAG) { super.onTransact(code, data, reply, flags) }
+}
+
diff --git a/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/measurement/DynamiteMeasurementManager.kt b/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/measurement/DynamiteMeasurementManager.kt
new file mode 100644
index 0000000..5959db3
--- /dev/null
+++ b/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/measurement/DynamiteMeasurementManager.kt
@@ -0,0 +1,24 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.ads.measurement
+
+import android.os.Parcel
+import android.util.Log
+import androidx.annotation.Keep
+import com.google.android.gms.dynamic.IObjectWrapper
+import org.microg.gms.utils.warnOnTransactionIssues
+
+private const val TAG = "DynamiteMeasurement"
+
+@Keep
+class DynamiteMeasurementManager : IMeasurementManager.Stub() {
+
+ override fun initialize(context: IObjectWrapper?, proxy: IAppMeasurementProxy?) {
+ Log.d(TAG, "Not yet implemented: initialize")
+ }
+
+ override fun onTransact(code: Int, data: Parcel, reply: Parcel?, flags: Int): Boolean =
+ warnOnTransactionIssues(code, reply, flags, TAG) { super.onTransact(code, data, reply, flags) }
+}
diff --git a/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/rewarded/ChimeraRewardedAdCreatorImpl.kt b/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/rewarded/ChimeraRewardedAdCreatorImpl.kt
new file mode 100644
index 0000000..318ef3d
--- /dev/null
+++ b/play-services-ads-lite/core/src/main/kotlin/com/google/android/gms/ads/rewarded/ChimeraRewardedAdCreatorImpl.kt
@@ -0,0 +1,26 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.ads.rewarded
+
+import android.content.Context
+import android.os.IBinder
+import android.util.Log
+import androidx.annotation.Keep
+import com.google.android.gms.ads.internal.mediation.client.IAdapterCreator
+import com.google.android.gms.ads.internal.rewarded.client.IRewardedAdCreator
+import com.google.android.gms.dynamic.IObjectWrapper
+import com.google.android.gms.dynamic.ObjectWrapper
+import org.microg.gms.ads.rewarded.RewardedAdImpl
+
+private const val TAG = "RewardedAd"
+
+@Keep
+class ChimeraRewardedAdCreatorImpl : IRewardedAdCreator.Stub() {
+ override fun newRewardedAd(context: IObjectWrapper, str: String, adapterCreator: IAdapterCreator, clientVersion: Int): IBinder {
+ Log.d(TAG, "newRewardedAd($str, $clientVersion)")
+ return RewardedAdImpl(ObjectWrapper.unwrap(context) as Context?, str, adapterCreator, clientVersion)
+ }
+}
+
diff --git a/play-services-ads-lite/core/src/main/kotlin/org/microg/gms/ads/MobileAdsSettingManagerImpl.kt b/play-services-ads-lite/core/src/main/kotlin/org/microg/gms/ads/MobileAdsSettingManagerImpl.kt
new file mode 100644
index 0000000..a687502
--- /dev/null
+++ b/play-services-ads-lite/core/src/main/kotlin/org/microg/gms/ads/MobileAdsSettingManagerImpl.kt
@@ -0,0 +1,110 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package org.microg.gms.ads
+
+import android.content.Context
+import android.os.Handler
+import android.os.Looper
+import android.os.Parcel
+import android.os.RemoteException
+import android.util.Log
+import com.google.android.gms.ads.internal.AdapterStatusParcel
+import com.google.android.gms.ads.internal.RequestConfigurationParcel
+import com.google.android.gms.ads.internal.client.IMobileAdsSettingManager
+import com.google.android.gms.ads.internal.client.IOnAdInspectorClosedListener
+import com.google.android.gms.ads.internal.initialization.IInitializationCallback
+import com.google.android.gms.ads.internal.mediation.client.IAdapterCreator
+import com.google.android.gms.dynamic.IObjectWrapper
+import org.microg.gms.utils.warnOnTransactionIssues
+
+private const val TAG = "AdsSettingManager"
+
+class MobileAdsSettingManagerImpl(private val context: Context?) : IMobileAdsSettingManager.Stub() {
+ private var initialized = false
+ private val initializationCallbacks = mutableListOf()
+ private var muted = false
+ private var volume = 1.0f
+
+ override fun initialize() {
+ Log.d(TAG, "initialize")
+ if (initialized) return
+ initialized = true
+ for (callback in initializationCallbacks) {
+ runCatching { callback.onInitialized(emptyList()) }
+ }
+ }
+
+ override fun setAppVolume(volume: Float) {
+ this.volume = volume
+ }
+
+ override fun fetchAppSettings(appId: String?) {
+ fetchAppSettingsV2(appId, null)
+ }
+
+ override fun setAppMuted(muted: Boolean) {
+ this.muted = muted
+ }
+
+ override fun openDebugMenu(context: IObjectWrapper?, adUnitId: String?) {
+ Log.d(TAG, "openDebugMenu($adUnitId)")
+ }
+
+ override fun fetchAppSettingsV2(appId: String?, runnable: IObjectWrapper?) {
+ Log.d(TAG, "fetchAppSettings($appId)")
+ }
+
+ override fun getAdVolume(): Float {
+ return volume
+ }
+
+ override fun isAdMuted(): Boolean {
+ return muted
+ }
+
+ override fun getVersionString(): String {
+ return ""
+ }
+
+ override fun registerRtbAdapter(className: String?) {
+ Log.d(TAG, "registerRtbAdapter($className)")
+ }
+
+ override fun setAdapterCreator(iAdapterCreator: IAdapterCreator?) {
+ Log.d(TAG, "Not yet implemented: setAdapterCreator")
+ }
+
+ override fun addInitializationCallback(callback: IInitializationCallback?) {
+ Log.d(TAG, "addInitializationCallback")
+ callback?.let { initializationCallbacks.add(it) }
+ }
+
+ override fun getAdapterStatus(): List {
+ Log.d(TAG, "getAdapterStatus")
+ return arrayListOf(AdapterStatusParcel("com.google.android.gms.ads.MobileAds", true, 0, "Dummy"))
+ }
+
+ override fun setRequestConfiguration(configuration: RequestConfigurationParcel?) {
+ Log.d(TAG, "setRequestConfiguration")
+ }
+
+ override fun disableMediationAdapterInitialization() {
+ Log.d(TAG, "disableMediationAdapterInitialization")
+ }
+
+ override fun openAdInspector(listener: IOnAdInspectorClosedListener?) {
+ Log.d(TAG, "openAdInspector")
+ }
+
+ override fun enableSameAppKey(enabled: Boolean) {
+ Log.d(TAG, "enableSameAppKey($enabled)")
+ }
+
+ override fun setPlugin(plugin: String?) {
+ Log.d(TAG, "setPlugin($plugin)")
+ }
+
+ override fun onTransact(code: Int, data: Parcel, reply: Parcel?, flags: Int): Boolean = warnOnTransactionIssues(code, reply, flags, TAG) { super.onTransact(code, data, reply, flags) }
+}
\ No newline at end of file
diff --git a/play-services-ads-lite/core/src/main/kotlin/org/microg/gms/ads/rewarded/ResponseInfoImpl.kt b/play-services-ads-lite/core/src/main/kotlin/org/microg/gms/ads/rewarded/ResponseInfoImpl.kt
new file mode 100644
index 0000000..7767301
--- /dev/null
+++ b/play-services-ads-lite/core/src/main/kotlin/org/microg/gms/ads/rewarded/ResponseInfoImpl.kt
@@ -0,0 +1,40 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package org.microg.gms.ads.rewarded
+
+import android.os.Bundle
+import android.util.Log
+import com.google.android.gms.ads.internal.AdapterResponseInfoParcel
+import com.google.android.gms.ads.internal.client.IResponseInfo
+
+private const val TAG = "RewardedAdResponseInfo"
+
+class ResponseInfoImpl : IResponseInfo.Stub() {
+ override fun getMediationAdapterClassName(): String? {
+ Log.d(TAG, "getMediationAdapterClassName")
+ return null
+ }
+
+ override fun getResponseId(): String? {
+ Log.d(TAG, "getResponseId")
+ return null
+ }
+
+ override fun getAdapterResponseInfo(): List {
+ Log.d(TAG, "getAdapterResponseInfo")
+ return arrayListOf()
+ }
+
+ override fun getLoadedAdapterResponse(): AdapterResponseInfoParcel? {
+ Log.d(TAG, "getLoadedAdapterResponse")
+ return null
+ }
+
+ override fun getResponseExtras(): Bundle {
+ Log.d(TAG, "getResponseExtras")
+ return Bundle()
+ }
+}
\ No newline at end of file
diff --git a/play-services-ads-lite/core/src/main/kotlin/org/microg/gms/ads/rewarded/RewardedAdImpl.kt b/play-services-ads-lite/core/src/main/kotlin/org/microg/gms/ads/rewarded/RewardedAdImpl.kt
new file mode 100644
index 0000000..33b3bd8
--- /dev/null
+++ b/play-services-ads-lite/core/src/main/kotlin/org/microg/gms/ads/rewarded/RewardedAdImpl.kt
@@ -0,0 +1,108 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package org.microg.gms.ads.rewarded
+
+import android.content.Context
+import android.os.Bundle
+import android.os.Handler
+import android.os.Looper
+import android.os.RemoteException
+import android.util.Log
+import com.google.android.gms.ads.internal.AdErrorParcel
+import com.google.android.gms.ads.internal.AdRequestParcel
+import com.google.android.gms.ads.internal.ServerSideVerificationOptionsParcel
+import com.google.android.gms.ads.internal.client.IOnAdMetadataChangedListener
+import com.google.android.gms.ads.internal.client.IOnPaidEventListener
+import com.google.android.gms.ads.internal.client.IResponseInfo
+import com.google.android.gms.ads.internal.mediation.client.IAdapterCreator
+import com.google.android.gms.ads.internal.rewarded.client.*
+import com.google.android.gms.common.api.CommonStatusCodes
+import com.google.android.gms.dynamic.IObjectWrapper
+
+private const val TAG = "RewardedAd"
+
+class RewardedAdImpl(context: Context?, str: String?, adapterCreator: IAdapterCreator?, clientVersion: Int) : IRewardedAd.Stub() {
+ private var immersive: Boolean = false
+
+ private fun load(request: AdRequestParcel, callback: IRewardedAdLoadCallback, interstitial: Boolean) {
+ Handler(Looper.getMainLooper()).post {
+ try {
+ callback.onAdLoadError(AdErrorParcel().apply { code = CommonStatusCodes.INTERNAL_ERROR; message = "Not supported" })
+ } catch (e: RemoteException) {
+ Log.w(TAG, e)
+ }
+ }
+ }
+
+ override fun load(request: AdRequestParcel, callback: IRewardedAdLoadCallback) {
+ Log.d(TAG, "load")
+ load(request, callback, false)
+ }
+
+ override fun setCallback(callback: IRewardedAdCallback) {
+ Log.d(TAG, "setCallback")
+ }
+
+ override fun canBeShown(): Boolean {
+ Log.d(TAG, "canBeShown")
+ return false
+ }
+
+ override fun getMediationAdapterClassName(): String {
+ Log.d(TAG, "getMediationAdapterClassName")
+ return responseInfo.mediationAdapterClassName
+ }
+
+ override fun show(activity: IObjectWrapper) {
+ Log.d(TAG, "show")
+ showWithImmersive(activity, immersive)
+ }
+
+ override fun setRewardedAdSkuListener(listener: IRewardedAdSkuListener?) {
+ Log.d(TAG, "setRewardedAdSkuListener")
+ }
+
+ override fun setServerSideVerificationOptions(options: ServerSideVerificationOptionsParcel) {
+ Log.d(TAG, "setServerSideVerificationOptions")
+ }
+
+ override fun setOnAdMetadataChangedListener(listener: IOnAdMetadataChangedListener) {
+ Log.d(TAG, "setOnAdMetadataChangedListener")
+ }
+
+ override fun getAdMetadata(): Bundle {
+ Log.d(TAG, "getAdMetadata")
+ return Bundle()
+ }
+
+ override fun showWithImmersive(activity: IObjectWrapper?, immersive: Boolean) {
+ Log.d(TAG, "showWithBoolean")
+ }
+
+ override fun getRewardItem(): IRewardItem? {
+ Log.d(TAG, "getRewardItem")
+ return null
+ }
+
+ override fun getResponseInfo(): IResponseInfo {
+ Log.d(TAG, "getResponseInfo")
+ return ResponseInfoImpl()
+ }
+
+ override fun setOnPaidEventListener(listener: IOnPaidEventListener) {
+ Log.d(TAG, "setOnPaidEventListener")
+ }
+
+ override fun loadInterstitial(request: AdRequestParcel, callback: IRewardedAdLoadCallback) {
+ Log.d(TAG, "loadInterstitial")
+ load(request, callback, true)
+ }
+
+ override fun setImmersiveMode(enabled: Boolean) {
+ Log.d(TAG, "setImmersiveMode($enabled)")
+ }
+}
+
diff --git a/play-services-ads-lite/src/main/AndroidManifest.xml b/play-services-ads-lite/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..1b55c5b
--- /dev/null
+++ b/play-services-ads-lite/src/main/AndroidManifest.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/AdManagerCreator.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/AdManagerCreator.aidl
new file mode 100644
index 0000000..7e07dd0
--- /dev/null
+++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/AdManagerCreator.aidl
@@ -0,0 +1,4 @@
+package com.google.android.gms.ads;
+
+interface AdManagerCreator {
+}
\ No newline at end of file
diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/AdErrorParcel.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/AdErrorParcel.aidl
new file mode 100644
index 0000000..54251c3
--- /dev/null
+++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/AdErrorParcel.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.ads.internal;
+
+parcelable AdErrorParcel;
\ No newline at end of file
diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/AdRequestParcel.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/AdRequestParcel.aidl
new file mode 100644
index 0000000..220425e
--- /dev/null
+++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/AdRequestParcel.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.ads.internal;
+
+parcelable AdRequestParcel;
\ No newline at end of file
diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/AdapterResponseInfoParcel.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/AdapterResponseInfoParcel.aidl
new file mode 100644
index 0000000..822be57
--- /dev/null
+++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/AdapterResponseInfoParcel.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.ads.internal;
+
+parcelable AdapterResponseInfoParcel;
\ No newline at end of file
diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/AdapterStatusParcel.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/AdapterStatusParcel.aidl
new file mode 100644
index 0000000..fc1bd40
--- /dev/null
+++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/AdapterStatusParcel.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.ads.internal;
+
+parcelable AdapterStatusParcel;
\ No newline at end of file
diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/RequestConfigurationParcel.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/RequestConfigurationParcel.aidl
new file mode 100644
index 0000000..45e9ebe
--- /dev/null
+++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/RequestConfigurationParcel.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.ads.internal;
+
+parcelable RequestConfigurationParcel;
\ No newline at end of file
diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/ServerSideVerificationOptionsParcel.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/ServerSideVerificationOptionsParcel.aidl
new file mode 100644
index 0000000..b0b93d4
--- /dev/null
+++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/ServerSideVerificationOptionsParcel.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.ads.internal;
+
+parcelable ServerSideVerificationOptionsParcel;
\ No newline at end of file
diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdLoaderBuilderCreator.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdLoaderBuilderCreator.aidl
new file mode 100644
index 0000000..b6f63ac
--- /dev/null
+++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IAdLoaderBuilderCreator.aidl
@@ -0,0 +1,8 @@
+package com.google.android.gms.ads.internal.client;
+
+import com.google.android.gms.ads.internal.mediation.client.IAdapterCreator;
+import com.google.android.gms.dynamic.IObjectWrapper;
+
+interface IAdLoaderBuilderCreator {
+ IBinder newAdLoaderBuilder(IObjectWrapper context, String adUnitId, IAdapterCreator adapterCreator, int clientVersion);
+}
\ No newline at end of file
diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IMobileAdsSettingManager.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IMobileAdsSettingManager.aidl
new file mode 100644
index 0000000..1df1f51
--- /dev/null
+++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IMobileAdsSettingManager.aidl
@@ -0,0 +1,29 @@
+package com.google.android.gms.ads.internal.client;
+
+import com.google.android.gms.ads.internal.AdapterStatusParcel;
+import com.google.android.gms.ads.internal.RequestConfigurationParcel;
+import com.google.android.gms.ads.internal.client.IOnAdInspectorClosedListener;
+import com.google.android.gms.ads.internal.initialization.IInitializationCallback;
+import com.google.android.gms.ads.internal.mediation.client.IAdapterCreator;
+import com.google.android.gms.dynamic.IObjectWrapper;
+
+interface IMobileAdsSettingManager {
+ void initialize() = 0;
+ void setAppVolume(float volume) = 1;
+ void fetchAppSettings(String appId) = 2;
+ void setAppMuted(boolean muted) = 3;
+ void openDebugMenu(IObjectWrapper context, String adUnitId) = 4;
+ void fetchAppSettingsV2(String appId, IObjectWrapper runnable) = 5;
+ float getAdVolume() = 6;
+ boolean isAdMuted() = 7;
+ String getVersionString() = 8;
+ void registerRtbAdapter(String className) = 9;
+ void setAdapterCreator(IAdapterCreator iAdapterCreator) = 10;
+ void addInitializationCallback(IInitializationCallback callback) = 11;
+ List getAdapterStatus() = 12;
+ void setRequestConfiguration(in RequestConfigurationParcel configuration) = 13;
+ void disableMediationAdapterInitialization() = 14;
+ void openAdInspector(IOnAdInspectorClosedListener listener) = 15;
+ void enableSameAppKey(boolean enabled) = 16;
+ void setPlugin(String plugin) = 17;
+}
\ No newline at end of file
diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IMobileAdsSettingManagerCreator.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IMobileAdsSettingManagerCreator.aidl
new file mode 100644
index 0000000..f468200
--- /dev/null
+++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IMobileAdsSettingManagerCreator.aidl
@@ -0,0 +1,7 @@
+package com.google.android.gms.ads.internal.client;
+
+import com.google.android.gms.dynamic.IObjectWrapper;
+
+interface IMobileAdsSettingManagerCreator {
+ IBinder getMobileAdsSettingManager(IObjectWrapper context, int clientVersion);
+}
\ No newline at end of file
diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IOnAdInspectorClosedListener.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IOnAdInspectorClosedListener.aidl
new file mode 100644
index 0000000..63f625c
--- /dev/null
+++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IOnAdInspectorClosedListener.aidl
@@ -0,0 +1,7 @@
+package com.google.android.gms.ads.internal.client;
+
+import com.google.android.gms.ads.internal.AdErrorParcel;
+
+interface IOnAdInspectorClosedListener {
+ void onAdInspectorClosed(in @nullable AdErrorParcel adErrorParcel);
+}
\ No newline at end of file
diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IOnAdMetadataChangedListener.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IOnAdMetadataChangedListener.aidl
new file mode 100644
index 0000000..3a4ba6e
--- /dev/null
+++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IOnAdMetadataChangedListener.aidl
@@ -0,0 +1,6 @@
+package com.google.android.gms.ads.internal.client;
+
+import com.google.android.gms.ads.internal.AdErrorParcel;
+
+interface IOnAdMetadataChangedListener {
+}
\ No newline at end of file
diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IOnPaidEventListener.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IOnPaidEventListener.aidl
new file mode 100644
index 0000000..8f2d342
--- /dev/null
+++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IOnPaidEventListener.aidl
@@ -0,0 +1,6 @@
+package com.google.android.gms.ads.internal.client;
+
+import com.google.android.gms.ads.internal.AdErrorParcel;
+
+interface IOnPaidEventListener {
+}
\ No newline at end of file
diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IResponseInfo.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IResponseInfo.aidl
new file mode 100644
index 0000000..3b6fcd7
--- /dev/null
+++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/client/IResponseInfo.aidl
@@ -0,0 +1,11 @@
+package com.google.android.gms.ads.internal.client;
+
+import com.google.android.gms.ads.internal.AdapterResponseInfoParcel;
+
+interface IResponseInfo {
+ String getMediationAdapterClassName() = 0;
+ String getResponseId() = 1;
+ List getAdapterResponseInfo() = 2;
+ AdapterResponseInfoParcel getLoadedAdapterResponse() = 3;
+ Bundle getResponseExtras() = 4;
+}
\ No newline at end of file
diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/initialization/IInitializationCallback.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/initialization/IInitializationCallback.aidl
new file mode 100644
index 0000000..259c869
--- /dev/null
+++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/initialization/IInitializationCallback.aidl
@@ -0,0 +1,7 @@
+package com.google.android.gms.ads.internal.initialization;
+
+import com.google.android.gms.ads.internal.AdapterStatusParcel;
+
+interface IInitializationCallback {
+ void onInitialized(in List status);
+}
\ No newline at end of file
diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/mediation/client/IAdapterCreator.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/mediation/client/IAdapterCreator.aidl
new file mode 100644
index 0000000..dae5d56
--- /dev/null
+++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/mediation/client/IAdapterCreator.aidl
@@ -0,0 +1,5 @@
+package com.google.android.gms.ads.internal.mediation.client;
+
+interface IAdapterCreator {
+
+}
\ No newline at end of file
diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/rewarded/client/IRewardItem.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/rewarded/client/IRewardItem.aidl
new file mode 100644
index 0000000..9d0cb53
--- /dev/null
+++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/rewarded/client/IRewardItem.aidl
@@ -0,0 +1,4 @@
+package com.google.android.gms.ads.internal.rewarded.client;
+
+interface IRewardItem {
+}
\ No newline at end of file
diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/rewarded/client/IRewardedAd.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/rewarded/client/IRewardedAd.aidl
new file mode 100644
index 0000000..b3e1f51
--- /dev/null
+++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/rewarded/client/IRewardedAd.aidl
@@ -0,0 +1,30 @@
+package com.google.android.gms.ads.internal.rewarded.client;
+
+import com.google.android.gms.ads.internal.AdRequestParcel;
+import com.google.android.gms.ads.internal.ServerSideVerificationOptionsParcel;
+import com.google.android.gms.ads.internal.client.IOnPaidEventListener;
+import com.google.android.gms.ads.internal.client.IOnAdMetadataChangedListener;
+import com.google.android.gms.ads.internal.client.IResponseInfo;
+import com.google.android.gms.ads.internal.rewarded.client.IRewardedAdCallback;
+import com.google.android.gms.ads.internal.rewarded.client.IRewardedAdLoadCallback;
+import com.google.android.gms.ads.internal.rewarded.client.IRewardedAdSkuListener;
+import com.google.android.gms.ads.internal.rewarded.client.IRewardItem;
+import com.google.android.gms.dynamic.IObjectWrapper;
+
+interface IRewardedAd {
+ void load(in AdRequestParcel request, IRewardedAdLoadCallback callback) = 0;
+ void setCallback(IRewardedAdCallback callback) = 1;
+ boolean canBeShown() = 2;
+ String getMediationAdapterClassName() = 3;
+ void show(IObjectWrapper activity) = 4;
+ void setRewardedAdSkuListener(IRewardedAdSkuListener listener) = 5;
+ void setServerSideVerificationOptions(in ServerSideVerificationOptionsParcel options) = 6;
+ void setOnAdMetadataChangedListener(IOnAdMetadataChangedListener listener) = 7;
+ Bundle getAdMetadata() = 8;
+ void showWithImmersive(IObjectWrapper activity, boolean immersive) = 9;
+ IRewardItem getRewardItem() = 10;
+ IResponseInfo getResponseInfo() = 11;
+ void setOnPaidEventListener(IOnPaidEventListener listener) = 12;
+ void loadInterstitial(in AdRequestParcel request, IRewardedAdLoadCallback callback) = 13;
+ void setImmersiveMode(boolean enabled) = 14;
+}
\ No newline at end of file
diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/rewarded/client/IRewardedAdCallback.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/rewarded/client/IRewardedAdCallback.aidl
new file mode 100644
index 0000000..22b7f59
--- /dev/null
+++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/rewarded/client/IRewardedAdCallback.aidl
@@ -0,0 +1,4 @@
+package com.google.android.gms.ads.internal.rewarded.client;
+
+interface IRewardedAdCallback {
+}
\ No newline at end of file
diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/rewarded/client/IRewardedAdCreator.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/rewarded/client/IRewardedAdCreator.aidl
new file mode 100644
index 0000000..9b0defe
--- /dev/null
+++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/rewarded/client/IRewardedAdCreator.aidl
@@ -0,0 +1,8 @@
+package com.google.android.gms.ads.internal.rewarded.client;
+
+import com.google.android.gms.ads.internal.mediation.client.IAdapterCreator;
+import com.google.android.gms.dynamic.IObjectWrapper;
+
+interface IRewardedAdCreator {
+ IBinder newRewardedAd(IObjectWrapper context, String str, IAdapterCreator adapterCreator, int clientVersion);
+}
\ No newline at end of file
diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/rewarded/client/IRewardedAdLoadCallback.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/rewarded/client/IRewardedAdLoadCallback.aidl
new file mode 100644
index 0000000..2bfb179
--- /dev/null
+++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/rewarded/client/IRewardedAdLoadCallback.aidl
@@ -0,0 +1,9 @@
+package com.google.android.gms.ads.internal.rewarded.client;
+
+import com.google.android.gms.ads.internal.AdErrorParcel;
+
+interface IRewardedAdLoadCallback {
+ void onAdLoaded() = 0;
+ void onAdLoadErrorCode(int code) = 1;
+ void onAdLoadError(in AdErrorParcel error) = 2;
+}
\ No newline at end of file
diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/rewarded/client/IRewardedAdSkuListener.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/rewarded/client/IRewardedAdSkuListener.aidl
new file mode 100644
index 0000000..e41f52e
--- /dev/null
+++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/internal/rewarded/client/IRewardedAdSkuListener.aidl
@@ -0,0 +1,6 @@
+package com.google.android.gms.ads.internal.rewarded.client;
+
+import com.google.android.gms.ads.internal.AdErrorParcel;
+
+interface IRewardedAdSkuListener {
+}
\ No newline at end of file
diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/measurement/IAppMeasurementProxy.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/measurement/IAppMeasurementProxy.aidl
new file mode 100644
index 0000000..1fc7500
--- /dev/null
+++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/measurement/IAppMeasurementProxy.aidl
@@ -0,0 +1,5 @@
+package com.google.android.gms.ads.measurement;
+
+interface IAppMeasurementProxy {
+
+}
\ No newline at end of file
diff --git a/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/measurement/IMeasurementManager.aidl b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/measurement/IMeasurementManager.aidl
new file mode 100644
index 0000000..92f267b
--- /dev/null
+++ b/play-services-ads-lite/src/main/aidl/com/google/android/gms/ads/measurement/IMeasurementManager.aidl
@@ -0,0 +1,8 @@
+package com.google.android.gms.ads.measurement;
+
+import com.google.android.gms.ads.measurement.IAppMeasurementProxy;
+import com.google.android.gms.dynamic.IObjectWrapper;
+
+interface IMeasurementManager {
+ void initialize(IObjectWrapper context, IAppMeasurementProxy proxy) = 1;
+}
\ No newline at end of file
diff --git a/play-services-ads-lite/src/main/java/com/google/android/gms/ads/admanager/package-info.java b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/admanager/package-info.java
new file mode 100644
index 0000000..a08a3ba
--- /dev/null
+++ b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/admanager/package-info.java
@@ -0,0 +1,11 @@
+/*
+ * SPDX-FileCopyrightText: 2022 microG Project Team
+ * SPDX-License-Identifier: CC-BY-4.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+/**
+ * Contains classes for Google Ad Manager.
+ */
+package com.google.android.gms.ads.admanager;
diff --git a/play-services-ads-lite/src/main/java/com/google/android/gms/ads/h5/package-info.java b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/h5/package-info.java
new file mode 100644
index 0000000..c40c268
--- /dev/null
+++ b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/h5/package-info.java
@@ -0,0 +1,11 @@
+/*
+ * SPDX-FileCopyrightText: 2022 microG Project Team
+ * SPDX-License-Identifier: CC-BY-4.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+/**
+ * Contains classes for H5 ads.
+ */
+package com.google.android.gms.ads.h5;
diff --git a/play-services-ads-lite/src/main/java/com/google/android/gms/ads/initialization/package-info.java b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/initialization/package-info.java
new file mode 100644
index 0000000..f06f3c0
--- /dev/null
+++ b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/initialization/package-info.java
@@ -0,0 +1,11 @@
+/*
+ * SPDX-FileCopyrightText: 2022 microG Project Team
+ * SPDX-License-Identifier: CC-BY-4.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+/**
+ * Contains classes related to SDK initialization.
+ */
+package com.google.android.gms.ads.initialization;
diff --git a/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/AdDataParcel.java b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/AdDataParcel.java
new file mode 100644
index 0000000..89f1f30
--- /dev/null
+++ b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/AdDataParcel.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.ads.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class AdDataParcel extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(AdDataParcel.class);
+}
diff --git a/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/AdErrorParcel.java b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/AdErrorParcel.java
new file mode 100644
index 0000000..9757b47
--- /dev/null
+++ b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/AdErrorParcel.java
@@ -0,0 +1,23 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.ads.internal;
+
+import com.google.android.gms.ads.internal.client.IResponseInfo;
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class AdErrorParcel extends AutoSafeParcelable {
+ @Field(1)
+ public int code;
+ @Field(2)
+ public String message;
+ @Field(3)
+ public String domain;
+ @Field(4)
+ public AdErrorParcel cause;
+ @Field(5)
+ public IResponseInfo responseInfo;
+ public static final Creator CREATOR = new AutoCreator<>(AdErrorParcel.class);
+}
diff --git a/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/AdRequestParcel.java b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/AdRequestParcel.java
new file mode 100644
index 0000000..cb96053
--- /dev/null
+++ b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/AdRequestParcel.java
@@ -0,0 +1,62 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.ads.internal;
+
+import android.location.Location;
+import android.os.Bundle;
+import org.microg.safeparcel.AutoSafeParcelable;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class AdRequestParcel extends AutoSafeParcelable {
+ @Field(1)
+ private int versionCode = 8;
+ @Field(2)
+ public long birthday;
+ @Field(3)
+ public Bundle adMobNetworkExtras = new Bundle();
+ @Field(4)
+ public int gender;
+ @Field(5)
+ public ArrayList keywords;
+ @Field(6)
+ public boolean isTestDevice;
+ @Field(7)
+ public int taggedForChildDirectedTreatment;
+ @Field(9)
+ public String publisherProvidedId;
+ @Field(10)
+ public SearchAdRequestParcel searchAdRequest;
+ @Field(11)
+ public Location location;
+ @Field(12)
+ public String contentUrl;
+ @Field(13)
+ public Bundle networkExtrasBundles = new Bundle();
+ @Field(14)
+ public Bundle customTargeting;
+ @Field(15)
+ public List categoryExclusion;
+ @Field(16)
+ public String requestAgent;
+ @Field(18)
+ public boolean designedForFamilies;
+ @Field(19)
+ public AdDataParcel adData;
+ @Field(20)
+ public int tagForUnderAgeOfConsent;
+ @Field(21)
+ public String maxAdContentRating;
+ @Field(22)
+ public List neighboringContentUrls;
+ @Field(23)
+ public int httpTimeoutMillis;
+ @Field(24)
+ public String adString;
+
+ public static final Creator CREATOR = new AutoCreator<>(AdRequestParcel.class);
+}
diff --git a/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/AdapterResponseInfoParcel.java b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/AdapterResponseInfoParcel.java
new file mode 100644
index 0000000..f1a452e
--- /dev/null
+++ b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/AdapterResponseInfoParcel.java
@@ -0,0 +1,30 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.ads.internal;
+
+import android.os.Bundle;
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class AdapterResponseInfoParcel extends AutoSafeParcelable {
+ @Field(1)
+ public String adapterClassName;
+ @Field(2)
+ public long latencyMillis;
+ @Field(3)
+ public AdErrorParcel error;
+ @Field(4)
+ public Bundle credentials;
+ @Field(5)
+ public String adSourceName;
+ @Field(6)
+ public String adSourceId;
+ @Field(7)
+ public String adSourceInstanceName;
+ @Field(8)
+ public String adSourceInstanceId;
+
+ public static final Creator CREATOR = new AutoCreator<>(AdapterResponseInfoParcel.class);
+}
diff --git a/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/AdapterStatusParcel.java b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/AdapterStatusParcel.java
new file mode 100644
index 0000000..cd04062
--- /dev/null
+++ b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/AdapterStatusParcel.java
@@ -0,0 +1,30 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.ads.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class AdapterStatusParcel extends AutoSafeParcelable {
+ @Field(1)
+ public String className;
+ @Field(2)
+ public boolean isReady;
+ @Field(3)
+ public int latency;
+ @Field(4)
+ public String description;
+
+ public AdapterStatusParcel() {}
+
+ public AdapterStatusParcel(String className, boolean isReady, int latency, String description) {
+ this.className = className;
+ this.isReady = isReady;
+ this.latency = latency;
+ this.description = description;
+ }
+
+ public static final Creator CREATOR = new AutoCreator<>(AdapterStatusParcel.class);
+}
diff --git a/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/RequestConfigurationParcel.java b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/RequestConfigurationParcel.java
new file mode 100644
index 0000000..f773f34
--- /dev/null
+++ b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/RequestConfigurationParcel.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.ads.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class RequestConfigurationParcel extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(RequestConfigurationParcel.class);
+}
diff --git a/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/SearchAdRequestParcel.java b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/SearchAdRequestParcel.java
new file mode 100644
index 0000000..d37b1c5
--- /dev/null
+++ b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/SearchAdRequestParcel.java
@@ -0,0 +1,14 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.ads.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SearchAdRequestParcel extends AutoSafeParcelable {
+ @Field(15)
+ public String query;
+ public static final Creator CREATOR = new AutoCreator<>(SearchAdRequestParcel.class);
+}
diff --git a/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/ServerSideVerificationOptionsParcel.java b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/ServerSideVerificationOptionsParcel.java
new file mode 100644
index 0000000..1b516a3
--- /dev/null
+++ b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/internal/ServerSideVerificationOptionsParcel.java
@@ -0,0 +1,16 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.ads.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ServerSideVerificationOptionsParcel extends AutoSafeParcelable {
+ @Field(1)
+ public String userId;
+ @Field(2)
+ public String customData;
+ public static final Creator CREATOR = new AutoCreator<>(ServerSideVerificationOptionsParcel.class);
+}
diff --git a/play-services-ads-lite/src/main/java/com/google/android/gms/ads/interstitial/package-info.java b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/interstitial/package-info.java
new file mode 100644
index 0000000..dc0a9f2
--- /dev/null
+++ b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/interstitial/package-info.java
@@ -0,0 +1,11 @@
+/*
+ * SPDX-FileCopyrightText: 2022 microG Project Team
+ * SPDX-License-Identifier: CC-BY-4.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+/**
+ * Contains classes for Interstitial Ads.
+ */
+package com.google.android.gms.ads.interstitial;
diff --git a/play-services-ads-lite/src/main/java/com/google/android/gms/ads/mediation/customevent/package-info.java b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/mediation/customevent/package-info.java
new file mode 100644
index 0000000..06bb35b
--- /dev/null
+++ b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/mediation/customevent/package-info.java
@@ -0,0 +1,11 @@
+/*
+ * SPDX-FileCopyrightText: 2022 microG Project Team
+ * SPDX-License-Identifier: CC-BY-4.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+/**
+ * Contains classes for Google Mobile Ads mediation custom events.
+ */
+package com.google.android.gms.ads.mediation.customevent;
diff --git a/play-services-ads-lite/src/main/java/com/google/android/gms/ads/mediation/package-info.java b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/mediation/package-info.java
new file mode 100644
index 0000000..d1df53d
--- /dev/null
+++ b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/mediation/package-info.java
@@ -0,0 +1,11 @@
+/*
+ * SPDX-FileCopyrightText: 2022 microG Project Team
+ * SPDX-License-Identifier: CC-BY-4.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+/**
+ * Contains classes for Google Mobile Ads mediation adapters.
+ */
+package com.google.android.gms.ads.mediation;
diff --git a/play-services-ads-lite/src/main/java/com/google/android/gms/ads/mediation/rtb/package-info.java b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/mediation/rtb/package-info.java
new file mode 100644
index 0000000..af175ec
--- /dev/null
+++ b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/mediation/rtb/package-info.java
@@ -0,0 +1,11 @@
+/*
+ * SPDX-FileCopyrightText: 2022 microG Project Team
+ * SPDX-License-Identifier: CC-BY-4.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+/**
+ * Contains classes for Google Mobile Ads RTB mediation adapters.
+ */
+package com.google.android.gms.ads.mediation.rtb;
diff --git a/play-services-ads-lite/src/main/java/com/google/android/gms/ads/nativead/package-info.java b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/nativead/package-info.java
new file mode 100644
index 0000000..a1c245c
--- /dev/null
+++ b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/nativead/package-info.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2022 microG Project Team
+ * SPDX-License-Identifier: CC-BY-4.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+/**
+ * Contains classes for native ads functionality within Google Mobile
+ Ads.
+ */
+package com.google.android.gms.ads.nativead;
diff --git a/play-services-ads-lite/src/main/java/com/google/android/gms/ads/package-info.java b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/package-info.java
new file mode 100644
index 0000000..69f78b9
--- /dev/null
+++ b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/package-info.java
@@ -0,0 +1,11 @@
+/*
+ * SPDX-FileCopyrightText: 2022 microG Project Team
+ * SPDX-License-Identifier: CC-BY-4.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+/**
+ * Contains classes for Google Mobile Ads.
+ */
+package com.google.android.gms.ads;
diff --git a/play-services-ads-lite/src/main/java/com/google/android/gms/ads/rewarded/package-info.java b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/rewarded/package-info.java
new file mode 100644
index 0000000..685d4c4
--- /dev/null
+++ b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/rewarded/package-info.java
@@ -0,0 +1,11 @@
+/*
+ * SPDX-FileCopyrightText: 2022 microG Project Team
+ * SPDX-License-Identifier: CC-BY-4.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+/**
+ * Contains classes for Rewarded Ads.
+ */
+package com.google.android.gms.ads.rewarded;
diff --git a/play-services-ads-lite/src/main/java/com/google/android/gms/ads/rewardedinterstitial/package-info.java b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/rewardedinterstitial/package-info.java
new file mode 100644
index 0000000..c37680e
--- /dev/null
+++ b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/rewardedinterstitial/package-info.java
@@ -0,0 +1,11 @@
+/*
+ * SPDX-FileCopyrightText: 2022 microG Project Team
+ * SPDX-License-Identifier: CC-BY-4.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+/**
+ * Contains classes for Rewarded Interstitial Ads.
+ */
+package com.google.android.gms.ads.rewardedinterstitial;
diff --git a/play-services-ads-lite/src/main/java/com/google/android/gms/ads/search/package-info.java b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/search/package-info.java
new file mode 100644
index 0000000..50d72e4
--- /dev/null
+++ b/play-services-ads-lite/src/main/java/com/google/android/gms/ads/search/package-info.java
@@ -0,0 +1,11 @@
+/*
+ * SPDX-FileCopyrightText: 2022 microG Project Team
+ * SPDX-License-Identifier: CC-BY-4.0
+ * Notice: Portions of this file are reproduced from work created and shared by Google and used
+ * according to terms described in the Creative Commons 4.0 Attribution License.
+ * See https://developers.google.com/readme/policies for details.
+ */
+/**
+ * Contains classes for Search Ads for Apps.
+ */
+package com.google.android.gms.ads.search;
diff --git a/play-services-ads/build.gradle b/play-services-ads/build.gradle
new file mode 100644
index 0000000..34c0447
--- /dev/null
+++ b/play-services-ads/build.gradle
@@ -0,0 +1,46 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+apply plugin: 'com.android.library'
+apply plugin: 'maven-publish'
+apply plugin: 'signing'
+
+android {
+ namespace "com.google.android.gms.ads.impl"
+
+ compileSdkVersion androidCompileSdk
+ buildToolsVersion "$androidBuildVersionTools"
+
+ buildFeatures {
+ aidl = true
+ }
+
+ defaultConfig {
+ versionName version
+ minSdkVersion androidMinSdk
+ targetSdkVersion androidTargetSdk
+ }
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+apply from: '../gradle/publish-android.gradle'
+
+description = 'microG implementation of play-services-ads'
+
+dependencies {
+ implementation 'androidx.browser:browser:1.4.0'
+ implementation 'androidx.collection:collection:1.0.0'
+ implementation 'androidx.core:core:1.0.0'
+ api project(':play-services-ads-base')
+ api project(':play-services-ads-identifier')
+ api project(':play-services-ads-lite')
+// api project(':play-services-appset')
+ api project(':play-services-basement')
+ api project(':play-services-tasks')
+}
diff --git a/play-services-ads/core/build.gradle b/play-services-ads/core/build.gradle
new file mode 100644
index 0000000..c9beaf9
--- /dev/null
+++ b/play-services-ads/core/build.gradle
@@ -0,0 +1,40 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+apply plugin: 'com.android.library'
+apply plugin: 'kotlin-android'
+
+dependencies {
+ api project(':play-services-ads')
+ implementation project(':play-services-base-core')
+
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion"
+}
+
+android {
+ namespace "org.microg.gms.ads.impl"
+
+ compileSdkVersion androidCompileSdk
+ buildToolsVersion "$androidBuildVersionTools"
+
+ defaultConfig {
+ versionName version
+ minSdkVersion androidMinSdk
+ targetSdkVersion androidTargetSdk
+ }
+
+ sourceSets {
+ main.java.srcDirs += 'src/main/kotlin'
+ }
+
+ compileOptions {
+ sourceCompatibility = 1.8
+ targetCompatibility = 1.8
+ }
+
+ kotlinOptions {
+ jvmTarget = 1.8
+ }
+}
diff --git a/play-services-ads/core/src/main/AndroidManifest.xml b/play-services-ads/core/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..78f153d
--- /dev/null
+++ b/play-services-ads/core/src/main/AndroidManifest.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/play-services-ads/core/src/main/java/com/google/android/gms/dynamite/descriptors/com/google/android/gms/ads/dynamite/ModuleDescriptor.java b/play-services-ads/core/src/main/java/com/google/android/gms/dynamite/descriptors/com/google/android/gms/ads/dynamite/ModuleDescriptor.java
new file mode 100644
index 0000000..94ed94c
--- /dev/null
+++ b/play-services-ads/core/src/main/java/com/google/android/gms/dynamite/descriptors/com/google/android/gms/ads/dynamite/ModuleDescriptor.java
@@ -0,0 +1,74 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.dynamite.descriptors.com.google.android.gms.ads.dynamite;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.ContextWrapper;
+import android.content.SharedPreferences;
+import android.util.Log;
+import androidx.annotation.Keep;
+
+import java.util.Locale;
+
+import static android.os.Build.DEVICE;
+import static android.os.Build.DISPLAY;
+import static android.os.Build.VERSION.RELEASE;
+
+@Keep
+public class ModuleDescriptor {
+ public static final String MODULE_ID = "com.google.android.gms.ads.dynamite";
+ public static final int MODULE_VERSION = 230500001;
+ private static final String TAG = "AdsDynamiteModule";
+
+ /**
+ * The ads module might try to access the user agent, requiring initialization on the main thread,
+ * which may result in deadlocks when invoked from any other thread. This only happens with microG,
+ * because we don't use the highly privileged SELinux Sandbox that regular Play Services uses
+ * (which allows apps to read the user-agent from Play Services instead of the WebView). To prevent
+ * the issue we pre-emptively write a user agent in the local storage of the app.
+ */
+ public static void init(Context context) {
+ do {
+ try {
+ injectUserAgentSharedPreference(context);
+ } catch (Exception e) {
+ }
+ if (context instanceof ContextWrapper) {
+ Context baseContext = ((ContextWrapper) context).getBaseContext();
+ if (context == baseContext) break;
+ context = baseContext;
+ } else {
+ break;
+ }
+ } while (context != null);
+ }
+
+ /**
+ * @return A user-agent representing a browser on the current device.
+ */
+ private static String buildDefaultUserAgent() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("Mozilla/5.0 (Linux; U; Android");
+ if (RELEASE != null) sb.append(" ").append(RELEASE);
+ sb.append("; ").append(Locale.getDefault());
+ if (DEVICE != null) {
+ sb.append("; ").append(DEVICE);
+ if (DISPLAY != null) sb.append(" Build/").append(DISPLAY);
+ }
+ sb.append(") AppleWebKit/533 Version/4.0 Safari/533");
+ return sb.toString();
+ }
+
+ @SuppressLint("ApplySharedPref")
+ private static void injectUserAgentSharedPreference(Context context) {
+ SharedPreferences preferences = context.getSharedPreferences("admob_user_agent", Context.MODE_PRIVATE);
+ if (!preferences.contains("user_agent")) {
+ preferences.edit().putString("user_agent", buildDefaultUserAgent()).commit();
+ Log.d(TAG, "Injected admob_user_agent into package " + context.getPackageName());
+ }
+ }
+}
diff --git a/play-services-ads/core/src/main/kotlin/org/microg/gms/ads/AdRequestService.kt b/play-services-ads/core/src/main/kotlin/org/microg/gms/ads/AdRequestService.kt
new file mode 100644
index 0000000..e451313
--- /dev/null
+++ b/play-services-ads/core/src/main/kotlin/org/microg/gms/ads/AdRequestService.kt
@@ -0,0 +1,68 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package org.microg.gms.ads
+
+import android.os.Bundle
+import android.os.Parcel
+import android.util.Log
+import com.google.android.gms.ads.internal.ExceptionParcel
+import com.google.android.gms.ads.internal.NonagonRequestParcel
+import com.google.android.gms.ads.internal.request.IAdRequestService
+import com.google.android.gms.ads.internal.request.INonagonStreamingResponseListener
+import com.google.android.gms.common.api.CommonStatusCodes
+import com.google.android.gms.common.internal.GetServiceRequest
+import com.google.android.gms.common.internal.IGmsCallbacks
+import org.microg.gms.BaseService
+import org.microg.gms.common.GmsService
+import org.microg.gms.common.PackageUtils
+import org.microg.gms.utils.warnOnTransactionIssues
+
+private const val TAG = "AdRequestService"
+
+class AdRequestService : BaseService(TAG, GmsService.ADREQUEST) {
+ override fun handleServiceRequest(callback: IGmsCallbacks, request: GetServiceRequest, service: GmsService) {
+ val packageName = PackageUtils.getAndCheckCallingPackage(this, request.packageName)
+ ?: throw IllegalArgumentException("Missing package name")
+ val binder = AdRequestServiceImpl().asBinder()
+ callback.onPostInitComplete(CommonStatusCodes.SUCCESS, binder, Bundle())
+ }
+}
+
+class AdRequestServiceImpl : IAdRequestService.Stub() {
+ override fun getAdRequest(request: NonagonRequestParcel, listener: INonagonStreamingResponseListener) {
+ Log.d(TAG, "getAdRequest")
+ listener.onException(ExceptionParcel().apply {
+ message = "Not supported"
+ code = CommonStatusCodes.INTERNAL_ERROR
+ })
+ }
+
+ override fun getSignals(request: NonagonRequestParcel, listener: INonagonStreamingResponseListener) {
+ Log.d(TAG, "getSignals")
+ listener.onException(ExceptionParcel().apply {
+ message = "Not supported"
+ code = CommonStatusCodes.INTERNAL_ERROR
+ })
+ }
+
+ override fun getUrlAndCacheKey(request: NonagonRequestParcel, listener: INonagonStreamingResponseListener) {
+ Log.d(TAG, "getUrlAndCacheKey")
+ listener.onException(ExceptionParcel().apply {
+ message = "Not supported"
+ code = CommonStatusCodes.INTERNAL_ERROR
+ })
+ }
+
+ override fun removeCacheUrl(key: String, listener: INonagonStreamingResponseListener) {
+ Log.d(TAG, "removeCacheUrl")
+ listener.onException(ExceptionParcel().apply {
+ message = "Not supported"
+ code = CommonStatusCodes.INTERNAL_ERROR
+ })
+ }
+
+ override fun onTransact(code: Int, data: Parcel, reply: Parcel?, flags: Int): Boolean = warnOnTransactionIssues(code, reply, flags, TAG) { super.onTransact(code, data, reply, flags) }
+}
\ No newline at end of file
diff --git a/play-services-ads/src/main/AndroidManifest.xml b/play-services-ads/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..2a578f7
--- /dev/null
+++ b/play-services-ads/src/main/AndroidManifest.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
diff --git a/play-services-ads/src/main/aidl/com/google/android/gms/ads/internal/ExceptionParcel.aidl b/play-services-ads/src/main/aidl/com/google/android/gms/ads/internal/ExceptionParcel.aidl
new file mode 100644
index 0000000..41b8774
--- /dev/null
+++ b/play-services-ads/src/main/aidl/com/google/android/gms/ads/internal/ExceptionParcel.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.ads.internal;
+
+parcelable ExceptionParcel;
\ No newline at end of file
diff --git a/play-services-ads/src/main/aidl/com/google/android/gms/ads/internal/NonagonRequestParcel.aidl b/play-services-ads/src/main/aidl/com/google/android/gms/ads/internal/NonagonRequestParcel.aidl
new file mode 100644
index 0000000..f952919
--- /dev/null
+++ b/play-services-ads/src/main/aidl/com/google/android/gms/ads/internal/NonagonRequestParcel.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.ads.internal;
+
+parcelable NonagonRequestParcel;
\ No newline at end of file
diff --git a/play-services-ads/src/main/aidl/com/google/android/gms/ads/internal/request/IAdRequestService.aidl b/play-services-ads/src/main/aidl/com/google/android/gms/ads/internal/request/IAdRequestService.aidl
new file mode 100644
index 0000000..52ca62a
--- /dev/null
+++ b/play-services-ads/src/main/aidl/com/google/android/gms/ads/internal/request/IAdRequestService.aidl
@@ -0,0 +1,11 @@
+package com.google.android.gms.ads.internal.request;
+
+import com.google.android.gms.ads.internal.NonagonRequestParcel;
+import com.google.android.gms.ads.internal.request.INonagonStreamingResponseListener;
+
+interface IAdRequestService {
+ void getAdRequest(in NonagonRequestParcel request, INonagonStreamingResponseListener listener) = 3;
+ void getSignals(in NonagonRequestParcel request, INonagonStreamingResponseListener listener) = 4;
+ void getUrlAndCacheKey(in NonagonRequestParcel request, INonagonStreamingResponseListener listener) = 5;
+ void removeCacheUrl(String key, INonagonStreamingResponseListener listener) = 6;
+}
\ No newline at end of file
diff --git a/play-services-ads/src/main/aidl/com/google/android/gms/ads/internal/request/INonagonStreamingResponseListener.aidl b/play-services-ads/src/main/aidl/com/google/android/gms/ads/internal/request/INonagonStreamingResponseListener.aidl
new file mode 100644
index 0000000..78eae30
--- /dev/null
+++ b/play-services-ads/src/main/aidl/com/google/android/gms/ads/internal/request/INonagonStreamingResponseListener.aidl
@@ -0,0 +1,8 @@
+package com.google.android.gms.ads.internal.request;
+
+import com.google.android.gms.ads.internal.ExceptionParcel;
+
+interface INonagonStreamingResponseListener {
+ void onSuccess(in ParcelFileDescriptor fd);
+ void onException(in ExceptionParcel exception);
+}
\ No newline at end of file
diff --git a/play-services-ads/src/main/java/com/google/android/gms/ads/internal/ExceptionParcel.java b/play-services-ads/src/main/java/com/google/android/gms/ads/internal/ExceptionParcel.java
new file mode 100644
index 0000000..55ddf34
--- /dev/null
+++ b/play-services-ads/src/main/java/com/google/android/gms/ads/internal/ExceptionParcel.java
@@ -0,0 +1,16 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.ads.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ExceptionParcel extends AutoSafeParcelable {
+ @Field(1)
+ public String message;
+ @Field(2)
+ public int code;
+ public static final Creator CREATOR = new AutoCreator<>(ExceptionParcel.class);
+}
diff --git a/play-services-ads/src/main/java/com/google/android/gms/ads/internal/NonagonRequestParcel.java b/play-services-ads/src/main/java/com/google/android/gms/ads/internal/NonagonRequestParcel.java
new file mode 100644
index 0000000..866ef36
--- /dev/null
+++ b/play-services-ads/src/main/java/com/google/android/gms/ads/internal/NonagonRequestParcel.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.ads.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class NonagonRequestParcel extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(NonagonRequestParcel.class);
+}
diff --git a/play-services-api/build.gradle b/play-services-api/build.gradle
new file mode 100644
index 0000000..11c3911
--- /dev/null
+++ b/play-services-api/build.gradle
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2013-2015 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.
+ */
+
+apply plugin: 'com.android.library'
+
+android {
+ namespace "org.microg.gms.api"
+
+ compileSdkVersion androidCompileSdk
+ buildToolsVersion "$androidBuildVersionTools"
+
+ buildFeatures {
+ aidl = true
+ }
+
+ defaultConfig {
+ versionName version
+ minSdkVersion androidMinSdk
+ targetSdkVersion androidTargetSdk
+ }
+
+ compileOptions {
+ sourceCompatibility = 1.8
+ targetCompatibility = 1.8
+ }
+}
+
+dependencies {
+ api project(':play-services-base')
+ api project(':play-services-phenotype')
+
+ annotationProcessor project(':safe-parcel-processor')
+}
diff --git a/play-services-api/src/main/AndroidManifest.xml b/play-services-api/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..359a9b7
--- /dev/null
+++ b/play-services-api/src/main/AndroidManifest.xml
@@ -0,0 +1,18 @@
+
+
+
+
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/ads/omid/IOmid.aidl b/play-services-api/src/main/aidl/com/google/android/gms/ads/omid/IOmid.aidl
new file mode 100644
index 0000000..22a0cbc
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/ads/omid/IOmid.aidl
@@ -0,0 +1,16 @@
+package com.google.android.gms.ads.omid;
+
+import com.google.android.gms.dynamic.IObjectWrapper;
+
+interface IOmid {
+ boolean initializeOmid(IObjectWrapper context) = 1;
+ IObjectWrapper createHtmlAdSession(String version, IObjectWrapper webView, String customReferenceData, String impressionOwner, String altImpressionOwner) = 2;
+ void startAdSession(IObjectWrapper adSession) = 3;
+ void registerAdView(IObjectWrapper adSession, IObjectWrapper view) = 4;
+ String getVersion() = 5;
+ void finishAdSession(IObjectWrapper adSession) = 6;
+ void addFriendlyObstruction(IObjectWrapper adSession, IObjectWrapper view) = 7;
+ IObjectWrapper createHtmlAdSessionWithPartnerName(String version, IObjectWrapper webView, String customReferenceData, String impressionOwner, String altImpressionOwner, String parterName) = 8;
+ IObjectWrapper createJavascriptAdSessionWithPartnerNameImpressionCreativeType(String version, IObjectWrapper webView, String customReferenceData, String impressionOwner, String altImpressionOwner, String parterName, String impressionType, String creativeType, String contentUrl) = 9;
+ IObjectWrapper createHtmlAdSessionWithPartnerNameImpressionCreativeType(String version, IObjectWrapper webView, String customReferenceData, String impressionOwner, String altImpressionOwner, String parterName, String impressionType, String creativeType, String contentUrl) = 10;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/CorpusStatus.aidl b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/CorpusStatus.aidl
new file mode 100644
index 0000000..f893aef
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/CorpusStatus.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.appdatasearch;
+
+parcelable CorpusStatus;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/PIMEUpdate.aidl b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/PIMEUpdate.aidl
new file mode 100644
index 0000000..c7f5e43
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/PIMEUpdate.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.appdatasearch;
+
+parcelable PIMEUpdate;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/PIMEUpdateResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/PIMEUpdateResponse.aidl
new file mode 100644
index 0000000..0ae6e4b
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/PIMEUpdateResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.appdatasearch;
+
+parcelable PIMEUpdateResponse;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/RequestIndexingSpecification.aidl b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/RequestIndexingSpecification.aidl
new file mode 100644
index 0000000..a0a785c
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/RequestIndexingSpecification.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.appdatasearch;
+
+parcelable RequestIndexingSpecification;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/SuggestSpecification.aidl b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/SuggestSpecification.aidl
new file mode 100644
index 0000000..0b3c47f
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/SuggestSpecification.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.appdatasearch;
+
+parcelable SuggestSpecification;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/SuggestionResults.aidl b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/SuggestionResults.aidl
new file mode 100644
index 0000000..57d2d63
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/SuggestionResults.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.appdatasearch;
+
+parcelable SuggestionResults;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/UsageInfo.aidl b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/UsageInfo.aidl
new file mode 100644
index 0000000..b52e3d4
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/UsageInfo.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.appdatasearch;
+
+parcelable UsageInfo;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/internal/IAppDataSearch.aidl b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/internal/IAppDataSearch.aidl
new file mode 100644
index 0000000..ebc204c
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/internal/IAppDataSearch.aidl
@@ -0,0 +1,14 @@
+package com.google.android.gms.appdatasearch.internal;
+
+import com.google.android.gms.appdatasearch.CorpusStatus;
+import com.google.android.gms.appdatasearch.PIMEUpdateResponse;
+import com.google.android.gms.appdatasearch.RequestIndexingSpecification;
+import com.google.android.gms.appdatasearch.SuggestionResults;
+import com.google.android.gms.appdatasearch.SuggestSpecification;
+
+interface IAppDataSearch {
+ SuggestionResults getSuggestions(String var1, String packageName, in String[] accounts, int maxNum, in SuggestSpecification specs) = 1;
+ boolean requestIndexing(String packageName, String accountName, long l, in RequestIndexingSpecification specs) = 3;
+ CorpusStatus getStatus(String packageName, String accountName) = 4;
+ PIMEUpdateResponse requestPIMEUpdate(String s1, String s2, int i, in byte[] bs) = 34;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/internal/ILightweightAppDataSearch.aidl b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/internal/ILightweightAppDataSearch.aidl
new file mode 100644
index 0000000..77e618a
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/internal/ILightweightAppDataSearch.aidl
@@ -0,0 +1,8 @@
+package com.google.android.gms.appdatasearch.internal;
+
+import com.google.android.gms.appdatasearch.internal.ILightweightAppDataSearchCallbacks;
+import com.google.android.gms.appdatasearch.UsageInfo;
+
+interface ILightweightAppDataSearch {
+ void view(ILightweightAppDataSearchCallbacks callbacks, String packageName, in UsageInfo[] usageInfos);
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/internal/ILightweightAppDataSearchCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/internal/ILightweightAppDataSearchCallbacks.aidl
new file mode 100644
index 0000000..338a142
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/appdatasearch/internal/ILightweightAppDataSearchCallbacks.aidl
@@ -0,0 +1,4 @@
+package com.google.android.gms.appdatasearch.internal;
+
+interface ILightweightAppDataSearchCallbacks {
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/audit/LogAuditRecordsRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/audit/LogAuditRecordsRequest.aidl
new file mode 100644
index 0000000..e2a0155
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/audit/LogAuditRecordsRequest.aidl
@@ -0,0 +1,8 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.audit;
+
+parcelable LogAuditRecordsRequest;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/audit/internal/IAuditService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/audit/internal/IAuditService.aidl
new file mode 100644
index 0000000..7e26825
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/audit/internal/IAuditService.aidl
@@ -0,0 +1,13 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.audit.internal;
+
+import com.google.android.gms.common.api.internal.IStatusCallback;
+import com.google.android.gms.audit.LogAuditRecordsRequest;
+
+interface IAuditService {
+ void logAuditRecords(in LogAuditRecordsRequest request, IStatusCallback callback);
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/auth/appcert/IAppCertService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/auth/appcert/IAppCertService.aidl
new file mode 100644
index 0000000..ee7f733
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/auth/appcert/IAppCertService.aidl
@@ -0,0 +1,6 @@
+package com.google.android.gms.auth.appcert;
+
+interface IAppCertService {
+ boolean fetchDeviceKey() = 0;
+ String getSpatulaHeader(String packageName) = 1;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/checkin/internal/ICheckinService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/checkin/internal/ICheckinService.aidl
new file mode 100644
index 0000000..973de92
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/checkin/internal/ICheckinService.aidl
@@ -0,0 +1,7 @@
+package com.google.android.gms.checkin.internal;
+
+interface ICheckinService {
+ String getDeviceDataVersionInfo();
+ long getLastCheckinSuccessTime();
+ String getLastSimOperator();
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/credential/manager/common/IPendingIntentCallback.aidl b/play-services-api/src/main/aidl/com/google/android/gms/credential/manager/common/IPendingIntentCallback.aidl
new file mode 100644
index 0000000..7af7a04
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/credential/manager/common/IPendingIntentCallback.aidl
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.credential.manager.common;
+
+import com.google.android.gms.common.api.Status;
+
+interface IPendingIntentCallback {
+ void onPendingIntent(in Status status, in PendingIntent pendingIntent);
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/credential/manager/common/ISettingsCallback.aidl b/play-services-api/src/main/aidl/com/google/android/gms/credential/manager/common/ISettingsCallback.aidl
new file mode 100644
index 0000000..ef9ef41
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/credential/manager/common/ISettingsCallback.aidl
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.credential.manager.common;
+
+import com.google.android.gms.common.api.Status;
+
+interface ISettingsCallback {
+ void onSetting(in Status status, in byte[] value);
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/credential/manager/firstparty/internal/ICredentialManagerService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/credential/manager/firstparty/internal/ICredentialManagerService.aidl
new file mode 100644
index 0000000..39ab381
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/credential/manager/firstparty/internal/ICredentialManagerService.aidl
@@ -0,0 +1,17 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.credential.manager.firstparty.internal;
+
+import com.google.android.gms.common.api.internal.IStatusCallback;
+import com.google.android.gms.credential.manager.common.IPendingIntentCallback;
+import com.google.android.gms.credential.manager.common.ISettingsCallback;
+import com.google.android.gms.credential.manager.invocationparams.CredentialManagerInvocationParams;
+
+interface ICredentialManagerService {
+ void getCredentialManagerIntent(IPendingIntentCallback callback, in CredentialManagerInvocationParams params) = 0;
+ void getSetting(ISettingsCallback callback, String key) = 1;
+ void setSetting(IStatusCallback callback, String key, in byte[] value) = 2;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/credential/manager/invocationparams/CredentialManagerInvocationParams.aidl b/play-services-api/src/main/aidl/com/google/android/gms/credential/manager/invocationparams/CredentialManagerInvocationParams.aidl
new file mode 100644
index 0000000..81d4301
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/credential/manager/invocationparams/CredentialManagerInvocationParams.aidl
@@ -0,0 +1,8 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.credential.manager.invocationparams;
+
+parcelable CredentialManagerInvocationParams;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/facs/cache/FacsCacheCallOptions.aidl b/play-services-api/src/main/aidl/com/google/android/gms/facs/cache/FacsCacheCallOptions.aidl
new file mode 100644
index 0000000..72a9af0
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/facs/cache/FacsCacheCallOptions.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.facs.cache;
+
+parcelable FacsCacheCallOptions;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/facs/cache/ForceSettingsCacheRefreshResult.aidl b/play-services-api/src/main/aidl/com/google/android/gms/facs/cache/ForceSettingsCacheRefreshResult.aidl
new file mode 100644
index 0000000..5bac21a
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/facs/cache/ForceSettingsCacheRefreshResult.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.facs.cache;
+
+parcelable ForceSettingsCacheRefreshResult;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/facs/cache/GetActivityControlsSettingsResult.aidl b/play-services-api/src/main/aidl/com/google/android/gms/facs/cache/GetActivityControlsSettingsResult.aidl
new file mode 100644
index 0000000..627417d
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/facs/cache/GetActivityControlsSettingsResult.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.facs.cache;
+
+parcelable GetActivityControlsSettingsResult;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/facs/cache/ReadDeviceLevelSettingsResult.aidl b/play-services-api/src/main/aidl/com/google/android/gms/facs/cache/ReadDeviceLevelSettingsResult.aidl
new file mode 100644
index 0000000..936f2ee
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/facs/cache/ReadDeviceLevelSettingsResult.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.facs.cache;
+
+parcelable ReadDeviceLevelSettingsResult;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/facs/cache/UpdateActivityControlsSettingsResult.aidl b/play-services-api/src/main/aidl/com/google/android/gms/facs/cache/UpdateActivityControlsSettingsResult.aidl
new file mode 100644
index 0000000..051f9e0
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/facs/cache/UpdateActivityControlsSettingsResult.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.facs.cache;
+
+parcelable UpdateActivityControlsSettingsResult;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/facs/cache/internal/IFacsCacheCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/facs/cache/internal/IFacsCacheCallbacks.aidl
new file mode 100644
index 0000000..ecea95a
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/facs/cache/internal/IFacsCacheCallbacks.aidl
@@ -0,0 +1,15 @@
+package com.google.android.gms.facs.cache.internal;
+
+import com.google.android.gms.common.api.Status;
+import com.google.android.gms.facs.cache.ForceSettingsCacheRefreshResult;
+import com.google.android.gms.facs.cache.GetActivityControlsSettingsResult;
+import com.google.android.gms.facs.cache.ReadDeviceLevelSettingsResult;
+import com.google.android.gms.facs.cache.UpdateActivityControlsSettingsResult;
+
+interface IFacsCacheCallbacks {
+ void onForceSettingsCacheRefreshResult(in Status status, in ForceSettingsCacheRefreshResult result) = 0;
+ void onUpdateActivityControlsSettingsResult(in Status status, in UpdateActivityControlsSettingsResult result) = 1;
+ void onGetActivityControlsSettingsResult(in Status status, in GetActivityControlsSettingsResult result) = 2;
+ void onWriteDeviceLevelSettingsResult(in Status status) = 3;
+ void onReadDeviceLevelSettingsResult(in Status status, in ReadDeviceLevelSettingsResult result) = 4;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/facs/cache/internal/IFacsCacheService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/facs/cache/internal/IFacsCacheService.aidl
new file mode 100644
index 0000000..534c9de
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/facs/cache/internal/IFacsCacheService.aidl
@@ -0,0 +1,12 @@
+package com.google.android.gms.facs.cache.internal;
+
+import com.google.android.gms.facs.cache.FacsCacheCallOptions;
+import com.google.android.gms.facs.cache.internal.IFacsCacheCallbacks;
+
+interface IFacsCacheService {
+ void forceSettingsCacheRefresh(IFacsCacheCallbacks callbacks, in FacsCacheCallOptions options) = 0;
+ void updateActivityControlsSettings(IFacsCacheCallbacks callbacks, in byte[] bytes, in FacsCacheCallOptions options) = 1;
+ void getActivityControlsSettings(IFacsCacheCallbacks callbacks, in FacsCacheCallOptions options) = 2;
+ void readDeviceLevelSettings(IFacsCacheCallbacks callbacks) = 3;
+ void writeDeviceLevelSettings(IFacsCacheCallbacks callbacks, in byte[] bytes) = 4;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/feedback/ErrorReport.aidl b/play-services-api/src/main/aidl/com/google/android/gms/feedback/ErrorReport.aidl
new file mode 100644
index 0000000..0b4980d
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/feedback/ErrorReport.aidl
@@ -0,0 +1,8 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.feedback;
+
+parcelable ErrorReport;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/feedback/FeedbackOptions.aidl b/play-services-api/src/main/aidl/com/google/android/gms/feedback/FeedbackOptions.aidl
new file mode 100644
index 0000000..8e90ece
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/feedback/FeedbackOptions.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.feedback;
+
+parcelable FeedbackOptions;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/feedback/FileTeleporter.aidl b/play-services-api/src/main/aidl/com/google/android/gms/feedback/FileTeleporter.aidl
new file mode 100644
index 0000000..d6dd158
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/feedback/FileTeleporter.aidl
@@ -0,0 +1,8 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.feedback;
+
+parcelable FileTeleporter;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/feedback/LogOptions.aidl b/play-services-api/src/main/aidl/com/google/android/gms/feedback/LogOptions.aidl
new file mode 100644
index 0000000..433575b
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/feedback/LogOptions.aidl
@@ -0,0 +1,8 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.feedback;
+
+parcelable LogOptions;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/feedback/ThemeSettings.aidl b/play-services-api/src/main/aidl/com/google/android/gms/feedback/ThemeSettings.aidl
new file mode 100644
index 0000000..7b189c9
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/feedback/ThemeSettings.aidl
@@ -0,0 +1,8 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.feedback;
+
+parcelable ThemeSettings;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/feedback/internal/IFeedbackCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/feedback/internal/IFeedbackCallbacks.aidl
new file mode 100644
index 0000000..eeb50c9
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/feedback/internal/IFeedbackCallbacks.aidl
@@ -0,0 +1,10 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.feedback.internal;
+
+interface IFeedbackCallbacks {
+ void onServiceDestroy();
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/feedback/internal/IFeedbackService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/feedback/internal/IFeedbackService.aidl
new file mode 100644
index 0000000..48401b0
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/feedback/internal/IFeedbackService.aidl
@@ -0,0 +1,33 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.feedback.internal;
+
+import com.google.android.gms.feedback.FeedbackOptions;
+import android.os.IBinder;
+import android.os.IInterface;
+import android.os.Parcel;
+import com.google.android.gms.googlehelp.GoogleHelp;
+import com.google.android.gms.feedback.ErrorReport;
+import android.content.Context;
+import android.os.Bundle;
+import android.content.Intent;
+
+
+interface IFeedbackService {
+
+ boolean startFeedbackFlow(in ErrorReport errorReport) = 0;
+
+ boolean silentSendFeedback(in ErrorReport errorReport) = 2;
+
+ void saveFeedbackDataAsync(in Bundle bundle, long id) = 3;
+
+ void saveFeedbackDataAsyncWithOption(in FeedbackOptions options, in Bundle bundle, long id) = 4;
+
+ void startFeedbackFlowAsync(in ErrorReport errorReport, long id) = 5;
+
+ boolean isValidConfiguration(in FeedbackOptions options) = 6;
+
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/gass/internal/GassRequestParcel.aidl b/play-services-api/src/main/aidl/com/google/android/gms/gass/internal/GassRequestParcel.aidl
new file mode 100644
index 0000000..ffe2ae7
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/gass/internal/GassRequestParcel.aidl
@@ -0,0 +1,8 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.gass.internal;
+
+parcelable GassRequestParcel;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/gass/internal/GassResponseParcel.aidl b/play-services-api/src/main/aidl/com/google/android/gms/gass/internal/GassResponseParcel.aidl
new file mode 100644
index 0000000..f8f40a7
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/gass/internal/GassResponseParcel.aidl
@@ -0,0 +1,8 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.gass.internal;
+
+parcelable GassResponseParcel;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/gass/internal/IGassService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/gass/internal/IGassService.aidl
new file mode 100644
index 0000000..7fafe56
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/gass/internal/IGassService.aidl
@@ -0,0 +1,16 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.gass.internal;
+
+import android.os.Bundle;
+import android.os.IInterface;
+import com.google.android.gms.gass.internal.GassRequestParcel;
+import com.google.android.gms.gass.internal.GassResponseParcel;
+
+interface IGassService {
+ GassResponseParcel getGassResponse(in GassRequestParcel gassRequestParcel) = 0;
+ Bundle getGassBundle(in Bundle bundle, int code) = 3;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/googlehelp/GoogleHelp.aidl b/play-services-api/src/main/aidl/com/google/android/gms/googlehelp/GoogleHelp.aidl
new file mode 100644
index 0000000..9da8ad7
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/googlehelp/GoogleHelp.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.googlehelp;
+
+parcelable GoogleHelp;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/googlehelp/InProductHelp.aidl b/play-services-api/src/main/aidl/com/google/android/gms/googlehelp/InProductHelp.aidl
new file mode 100644
index 0000000..717af5b
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/googlehelp/InProductHelp.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.googlehelp;
+
+parcelable InProductHelp;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/googlehelp/SupportRequestHelp.aidl b/play-services-api/src/main/aidl/com/google/android/gms/googlehelp/SupportRequestHelp.aidl
new file mode 100644
index 0000000..4093b9c
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/googlehelp/SupportRequestHelp.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.googlehelp;
+
+parcelable SupportRequestHelp;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/googlehelp/internal/common/IGoogleHelpCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/googlehelp/internal/common/IGoogleHelpCallbacks.aidl
new file mode 100644
index 0000000..777fbf5
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/googlehelp/internal/common/IGoogleHelpCallbacks.aidl
@@ -0,0 +1,26 @@
+package com.google.android.gms.googlehelp.internal.common;
+
+import android.graphics.Bitmap;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.Parcel;
+
+import com.google.android.gms.googlehelp.GoogleHelp;
+import com.google.android.gms.googlehelp.InProductHelp;
+
+interface IGoogleHelpCallbacks {
+ void onProcessGoogleHelpFinished(in GoogleHelp googleHelp) = 0;
+ oneway void onSaveAsyncPsdFinished() = 6;
+ oneway void onSaveAsyncPsbdFinished() = 7;
+ void onRequestChatSupportSuccess(int chatQueuePosition) = 8;
+ void onRequestChatSupportFailed() = 9;
+ void onRequestC2cSupportSuccess() = 10;
+ void onRequestC2cSupportFailed() = 11;
+ void onSuggestions(in byte[] suggestions) = 12;
+ void onNoSuggestions() = 13;
+ void onEscalationOptions(in byte[] options) = 14;
+ void onNoEscalationOptions() = 15;
+ void onProcessInProductHelpFinished(in InProductHelp inProductHelp) = 16;
+ void onRealtimeSupportStatus(in byte[] status) = 17;
+ void onNoRealtimeSupportStatus() = 18;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/googlehelp/internal/common/IGoogleHelpService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/googlehelp/internal/common/IGoogleHelpService.aidl
new file mode 100644
index 0000000..6fbb2a2
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/googlehelp/internal/common/IGoogleHelpService.aidl
@@ -0,0 +1,26 @@
+package com.google.android.gms.googlehelp.internal.common;
+
+import android.graphics.Bitmap;
+import android.os.Bundle;
+
+import com.google.android.gms.feedback.FeedbackOptions;
+import com.google.android.gms.googlehelp.GoogleHelp;
+import com.google.android.gms.googlehelp.InProductHelp;
+import com.google.android.gms.googlehelp.SupportRequestHelp;
+import com.google.android.gms.googlehelp.internal.common.IGoogleHelpCallbacks;
+
+interface IGoogleHelpService {
+ void processGoogleHelpAndPip(in GoogleHelp googleHelp, IGoogleHelpCallbacks callbacks) = 0;
+ void processGoogleHelpAndPipWithBitmap(in GoogleHelp googleHelp, in Bitmap bitmap, IGoogleHelpCallbacks callbacks) = 1;
+ oneway void saveAsyncHelpPsd(in Bundle bundle, long timestamp, in GoogleHelp googleHelp, IGoogleHelpCallbacks callbacks) = 7;
+ oneway void saveAsyncFeedbackPsd(in Bundle bundle, long timestamp, in GoogleHelp googleHelp, IGoogleHelpCallbacks callbacks) = 8;
+ oneway void saveAsyncFeedbackPsbd(in FeedbackOptions options, in Bundle bundle, long timestamp, in GoogleHelp googleHelp, IGoogleHelpCallbacks callbacks) = 9;
+ oneway void requestChatSupport(in GoogleHelp googleHelp, String phoneNumber, String s2, IGoogleHelpCallbacks callbacks) = 10;
+ oneway void requestC2cSupport(in GoogleHelp googleHelp, String phoneNumber, String s2, IGoogleHelpCallbacks callbacks) = 11;
+ oneway void getSuggestions(in GoogleHelp googleHelp, IGoogleHelpCallbacks callbacks) = 12;
+ oneway void getEscalationOptions(in GoogleHelp googleHelp, IGoogleHelpCallbacks callbacks) = 13;
+ oneway void requestChatSupportWithSupportRequest(in SupportRequestHelp supportRequestHelp, IGoogleHelpCallbacks callbacks) = 14;
+ oneway void requestC2cSupportWithSupportRequest(in SupportRequestHelp supportRequestHelp, IGoogleHelpCallbacks callbacks) = 15;
+ void processInProductHelpAndPip(in InProductHelp inProductHelp, in Bitmap bitmap, IGoogleHelpCallbacks callbacks) = 16;
+ oneway void getRealtimeSupportStatus(in GoogleHelp googleHelp, IGoogleHelpCallbacks callbacks) = 17;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/http/IGoogleHttpService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/http/IGoogleHttpService.aidl
new file mode 100644
index 0000000..58ea0ba
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/http/IGoogleHttpService.aidl
@@ -0,0 +1,7 @@
+package com.google.android.gms.http;
+
+import android.os.Bundle;
+
+interface IGoogleHttpService {
+ Bundle checkUrl(String url);
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/languageprofile/ClientLanguageSettings.aidl b/play-services-api/src/main/aidl/com/google/android/gms/languageprofile/ClientLanguageSettings.aidl
new file mode 100644
index 0000000..9b451c3
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/languageprofile/ClientLanguageSettings.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.languageprofile;
+
+parcelable ClientLanguageSettings;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/languageprofile/LanguageFluency.aidl b/play-services-api/src/main/aidl/com/google/android/gms/languageprofile/LanguageFluency.aidl
new file mode 100644
index 0000000..637d553
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/languageprofile/LanguageFluency.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.languageprofile;
+
+parcelable LanguageFluency;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/languageprofile/LanguageFluencyParams.aidl b/play-services-api/src/main/aidl/com/google/android/gms/languageprofile/LanguageFluencyParams.aidl
new file mode 100644
index 0000000..f61b1fa
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/languageprofile/LanguageFluencyParams.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.languageprofile;
+
+parcelable LanguageFluencyParams;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/languageprofile/LanguagePreference.aidl b/play-services-api/src/main/aidl/com/google/android/gms/languageprofile/LanguagePreference.aidl
new file mode 100644
index 0000000..d326c85
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/languageprofile/LanguagePreference.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.languageprofile;
+
+parcelable LanguagePreference;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/languageprofile/LanguagePreferenceParams.aidl b/play-services-api/src/main/aidl/com/google/android/gms/languageprofile/LanguagePreferenceParams.aidl
new file mode 100644
index 0000000..294f192
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/languageprofile/LanguagePreferenceParams.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.languageprofile;
+
+parcelable LanguagePreferenceParams;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/languageprofile/internal/ILanguageProfileCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/languageprofile/internal/ILanguageProfileCallbacks.aidl
new file mode 100644
index 0000000..c72b49d
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/languageprofile/internal/ILanguageProfileCallbacks.aidl
@@ -0,0 +1,11 @@
+package com.google.android.gms.languageprofile.internal;
+
+import com.google.android.gms.common.api.Status;
+import com.google.android.gms.languageprofile.LanguageFluency;
+import com.google.android.gms.languageprofile.LanguagePreference;
+
+interface ILanguageProfileCallbacks {
+ oneway void onString(in Status status, String s) = 0;
+ oneway void onLanguagePreferences(in Status status, in List preferences) = 1;
+ oneway void onLanguageFluencies(in Status status, in List fluencies) = 2;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/languageprofile/internal/ILanguageProfileService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/languageprofile/internal/ILanguageProfileService.aidl
new file mode 100644
index 0000000..6becf73
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/languageprofile/internal/ILanguageProfileService.aidl
@@ -0,0 +1,16 @@
+package com.google.android.gms.languageprofile.internal;
+
+import com.google.android.gms.common.api.internal.IStatusCallback;
+import com.google.android.gms.languageprofile.ClientLanguageSettings;
+import com.google.android.gms.languageprofile.LanguageFluencyParams;
+import com.google.android.gms.languageprofile.LanguagePreferenceParams;
+import com.google.android.gms.languageprofile.internal.ILanguageProfileCallbacks;
+
+interface ILanguageProfileService {
+ String fun1(String accountName) = 0;
+ void fun2(String accountName, ILanguageProfileCallbacks callbacks) = 1;
+ void getLanguagePreferences(String accountName, in LanguagePreferenceParams params, ILanguageProfileCallbacks callbacks) = 2;
+ void getLanguageFluencies(String accountName, in LanguageFluencyParams params, ILanguageProfileCallbacks callbacks) = 3;
+ void getLanguageSettings(String accountName, in ClientLanguageSettings settings, IStatusCallback callback) = 4;
+ void removeLanguageSettings(String accountName, IStatusCallback callback) = 5;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/IneligibilityRationale.aidl b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/IneligibilityRationale.aidl
new file mode 100644
index 0000000..cd644d9
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/IneligibilityRationale.aidl
@@ -0,0 +1,7 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.locationsharingreporter;
+
+parcelable IneligibilityRationale;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/LocationReportingStatus.aidl b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/LocationReportingStatus.aidl
new file mode 100644
index 0000000..20018a5
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/LocationReportingStatus.aidl
@@ -0,0 +1,7 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.locationsharingreporter;
+
+parcelable LocationReportingStatus;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/LocationShare.aidl b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/LocationShare.aidl
new file mode 100644
index 0000000..dc07a04
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/LocationShare.aidl
@@ -0,0 +1,7 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.locationsharingreporter;
+
+parcelable LocationShare;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/LocationUploadRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/LocationUploadRequest.aidl
new file mode 100644
index 0000000..deca656
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/LocationUploadRequest.aidl
@@ -0,0 +1,7 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.locationsharingreporter;
+
+parcelable LocationUploadRequest;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/LocationUploadResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/LocationUploadResponse.aidl
new file mode 100644
index 0000000..dbcb0f4
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/LocationUploadResponse.aidl
@@ -0,0 +1,7 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.locationsharingreporter;
+
+parcelable LocationUploadResponse;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/NoticeAckedUpdateRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/NoticeAckedUpdateRequest.aidl
new file mode 100644
index 0000000..de90453
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/NoticeAckedUpdateRequest.aidl
@@ -0,0 +1,7 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.locationsharingreporter;
+
+parcelable NoticeAckedUpdateRequest;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/PeriodicLocationReportingIssues.aidl b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/PeriodicLocationReportingIssues.aidl
new file mode 100644
index 0000000..3a91fcb
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/PeriodicLocationReportingIssues.aidl
@@ -0,0 +1,7 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.locationsharingreporter;
+
+parcelable PeriodicLocationReportingIssues;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/PeriodicLocationUploadRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/PeriodicLocationUploadRequest.aidl
new file mode 100644
index 0000000..4689029
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/PeriodicLocationUploadRequest.aidl
@@ -0,0 +1,7 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.locationsharingreporter;
+
+parcelable PeriodicLocationUploadRequest;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/StartLocationReportingRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/StartLocationReportingRequest.aidl
new file mode 100644
index 0000000..034910b
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/StartLocationReportingRequest.aidl
@@ -0,0 +1,7 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.locationsharingreporter;
+
+parcelable StartLocationReportingRequest;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/StopLocationReportingRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/StopLocationReportingRequest.aidl
new file mode 100644
index 0000000..b00b992
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/StopLocationReportingRequest.aidl
@@ -0,0 +1,7 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.locationsharingreporter;
+
+parcelable StopLocationReportingRequest;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/internal/ILocationReportingIssuesCallback.aidl b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/internal/ILocationReportingIssuesCallback.aidl
new file mode 100644
index 0000000..58e934a
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/internal/ILocationReportingIssuesCallback.aidl
@@ -0,0 +1,13 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.locationsharingreporter.internal;
+
+import com.google.android.gms.common.api.ApiMetadata;
+import com.google.android.gms.common.api.Status;
+import com.google.android.gms.locationsharingreporter.PeriodicLocationReportingIssues;
+
+interface ILocationReportingIssuesCallback {
+ void onPeriodicLocationReportingIssues(in Status status, in PeriodicLocationReportingIssues periodicLocationReportingIssues, in ApiMetadata apiMetadata) = 0;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/internal/ILocationReportingStatusCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/internal/ILocationReportingStatusCallbacks.aidl
new file mode 100644
index 0000000..ea04a6e
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/internal/ILocationReportingStatusCallbacks.aidl
@@ -0,0 +1,13 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.locationsharingreporter.internal;
+
+import com.google.android.gms.common.api.ApiMetadata;
+import com.google.android.gms.common.api.Status;
+import com.google.android.gms.locationsharingreporter.LocationReportingStatus;
+
+interface ILocationReportingStatusCallbacks {
+ void onLocationReportingStatus(in Status status, in LocationReportingStatus locationReportingStatus, in ApiMetadata apiMetadata) = 0;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/internal/ILocationSharingReporterService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/internal/ILocationSharingReporterService.aidl
new file mode 100644
index 0000000..5840185
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/internal/ILocationSharingReporterService.aidl
@@ -0,0 +1,28 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.locationsharingreporter.internal;
+
+import android.accounts.Account;
+import com.google.android.gms.common.api.ApiMetadata;
+import com.google.android.gms.common.api.internal.IStatusCallback;
+import com.google.android.gms.locationsharingreporter.internal.ILocationReportingIssuesCallback;
+import com.google.android.gms.locationsharingreporter.internal.ILocationReportingStatusCallbacks;
+import com.google.android.gms.locationsharingreporter.internal.ILocationUploadCallbacks;
+import com.google.android.gms.locationsharingreporter.LocationUploadRequest;
+import com.google.android.gms.locationsharingreporter.PeriodicLocationUploadRequest;
+import com.google.android.gms.locationsharingreporter.StartLocationReportingRequest;
+import com.google.android.gms.locationsharingreporter.StopLocationReportingRequest;
+import com.google.android.gms.locationsharingreporter.NoticeAckedUpdateRequest;
+
+interface ILocationSharingReporterService {
+ void uploadLocation(ILocationUploadCallbacks callback, in Account account, in LocationUploadRequest request, in ApiMetadata apiMetadata) = 0;
+ void getReportingStatus(ILocationReportingStatusCallbacks callback, in Account account, in ApiMetadata apiMetadata) = 1;
+ void syncReportingStatus(IStatusCallback callback, in Account account, in ApiMetadata apiMetadata) = 2;
+ void periodicLocationUpload(IStatusCallback callback, in Account account, in PeriodicLocationUploadRequest request, in ApiMetadata apiMetadata) = 3;
+ void startLocationReporting(IStatusCallback callback, in Account account, in StartLocationReportingRequest request, in ApiMetadata apiMetadata) = 4;
+ void stopLocationReporting(IStatusCallback callback, in Account account, in StopLocationReportingRequest request, in ApiMetadata apiMetadata) = 5;
+ void updateNoticeState(IStatusCallback callback, in Account account, in NoticeAckedUpdateRequest request, in ApiMetadata apiMetadata) = 6;
+ void getReportingIssues(ILocationReportingIssuesCallback callback, in Account account, in ApiMetadata apiMetadata) = 7;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/internal/ILocationUploadCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/internal/ILocationUploadCallbacks.aidl
new file mode 100644
index 0000000..9bd0f8b
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/locationsharingreporter/internal/ILocationUploadCallbacks.aidl
@@ -0,0 +1,13 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.locationsharingreporter.internal;
+
+import com.google.android.gms.common.api.ApiMetadata;
+import com.google.android.gms.common.api.Status;
+import com.google.android.gms.locationsharingreporter.LocationUploadResponse;
+
+interface ILocationUploadCallbacks {
+ void onLocationUploadResponse(in Status status, in LocationUploadResponse locationUploadResponse, in ApiMetadata apiMetadata) = 0;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/auth/IApiTokenService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/maps/auth/IApiTokenService.aidl
new file mode 100644
index 0000000..122395e
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/maps/auth/IApiTokenService.aidl
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.maps.auth;
+
+import android.os.Bundle;
+
+interface IApiTokenService {
+ Bundle requestApiToken(in Bundle params);
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/AppMetadata.aidl b/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/AppMetadata.aidl
new file mode 100644
index 0000000..005edc3
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/AppMetadata.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.measurement.internal;
+
+parcelable AppMetadata;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/ConditionalUserPropertyParcel.aidl b/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/ConditionalUserPropertyParcel.aidl
new file mode 100644
index 0000000..de59ae5
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/ConditionalUserPropertyParcel.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.measurement.internal;
+
+parcelable ConditionalUserPropertyParcel;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/EventParcel.aidl b/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/EventParcel.aidl
new file mode 100644
index 0000000..372d66f
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/EventParcel.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.measurement.internal;
+
+parcelable EventParcel;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/IMeasurementService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/IMeasurementService.aidl
new file mode 100644
index 0000000..380c045
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/IMeasurementService.aidl
@@ -0,0 +1,27 @@
+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 sendEvent(in EventParcel event, in AppMetadata app) = 0;
+ void sendUserProperty(in UserAttributeParcel attribute, in AppMetadata app) = 1;
+ void sendAppLaunch(in AppMetadata app) = 3;
+// void f5(in EventParcel event, String p1, String p2) = 4;
+ void sendMeasurementEnabled(in AppMetadata p0) = 5;
+ List getAllUserProperties(in AppMetadata app, boolean includeInternal) = 6;
+// byte[] f9(in EventParcel event, String p1) = 8;
+ void sendCurrentScreen(long id, String name, String referrer, String packageName) = 9;
+ String getAppInstanceId(in AppMetadata app) = 10;
+ void sendConditionalUserProperty(in ConditionalUserPropertyParcel property, in AppMetadata app) = 11;
+// void f13(ConditionalUserPropertyParcel p0) = 12;
+ List getUserProperties(String origin, String propertyNamePrefix, boolean includeInternal, in AppMetadata app) = 13;
+ List getUserPropertiesAs(String packageName, String origin, String propertyNamePrefix, boolean includeInternal) = 14;
+ List getConditionalUserProperties(String origin, String propertyNamePrefix, in AppMetadata app) = 15;
+ List getConditionalUserPropertiesAs(String packageName, String origin, String propertyNamePrefix) = 16;
+ void reset(in AppMetadata app) = 17;
+ void sendDefaultEventParameters(in Bundle params, in AppMetadata app) = 18;
+ void sendConsentSettings(in AppMetadata app) = 19;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/UserAttributeParcel.aidl b/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/UserAttributeParcel.aidl
new file mode 100644
index 0000000..efb3b72
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/measurement/internal/UserAttributeParcel.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.measurement.internal;
+
+parcelable UserAttributeParcel;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/people/internal/IPeopleCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/people/internal/IPeopleCallbacks.aidl
new file mode 100644
index 0000000..75db9fa
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/people/internal/IPeopleCallbacks.aidl
@@ -0,0 +1,12 @@
+package com.google.android.gms.people.internal;
+
+import android.os.Bundle;
+import android.os.ParcelFileDescriptor;
+
+import com.google.android.gms.common.data.DataHolder;
+
+interface IPeopleCallbacks {
+ void onDataHolder(int code, in Bundle resolution, in DataHolder holder) = 1;
+ void onDataHolders(int code, in Bundle resolution, in DataHolder[] holders) = 3;
+ void onParcelFileDescriptor(int code, in Bundle resolution, in ParcelFileDescriptor fileDescriptor, in Bundle extras) = 4;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/people/internal/IPeopleService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/people/internal/IPeopleService.aidl
new file mode 100644
index 0000000..62ae147
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/people/internal/IPeopleService.aidl
@@ -0,0 +1,44 @@
+package com.google.android.gms.people.internal;
+
+import android.os.Bundle;
+
+import com.google.android.gms.people.internal.IPeopleCallbacks;
+import com.google.android.gms.common.server.FavaDiagnosticsEntity;
+import com.google.android.gms.common.internal.ICancelToken;
+
+interface IPeopleService {
+ // void loadOwners1(IPeopleCallbacks var1, boolean var2, boolean var3, String var4, String var5);
+ // void loadCirclesOld(IPeopleCallbacks var1, String var2, String var3, String var4, int var5, String var6);
+ // void loadPeopleOld(IPeopleCallbacks var1, String var2, String var3, String var4, in List var5, int var6, boolean var7, long var8);
+ // void loadAvatarLegacy(IPeopleCallbacks var1, String var2, int var3, int var4);
+ // void loadContactImageLegacy(IPeopleCallbacks var1, long var2, boolean var4);
+ // void blockPerson(IPeopleCallbacks var1, String var2, String var3, String var4, boolean var5);
+ // Bundle syncRawContact(in Uri var1);
+ // void loadPeopleForAggregation8(IPeopleCallbacks var1, String var2, String var3, String var4, boolean var5, int var6);
+ // void setSyncToContactsSettings(IPeopleCallbacks var1, String var2, boolean var3, in String[] var4);
+
+ // Bundle startSync(String var1, String var2);
+ // void requestSync(IPeopleCallbacks var1, String var2, String var3, in Uri var4);
+ // void updatePersonCirclesOld(IPeopleCallbacks var1, String var2, String var3, String var4, in List var5, in List var6);
+ // boolean isSyncToContactsEnabled();
+ // Bundle requestSyncOld(String var1, String var2);
+ // void setAvatar(IPeopleCallbacks var1, String var2, String var3, in Uri var4, boolean var5);
+ // void loadCircles(IPeopleCallbacks var1, String var2, String var3, String var4, int var5, String var6, boolean var7);
+ // Bundle requestSyncOld19(String var1, String var2, long var3);
+ // void loadPeople20(IPeopleCallbacks var1, String var2, String var3, String var4, in List var5, int var6, boolean var7, long var8, String var10, int var11);
+ // void loadPeopleLive(IPeopleCallbacks var1, String var2, String var3, String var4, int var5, String var6);
+ // void updatePersonCircles(IPeopleCallbacks var1, String var2, String var3, String var4, in List var5, in List var6, in FavaDiagnosticsEntity var7);
+ // void loadRemoteImageLegacy(IPeopleCallbacks var1, String var2);
+ // void loadContactsGaiaIds24(IPeopleCallbacks var1, String var2, String var3);
+ // Bundle requestSyncOld25(String var1, String var2, long var3, boolean var5);
+ // void addCircle(IPeopleCallbacks var1, String var2, String var3, String var4, String var5);
+ // void addPeopleToCircle(IPeopleCallbacks var1, String var2, String var3, String var4, in List var5);
+
+ Bundle registerDataChangedListener(IPeopleCallbacks callbacks, boolean register, String var3, String var4, int scopes) = 10;
+ void loadCircles(IPeopleCallbacks callbacks, String account, String pageGaiaId, String circleId, int type, String var6, boolean var7) = 18;
+ Bundle requestSync(String account, String var2, long var3, boolean var5, boolean var6) = 204;
+ void loadOwners(IPeopleCallbacks callbacks, boolean var2, boolean var3, String account, String var5, int sortOrder) = 304;
+ void loadPeopleForAggregation(IPeopleCallbacks callbacks, String account, String var3, String filter, int var5, boolean var6, int var7, int var8, String var9, boolean var10, int var11, int var12) = 401;
+ ICancelToken loadOwnerAvatar(IPeopleCallbacks callbacks, String account, String pageId, int size, int flags) = 504;
+ ICancelToken loadAutocompleteList(IPeopleCallbacks callbacks, String account, String pageId, boolean directorySearch, String var5, String query, int autocompleteType, int var8, int numberOfResults, boolean var10) = 506;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/phenotype/Configurations.aidl b/play-services-api/src/main/aidl/com/google/android/gms/phenotype/Configurations.aidl
new file mode 100644
index 0000000..33ccf3d
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/phenotype/Configurations.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.phenotype;
+
+parcelable Configurations;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/phenotype/DogfoodsToken.aidl b/play-services-api/src/main/aidl/com/google/android/gms/phenotype/DogfoodsToken.aidl
new file mode 100644
index 0000000..991fca0
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/phenotype/DogfoodsToken.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.phenotype;
+
+parcelable DogfoodsToken;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/phenotype/ExperimentTokens.aidl b/play-services-api/src/main/aidl/com/google/android/gms/phenotype/ExperimentTokens.aidl
new file mode 100644
index 0000000..4b6ba4f
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/phenotype/ExperimentTokens.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.phenotype;
+
+parcelable ExperimentTokens;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/phenotype/Flag.aidl b/play-services-api/src/main/aidl/com/google/android/gms/phenotype/Flag.aidl
new file mode 100644
index 0000000..f91175f
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/phenotype/Flag.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.phenotype;
+
+parcelable Flag;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/phenotype/FlagOverrides.aidl b/play-services-api/src/main/aidl/com/google/android/gms/phenotype/FlagOverrides.aidl
new file mode 100644
index 0000000..bdf15a6
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/phenotype/FlagOverrides.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.phenotype;
+
+parcelable FlagOverrides;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/phenotype/RegistrationInfo.aidl b/play-services-api/src/main/aidl/com/google/android/gms/phenotype/RegistrationInfo.aidl
new file mode 100644
index 0000000..644ba2d
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/phenotype/RegistrationInfo.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.phenotype;
+
+parcelable RegistrationInfo;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/phenotype/internal/IPhenotypeCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/phenotype/internal/IPhenotypeCallbacks.aidl
new file mode 100644
index 0000000..3c29b8b
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/phenotype/internal/IPhenotypeCallbacks.aidl
@@ -0,0 +1,27 @@
+package com.google.android.gms.phenotype.internal;
+
+import com.google.android.gms.common.api.Status;
+import com.google.android.gms.phenotype.Configurations;
+import com.google.android.gms.phenotype.DogfoodsToken;
+import com.google.android.gms.phenotype.ExperimentTokens;
+import com.google.android.gms.phenotype.Flag;
+import com.google.android.gms.phenotype.FlagOverrides;
+
+interface IPhenotypeCallbacks {
+ oneway void onRegistered(in Status status) = 0;
+ oneway void onWeakRegistered(in Status status) = 1;
+ oneway void onUnregistered(in Status status) = 2;
+ oneway void onConfiguration(in Status status, in Configurations configurations) = 3;
+ oneway void onCommitedToConfiguration(in Status status) = 4;
+ oneway void onExperimentTokens(in Status status, in ExperimentTokens experimentTokens) = 5;
+ oneway void onDogfoodsToken(in Status status, in DogfoodsToken dogfoodsToken) = 6;
+ oneway void onDogfoodsTokenSet(in Status status) = 7;
+ oneway void onFlag(in Status status, in Flag flag) = 8;
+ oneway void onCommittedConfiguration(in Status status, in Configurations configuration) = 9;
+ oneway void onSyncFinished(in Status status, long p1) = 10;
+ oneway void onFlagOverridesSet(in Status status) = 11;
+ oneway void onFlagOverrides(in Status status, in FlagOverrides overrides) = 12;
+ oneway void onAppSpecificPropertiesSet(in Status status) = 13;
+
+ oneway void onServingVersion(in Status status, long version) = 15;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/phenotype/internal/IPhenotypeService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/phenotype/internal/IPhenotypeService.aidl
new file mode 100644
index 0000000..eb6113d
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/phenotype/internal/IPhenotypeService.aidl
@@ -0,0 +1,35 @@
+package com.google.android.gms.phenotype.internal;
+
+import com.google.android.gms.common.api.internal.IStatusCallback;
+import com.google.android.gms.phenotype.internal.IPhenotypeCallbacks;
+import com.google.android.gms.phenotype.Flag;
+import com.google.android.gms.phenotype.RegistrationInfo;
+
+interface IPhenotypeService {
+ oneway void register(IPhenotypeCallbacks callbacks, String packageName, int version, in String[] p3, in byte[] p4) = 0; // returns via callbacks.onRegistered()
+ oneway void weakRegister(IPhenotypeCallbacks callbacks, String packageName, int version, in String[] p3, in int[] p4, in byte[] p5) = 1; // returns via callbacks.onWeakRegistered()
+ oneway void unregister(IPhenotypeCallbacks callbacks, String packageName) = 2; // returns via callbacks.onUnregistered()
+ oneway void getConfigurationSnapshot(IPhenotypeCallbacks callbacks, String packageName, String user) = 3; // returns via callbacks.onConfiguration()
+ oneway void commitToConfiguration(IPhenotypeCallbacks callbacks, String snapshotToken) = 4; // returns via callbacks.onCommitedToConfiguration()
+ oneway void getExperimentTokens(IPhenotypeCallbacks callbacks, String packageName, String logSourceName) = 5; // returns via callbacks.onExperimentTokens()
+ oneway void getDogfoodsToken(IPhenotypeCallbacks callbacks) = 6; // returns via callbacks.onDogfoodsToken()
+ oneway void setDogfoodsToken(IPhenotypeCallbacks callbacks, in byte[] p1) = 7; // returns via callbacks.onDogfoodsTokenSet()
+ oneway void getFlag(IPhenotypeCallbacks callbacks, String packageName, String name, int type) = 8; // returns via callbacks.onFlag()
+ oneway void getCommitedConfiguration(IPhenotypeCallbacks callbacks, String packageName) = 9; // returns via callbacks.onCommittedConfiguration()
+ oneway void getConfigurationSnapshotWithToken(IPhenotypeCallbacks callbacks, String packageName, String user, String token) = 10; // returns via callbacks.onConfiguration()
+ oneway void syncAfterOperation(IPhenotypeCallbacks callbacks, String packageName, long version) = 11; // returns via callbacks.onSyncFinished()
+ oneway void registerSync(IPhenotypeCallbacks callbacks, String packageName, int version, in String[] p3, in byte[] p4, String p5, String p6) = 12; // returns via callbacks.onConfiguration()
+ oneway void setFlagOverrides(IPhenotypeCallbacks callbacks, String packageName, String user, String flagName, int flagType, int flagDataType, String flagValue) = 13; // returns via callbacks.onFlagOverridesSet()
+ oneway void deleteFlagOverrides(IPhenotypeCallbacks callbacks, String packageName, String user, String flagName) = 14; // returns via callbacks.onFlagOverrides()
+ oneway void listFlagOverrides(IPhenotypeCallbacks callbacks, String packageName, String user, String flagName) = 15; // returns via callbacks.onFlagOverrides()
+
+ oneway void clearFlagOverrides(IPhenotypeCallbacks callbacks, String packageName, String user) = 17; // returns via callbacks.onFlagOverridesSet()
+ oneway void bulkRegister(IPhenotypeCallbacks callbacks, in RegistrationInfo[] infos) = 18; // returns via callbacks.onRegister()
+ oneway void setAppSpecificProperties(IPhenotypeCallbacks callbacks, String packageName, in byte[] p2) = 19; // returns via callbacks.onAppSpecificPropertiesSet()
+
+ oneway void getServingVersion(IPhenotypeCallbacks callbacks) = 21; // returns via callbacks.onServingVersion()
+ oneway void getExperimentTokensForLogging(IPhenotypeCallbacks callbacks, String packageName, String logSourceName, String p3, String clientPackageName) = 22; // returns via callbacks.onExperimentTokens()
+ oneway void syncAllAfterOperation(IPhenotypeCallbacks callbacks, long p1) = 23; // returns via callbacks.onSyncFinished()
+ oneway void setRuntimeProperties(IStatusCallback callbacks, String p1, in byte[] p2) = 24;
+// oneway void setExternalExperiments(IStatusCallback callbacks, String p1, in List p2) = 25;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/plus/internal/IPlusOneButtonCreator.aidl b/play-services-api/src/main/aidl/com/google/android/gms/plus/internal/IPlusOneButtonCreator.aidl
new file mode 100644
index 0000000..7e2121d
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/plus/internal/IPlusOneButtonCreator.aidl
@@ -0,0 +1,8 @@
+package com.google.android.gms.plus.internal;
+
+import com.google.android.gms.dynamic.IObjectWrapper;
+
+interface IPlusOneButtonCreator {
+ IObjectWrapper create(IObjectWrapper context, int size, int annotation, String url, int activityRequestCode);
+ IObjectWrapper createForAccount(IObjectWrapper context, int size, int annotation, String url, String account);
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/potokens/PoToken.aidl b/play-services-api/src/main/aidl/com/google/android/gms/potokens/PoToken.aidl
new file mode 100644
index 0000000..8cf0bb7
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/potokens/PoToken.aidl
@@ -0,0 +1,8 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.potokens;
+
+parcelable PoToken;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/potokens/internal/IPoTokensService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/potokens/internal/IPoTokensService.aidl
new file mode 100644
index 0000000..938c848
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/potokens/internal/IPoTokensService.aidl
@@ -0,0 +1,14 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.potokens.internal;
+
+import com.google.android.gms.common.api.internal.IStatusCallback;
+import com.google.android.gms.potokens.internal.ITokenCallbacks;
+
+interface IPoTokensService {
+ void responseStatus(IStatusCallback call, int code) = 1;
+ void responseStatusToken(ITokenCallbacks call, int i, in byte[] bArr) = 2;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/potokens/internal/ITokenCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/potokens/internal/ITokenCallbacks.aidl
new file mode 100644
index 0000000..55c71df
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/potokens/internal/ITokenCallbacks.aidl
@@ -0,0 +1,13 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.potokens.internal;
+
+import com.google.android.gms.common.api.Status;
+import com.google.android.gms.potokens.PoToken;
+
+interface ITokenCallbacks {
+ void responseToken(in Status status, in PoToken token) = 1;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/pseudonymous/PseudonymousIdToken.aidl b/play-services-api/src/main/aidl/com/google/android/gms/pseudonymous/PseudonymousIdToken.aidl
new file mode 100644
index 0000000..b8d88c1
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/pseudonymous/PseudonymousIdToken.aidl
@@ -0,0 +1,8 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.pseudonymous;
+
+parcelable PseudonymousIdToken;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/pseudonymous/internal/IPseudonymousIdCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/pseudonymous/internal/IPseudonymousIdCallbacks.aidl
new file mode 100644
index 0000000..f6a47de
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/pseudonymous/internal/IPseudonymousIdCallbacks.aidl
@@ -0,0 +1,15 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.pseudonymous.internal;
+
+import com.google.android.gms.common.api.Status;
+import com.google.android.gms.pseudonymous.PseudonymousIdToken;
+
+interface IPseudonymousIdCallbacks {
+ void onGetTokenResponse(in Status status, in PseudonymousIdToken token) = 0;
+ void onSetTokenResponse(in Status status) = 1;
+ void onGetLastResetWallTimeMsResponse(in Status status, long time) = 2;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/pseudonymous/internal/IPseudonymousIdService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/pseudonymous/internal/IPseudonymousIdService.aidl
new file mode 100644
index 0000000..e99f7df
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/pseudonymous/internal/IPseudonymousIdService.aidl
@@ -0,0 +1,15 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.pseudonymous.internal;
+
+import com.google.android.gms.pseudonymous.internal.IPseudonymousIdCallbacks;
+import com.google.android.gms.pseudonymous.PseudonymousIdToken;
+
+interface IPseudonymousIdService {
+ void getToken(IPseudonymousIdCallbacks call) = 0;
+ void setToken(IPseudonymousIdCallbacks call, in PseudonymousIdToken token) = 1;
+ void getLastResetWallTimeMs(IPseudonymousIdCallbacks callbacks) = 2;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/reminders/AccountState.aidl b/play-services-api/src/main/aidl/com/google/android/gms/reminders/AccountState.aidl
new file mode 100644
index 0000000..24ae0ff
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/reminders/AccountState.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.reminders;
+
+parcelable AccountState;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/reminders/CreateReminderOptionsInternal.aidl b/play-services-api/src/main/aidl/com/google/android/gms/reminders/CreateReminderOptionsInternal.aidl
new file mode 100644
index 0000000..142dded
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/reminders/CreateReminderOptionsInternal.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.reminders;
+
+parcelable CreateReminderOptionsInternal;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/reminders/LoadRemindersOptions.aidl b/play-services-api/src/main/aidl/com/google/android/gms/reminders/LoadRemindersOptions.aidl
new file mode 100644
index 0000000..ff41844
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/reminders/LoadRemindersOptions.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.reminders;
+
+parcelable LoadRemindersOptions;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/reminders/ReindexDueDatesOptions.aidl b/play-services-api/src/main/aidl/com/google/android/gms/reminders/ReindexDueDatesOptions.aidl
new file mode 100644
index 0000000..55ac1be
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/reminders/ReindexDueDatesOptions.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.reminders;
+
+parcelable ReindexDueDatesOptions;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/reminders/UpdateRecurrenceOptions.aidl b/play-services-api/src/main/aidl/com/google/android/gms/reminders/UpdateRecurrenceOptions.aidl
new file mode 100644
index 0000000..79f91de
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/reminders/UpdateRecurrenceOptions.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.reminders;
+
+parcelable UpdateRecurrenceOptions;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/reminders/internal/IRemindersCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/reminders/internal/IRemindersCallbacks.aidl
new file mode 100644
index 0000000..5e5506e
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/reminders/internal/IRemindersCallbacks.aidl
@@ -0,0 +1,17 @@
+package com.google.android.gms.reminders.internal;
+
+import com.google.android.gms.common.api.Status;
+import com.google.android.gms.common.data.DataHolder;
+
+import com.google.android.gms.reminders.AccountState;
+
+interface IRemindersCallbacks {
+ void onDataHolder(in DataHolder data, in Status status) = 0;
+ void onStatus(in Status status) = 1;
+ void onNoStatus() = 2;
+ void onDataHolderNoStatus(in DataHolder data, in Status status) = 3;
+ void onBool(boolean b, in Status status) = 4;
+ void onString(in String s, in Status status) = 5;
+ void onAccountState(in AccountState accountState, in Status status) = 6;
+ void onAsyncDataHolder(in DataHolder data) = 7;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/reminders/internal/IRemindersListener.aidl b/play-services-api/src/main/aidl/com/google/android/gms/reminders/internal/IRemindersListener.aidl
new file mode 100644
index 0000000..2added9
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/reminders/internal/IRemindersListener.aidl
@@ -0,0 +1,5 @@
+package com.google.android.gms.reminders.internal;
+
+interface IRemindersListener {
+
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/reminders/internal/IRemindersService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/reminders/internal/IRemindersService.aidl
new file mode 100644
index 0000000..f998648
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/reminders/internal/IRemindersService.aidl
@@ -0,0 +1,37 @@
+package com.google.android.gms.reminders.internal;
+
+import com.google.android.gms.reminders.internal.IRemindersCallbacks;
+
+import com.google.android.gms.reminders.AccountState;
+import com.google.android.gms.reminders.CreateReminderOptionsInternal;
+import com.google.android.gms.reminders.LoadRemindersOptions;
+import com.google.android.gms.reminders.ReindexDueDatesOptions;
+import com.google.android.gms.reminders.UpdateRecurrenceOptions;
+import com.google.android.gms.reminders.model.CustomizedSnoozePresetEntity;
+import com.google.android.gms.reminders.model.TaskEntity;
+import com.google.android.gms.reminders.model.TaskIdEntity;
+
+interface IRemindersService {
+ void loadReminders(IRemindersCallbacks callbacks, in LoadRemindersOptions options) = 0;
+ void addListener(IRemindersCallbacks callbacks) = 1;
+ void createReminder(IRemindersCallbacks callbacks, in TaskEntity task) = 2;
+ void updateReminder(IRemindersCallbacks callbacks, in TaskEntity task) = 3;
+ void deleteReminder(IRemindersCallbacks callbacks, in TaskIdEntity taskId) = 4;
+ void bumpReminder(IRemindersCallbacks callbacks, in TaskIdEntity taskId) = 5;
+ void hasUpcomingReminders(IRemindersCallbacks callbacks) = 6;
+ void createRecurrence(IRemindersCallbacks callbacks, in TaskEntity task) = 7;
+ void updateRecurrence(IRemindersCallbacks callbacks, String s1, in TaskEntity task, in UpdateRecurrenceOptions options) = 8;
+ void deleteRecurrence(IRemindersCallbacks callbacks, String s1, in UpdateRecurrenceOptions options) = 9;
+ void changeRecurrence(IRemindersCallbacks callbacks, String s1, in TaskEntity task, in UpdateRecurrenceOptions options) = 10;
+ void makeTaskRecurring(IRemindersCallbacks callbacks, in TaskEntity task) = 11;
+ void makeRecurrenceSingleInstance(IRemindersCallbacks callbacks, String s1, in TaskEntity task, in UpdateRecurrenceOptions options) = 12;
+ void clearListeners() = 13;
+ void batchUpdateReminders(IRemindersCallbacks callbacks, in List tasks) = 14;
+ void createReminderWithOptions(IRemindersCallbacks callbacks, in TaskEntity task, in CreateReminderOptionsInternal options) = 15;
+ void getCustomizedSnoozePreset(IRemindersCallbacks callbacks) = 16;
+ void setCustomizedSnoozePreset(IRemindersCallbacks callbacks, in CustomizedSnoozePresetEntity preset) = 17;
+ void setAccountState(IRemindersCallbacks callbacks, in AccountState accountState) = 18;
+ void getAccountState(IRemindersCallbacks callbacks) = 19;
+ void checkReindexDueDatesNeeded(IRemindersCallbacks callbacks, in ReindexDueDatesOptions options) = 20;
+ void reindexDueDates(IRemindersCallbacks callbacks, in ReindexDueDatesOptions options) = 21;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/reminders/model/CustomizedSnoozePresetEntity.aidl b/play-services-api/src/main/aidl/com/google/android/gms/reminders/model/CustomizedSnoozePresetEntity.aidl
new file mode 100644
index 0000000..bbb9083
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/reminders/model/CustomizedSnoozePresetEntity.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.reminders.model;
+
+parcelable CustomizedSnoozePresetEntity;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/reminders/model/TaskEntity.aidl b/play-services-api/src/main/aidl/com/google/android/gms/reminders/model/TaskEntity.aidl
new file mode 100644
index 0000000..9a3883c
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/reminders/model/TaskEntity.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.reminders.model;
+
+parcelable TaskEntity;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/reminders/model/TaskIdEntity.aidl b/play-services-api/src/main/aidl/com/google/android/gms/reminders/model/TaskIdEntity.aidl
new file mode 100644
index 0000000..a4c4148
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/reminders/model/TaskIdEntity.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.reminders.model;
+
+parcelable TaskIdEntity;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/administration/internal/ISearchAdministrationService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/administration/internal/ISearchAdministrationService.aidl
new file mode 100644
index 0000000..404544c
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/administration/internal/ISearchAdministrationService.aidl
@@ -0,0 +1,5 @@
+package com.google.android.gms.search.administration.internal;
+
+interface ISearchAdministrationService {
+
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/ClearCorpusRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/ClearCorpusRequest.aidl
new file mode 100644
index 0000000..9f71893
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/ClearCorpusRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.corpora;
+
+parcelable ClearCorpusRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/GetCorpusInfoRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/GetCorpusInfoRequest.aidl
new file mode 100644
index 0000000..11b0a4d
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/GetCorpusInfoRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.corpora;
+
+parcelable GetCorpusInfoRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/GetCorpusStatusRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/GetCorpusStatusRequest.aidl
new file mode 100644
index 0000000..b2e549d
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/GetCorpusStatusRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.corpora;
+
+parcelable GetCorpusStatusRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/GetCorpusStatusResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/GetCorpusStatusResponse.aidl
new file mode 100644
index 0000000..a837a7d
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/GetCorpusStatusResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.corpora;
+
+parcelable GetCorpusStatusResponse;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/RequestIndexingRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/RequestIndexingRequest.aidl
new file mode 100644
index 0000000..ad68ef3
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/RequestIndexingRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.corpora;
+
+parcelable RequestIndexingRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/RequestIndexingResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/RequestIndexingResponse.aidl
new file mode 100644
index 0000000..7aaa548
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/RequestIndexingResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.corpora;
+
+parcelable RequestIndexingResponse;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/internal/ISearchCorporaCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/internal/ISearchCorporaCallbacks.aidl
new file mode 100644
index 0000000..863b016
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/internal/ISearchCorporaCallbacks.aidl
@@ -0,0 +1,9 @@
+package com.google.android.gms.search.corpora.internal;
+
+import com.google.android.gms.search.corpora.RequestIndexingResponse;
+import com.google.android.gms.search.corpora.GetCorpusStatusResponse;
+
+interface ISearchCorporaCallbacks {
+ void onRequestIndexing(in RequestIndexingResponse response) = 1;
+ void onGetCorpusStatus(in GetCorpusStatusResponse response) = 3;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/internal/ISearchCorporaService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/internal/ISearchCorporaService.aidl
new file mode 100644
index 0000000..fe2073c
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/corpora/internal/ISearchCorporaService.aidl
@@ -0,0 +1,14 @@
+package com.google.android.gms.search.corpora.internal;
+
+import com.google.android.gms.search.corpora.ClearCorpusRequest;
+import com.google.android.gms.search.corpora.GetCorpusStatusRequest;
+import com.google.android.gms.search.corpora.GetCorpusInfoRequest;
+import com.google.android.gms.search.corpora.RequestIndexingRequest;
+import com.google.android.gms.search.corpora.internal.ISearchCorporaCallbacks;
+
+interface ISearchCorporaService {
+ void requestIndexing(in RequestIndexingRequest request, ISearchCorporaCallbacks callbacks) = 1;
+ void clearCorpus(in ClearCorpusRequest request, ISearchCorporaCallbacks callbacks) = 2;
+ void getCorpusStatus(in GetCorpusStatusRequest request, ISearchCorporaCallbacks callbacks) = 3;
+ void getCorpusInfo(in GetCorpusInfoRequest request, ISearchCorporaCallbacks callbacks) = 4;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetCurrentExperimentIdsRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetCurrentExperimentIdsRequest.aidl
new file mode 100644
index 0000000..426cbe4
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetCurrentExperimentIdsRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.global;
+
+parcelable GetCurrentExperimentIdsRequest;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetCurrentExperimentIdsResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetCurrentExperimentIdsResponse.aidl
new file mode 100644
index 0000000..8fdb456
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetCurrentExperimentIdsResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.global;
+
+parcelable GetCurrentExperimentIdsResponse;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetGlobalSearchSourcesRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetGlobalSearchSourcesRequest.aidl
new file mode 100644
index 0000000..986ab4d
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetGlobalSearchSourcesRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.global;
+
+parcelable GetGlobalSearchSourcesRequest;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetGlobalSearchSourcesResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetGlobalSearchSourcesResponse.aidl
new file mode 100644
index 0000000..86d52a1
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetGlobalSearchSourcesResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.global;
+
+parcelable GetGlobalSearchSourcesResponse;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetPendingExperimentIdsRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetPendingExperimentIdsRequest.aidl
new file mode 100644
index 0000000..8d7382e
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetPendingExperimentIdsRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.global;
+
+parcelable GetPendingExperimentIdsRequest;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetPendingExperimentIdsResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetPendingExperimentIdsResponse.aidl
new file mode 100644
index 0000000..ca99ad5
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/global/GetPendingExperimentIdsResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.global;
+
+parcelable GetPendingExperimentIdsResponse;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/global/SetExperimentIdsRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/global/SetExperimentIdsRequest.aidl
new file mode 100644
index 0000000..2bd4d8b
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/global/SetExperimentIdsRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.global;
+
+parcelable SetExperimentIdsRequest;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/global/SetExperimentIdsResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/global/SetExperimentIdsResponse.aidl
new file mode 100644
index 0000000..ff55276
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/global/SetExperimentIdsResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.global;
+
+parcelable SetExperimentIdsResponse;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/global/SetIncludeInGlobalSearchRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/global/SetIncludeInGlobalSearchRequest.aidl
new file mode 100644
index 0000000..79cbb17
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/global/SetIncludeInGlobalSearchRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.global;
+
+parcelable SetIncludeInGlobalSearchRequest;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/global/SetIncludeInGlobalSearchResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/global/SetIncludeInGlobalSearchResponse.aidl
new file mode 100644
index 0000000..a5f2d6d
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/global/SetIncludeInGlobalSearchResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.global;
+
+parcelable SetIncludeInGlobalSearchResponse;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/global/internal/IGlobalSearchAdminCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/global/internal/IGlobalSearchAdminCallbacks.aidl
new file mode 100644
index 0000000..b08d953
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/global/internal/IGlobalSearchAdminCallbacks.aidl
@@ -0,0 +1,16 @@
+package com.google.android.gms.search.global.internal;
+
+import com.google.android.gms.search.global.GetCurrentExperimentIdsResponse;
+import com.google.android.gms.search.global.GetGlobalSearchSourcesResponse;
+import com.google.android.gms.search.global.GetPendingExperimentIdsResponse;
+import com.google.android.gms.search.global.SetExperimentIdsResponse;
+import com.google.android.gms.search.global.SetIncludeInGlobalSearchResponse;
+
+interface IGlobalSearchAdminCallbacks {
+ void onGetGlobalSearchSourcesResponse(in GetGlobalSearchSourcesResponse request) = 1;
+ void onSetExperimentIdsResponse(in SetExperimentIdsResponse response) = 2;
+ void onGetCurrentExperimentIdsResponse(in GetCurrentExperimentIdsResponse response) = 3;
+ void onGetPendingExperimentIdsResponse(in GetPendingExperimentIdsResponse response) = 4;
+
+ void onSetIncludeInGlobalSearchResponse(in SetIncludeInGlobalSearchResponse response) = 7;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/global/internal/IGlobalSearchAdminService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/global/internal/IGlobalSearchAdminService.aidl
new file mode 100644
index 0000000..95bc32a
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/global/internal/IGlobalSearchAdminService.aidl
@@ -0,0 +1,17 @@
+package com.google.android.gms.search.global.internal;
+
+import com.google.android.gms.search.global.GetCurrentExperimentIdsRequest;
+import com.google.android.gms.search.global.GetGlobalSearchSourcesRequest;
+import com.google.android.gms.search.global.GetPendingExperimentIdsRequest;
+import com.google.android.gms.search.global.SetExperimentIdsRequest;
+import com.google.android.gms.search.global.SetIncludeInGlobalSearchRequest;
+import com.google.android.gms.search.global.internal.IGlobalSearchAdminCallbacks;
+
+interface IGlobalSearchAdminService {
+ void getGlobalSearchSources(in GetGlobalSearchSourcesRequest request, IGlobalSearchAdminCallbacks callbacks) = 1;
+ void setExperimentIds(in SetExperimentIdsRequest request, IGlobalSearchAdminCallbacks callbacks) = 2;
+ void getCurrentExperimentIds(in GetCurrentExperimentIdsRequest request, IGlobalSearchAdminCallbacks callbacks) = 3;
+ void getPendingExperimentIds(in GetPendingExperimentIdsRequest request, IGlobalSearchAdminCallbacks callbacks) = 4;
+
+ void setIncludeInGlobalSearch(in SetIncludeInGlobalSearchRequest request, IGlobalSearchAdminCallbacks callbacks) = 7;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/queries/QueryRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/queries/QueryRequest.aidl
new file mode 100644
index 0000000..1986e95
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/queries/QueryRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.queries;
+
+parcelable QueryRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/queries/QueryResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/queries/QueryResponse.aidl
new file mode 100644
index 0000000..9704725
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/queries/QueryResponse.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.search.queries;
+
+parcelable QueryResponse;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/queries/internal/ISearchQueriesCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/queries/internal/ISearchQueriesCallbacks.aidl
new file mode 100644
index 0000000..8bcb891
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/queries/internal/ISearchQueriesCallbacks.aidl
@@ -0,0 +1,7 @@
+package com.google.android.gms.search.queries.internal;
+
+import com.google.android.gms.search.queries.QueryResponse;
+
+interface ISearchQueriesCallbacks {
+ void onQuery(in QueryResponse response) = 1;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/search/queries/internal/ISearchQueriesService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/search/queries/internal/ISearchQueriesService.aidl
new file mode 100644
index 0000000..091cdae
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/search/queries/internal/ISearchQueriesService.aidl
@@ -0,0 +1,8 @@
+package com.google.android.gms.search.queries.internal;
+
+import com.google.android.gms.search.queries.QueryRequest;
+import com.google.android.gms.search.queries.internal.ISearchQueriesCallbacks;
+
+interface ISearchQueriesService {
+ void query(in QueryRequest request, ISearchQueriesCallbacks callbacks) = 1;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/semanticlocation/PlaceCandidate.aidl b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocation/PlaceCandidate.aidl
new file mode 100644
index 0000000..9b89b5c
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocation/PlaceCandidate.aidl
@@ -0,0 +1,7 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.semanticlocation;
+
+parcelable PlaceCandidate;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/semanticlocation/SemanticLocationEventRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocation/SemanticLocationEventRequest.aidl
new file mode 100644
index 0000000..715a75c
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocation/SemanticLocationEventRequest.aidl
@@ -0,0 +1,7 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.semanticlocation;
+
+parcelable SemanticLocationEventRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/semanticlocation/internal/ISemanticLocationService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocation/internal/ISemanticLocationService.aidl
new file mode 100644
index 0000000..de75def
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocation/internal/ISemanticLocationService.aidl
@@ -0,0 +1,18 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.semanticlocation.internal;
+
+import android.app.PendingIntent;
+import android.os.IInterface;
+import com.google.android.gms.semanticlocation.SemanticLocationEventRequest;
+import com.google.android.gms.semanticlocation.internal.SemanticLocationParameters;
+import com.google.android.gms.common.api.internal.IStatusCallback;
+
+interface ISemanticLocationService {
+ void registerSemanticLocationEvents(in SemanticLocationParameters params, IStatusCallback callback, in SemanticLocationEventRequest request, in PendingIntent pendingIntent) = 0;
+ void unregisterSemanticLocationEvents(in SemanticLocationParameters params, IStatusCallback callback, in PendingIntent pendingIntent) = 1;
+
+ void setIncognitoMode(in SemanticLocationParameters params, IStatusCallback callback, boolean mode) = 4;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/semanticlocation/internal/SemanticLocationParameters.aidl b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocation/internal/SemanticLocationParameters.aidl
new file mode 100644
index 0000000..1ac959e
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocation/internal/SemanticLocationParameters.aidl
@@ -0,0 +1,7 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.semanticlocation.internal;
+
+parcelable SemanticLocationParameters;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/FieldMask.aidl b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/FieldMask.aidl
new file mode 100644
index 0000000..9708311
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/FieldMask.aidl
@@ -0,0 +1,7 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.semanticlocationhistory;
+
+parcelable FieldMask;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/FrequentPlace.aidl b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/FrequentPlace.aidl
new file mode 100644
index 0000000..07dcd9a
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/FrequentPlace.aidl
@@ -0,0 +1,7 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.semanticlocationhistory;
+
+parcelable FrequentPlace;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/FrequentTrip.aidl b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/FrequentTrip.aidl
new file mode 100644
index 0000000..4679af7
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/FrequentTrip.aidl
@@ -0,0 +1,7 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.semanticlocationhistory;
+
+parcelable FrequentTrip;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/InferredPlace.aidl b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/InferredPlace.aidl
new file mode 100644
index 0000000..4341be9
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/InferredPlace.aidl
@@ -0,0 +1,7 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.semanticlocationhistory;
+
+parcelable InferredPlace;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/LocationHistorySegment.aidl b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/LocationHistorySegment.aidl
new file mode 100644
index 0000000..35737b8
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/LocationHistorySegment.aidl
@@ -0,0 +1,7 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.semanticlocationhistory;
+
+parcelable LocationHistorySegment;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/LocationHistorySegmentRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/LocationHistorySegmentRequest.aidl
new file mode 100644
index 0000000..ef058fa
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/LocationHistorySegmentRequest.aidl
@@ -0,0 +1,7 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.semanticlocationhistory;
+
+parcelable LocationHistorySegmentRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/LookupParameters.aidl b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/LookupParameters.aidl
new file mode 100644
index 0000000..f0a7be5
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/LookupParameters.aidl
@@ -0,0 +1,7 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.semanticlocationhistory;
+
+parcelable LookupParameters;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/Persona.aidl b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/Persona.aidl
new file mode 100644
index 0000000..181a806
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/Persona.aidl
@@ -0,0 +1,7 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.semanticlocationhistory;
+
+parcelable Persona;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/RequestCredentials.aidl b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/RequestCredentials.aidl
new file mode 100644
index 0000000..2f1ccb7
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/RequestCredentials.aidl
@@ -0,0 +1,7 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.semanticlocationhistory;
+
+parcelable RequestCredentials;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/TimeRangeFilter.aidl b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/TimeRangeFilter.aidl
new file mode 100644
index 0000000..316a525
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/TimeRangeFilter.aidl
@@ -0,0 +1,7 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.semanticlocationhistory;
+
+parcelable TimeRangeFilter;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/UserLocationProfile.aidl b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/UserLocationProfile.aidl
new file mode 100644
index 0000000..7630d5d
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/UserLocationProfile.aidl
@@ -0,0 +1,7 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.semanticlocationhistory;
+
+parcelable UserLocationProfile;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/internal/ISemanticLocationHistoryCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/internal/ISemanticLocationHistoryCallbacks.aidl
new file mode 100644
index 0000000..18784fe
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/internal/ISemanticLocationHistoryCallbacks.aidl
@@ -0,0 +1,21 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.semanticlocationhistory.internal;
+
+import com.google.android.gms.common.api.Status;
+import com.google.android.gms.common.data.DataHolder;
+import com.google.android.gms.semanticlocationhistory.InferredPlace;
+import com.google.android.gms.semanticlocationhistory.UserLocationProfile;
+
+interface ISemanticLocationHistoryCallbacks {
+ void onSegmentsReturn(in DataHolder dataHolder) = 4;
+ void onDeleteHistoryReturn(in Status status) = 5;
+ void onEditSegmentsReturn(in Status status) = 3;
+ void onGetBackupSummaryReturn(in Status status, in List list) = 7;
+ void onGetInferredHomeReturn(in Status status, in InferredPlace inferredPlace) = 1;
+ void onGetInferredWorkReturn(in Status status, in InferredPlace inferredPlace) = 2;
+ void onGetUserLocationProfileReturn(in Status status, in UserLocationProfile userLocationProfile) = 6;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/internal/ISemanticLocationHistoryService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/internal/ISemanticLocationHistoryService.aidl
new file mode 100644
index 0000000..8377cc1
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/semanticlocationhistory/internal/ISemanticLocationHistoryService.aidl
@@ -0,0 +1,25 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.semanticlocationhistory.internal;
+
+import com.google.android.gms.semanticlocationhistory.internal.ISemanticLocationHistoryCallbacks;
+import com.google.android.gms.common.api.ApiMetadata;
+import com.google.android.gms.semanticlocationhistory.RequestCredentials;
+import com.google.android.gms.semanticlocationhistory.LocationHistorySegmentRequest;
+import com.google.android.gms.common.api.internal.IStatusCallback;
+
+interface ISemanticLocationHistoryService {
+ void getSegments(in ISemanticLocationHistoryCallbacks callback, in ApiMetadata apiMetadata, in RequestCredentials requestCredentials, in LocationHistorySegmentRequest request) = 0;
+ void onDemandBackupRestore(in IStatusCallback callback, in ApiMetadata apiMetadata, in RequestCredentials requestCredentials) = 1;
+ void onDemandBackupRestoreV2(in IStatusCallback callback, in RequestCredentials requestCredentials, in List list, in ApiMetadata apiMetadata) = 2;
+ void getInferredHome(in ISemanticLocationHistoryCallbacks callback, in RequestCredentials requestCredentials, in ApiMetadata apiMetadata) = 3;
+ void getInferredWork(in ISemanticLocationHistoryCallbacks callback, in RequestCredentials requestCredentials, in ApiMetadata apiMetadata) = 4;
+ void editSegments(in ISemanticLocationHistoryCallbacks callback, in List list, in ApiMetadata apiMetadata, in RequestCredentials requestCredentials) = 5;
+ void deleteHistory(in ISemanticLocationHistoryCallbacks callback, in RequestCredentials requestCredentials, long startTime, long endTime, in ApiMetadata apiMetadata) = 6;
+ void getUserLocationProfile(in IStatusCallback callback, in ApiMetadata apiMetadata, in RequestCredentials requestCredentials) = 7;
+ void getBackupSummary(in IStatusCallback callback, in ApiMetadata apiMetadata, in RequestCredentials requestCredentials) = 8;
+ void deleteBackups(in IStatusCallback callback, in RequestCredentials requestCredentials, in List list, in ApiMetadata apiMetadata) = 9;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/usagereporting/UsageReportingOptInOptions.aidl b/play-services-api/src/main/aidl/com/google/android/gms/usagereporting/UsageReportingOptInOptions.aidl
new file mode 100644
index 0000000..a88060f
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/usagereporting/UsageReportingOptInOptions.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.usagereporting;
+
+parcelable UsageReportingOptInOptions;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/usagereporting/internal/IUsageReportingCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/usagereporting/internal/IUsageReportingCallbacks.aidl
new file mode 100644
index 0000000..3e877c2
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/usagereporting/internal/IUsageReportingCallbacks.aidl
@@ -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;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/usagereporting/internal/IUsageReportingOptInOptionsChangedListener.aidl b/play-services-api/src/main/aidl/com/google/android/gms/usagereporting/internal/IUsageReportingOptInOptionsChangedListener.aidl
new file mode 100644
index 0000000..8e9c287
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/usagereporting/internal/IUsageReportingOptInOptionsChangedListener.aidl
@@ -0,0 +1,5 @@
+package com.google.android.gms.usagereporting.internal;
+
+interface IUsageReportingOptInOptionsChangedListener {
+ oneway void onOptionsChanged() = 1;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/usagereporting/internal/IUsageReportingService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/usagereporting/internal/IUsageReportingService.aidl
new file mode 100644
index 0000000..46d6265
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/usagereporting/internal/IUsageReportingService.aidl
@@ -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;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/wallet/GetClientTokenRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/wallet/GetClientTokenRequest.aidl
new file mode 100644
index 0000000..ad52402
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/wallet/GetClientTokenRequest.aidl
@@ -0,0 +1,8 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.wallet;
+
+parcelable GetClientTokenRequest;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/wallet/GetClientTokenResponse.aidl b/play-services-api/src/main/aidl/com/google/android/gms/wallet/GetClientTokenResponse.aidl
new file mode 100644
index 0000000..e2b7c30
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/wallet/GetClientTokenResponse.aidl
@@ -0,0 +1,8 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.wallet;
+
+parcelable GetClientTokenResponse;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/wallet/IsReadyToPayRequest.aidl b/play-services-api/src/main/aidl/com/google/android/gms/wallet/IsReadyToPayRequest.aidl
new file mode 100644
index 0000000..da1b034
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/wallet/IsReadyToPayRequest.aidl
@@ -0,0 +1,3 @@
+package com.google.android.gms.wallet;
+
+parcelable IsReadyToPayRequest;
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/wallet/internal/IOwService.aidl b/play-services-api/src/main/aidl/com/google/android/gms/wallet/internal/IOwService.aidl
new file mode 100644
index 0000000..4b5ac36
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/wallet/internal/IOwService.aidl
@@ -0,0 +1,10 @@
+package com.google.android.gms.wallet.internal;
+
+import com.google.android.gms.wallet.internal.IWalletServiceCallbacks;
+import com.google.android.gms.wallet.IsReadyToPayRequest;
+import com.google.android.gms.wallet.GetClientTokenRequest;
+
+interface IOwService {
+ void isReadyToPay(in IsReadyToPayRequest request, in Bundle args, IWalletServiceCallbacks callbacks) = 13;
+ void getClientToken(in GetClientTokenRequest getClientTokenRequest, in Bundle options, IWalletServiceCallbacks callbacks) = 14;
+}
diff --git a/play-services-api/src/main/aidl/com/google/android/gms/wallet/internal/IWalletServiceCallbacks.aidl b/play-services-api/src/main/aidl/com/google/android/gms/wallet/internal/IWalletServiceCallbacks.aidl
new file mode 100644
index 0000000..a7bd289
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/android/gms/wallet/internal/IWalletServiceCallbacks.aidl
@@ -0,0 +1,9 @@
+package com.google.android.gms.wallet.internal;
+
+import com.google.android.gms.common.api.Status;
+import com.google.android.gms.wallet.GetClientTokenResponse;
+
+interface IWalletServiceCallbacks {
+ void onIsReadyToPayResponse(in Status status, boolean result, in Bundle args) = 8;
+ void onClientTokenReceived(in Status status, in GetClientTokenResponse response, in Bundle extras) = 9;
+}
diff --git a/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/CompoundHashParcelable.aidl b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/CompoundHashParcelable.aidl
new file mode 100644
index 0000000..689e591
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/CompoundHashParcelable.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.database.connection.idl;
+
+parcelable CompoundHashParcelable;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/ConnectionConfig.aidl b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/ConnectionConfig.aidl
new file mode 100644
index 0000000..d6c1fc3
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/ConnectionConfig.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.database.connection.idl;
+
+parcelable ConnectionConfig;
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IConnectionAuthTokenProvider.aidl b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IConnectionAuthTokenProvider.aidl
new file mode 100644
index 0000000..447f9f4
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IConnectionAuthTokenProvider.aidl
@@ -0,0 +1,7 @@
+package com.google.firebase.database.connection.idl;
+
+import com.google.firebase.database.connection.idl.IGetTokenCallback;
+
+interface IConnectionAuthTokenProvider {
+ void zero(boolean var1, IGetTokenCallback var2) = 0;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IGetTokenCallback.aidl b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IGetTokenCallback.aidl
new file mode 100644
index 0000000..c4d45cd
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IGetTokenCallback.aidl
@@ -0,0 +1,6 @@
+package com.google.firebase.database.connection.idl;
+
+interface IGetTokenCallback {
+ void zero(String s) = 0;
+ void onError(String s) = 1;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IListenHashProvider.aidl b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IListenHashProvider.aidl
new file mode 100644
index 0000000..a5aaa18
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IListenHashProvider.aidl
@@ -0,0 +1,11 @@
+package com.google.firebase.database.connection.idl;
+
+import com.google.firebase.database.connection.idl.CompoundHashParcelable;
+
+interface IListenHashProvider {
+ String zzPY() = 0;
+
+ boolean zzPZ() = 1;
+
+ CompoundHashParcelable zzQF() = 2;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IPersistentConnection.aidl b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IPersistentConnection.aidl
new file mode 100644
index 0000000..21e00b1
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IPersistentConnection.aidl
@@ -0,0 +1,44 @@
+package com.google.firebase.database.connection.idl;
+
+import com.google.android.gms.dynamic.IObjectWrapper;
+
+import com.google.firebase.database.connection.idl.ConnectionConfig;
+import com.google.firebase.database.connection.idl.IConnectionAuthTokenProvider;
+import com.google.firebase.database.connection.idl.IListenHashProvider;
+import com.google.firebase.database.connection.idl.IPersistentConnectionDelegate;
+import com.google.firebase.database.connection.idl.IRequestResultCallback;
+
+
+interface IPersistentConnection {
+ void setup(in ConnectionConfig var1, IConnectionAuthTokenProvider var2, IObjectWrapper var3, IPersistentConnectionDelegate var4) = 0;
+
+ void initialize() = 1;
+
+ void shutdown() = 2;
+
+ void refreshAuthToken() = 3;
+
+ void listen(in List var1, IObjectWrapper var2, IListenHashProvider var3, long var4, IRequestResultCallback var6) = 4;
+
+ void unlisten(in List var1, IObjectWrapper var2) = 5;
+
+ void purgeOutstandingWrites() = 6;
+
+ void put(in List var1, IObjectWrapper var2, IRequestResultCallback var3) = 7;
+
+ void compareAndPut(in List var1, IObjectWrapper var2, String var3, IRequestResultCallback var4) = 8;
+
+ void merge(in List var1, IObjectWrapper var2, IRequestResultCallback var3) = 9;
+
+ void onDisconnectPut(in List var1, IObjectWrapper var2, IRequestResultCallback var3) = 10;
+
+ void onDisconnectMerge(in List var1, IObjectWrapper var2, IRequestResultCallback var3) = 11;
+
+ void onDisconnectCancel(in List var1, IRequestResultCallback var2) = 12;
+
+ void interrupt(String var1) = 13;
+
+ void resume(String var1) = 14;
+
+ boolean isInterrupted(String var1) = 15;
+}
diff --git a/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IPersistentConnectionDelegate.aidl b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IPersistentConnectionDelegate.aidl
new file mode 100644
index 0000000..9ae649d
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IPersistentConnectionDelegate.aidl
@@ -0,0 +1,19 @@
+package com.google.firebase.database.connection.idl;
+
+import com.google.android.gms.dynamic.IObjectWrapper;
+
+import com.google.firebase.database.connection.idl.RangeParcelable;
+
+interface IPersistentConnectionDelegate {
+ void zero(in List var1, IObjectWrapper var2, boolean var3, long var4) = 0;
+
+ void one(in List var1, in List var2, IObjectWrapper var3, long var4) = 1;
+
+ void two() = 2;
+
+ void onDisconnect() = 3;
+
+ void four(boolean var1) = 4;
+
+ void five(IObjectWrapper var1) = 5;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IRequestResultCallback.aidl b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IRequestResultCallback.aidl
new file mode 100644
index 0000000..5806bc3
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/IRequestResultCallback.aidl
@@ -0,0 +1,5 @@
+package com.google.firebase.database.connection.idl;
+
+interface IRequestResultCallback {
+ void zero(String var1, String var2) = 0;
+}
\ No newline at end of file
diff --git a/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/RangeParcelable.aidl b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/RangeParcelable.aidl
new file mode 100644
index 0000000..08d6df1
--- /dev/null
+++ b/play-services-api/src/main/aidl/com/google/firebase/database/connection/idl/RangeParcelable.aidl
@@ -0,0 +1,3 @@
+package com.google.firebase.database.connection.idl;
+
+parcelable RangeParcelable;
\ No newline at end of file
diff --git a/play-services-api/src/main/java/com/google/android/gms/appdatasearch/CorpusStatus.java b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/CorpusStatus.java
new file mode 100644
index 0000000..5c71ea0
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/CorpusStatus.java
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.appdatasearch;
+
+import android.os.Bundle;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class CorpusStatus extends AutoSafeParcelable {
+
+ @SafeParceled(1000)
+ private int versionCode;
+ @SafeParceled(1)
+ public boolean found;
+ @SafeParceled(2)
+ public long lastIndexedSeqno;
+ @SafeParceled(3)
+ public long lastCommittedSeqno;
+ @SafeParceled(4)
+ public long committedNumDocuments;
+ @SafeParceled(5)
+ public Bundle counters;
+ @SafeParceled(6)
+ public String g;
+
+ public CorpusStatus() {
+ versionCode = 2;
+ }
+
+ public static final Creator CREATOR = new AutoCreator(CorpusStatus.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/appdatasearch/PIMEUpdate.java b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/PIMEUpdate.java
new file mode 100644
index 0000000..2f8a596
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/PIMEUpdate.java
@@ -0,0 +1,24 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.appdatasearch;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class PIMEUpdate extends AutoSafeParcelable {
+
+ public static final Creator CREATOR = new AutoCreator(PIMEUpdate.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/appdatasearch/PIMEUpdateResponse.java b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/PIMEUpdateResponse.java
new file mode 100644
index 0000000..d542f48
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/PIMEUpdateResponse.java
@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.appdatasearch;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class PIMEUpdateResponse extends AutoSafeParcelable {
+ @SafeParceled(1000)
+ private int versionCode;
+
+ @SafeParceled(1)
+ private String b;
+
+ @SafeParceled(2)
+ public final byte[] bytes;
+
+ @SafeParceled(3)
+ public final PIMEUpdate[] updates;
+
+ public PIMEUpdateResponse() {
+ versionCode = 1;
+ this.bytes = null;
+ this.updates = new PIMEUpdate[0];
+ }
+
+ public static final Creator CREATOR = new AutoCreator(PIMEUpdateResponse.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/appdatasearch/QuerySpecification.java b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/QuerySpecification.java
new file mode 100644
index 0000000..1be52c8
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/QuerySpecification.java
@@ -0,0 +1,72 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.appdatasearch;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+import java.util.List;
+
+public class QuerySpecification extends AutoSafeParcelable {
+
+ @SafeParceled(1000)
+ private int versionCode = 2;
+ @SafeParceled(1)
+ public final boolean b;
+ //@SafeParceled(value = 2, subType = "TODO")
+ public final List c;
+ //@SafeParceled(value = 3, subType = "TODO")
+ public final List d;
+ @SafeParceled(4)
+ public final boolean e;
+ @SafeParceled(5)
+ public final int f;
+ @SafeParceled(6)
+ public final int g;
+ @SafeParceled(7)
+ public final boolean h;
+ @SafeParceled(8)
+ public final int i;
+
+ private QuerySpecification() {
+ b = false;
+ c = null;
+ d = null;
+ e = false;
+ f = 0;
+ g = 0;
+ h = false;
+ i = 0;
+ }
+
+ @Override
+ public String toString() {
+ return "QuerySpecification{" +
+ "versionCode=" + versionCode +
+ ", b=" + b +
+ ", c=" + c +
+ ", d=" + d +
+ ", e=" + e +
+ ", f=" + f +
+ ", g=" + g +
+ ", h=" + h +
+ ", i=" + i +
+ '}';
+ }
+
+ public static final Creator CREATOR = new AutoCreator(QuerySpecification.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/appdatasearch/RequestIndexingSpecification.java b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/RequestIndexingSpecification.java
new file mode 100644
index 0000000..720f773
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/RequestIndexingSpecification.java
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.appdatasearch;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class RequestIndexingSpecification extends AutoSafeParcelable {
+
+ @SafeParceled(1000)
+ private int versionCode;
+
+ public static final Creator CREATOR = new AutoCreator(RequestIndexingSpecification.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/appdatasearch/SearchResults.java b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/SearchResults.java
new file mode 100644
index 0000000..fec25f0
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/SearchResults.java
@@ -0,0 +1,27 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.appdatasearch;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class SearchResults extends AutoSafeParcelable {
+ @SafeParceled(1000)
+ private int versionCode = 2;
+
+ public static Creator CREATOR = new AutoCreator(SearchResults.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/appdatasearch/SuggestSpecification.java b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/SuggestSpecification.java
new file mode 100644
index 0000000..0f80a05
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/SuggestSpecification.java
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.appdatasearch;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class SuggestSpecification extends AutoSafeParcelable {
+ @SafeParceled(1000)
+ private int versionCode;
+
+ public SuggestSpecification() {
+ versionCode = 2;
+ }
+
+ public static final Creator CREATOR = new AutoCreator(SuggestSpecification.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/appdatasearch/SuggestionResults.java b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/SuggestionResults.java
new file mode 100644
index 0000000..f616d51
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/SuggestionResults.java
@@ -0,0 +1,54 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.appdatasearch;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class SuggestionResults extends AutoSafeParcelable {
+ @SafeParceled(1000)
+ private int versionCode;
+ @SafeParceled(1)
+ public final String errorMessage;
+
+ @SafeParceled(2)
+ public final String[] s1;
+ @SafeParceled(3)
+ public final String[] s2;
+
+ private SuggestionResults() {
+ versionCode = 2;
+ errorMessage = null;
+ s1 = s2 = null;
+ }
+
+ public SuggestionResults(String errorMessage) {
+ versionCode = 2;
+ this.errorMessage = errorMessage;
+ this.s1 = null;
+ this.s2 = null;
+ }
+
+ public SuggestionResults(String[] s1, String[] s2) {
+ versionCode = 2;
+ this.errorMessage = null;
+ this.s1 = s1;
+ this.s2 = s2;
+ }
+
+ public static final Creator CREATOR = new AutoCreator(SuggestionResults.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/appdatasearch/UsageInfo.java b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/UsageInfo.java
new file mode 100644
index 0000000..a2f0f9e
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/appdatasearch/UsageInfo.java
@@ -0,0 +1,24 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.appdatasearch;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class UsageInfo extends AutoSafeParcelable {
+
+ public static Creator CREATOR = new AutoCreator(UsageInfo.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/audit/LogAuditRecordsRequest.java b/play-services-api/src/main/java/com/google/android/gms/audit/LogAuditRecordsRequest.java
new file mode 100644
index 0000000..8042154
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/audit/LogAuditRecordsRequest.java
@@ -0,0 +1,53 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.audit;
+
+import android.os.Parcel;
+
+import androidx.annotation.NonNull;
+
+import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
+
+import org.microg.gms.utils.ToStringHelper;
+
+@SafeParcelable.Class
+public class LogAuditRecordsRequest extends AbstractSafeParcelable {
+ @Field(1)
+ public int writeMode;
+ @Field(2)
+ public int componentId;
+ @Field(3)
+ public String accountName;
+ @Field(4)
+ public byte[][] auditRecords;
+ @Field(5)
+ public byte[] traceToken;
+ @Field(6)
+ public byte[] auditToken;
+
+ @NonNull
+ @Override
+ public String toString() {
+ return ToStringHelper.name("LogAuditRecordsRequest")
+ .field("writeMode", writeMode)
+ .field("componentId", componentId)
+ .field("accountName", accountName)
+ .field("auditRecords", auditRecords)
+ .field("traceToken", traceToken)
+ .field("auditToken", auditToken)
+ .end();
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ CREATOR.writeToParcel(this, dest, flags);
+ }
+
+ public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(LogAuditRecordsRequest.class);
+
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/AccountRecoveryGuidanceRequest.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/AccountRecoveryGuidanceRequest.java
new file mode 100644
index 0000000..6c73b4b
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/AccountRecoveryGuidanceRequest.java
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.auth.firstparty.dataservice;
+
+import android.accounts.Account;
+
+import org.microg.gms.auth.AuthConstants;
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class AccountRecoveryGuidanceRequest extends AutoSafeParcelable {
+
+ @SafeParceled(1)
+ private int versionCode = 1;
+ @SafeParceled(2)
+ @Deprecated
+ public final String accountName;
+ @SafeParceled(3)
+ public final Account account;
+
+ public AccountRecoveryGuidanceRequest(String accountName) {
+ this.accountName = accountName;
+ this.account = new Account(accountName, AuthConstants.DEFAULT_ACCOUNT_TYPE);
+ }
+
+ public AccountRecoveryGuidanceRequest(Account account) {
+ this.accountName = account.name;
+ this.account = account;
+ }
+
+ public static final Creator CREATOR = new AutoCreator(AccountRecoveryGuidanceRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/AccountRemovalRequest.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/AccountRemovalRequest.java
new file mode 100644
index 0000000..cd56eb1
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/AccountRemovalRequest.java
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.auth.firstparty.dataservice;
+
+import android.accounts.Account;
+
+import org.microg.gms.auth.AuthConstants;
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class AccountRemovalRequest extends AutoSafeParcelable {
+
+ @SafeParceled(1)
+ private int versionCode = 1;
+ @SafeParceled(2)
+ @Deprecated
+ public final String accountName;
+ @SafeParceled(3)
+ public final Account account;
+
+ public AccountRemovalRequest(String accountName) {
+ this.accountName = accountName;
+ this.account = new Account(accountName, AuthConstants.DEFAULT_ACCOUNT_TYPE);
+ }
+
+ public AccountRemovalRequest(Account account) {
+ this.accountName = account.name;
+ this.account = account;
+ }
+
+ public static final Creator CREATOR = new AutoCreator(AccountRemovalRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/ConfirmCredentialsRequest.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/ConfirmCredentialsRequest.java
new file mode 100644
index 0000000..c7db433
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/ConfirmCredentialsRequest.java
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.auth.firstparty.dataservice;
+
+import com.google.android.gms.auth.firstparty.shared.AccountCredentials;
+import com.google.android.gms.auth.firstparty.shared.CaptchaSolution;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class ConfirmCredentialsRequest extends AutoSafeParcelable {
+ @SafeParceled(1)
+ private int versionCode = 1;
+ @SafeParceled(2)
+ public AccountCredentials accountCredentials;
+ @SafeParceled(3)
+ public CaptchaSolution captchaSolution;
+
+ public static final Creator CREATOR = new AutoCreator(ConfirmCredentialsRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/FACLConfig.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/FACLConfig.java
new file mode 100644
index 0000000..17004b0
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/FACLConfig.java
@@ -0,0 +1,27 @@
+/*
+ * SPDX-FileCopyrightText: 2024 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.auth.firstparty.dataservice;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class FACLConfig extends AutoSafeParcelable {
+ @Field(1)
+ public int versionCode = 1;
+ @Field(2)
+ public boolean allCirclesVisible;
+ @Field(3)
+ public String visibleEdges;
+ @Field(4)
+ public boolean allContactsVisible;
+ @Field(5)
+ public boolean showCircles;
+ @Field(6)
+ public boolean showContacts;
+ @Field(7)
+ public boolean hasShowCircles;
+
+ public static final Creator CREATOR = new AutoCreator(FACLConfig.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/PACLConfig.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/PACLConfig.java
new file mode 100644
index 0000000..58f04dc
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/PACLConfig.java
@@ -0,0 +1,19 @@
+/*
+ * SPDX-FileCopyrightText: 2024 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.auth.firstparty.dataservice;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class PACLConfig extends AutoSafeParcelable {
+ @Field(1)
+ private int versionCode = 1;
+ @Field(2)
+ public String visibleActions;
+ @Field(3)
+ public String data;
+
+ public static final Creator CREATOR = new AutoCreator(PACLConfig.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/TokenRequest.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/TokenRequest.java
new file mode 100644
index 0000000..4ea4071
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/TokenRequest.java
@@ -0,0 +1,54 @@
+/*
+ * SPDX-FileCopyrightText: 2015 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.auth.firstparty.dataservice;
+
+import android.accounts.Account;
+import android.os.Bundle;
+
+import com.google.android.gms.auth.firstparty.shared.AppDescription;
+import com.google.android.gms.auth.firstparty.shared.CaptchaSolution;
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class TokenRequest extends AutoSafeParcelable {
+ @Field(1)
+ private int versionCode = 8;
+ @Field(2)
+ private String service;
+ @Field(3)
+ public String accountName;
+ @Field(4)
+ public Bundle extras;
+ @Field(5)
+ public FACLConfig faclConfig;
+ @Field(6)
+ public PACLConfig paclConfig;
+ @Field(7)
+ public boolean signingIn;
+ @Field(9)
+ public String consent;
+ @Field(10)
+ public AppDescription callingAppDescription;
+ @Field(11)
+ public CaptchaSolution captchaSolution;
+ @Field(14)
+ public boolean useCache;
+ @Field(15)
+ public String accountType;
+ @Field(16)
+ public int delegationType;
+ @Field(17)
+ public String delegateeUserId;
+ @Field(19)
+ public String consentResult;
+ @Field(24)
+ public int mode;
+
+ public Account getAccount() {
+ return new Account(accountName, accountType);
+ }
+
+ public static final Creator CREATOR = new AutoCreator(TokenRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/TokenResponse.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/TokenResponse.java
new file mode 100644
index 0000000..999e9a9
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/TokenResponse.java
@@ -0,0 +1,20 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.auth.firstparty.dataservice;
+
+public class TokenResponse {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/delegate/ConfirmCredentialsWorkflowRequest.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/delegate/ConfirmCredentialsWorkflowRequest.java
new file mode 100644
index 0000000..0091dee
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/delegate/ConfirmCredentialsWorkflowRequest.java
@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.auth.firstparty.delegate;
+
+import android.accounts.Account;
+import android.accounts.AccountAuthenticatorResponse;
+import android.os.Bundle;
+
+import com.google.android.gms.auth.firstparty.shared.AppDescription;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class ConfirmCredentialsWorkflowRequest extends AutoSafeParcelable {
+ @SafeParceled(1)
+ private int versionCode = 3;
+ @SafeParceled(2)
+ public String accountName;
+ @SafeParceled(3)
+ public AppDescription appDescription;
+ @SafeParceled(4)
+ public Bundle extras;
+ @SafeParceled(5)
+ public Account account;
+ @SafeParceled(6)
+ public AccountAuthenticatorResponse accountAuthenticatorResponse;
+
+ public static final Creator CREATOR = new AutoCreator(ConfirmCredentialsWorkflowRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/proximity/data/Permit.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/proximity/data/Permit.java
new file mode 100644
index 0000000..139bf29
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/proximity/data/Permit.java
@@ -0,0 +1,20 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.auth.firstparty.proximity.data;
+
+public class Permit {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/AccountCredentials.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/AccountCredentials.java
new file mode 100644
index 0000000..4b57130
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/AccountCredentials.java
@@ -0,0 +1,38 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.auth.firstparty.shared;
+
+import android.accounts.Account;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+// TODO
+public class AccountCredentials extends AutoSafeParcelable {
+ @SafeParceled(1)
+ private int versionCode = 2;
+ @SafeParceled(3)
+ public String accountName;
+ @SafeParceled(9)
+ public String accountType;
+
+ public Account getAccount() {
+ return new Account(accountName, accountType);
+ }
+
+ public static final Creator CREATOR = new AutoCreator(AccountCredentials.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/AppDescription.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/AppDescription.java
new file mode 100644
index 0000000..9e339e8
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/AppDescription.java
@@ -0,0 +1,35 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.auth.firstparty.shared;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class AppDescription extends AutoSafeParcelable {
+ @SafeParceled(1)
+ private int versionCode = 1;
+ @SafeParceled(2)
+ public int callingUid;
+ @SafeParceled(3)
+ public String sessiondId;
+ @SafeParceled(4)
+ public String sessiondSig;
+ @SafeParceled(5)
+ public String callingPkg;
+
+ public static final Creator CREATOR = new AutoCreator(AppDescription.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/CaptchaSolution.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/CaptchaSolution.java
new file mode 100644
index 0000000..9563798
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/CaptchaSolution.java
@@ -0,0 +1,29 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.auth.firstparty.shared;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+// TODO
+public class CaptchaSolution extends AutoSafeParcelable {
+
+ @SafeParceled(1)
+ private int versionCode = 1;
+
+ public static final Creator CREATOR = new AutoCreator(CaptchaSolution.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/credential/manager/invocationparams/CallerInfo.java b/play-services-api/src/main/java/com/google/android/gms/credential/manager/invocationparams/CallerInfo.java
new file mode 100644
index 0000000..763a90c
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/credential/manager/invocationparams/CallerInfo.java
@@ -0,0 +1,28 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.credential.manager.invocationparams;
+
+import androidx.annotation.NonNull;
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class CallerInfo extends AutoSafeParcelable {
+ @Field(1)
+ public String source;
+ @Field(2)
+ public String medium;
+ @Field(3)
+ public String campaign;
+ @Field(4)
+ public String content;
+
+ @NonNull
+ @Override
+ public String toString() {
+ return "CallerInfo(" + source + "," + medium + "," + campaign + "," + content + ")";
+ }
+
+ public static final Creator CREATOR = new AutoCreator<>(CallerInfo.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/credential/manager/invocationparams/CredentialManagerAccount.java b/play-services-api/src/main/java/com/google/android/gms/credential/manager/invocationparams/CredentialManagerAccount.java
new file mode 100644
index 0000000..f12db2f
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/credential/manager/invocationparams/CredentialManagerAccount.java
@@ -0,0 +1,23 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.credential.manager.invocationparams;
+
+import androidx.annotation.NonNull;
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class CredentialManagerAccount extends AutoSafeParcelable {
+ @Field(1)
+ public String name;
+
+ @NonNull
+ @Override
+ public String toString() {
+ return name;
+ }
+
+ public static final String NAME_LOCAL = "pwm.constant.LocalAccount";
+ public static final Creator CREATOR = new AutoCreator<>(CredentialManagerAccount.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/credential/manager/invocationparams/CredentialManagerInvocationParams.java b/play-services-api/src/main/java/com/google/android/gms/credential/manager/invocationparams/CredentialManagerInvocationParams.java
new file mode 100644
index 0000000..871754f
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/credential/manager/invocationparams/CredentialManagerInvocationParams.java
@@ -0,0 +1,28 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.credential.manager.invocationparams;
+
+import androidx.annotation.NonNull;
+import org.microg.gms.utils.ToStringHelper;
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class CredentialManagerInvocationParams extends AutoSafeParcelable {
+ @Field(1)
+ public CredentialManagerAccount account;
+ @Field(2)
+ public CallerInfo caller;
+
+ @NonNull
+ @Override
+ public String toString() {
+ return ToStringHelper.name("CredentialManagerInvocationParams")
+ .field("account", account)
+ .field("caller", caller)
+ .end();
+ }
+
+ public static final Creator CREATOR = new AutoCreator<>(CredentialManagerInvocationParams.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/facs/cache/FacsCacheCallOptions.java b/play-services-api/src/main/java/com/google/android/gms/facs/cache/FacsCacheCallOptions.java
new file mode 100644
index 0000000..c74383e
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/facs/cache/FacsCacheCallOptions.java
@@ -0,0 +1,17 @@
+/*
+ * SPDX-FileCopyrightText: 2021, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.facs.cache;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class FacsCacheCallOptions extends AutoSafeParcelable {
+ @Field(1)
+ public String instanceId;
+ @Field(2)
+ public long version;
+
+ public static final Creator CREATOR = new AutoCreator<>(FacsCacheCallOptions.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/facs/cache/ForceSettingsCacheRefreshResult.java b/play-services-api/src/main/java/com/google/android/gms/facs/cache/ForceSettingsCacheRefreshResult.java
new file mode 100644
index 0000000..18f2177
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/facs/cache/ForceSettingsCacheRefreshResult.java
@@ -0,0 +1,13 @@
+/*
+ * SPDX-FileCopyrightText: 2021, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.facs.cache;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ForceSettingsCacheRefreshResult extends AutoSafeParcelable {
+
+ public static final Creator CREATOR = new AutoCreator<>(ForceSettingsCacheRefreshResult.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/facs/cache/GetActivityControlsSettingsResult.java b/play-services-api/src/main/java/com/google/android/gms/facs/cache/GetActivityControlsSettingsResult.java
new file mode 100644
index 0000000..ae68810
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/facs/cache/GetActivityControlsSettingsResult.java
@@ -0,0 +1,33 @@
+/*
+ * SPDX-FileCopyrightText: 2021, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.facs.cache;
+
+import android.os.Parcel;
+
+import androidx.annotation.NonNull;
+
+import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
+
+@SafeParcelable.Class
+public class GetActivityControlsSettingsResult extends AbstractSafeParcelable {
+ @Field(value = 1)
+ public byte[] bytes;
+
+ @Constructor
+ public GetActivityControlsSettingsResult(@Param(1) byte[] data) {
+ this.bytes = data;
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ CREATOR.writeToParcel(this, dest, flags);
+ }
+
+ public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(GetActivityControlsSettingsResult.class);
+
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/facs/cache/ReadDeviceLevelSettingsResult.java b/play-services-api/src/main/java/com/google/android/gms/facs/cache/ReadDeviceLevelSettingsResult.java
new file mode 100644
index 0000000..b89f861
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/facs/cache/ReadDeviceLevelSettingsResult.java
@@ -0,0 +1,13 @@
+/*
+ * SPDX-FileCopyrightText: 2021, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.facs.cache;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ReadDeviceLevelSettingsResult extends AutoSafeParcelable {
+
+ public static final Creator CREATOR = new AutoCreator<>(ReadDeviceLevelSettingsResult.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/facs/cache/UpdateActivityControlsSettingsResult.java b/play-services-api/src/main/java/com/google/android/gms/facs/cache/UpdateActivityControlsSettingsResult.java
new file mode 100644
index 0000000..4ef2c91
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/facs/cache/UpdateActivityControlsSettingsResult.java
@@ -0,0 +1,13 @@
+/*
+ * SPDX-FileCopyrightText: 2021, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.facs.cache;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class UpdateActivityControlsSettingsResult extends AutoSafeParcelable {
+
+ public static final Creator CREATOR = new AutoCreator<>(UpdateActivityControlsSettingsResult.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/family/model/MemberDataModel.java b/play-services-api/src/main/java/com/google/android/gms/family/model/MemberDataModel.java
new file mode 100644
index 0000000..500a509
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/family/model/MemberDataModel.java
@@ -0,0 +1,79 @@
+/**
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.family.model;
+
+import android.os.Parcel;
+
+import androidx.annotation.NonNull;
+
+import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
+
+@SafeParcelable.Class
+public class MemberDataModel extends AbstractSafeParcelable {
+ @Field(1)
+ public String memberId = "";
+ @Field(2)
+ public String email = "";
+ @Field(3)
+ public String displayName = "";
+ @Field(4)
+ public String hohGivenName = "";
+ @Field(5)
+ public String profilePhotoUrl = "";
+ @Field(6)
+ public String roleName = "";
+ @Field(7)
+ public int role = 0;
+ @Field(8)
+ public boolean isActive = false;
+ @Field(9)
+ public int supervisionType = 0;
+ @Field(10)
+ public long timestamp = 0;
+ @Field(11)
+ public boolean isInviteEntry = false;
+ @Field(12)
+ public int inviteSlots = 0;
+ @Field(13)
+ public boolean isInvited = false;
+ @Field(14)
+ public String invitationId = "";
+ @Field(15)
+ public long inviteState = 0;
+ @Field(16)
+ public String inviteSentDate = "";
+
+ public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(MemberDataModel.class);
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ CREATOR.writeToParcel(this, dest, flags);
+ }
+
+ @Override
+ public String toString() {
+ return "MemberDataModel{" +
+ "memberId='" + memberId + '\'' +
+ ", email='" + email + '\'' +
+ ", displayName='" + displayName + '\'' +
+ ", hohGivenName='" + hohGivenName + '\'' +
+ ", profilePhotoUrl='" + profilePhotoUrl + '\'' +
+ ", roleName='" + roleName + '\'' +
+ ", role=" + role +
+ ", isActive=" + isActive +
+ ", supervisionType=" + supervisionType +
+ ", timestamp=" + timestamp +
+ ", isInviteEntry=" + isInviteEntry +
+ ", inviteSlots=" + inviteSlots +
+ ", isInvited=" + isInvited +
+ ", invitationId='" + invitationId + '\'' +
+ ", inviteState=" + inviteState +
+ ", inviteSentDate='" + inviteSentDate + '\'' +
+ '}';
+ }
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/family/v2/model/BulletPoint.java b/play-services-api/src/main/java/com/google/android/gms/family/v2/model/BulletPoint.java
new file mode 100644
index 0000000..f1ef313
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/family/v2/model/BulletPoint.java
@@ -0,0 +1,68 @@
+/**
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.family.v2.model;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import androidx.annotation.NonNull;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+public class BulletPoint implements Parcelable {
+
+ public HashMap contentMap = new HashMap<>();
+
+ public BulletPoint() {
+ }
+
+ public BulletPoint(HashMap contentMap) {
+ this.contentMap = contentMap;
+ }
+
+ public BulletPoint(Parcel parcel) {
+ int readInt = parcel.readInt();
+ for (int i = 0; i < readInt; i++) {
+ this.contentMap.put(parcel.readInt(), parcel.readString());
+ }
+ }
+
+ public final boolean equals(Object obj) {
+ return (obj instanceof BulletPoint) && ((BulletPoint) obj).contentMap.equals(this.contentMap);
+ }
+
+ public final int hashCode() {
+ return Arrays.hashCode(new Object[]{this.contentMap});
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ dest.writeInt(this.contentMap.size());
+ for (Map.Entry entry : this.contentMap.entrySet()) {
+ dest.writeInt((Integer) entry.getKey());
+ dest.writeString((String) entry.getValue());
+ }
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ @Override
+ public BulletPoint createFromParcel(Parcel source) {
+ return new BulletPoint(source);
+ }
+
+ @Override
+ public BulletPoint[] newArray(int size) {
+ return new BulletPoint[size];
+ }
+ };
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/family/v2/model/HelpData.java b/play-services-api/src/main/java/com/google/android/gms/family/v2/model/HelpData.java
new file mode 100644
index 0000000..21c1af7
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/family/v2/model/HelpData.java
@@ -0,0 +1,45 @@
+/**
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.family.v2.model;
+
+import android.os.Parcel;
+
+import androidx.annotation.NonNull;
+
+import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
+
+@SafeParcelable.Class
+public class HelpData extends AbstractSafeParcelable {
+ @Field(1)
+ public String linkUrl;
+ @Field(2)
+ public String appContext;
+
+ public HelpData() {
+ }
+
+ public HelpData(String linkUrl, String appContext) {
+ this.linkUrl = linkUrl;
+ this.appContext = appContext;
+ }
+
+ public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(HelpData.class);
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ CREATOR.writeToParcel(this, dest, flags);
+ }
+
+ @Override
+ public String toString() {
+ return "HelpData{" +
+ "linkUrl='" + linkUrl + '\'' +
+ ", appContext='" + appContext + '\'' +
+ '}';
+ }
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/family/v2/model/PageData.java b/play-services-api/src/main/java/com/google/android/gms/family/v2/model/PageData.java
new file mode 100644
index 0000000..5a0cb11
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/family/v2/model/PageData.java
@@ -0,0 +1,61 @@
+/**
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.family.v2.model;
+
+import android.os.Parcelable;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Objects;
+
+public class PageData extends AutoSafeParcelable {
+ @Field(1)
+ public int version = 1;
+ @Field(2)
+ public HashMap sectionMap = new HashMap<>();
+ @Field(3)
+ public HashMap helpMap = new HashMap<>();
+ @Field(4)
+ public ArrayList bulletPoints = new ArrayList<>();
+
+ public PageData() {}
+
+ public PageData(HashMap sectionMap, HashMap helpMap, ArrayList bulletPoints) {
+ this.sectionMap = sectionMap;
+ this.helpMap = helpMap;
+ this.bulletPoints = bulletPoints;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) return true;
+ if (!(obj instanceof PageData)) return false;
+ PageData other = (PageData) obj;
+ return version == other.version &&
+ Objects.equals(sectionMap, other.sectionMap) &&
+ Objects.equals(helpMap, other.helpMap) &&
+ Objects.equals(bulletPoints, other.bulletPoints);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(version, sectionMap, helpMap, bulletPoints);
+ }
+
+ @Override
+ public String toString() {
+ return "PageData{" +
+ "version=" + version +
+ ", sectionMap=" + sectionMap +
+ ", helpMap=" + helpMap +
+ ", bulletPoints=" + bulletPoints +
+ '}';
+ }
+
+ public static final Parcelable.Creator CREATOR = findCreator(PageData.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/feedback/ErrorReport.java b/play-services-api/src/main/java/com/google/android/gms/feedback/ErrorReport.java
new file mode 100644
index 0000000..55d6d35
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/feedback/ErrorReport.java
@@ -0,0 +1,163 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.feedback;
+
+import android.app.ApplicationErrorReport;
+import android.graphics.Bitmap;
+import android.graphics.RectF;
+import android.os.Bundle;
+import android.os.Parcel;
+
+import androidx.annotation.NonNull;
+
+import com.google.android.gms.common.data.BitmapTeleporter;
+import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
+
+import java.util.List;
+
+@SafeParcelable.Class
+public class ErrorReport extends AbstractSafeParcelable {
+ @Field(2)
+ public ApplicationErrorReport applicationErrorReport;
+ @Field(3)
+ public String feedbackMsg;
+ @Field(4)
+ public int versionCode;
+ @Field(5)
+ public String versionName;
+ @Field(6)
+ public String mobileDevice;
+ @Field(7)
+ public String mobileDisplay;
+ @Field(8)
+ public String mobileType;
+ @Field(9)
+ public String mobileModel;
+ @Field(10)
+ public String mobileProduct;
+ @Field(11)
+ public String mobileFingerprint;
+ @Field(12)
+ public int mobileSdkInt;
+ @Field(13)
+ public String mobileRelease;
+ @Field(14)
+ public String mobileIncremental;
+ @Field(15)
+ public String mobileCodeName;
+ @Field(16)
+ public String mobileBoard;
+ @Field(17)
+ public String mobileBrand;
+ @Field(18)
+ public String[] unknownStringArray18;
+ @Field(19)
+ public String[] unknownStringArray19;
+ @Field(20)
+ public String[] unknownStringArray20;
+ @Field(21)
+ public String unknownString21;
+ @Field(22)
+ public String screenshotImgSrc;
+ @Field(23)
+ public byte[] screenshotImgData;
+ @Field(24)
+ public int screenshotHeight;
+ @Field(25)
+ public int screenshotWidth;
+ @Field(26)
+ public int phoneType;
+ @Field(27)
+ public int networkType;
+ @Field(28)
+ public String networkOperatorName;
+ @Field(29)
+ public String email;
+ @Field(30)
+ public String languageTag;
+ @Field(31)
+ public Bundle bundle;
+ @Field(32)
+ public boolean isFixedUri;
+ @Field(33)
+ public int mobileCountryCode;
+ @Field(34)
+ public int mobileNetworkCode;
+ @Field(35)
+ public boolean unknownBool35;
+ @Field(36)
+ public String exceptionClassName;
+ @Field(37)
+ public String throwFileName;
+ @Field(38)
+ public int throwLineNumber;
+ @Field(39)
+ public String throwClassName;
+ @Field(40)
+ public String throwMethodName;
+ @Field(41)
+ public String stackTrace;
+ @Field(42)
+ public String exceptionMessage;
+ @Field(43)
+ public String unknownString43;
+ @Field(44)
+ public String unknownString44;
+ @Field(45)
+ public String packageName;
+ @Field(46)
+ public BitmapTeleporter bitmapTeleporter;
+ @Field(47)
+ public String unknownString47;
+ @Field(48)
+ public FileTeleporter[] files;
+ @Field(49)
+ public String[] unknownByteArray49;
+ @Field(50)
+ public boolean unknownBool50;
+ @Field(51)
+ public String unknownString51;
+ @Field(52)
+ public ThemeSettings themeSettings;
+ @Field(53)
+ public LogOptions logOptions;
+ @Field(54)
+ public String unknownString54;
+ @Field(55)
+ public boolean unknownBool55;
+ @Field(56)
+ public Bundle bundleText;
+ @Field(57)
+ public List rectFS;
+ @Field(58)
+ public boolean unknownBool58;
+ @Field(59)
+ public Bitmap bitmap;
+ @Field(60)
+ public String unknownString60;
+ @Field(61)
+ public List camList;
+ @Field(62)
+ public int unknownInt62;
+ @Field(63)
+ public int unknownInt63;
+ @Field(64)
+ public String[] unknownStringArray64;
+ @Field(65)
+ public String[] unknownStringArray65;
+ @Field(66)
+ public String[] unknownStringArray66;
+
+ public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(ErrorReport.class);
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ CREATOR.writeToParcel(this, dest, flags);
+ }
+
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/feedback/FeedbackOptions.java b/play-services-api/src/main/java/com/google/android/gms/feedback/FeedbackOptions.java
new file mode 100644
index 0000000..679fe0f
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/feedback/FeedbackOptions.java
@@ -0,0 +1,67 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.feedback;
+
+import android.app.ApplicationErrorReport;
+import android.graphics.Bitmap;
+import android.os.Bundle;
+import android.os.Parcel;
+
+import androidx.annotation.NonNull;
+
+import com.google.android.gms.common.data.BitmapTeleporter;
+import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
+
+import java.util.List;
+
+@SafeParcelable.Class
+public class FeedbackOptions extends AbstractSafeParcelable {
+
+ public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(FeedbackOptions.class);
+
+ @Field(2)
+ public String unknownString2;
+ @Field(3)
+ public Bundle unknownBundle3;
+ @Field(5)
+ public String unknownString3;
+ @Field(6)
+ public ApplicationErrorReport applicationErrorReport;
+ @Field(7)
+ public String unknownString7;
+ @Field(8)
+ public BitmapTeleporter bitmapTeleporter;
+ @Field(9)
+ public String packageName;
+ @Field(10)
+ public List files;
+ @Field(11)
+ public boolean unknownBoolean11;
+ @Field(12)
+ public ThemeSettings themeSettings;
+ @Field(13)
+ public LogOptions logOptions;
+ @Field(14)
+ public boolean unknownBoolean14;
+ @Field(15)
+ public Bitmap screenshot;
+ @Field(16)
+ public String unknownString16;
+ @Field(17)
+ public boolean unknownBoolean17;
+ @Field(18)
+ public long unknownLong18;
+ @Field(19)
+ public boolean unknownBool19;
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ CREATOR.writeToParcel(this, dest, flags);
+ }
+
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/feedback/FileTeleporter.java b/play-services-api/src/main/java/com/google/android/gms/feedback/FileTeleporter.java
new file mode 100644
index 0000000..445200b
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/feedback/FileTeleporter.java
@@ -0,0 +1,29 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.feedback;
+
+import android.os.Parcel;
+
+import androidx.annotation.NonNull;
+
+import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
+
+@SafeParcelable.Class
+public class FileTeleporter extends AbstractSafeParcelable {
+ @Field(3)
+ public String contentType;
+ @Field(4)
+ public String content;
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ CREATOR.writeToParcel(this, dest, flags);
+ }
+
+ public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(FileTeleporter.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/feedback/LogOptions.java b/play-services-api/src/main/java/com/google/android/gms/feedback/LogOptions.java
new file mode 100644
index 0000000..ce1f820
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/feedback/LogOptions.java
@@ -0,0 +1,37 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.feedback;
+
+import android.os.Parcel;
+
+import androidx.annotation.NonNull;
+
+import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
+
+@SafeParcelable.Class
+public class LogOptions extends AbstractSafeParcelable {
+
+ @Field(2)
+ public String options;
+ @Field(3)
+ public boolean unknownBool3;
+ @Field(4)
+ public boolean unknownBool4;
+ @Field(5)
+ public boolean unknownBool5;
+ @Field(6)
+ public boolean unknownBool6;
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ CREATOR.writeToParcel(this, dest, flags);
+ }
+
+ public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(LogOptions.class);
+
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/feedback/ThemeSettings.java b/play-services-api/src/main/java/com/google/android/gms/feedback/ThemeSettings.java
new file mode 100644
index 0000000..3dee3f0
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/feedback/ThemeSettings.java
@@ -0,0 +1,28 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.feedback;
+
+import androidx.annotation.NonNull;
+import org.microg.gms.utils.ToStringHelper;
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ThemeSettings extends AutoSafeParcelable {
+ @Field(2)
+ public int unknownInt2;
+ @Field(3)
+ public int unknownInt3;
+
+ @NonNull
+ @Override
+ public String toString() {
+ return ToStringHelper.name("ThemeSettings")
+ .field("2", unknownInt2)
+ .field("3", unknownInt3)
+ .end();
+ }
+
+ public static final Creator CREATOR = findCreator(ThemeSettings.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/gass/internal/GassRequestParcel.java b/play-services-api/src/main/java/com/google/android/gms/gass/internal/GassRequestParcel.java
new file mode 100644
index 0000000..6666968
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/gass/internal/GassRequestParcel.java
@@ -0,0 +1,32 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.gass.internal;
+
+import android.os.Parcel;
+
+import androidx.annotation.NonNull;
+
+import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
+
+@SafeParcelable.Class
+public class GassRequestParcel extends AbstractSafeParcelable {
+
+ @Field(1)
+ public int versionCode;
+ @Field(2)
+ public String packageName;
+ @Field(3)
+ public String appVersionCode;
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ CREATOR.writeToParcel(this, dest, flags);
+ }
+
+ public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(GassRequestParcel.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/gass/internal/GassResponseParcel.java b/play-services-api/src/main/java/com/google/android/gms/gass/internal/GassResponseParcel.java
new file mode 100644
index 0000000..34e2c61
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/gass/internal/GassResponseParcel.java
@@ -0,0 +1,49 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.gass.internal;
+
+import android.os.Parcel;
+
+import androidx.annotation.NonNull;
+
+import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
+import com.google.android.gms.feedback.ErrorReport;
+
+@SafeParcelable.Class
+public class GassResponseParcel extends AbstractSafeParcelable {
+
+ @Field(1)
+ public int versionCode;
+
+ @Field(2)
+ public byte[] data;
+
+ public ErrorReport report;
+
+ public GassResponseParcel() {
+ }
+
+ public GassResponseParcel(int i, byte[] bArr) {
+ this.versionCode = i;
+ this.report = null;
+ this.data = bArr;
+ }
+
+ public GassResponseParcel(ErrorReport report) {
+ this.versionCode = 1;
+ this.report = report;
+ this.data = null;
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ CREATOR.writeToParcel(this, dest, flags);
+ }
+
+ public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(GassResponseParcel.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/googlehelp/FRDProductSpecificDataEntry.java b/play-services-api/src/main/java/com/google/android/gms/googlehelp/FRDProductSpecificDataEntry.java
new file mode 100644
index 0000000..cf3bfd4
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/googlehelp/FRDProductSpecificDataEntry.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.googlehelp;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class FRDProductSpecificDataEntry extends AutoSafeParcelable {
+ public static final Creator CREATOR = findCreator(FRDProductSpecificDataEntry.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/googlehelp/GoogleHelp.java b/play-services-api/src/main/java/com/google/android/gms/googlehelp/GoogleHelp.java
new file mode 100644
index 0000000..d189a2a
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/googlehelp/GoogleHelp.java
@@ -0,0 +1,131 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.googlehelp;
+
+import android.accounts.Account;
+import android.app.PendingIntent;
+import android.graphics.Bitmap;
+import android.net.Uri;
+import android.os.Bundle;
+import androidx.annotation.NonNull;
+import com.google.android.gms.feedback.ErrorReport;
+import com.google.android.gms.feedback.ThemeSettings;
+import com.google.android.gms.googlehelp.internal.common.OverflowMenuItem;
+import com.google.android.gms.googlehelp.internal.common.TogglingData;
+import org.microg.gms.utils.ToStringHelper;
+import org.microg.safeparcel.AutoSafeParcelable;
+
+import java.util.List;
+
+public class GoogleHelp extends AutoSafeParcelable {
+ @Field(1)
+ private int versionCode;
+ @Field(2)
+ public String appContext;
+ @Field(3)
+ public Account account;
+ @Field(4)
+ public Bundle extras;
+ @Field(5)
+ public boolean unknownBool5;
+ @Field(6)
+ public boolean unknownBool6;
+ @Field(7)
+ public List unknownStringList7;
+ @Field(15)
+ public Uri uri;
+ @Field(16)
+ public List overflowMenuItems;
+ @Field(17)
+ public int unknownAlwaysZero17;
+ @Field(18)
+ public List offlineSuggestions;
+ @Field(20)
+ public int unknownInt20;
+ @Field(21)
+ public int unknownInt21;
+ @Field(22)
+ public boolean unknownBool22;
+ @Field(23)
+ public ErrorReport errorReport;
+ @Field(25)
+ public ThemeSettings themeSettings;
+ @Field(28)
+ public String appPackageName;
+ @Field(31)
+ public TogglingData togglingData;
+ @Field(32)
+ public int unknownInt32;
+ @Field(33)
+ public PendingIntent customFeedbackPendingIntent;
+ @Field(34)
+ public String title;
+ @Field(35)
+ public Bitmap icon;
+ @Field(36)
+ public int unknownInt36;
+ @Field(37)
+ public boolean unknownBool37;
+ @Field(38)
+ public boolean unknownBool38;
+ @Field(39)
+ public int timeout;
+ @Field(40)
+ public String sessionId;
+ @Field(41)
+ public boolean unknownBool41;
+ @Field(42)
+ public String clientPackageName;
+ @Field(43)
+ public boolean unknownBool43;
+ @Field(44)
+ public ND4CSettings nd4CSettings;
+ @Field(45)
+ public boolean unknownBool45;
+ @Field(46)
+ public List productSpecificDataEntries;
+
+ @NonNull
+ @Override
+ public String toString() {
+ return ToStringHelper.name("GoogleHelp")
+ .field("appContext", appContext)
+ .field("account", account)
+ .field("extras", extras)
+ .field("5", unknownBool5)
+ .field("6", unknownBool6)
+ .field("7", unknownStringList7)
+ .field("uri", uri)
+ .field("overflowMenuItems", overflowMenuItems)
+ .field("17", unknownAlwaysZero17)
+ .field("offlineSuggestions", offlineSuggestions)
+ .field("20", unknownInt20)
+ .field("21", unknownInt21)
+ .field("22", unknownBool22)
+ .field("errorReport", errorReport)
+ .field("themeSettings", themeSettings)
+ .field("appPackageName", appPackageName)
+ .field("togglingData", togglingData)
+ .field("32", unknownInt32)
+ .field("customFeedbackPendingIntent", customFeedbackPendingIntent)
+ .field("title", title)
+ .field("icon", icon)
+ .field("36", unknownInt36)
+ .field("37", unknownBool37)
+ .field("38", unknownBool38)
+ .field("timeout", timeout)
+ .field("sessionId", sessionId)
+ .field("41", unknownBool41)
+ .field("clientPackageName", clientPackageName)
+ .field("43", unknownBool43)
+ .field("nd4CSettings", nd4CSettings)
+ .field("45", unknownBool45)
+ .field("productSpecificDataEntries", productSpecificDataEntries)
+ .end();
+ }
+
+ public static final Creator CREATOR = findCreator(GoogleHelp.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/googlehelp/InProductHelp.java b/play-services-api/src/main/java/com/google/android/gms/googlehelp/InProductHelp.java
new file mode 100644
index 0000000..141a168
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/googlehelp/InProductHelp.java
@@ -0,0 +1,14 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.googlehelp;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class InProductHelp extends AutoSafeParcelable {
+ @Field(1)
+ public GoogleHelp googleHelp;
+ public static final Creator CREATOR = findCreator(InProductHelp.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/googlehelp/ND4CSettings.java b/play-services-api/src/main/java/com/google/android/gms/googlehelp/ND4CSettings.java
new file mode 100644
index 0000000..c16a0e1
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/googlehelp/ND4CSettings.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.googlehelp;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ND4CSettings extends AutoSafeParcelable {
+ public static final Creator CREATOR = findCreator(ND4CSettings.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/googlehelp/OfflineSuggestion.java b/play-services-api/src/main/java/com/google/android/gms/googlehelp/OfflineSuggestion.java
new file mode 100644
index 0000000..952164a
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/googlehelp/OfflineSuggestion.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.googlehelp;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class OfflineSuggestion extends AutoSafeParcelable {
+ public static final Creator CREATOR = findCreator(OfflineSuggestion.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/googlehelp/SupportRequestHelp.java b/play-services-api/src/main/java/com/google/android/gms/googlehelp/SupportRequestHelp.java
new file mode 100644
index 0000000..4fd8d35
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/googlehelp/SupportRequestHelp.java
@@ -0,0 +1,17 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.googlehelp;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class SupportRequestHelp extends AutoSafeParcelable {
+ @Field(1)
+ public GoogleHelp googleHelp;
+ @Field(4)
+ public String phoneNumber;
+
+ public static final Creator CREATOR = findCreator(SupportRequestHelp.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/googlehelp/internal/common/OverflowMenuItem.java b/play-services-api/src/main/java/com/google/android/gms/googlehelp/internal/common/OverflowMenuItem.java
new file mode 100644
index 0000000..e966f7c
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/googlehelp/internal/common/OverflowMenuItem.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.googlehelp.internal.common;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class OverflowMenuItem extends AutoSafeParcelable {
+ public static final Creator CREATOR = findCreator(OverflowMenuItem.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/googlehelp/internal/common/TogglingData.java b/play-services-api/src/main/java/com/google/android/gms/googlehelp/internal/common/TogglingData.java
new file mode 100644
index 0000000..f2e21c8
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/googlehelp/internal/common/TogglingData.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.googlehelp.internal.common;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class TogglingData extends AutoSafeParcelable {
+ public static final Creator CREATOR = findCreator(TogglingData.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/identity/accounts/api/AccountData.java b/play-services-api/src/main/java/com/google/android/gms/identity/accounts/api/AccountData.java
new file mode 100644
index 0000000..d909cbf
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/identity/accounts/api/AccountData.java
@@ -0,0 +1,20 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.identity.accounts.api;
+
+public class AccountData {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/identity/intents/model/CountrySpecification.java b/play-services-api/src/main/java/com/google/android/gms/identity/intents/model/CountrySpecification.java
new file mode 100644
index 0000000..b9770e3
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/identity/intents/model/CountrySpecification.java
@@ -0,0 +1,20 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.identity.intents.model;
+
+public class CountrySpecification {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/identity/intents/model/UserAddress.java b/play-services-api/src/main/java/com/google/android/gms/identity/intents/model/UserAddress.java
new file mode 100644
index 0000000..aa3959f
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/identity/intents/model/UserAddress.java
@@ -0,0 +1,20 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.identity.intents.model;
+
+public class UserAddress {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/languageprofile/ClientLanguageSettings.java b/play-services-api/src/main/java/com/google/android/gms/languageprofile/ClientLanguageSettings.java
new file mode 100644
index 0000000..6494728
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/languageprofile/ClientLanguageSettings.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2022 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.languageprofile;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ClientLanguageSettings extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(ClientLanguageSettings.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/languageprofile/LanguageFluency.java b/play-services-api/src/main/java/com/google/android/gms/languageprofile/LanguageFluency.java
new file mode 100644
index 0000000..40058ee
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/languageprofile/LanguageFluency.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2022 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.languageprofile;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class LanguageFluency extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(LanguageFluency.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/languageprofile/LanguageFluencyParams.java b/play-services-api/src/main/java/com/google/android/gms/languageprofile/LanguageFluencyParams.java
new file mode 100644
index 0000000..0c022ac
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/languageprofile/LanguageFluencyParams.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2022 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.languageprofile;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class LanguageFluencyParams extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(LanguageFluencyParams.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/languageprofile/LanguagePreference.java b/play-services-api/src/main/java/com/google/android/gms/languageprofile/LanguagePreference.java
new file mode 100644
index 0000000..a9f7eb3
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/languageprofile/LanguagePreference.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2022 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.languageprofile;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class LanguagePreference extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(LanguagePreference.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/languageprofile/LanguagePreferenceParams.java b/play-services-api/src/main/java/com/google/android/gms/languageprofile/LanguagePreferenceParams.java
new file mode 100644
index 0000000..6b599a8
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/languageprofile/LanguagePreferenceParams.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2022 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.languageprofile;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class LanguagePreferenceParams extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(LanguagePreferenceParams.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/IneligibilityRationale.java b/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/IneligibilityRationale.java
new file mode 100644
index 0000000..2184aad
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/IneligibilityRationale.java
@@ -0,0 +1,47 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.locationsharingreporter;
+
+import android.os.Parcel;
+
+import androidx.annotation.NonNull;
+
+import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
+
+@SafeParcelable.Class
+public class IneligibilityRationale extends AbstractSafeParcelable {
+ @Field(1)
+ public final String unknownStr1;
+ @Field(2)
+ public final boolean unknownBool2;
+ @Field(3)
+ public final String unknownStr3;
+ @Field(4)
+ public final boolean unknownBool4;
+ @Field(5)
+ public final boolean unknownBool5;
+ @Field(6)
+ public final boolean unknownBool6;
+
+ @Constructor
+ public IneligibilityRationale(@Param(1) String unknownStr1, @Param(2) boolean unknownBool2, @Param(3) String unknownStr3,
+ @Param(4) boolean unknownBool4, @Param(5) boolean unknownBool5, @Param(6) boolean unknownBool6) {
+ this.unknownStr1 = unknownStr1;
+ this.unknownBool2 = unknownBool2;
+ this.unknownStr3 = unknownStr3;
+ this.unknownBool4 = unknownBool4;
+ this.unknownBool5 = unknownBool5;
+ this.unknownBool6 = unknownBool6;
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ CREATOR.writeToParcel(this, dest, flags);
+ }
+
+ public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(IneligibilityRationale.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/LocationCollectionReason.java b/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/LocationCollectionReason.java
new file mode 100644
index 0000000..d71ec7e
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/LocationCollectionReason.java
@@ -0,0 +1,40 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.locationsharingreporter;
+
+import android.os.Parcel;
+
+import androidx.annotation.NonNull;
+
+import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
+
+
+@SafeParcelable.Class
+public class LocationCollectionReason extends AbstractSafeParcelable {
+ @Field(1)
+ public final int locationCollectionReason;
+
+ @Constructor
+ public LocationCollectionReason(@Param(1) int locationCollectionReason) {
+ this.locationCollectionReason = locationCollectionReason;
+ }
+
+ @NonNull
+ @Override
+ public String toString() {
+ return "LocationCollectionReason{" +
+ "locationCollectionReason=" + locationCollectionReason +
+ '}';
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ CREATOR.writeToParcel(this, dest, flags);
+ }
+
+ public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(LocationCollectionReason.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/LocationReportingStatus.java b/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/LocationReportingStatus.java
new file mode 100644
index 0000000..e476911
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/LocationReportingStatus.java
@@ -0,0 +1,41 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.locationsharingreporter;
+
+import android.os.Parcel;
+
+import androidx.annotation.NonNull;
+
+import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
+
+
+@SafeParcelable.Class
+public class LocationReportingStatus extends AbstractSafeParcelable {
+ @Field(1)
+ public final int unknownInt1;
+ @Field(2)
+ public final int unknownInt2;
+ @Field(3)
+ public final boolean unknownBool3;
+ @Field(4)
+ public final IneligibilityRationale ineligibilityRationale;
+
+ @Constructor
+ public LocationReportingStatus(@Param(1) int unknownInt1, @Param(2) int unknownInt2, @Param(3) boolean unknownBool3, @Param(4) IneligibilityRationale ineligibilityRationale0) {
+ this.unknownInt1 = unknownInt1;
+ this.unknownInt2 = unknownInt2;
+ this.unknownBool3 = unknownBool3;
+ this.ineligibilityRationale = ineligibilityRationale0;
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ CREATOR.writeToParcel(this, dest, flags);
+ }
+
+ public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(LocationReportingStatus.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/LocationShare.java b/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/LocationShare.java
new file mode 100644
index 0000000..5882039
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/LocationShare.java
@@ -0,0 +1,46 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.locationsharingreporter;
+
+import android.os.Parcel;
+
+import androidx.annotation.NonNull;
+
+import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
+
+@SafeParcelable.Class
+public class LocationShare extends AbstractSafeParcelable {
+ @Field(1)
+ public final int locationShareType;
+ @Field(2)
+ public final String tokenId;
+ @Field(3)
+ public final String obfuscatedGaiaId;
+
+ @Constructor
+ public LocationShare(@Param(1) int locationShareType, @Param(2) String tokenId, @Param(3) String obfuscatedGaiaId) {
+ this.locationShareType = locationShareType;
+ this.tokenId = tokenId;
+ this.obfuscatedGaiaId = obfuscatedGaiaId;
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ CREATOR.writeToParcel(this, dest, flags);
+ }
+
+ public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(LocationShare.class);
+
+ @Override
+ public String toString() {
+ return "LocationShare{" +
+ "locationShareType=" + locationShareType +
+ ", tokenId=" + (tokenId != null ? "\"" + tokenId + "\"" : "null") +
+ ", obfuscatedGaiaId=" + (obfuscatedGaiaId != null ? "\"" + obfuscatedGaiaId + "\"" : "null") +
+ '}';
+ }
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/LocationUploadRequest.java b/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/LocationUploadRequest.java
new file mode 100644
index 0000000..f5c7858
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/LocationUploadRequest.java
@@ -0,0 +1,63 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.locationsharingreporter;
+
+import android.os.Parcel;
+
+import androidx.annotation.NonNull;
+
+import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
+
+@SafeParcelable.Class
+public class LocationUploadRequest extends AbstractSafeParcelable {
+ @Field(1)
+ public final long accuracyMeters;
+ @Field(2)
+ public final int numberOfFix;
+ @Field(3)
+ public final long intervalMillis;
+ @Field(4)
+ public final long fastIntervalMillis;
+ @Field(5)
+ public final long expirationMillis;
+ @Field(6)
+ public final LocationCollectionReason locationCollectionReason;
+ @Field(7)
+ public final boolean unknownBool7;
+ @Field(8)
+ public final boolean throttleExempt;
+ @Field(9)
+ public final String moduleId;
+ @Field(10)
+ public final String unknownString10;
+ @Field(11)
+ public final long unknownLong11;
+
+ @Constructor
+ public LocationUploadRequest(@Param(1) long accuracyMeters, @Param(2) int numberOfFix, @Param(3) long intervalMillis, @Param(4) long fastIntervalMillis,
+ @Param(5) long expirationMillis, @Param(6) LocationCollectionReason locationCollectionReason,
+ @Param(7) boolean unknownBool7, @Param(8) boolean throttleExempt, @Param(9) String moduleId, @Param(10) String unknownString10, @Param(11) long unknownLong11) {
+ this.accuracyMeters = accuracyMeters;
+ this.numberOfFix = numberOfFix;
+ this.intervalMillis = intervalMillis;
+ this.fastIntervalMillis = fastIntervalMillis;
+ this.expirationMillis = expirationMillis;
+ this.locationCollectionReason = locationCollectionReason;
+ this.unknownBool7 = unknownBool7;
+ this.throttleExempt = throttleExempt;
+ this.moduleId = moduleId;
+ this.unknownString10 = unknownString10;
+ this.unknownLong11 = unknownLong11;
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ CREATOR.writeToParcel(this, dest, flags);
+ }
+
+ public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(LocationUploadRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/LocationUploadResponse.java b/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/LocationUploadResponse.java
new file mode 100644
index 0000000..4d452ea
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/LocationUploadResponse.java
@@ -0,0 +1,34 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.locationsharingreporter;
+
+import android.os.Parcel;
+
+import androidx.annotation.NonNull;
+
+import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
+
+@SafeParcelable.Class
+public class LocationUploadResponse extends AbstractSafeParcelable {
+ @Field(1)
+ public final int unknownInt1;
+ @Field(2)
+ public final LocationReportingStatus locationReportingStatus;
+
+ @Constructor
+ public LocationUploadResponse(@Param(1) int unknownInt1, @Param(2) LocationReportingStatus locationReportingStatus) {
+ this.unknownInt1 = unknownInt1;
+ this.locationReportingStatus = locationReportingStatus;
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ CREATOR.writeToParcel(this, dest, flags);
+ }
+
+ public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(LocationUploadResponse.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/NoticeAckedUpdateRequest.java b/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/NoticeAckedUpdateRequest.java
new file mode 100644
index 0000000..7d1e01b
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/NoticeAckedUpdateRequest.java
@@ -0,0 +1,39 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.locationsharingreporter;
+
+import android.os.Parcel;
+
+import androidx.annotation.NonNull;
+
+import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
+
+@SafeParcelable.Class
+public class NoticeAckedUpdateRequest extends AbstractSafeParcelable {
+ @Field(1)
+ public final int isConfirmed;
+
+ @Constructor
+ public NoticeAckedUpdateRequest(@Param(1) int isConfirmed) {
+ this.isConfirmed = isConfirmed;
+ }
+
+ @NonNull
+ @Override
+ public final String toString() {
+ return "NoticeAckedUpdateRequest{" +
+ "isConfirmed=" + isConfirmed +
+ '}';
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ CREATOR.writeToParcel(this, dest, flags);
+ }
+
+ public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(NoticeAckedUpdateRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/PeriodicLocationReportingIssues.java b/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/PeriodicLocationReportingIssues.java
new file mode 100644
index 0000000..fa02a27
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/PeriodicLocationReportingIssues.java
@@ -0,0 +1,48 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.locationsharingreporter;
+
+import android.os.Bundle;
+import android.os.Parcel;
+
+import androidx.annotation.NonNull;
+
+import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
+
+import java.util.Arrays;
+
+@SafeParcelable.Class
+public class PeriodicLocationReportingIssues extends AbstractSafeParcelable {
+ @Field(1)
+ private final int[] generalIssues;
+ @Field(2)
+ private final Bundle issuesByAccount;
+ @Field(4)
+ private final boolean isCentralizedSharingFlagEnabled;
+
+ @Constructor
+ public PeriodicLocationReportingIssues(@Param(1) int[] generalIssues, @Param(2) Bundle issuesByAccount, @Param(4) boolean isCentralizedSharingFlagEnabled) {
+ this.generalIssues = generalIssues;
+ this.issuesByAccount = issuesByAccount;
+ this.isCentralizedSharingFlagEnabled = isCentralizedSharingFlagEnabled;
+ }
+
+ @NonNull
+ @Override
+ public final String toString() {
+ return "PeriodicLocationReportingIssues{generalIssues=" + Arrays.toString(this.generalIssues)
+ + ", issuesByAccount=" + this.issuesByAccount + ", isCentralizedSharingFlagEnabled="
+ + this.isCentralizedSharingFlagEnabled + "}";
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ CREATOR.writeToParcel(this, dest, flags);
+ }
+
+ public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(PeriodicLocationReportingIssues.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/PeriodicLocationUploadRequest.java b/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/PeriodicLocationUploadRequest.java
new file mode 100644
index 0000000..d9cc17d
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/PeriodicLocationUploadRequest.java
@@ -0,0 +1,50 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.locationsharingreporter;
+
+import android.os.Parcel;
+
+import androidx.annotation.NonNull;
+
+import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
+
+@SafeParcelable.Class
+public class PeriodicLocationUploadRequest extends AbstractSafeParcelable {
+ @Field(1)
+ public final LocationCollectionReason locationCollectionReason;
+ @Field(2)
+ public final LocationShare locationShare;
+ @Field(3)
+ public final int makePrimaryOption;
+ @Field(4)
+ public final long duration;
+ @Field(5)
+ public final boolean unknownBool5;
+ @Field(6)
+ public final String unknownStr6;
+ @Field(7)
+ public final boolean unknownBool7;
+
+ @Constructor
+ public PeriodicLocationUploadRequest(@Param(1) LocationCollectionReason locationCollectionReason, @Param(2) LocationShare locationShare,
+ @Param(3) int makePrimaryOption, @Param(4) long duration, @Param(5) boolean unknownBool5, @Param(6) String unknownStr6, @Param(7) boolean unknownBool7) {
+ this.locationCollectionReason = locationCollectionReason;
+ this.locationShare = locationShare;
+ this.makePrimaryOption = makePrimaryOption;
+ this.duration = duration;
+ this.unknownBool5 = unknownBool5;
+ this.unknownStr6 = unknownStr6;
+ this.unknownBool7 = unknownBool7;
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ CREATOR.writeToParcel(this, dest, flags);
+ }
+
+ public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(PeriodicLocationUploadRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/StartLocationReportingRequest.java b/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/StartLocationReportingRequest.java
new file mode 100644
index 0000000..8c2af87
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/StartLocationReportingRequest.java
@@ -0,0 +1,56 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.locationsharingreporter;
+
+import android.os.Parcel;
+
+import androidx.annotation.NonNull;
+
+import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
+
+@SafeParcelable.Class
+public class StartLocationReportingRequest extends AbstractSafeParcelable {
+ @Field(1)
+ public final int makePrimary;
+ @Field(2)
+ public final int reportingType;
+ @Field(3)
+ public final LocationShare locationShare;
+ @Field(4)
+ public final long requestDurationMs;
+ @Field(5)
+ public final NoticeAckedUpdateRequest noticeAckedUpdateRequest;
+
+ @Constructor
+ public StartLocationReportingRequest(@Param(1) int makePrimary, @Param(2) int reportingType, @Param(3) LocationShare locationShare,
+ @Param(4) long requestDurationMs, @Param(5) NoticeAckedUpdateRequest noticeAckedUpdateRequest) {
+ this.makePrimary = makePrimary;
+ this.reportingType = reportingType;
+ this.requestDurationMs = requestDurationMs;
+ this.locationShare = locationShare;
+ this.noticeAckedUpdateRequest = noticeAckedUpdateRequest;
+ }
+
+ @NonNull
+ @Override
+ public final String toString() {
+ return "StartLocationReportingRequest{" +
+ "makePrimary=" + makePrimary +
+ ", reportingType=" + reportingType +
+ ", locationShare=" + locationShare +
+ ", requestDurationMs=" + requestDurationMs +
+ ", noticeAckedUpdateRequest=" + noticeAckedUpdateRequest +
+ '}';
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ CREATOR.writeToParcel(this, dest, flags);
+ }
+
+ public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(StartLocationReportingRequest.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/StopLocationReportingRequest.java b/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/StopLocationReportingRequest.java
new file mode 100644
index 0000000..da3440b
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/locationsharingreporter/StopLocationReportingRequest.java
@@ -0,0 +1,36 @@
+/*
+ * SPDX-FileCopyrightText: 2025 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+package com.google.android.gms.locationsharingreporter;
+
+import android.os.Parcel;
+
+import androidx.annotation.NonNull;
+
+import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
+
+@SafeParcelable.Class
+public class StopLocationReportingRequest extends AbstractSafeParcelable {
+ @Field(1)
+ public final LocationShare locationShare;
+ @Constructor
+ public StopLocationReportingRequest(@Param(1) LocationShare locationShare) {
+ this.locationShare = locationShare;
+ }
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ CREATOR.writeToParcel(this, dest, flags);
+ }
+
+ public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(StopLocationReportingRequest.class);
+
+ @Override
+ public String toString() {
+ return "StopLocationReportingRequest{" +
+ "locationShare=" + (locationShare != null ? locationShare.toString() : "null") +
+ '}';
+ }
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/measurement/internal/AppMetadata.java b/play-services-api/src/main/java/com/google/android/gms/measurement/internal/AppMetadata.java
new file mode 100644
index 0000000..ad2c505
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/measurement/internal/AppMetadata.java
@@ -0,0 +1,79 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.measurement.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+import java.util.List;
+
+public class AppMetadata extends AutoSafeParcelable {
+ @Field(2)
+ public String packageName;
+ @Field(3)
+ public String googleAppId;
+ @Field(4)
+ public String versionName;
+ @Field(5)
+ public String installerPackageName;
+ @Field(6)
+ private long googleVersion;
+ @Field(7)
+ private long devCertHash;
+ @Field(8)
+ private String healthMonitor;
+ @Field(9)
+ private boolean measurementEnabled = true;
+ @Field(10)
+ private boolean firstOpen;
+ @Field(11)
+ public long versionCode = Integer.MIN_VALUE;
+ @Field(12)
+ public String firebaseInstanceId;
+ @Field(13)
+ private long androidId;
+ @Field(14)
+ private long instantiationTime;
+ @Field(15)
+ public int appType;
+ @Field(16)
+ private boolean adIdReportingEnabled = true;
+ @Field(17)
+ public boolean ssaidCollectionEnabled = true;
+ @Field(18)
+ public boolean deferredAnalyticsCollection;
+ @Field(19)
+ public String admobAppId;
+ @Field(21)
+ public Boolean allowAdPersonalization;
+ @Field(22)
+ private long dynamiteVersion;
+ @Field(23)
+ public List safelistedEvents;
+ @Field(24)
+ public String gaAppId;
+ @Field(25)
+ private String consentSettings = "";
+ @Field(26)
+ public String ephemeralAppInstanceId = "";
+ @Field(27)
+ private String sessionStitchingToken;
+ @Field(28)
+ private boolean sgtmUploadEnabled = false;
+ @Field(29)
+ private long targetOsVersion;
+ @Field(30)
+ private int consentSource = 100;
+ @Field(31)
+ private String dmaConsent = "";
+ @Field(32)
+ private int adServicesVersion;
+
+ public String toString() {
+ return "AppMetadata[" + packageName + "]";
+ }
+
+ public static final Creator CREATOR = new AutoCreator<>(AppMetadata.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/measurement/internal/ConditionalUserPropertyParcel.java b/play-services-api/src/main/java/com/google/android/gms/measurement/internal/ConditionalUserPropertyParcel.java
new file mode 100644
index 0000000..108c8ef
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/measurement/internal/ConditionalUserPropertyParcel.java
@@ -0,0 +1,35 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.measurement.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ConditionalUserPropertyParcel extends AutoSafeParcelable {
+ @Field(2)
+ public String appId;
+ @Field(3)
+ public String origin;
+ @Field(4)
+ public UserAttributeParcel userAttribute;
+ @Field(5)
+ public long creationTimestamp;
+ @Field(6)
+ public boolean active;
+ @Field(7)
+ public String triggerEventName;
+ @Field(8)
+ public EventParcel timedOutEvent;
+ @Field(9)
+ public long triggerTimeout;
+ @Field(10)
+ public EventParcel triggerEvent;
+ @Field(11)
+ public long timeToLive;
+ @Field(12)
+ public EventParcel expiredEvent;
+
+ public static final Creator CREATOR = new AutoCreator<>(ConditionalUserPropertyParcel.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/measurement/internal/EventParams.java b/play-services-api/src/main/java/com/google/android/gms/measurement/internal/EventParams.java
new file mode 100644
index 0000000..54de139
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/measurement/internal/EventParams.java
@@ -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 CREATOR = new AutoCreator<>(EventParams.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/measurement/internal/EventParcel.java b/play-services-api/src/main/java/com/google/android/gms/measurement/internal/EventParcel.java
new file mode 100644
index 0000000..7b5b617
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/measurement/internal/EventParcel.java
@@ -0,0 +1,21 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+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 CREATOR = new AutoCreator<>(EventParcel.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/measurement/internal/UserAttributeParcel.java b/play-services-api/src/main/java/com/google/android/gms/measurement/internal/UserAttributeParcel.java
new file mode 100644
index 0000000..a2c03ed
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/measurement/internal/UserAttributeParcel.java
@@ -0,0 +1,35 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.measurement.internal;
+
+import androidx.annotation.Nullable;
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class UserAttributeParcel extends AutoSafeParcelable {
+ @Field(1)
+ public int versionCode = 2;
+ @Field(2)
+ public String name;
+ @Field(3)
+ public long timestamp;
+ @Field(4)
+ @Nullable
+ public Long longValue;
+ @Deprecated
+ @Field(5)
+ @Nullable
+ public Float floatValue;
+ @Field(6)
+ @Nullable
+ public String stringValue;
+ @Field(7)
+ public String field7;
+ @Field(8)
+ @Nullable
+ public Double doubleValue;
+
+ public static final Creator CREATOR = new AutoCreator<>(UserAttributeParcel.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/people/internal/ParcelableLoadImageOptions.java b/play-services-api/src/main/java/com/google/android/gms/people/internal/ParcelableLoadImageOptions.java
new file mode 100644
index 0000000..61180fd
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/people/internal/ParcelableLoadImageOptions.java
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.people.internal;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class ParcelableLoadImageOptions extends AutoSafeParcelable {
+ @SafeParceled(1000)
+ private int versionCode = 1;
+
+ @SafeParceled(1)
+ public int imageSize;
+
+ @SafeParceled(2)
+ public int avatarOptions;
+
+ @SafeParceled(3)
+ public boolean useLargePictureForCp2Images;
+
+ public static final Creator CREATOR = new AutoCreator(ParcelableLoadImageOptions.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/people/model/AccountMetadata.java b/play-services-api/src/main/java/com/google/android/gms/people/model/AccountMetadata.java
new file mode 100644
index 0000000..814a657
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/people/model/AccountMetadata.java
@@ -0,0 +1,40 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.people.model;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class AccountMetadata extends AutoSafeParcelable {
+
+ @SafeParceled(1)
+ private int versionCode = 2;
+
+ @SafeParceled(2)
+ public boolean hasGooglePlus = true;
+
+ @SafeParceled(3)
+ public boolean hasFeature2 = true;
+
+ @SafeParceled(4)
+ public boolean hasFeature3 = true;
+
+ @SafeParceled(5)
+ public boolean hasFeature4 = true;
+
+ public static Creator CREATOR = new AutoCreator(AccountMetadata.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/people/model/AvatarReference.java b/play-services-api/src/main/java/com/google/android/gms/people/model/AvatarReference.java
new file mode 100644
index 0000000..b03af38
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/people/model/AvatarReference.java
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.people.model;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+import org.microg.safeparcel.SafeParceled;
+
+public class AvatarReference extends AutoSafeParcelable {
+
+ @SafeParceled(1000)
+ private int versionCode;
+
+ @SafeParceled(1)
+ public int source;
+
+ @SafeParceled(2)
+ public String location;
+
+ public static final Creator CREATOR = new AutoCreator(AvatarReference.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/phenotype/Configurations.java b/play-services-api/src/main/java/com/google/android/gms/phenotype/Configurations.java
new file mode 100644
index 0000000..9d91f78
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/phenotype/Configurations.java
@@ -0,0 +1,25 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.phenotype;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class Configurations extends AutoSafeParcelable {
+ @Field(2)
+ public String snapshotToken;
+ @Field(3)
+ public String serverToken;
+ @Field(4)
+ public Configuration[] field4;
+ @Field(5)
+ public boolean field5;
+ @Field(6)
+ public byte[] field6;
+ @Field(7)
+ public long version;
+
+ public static final Creator CREATOR = new AutoCreator<>(Configurations.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/phenotype/DogfoodsToken.java b/play-services-api/src/main/java/com/google/android/gms/phenotype/DogfoodsToken.java
new file mode 100644
index 0000000..917d375
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/phenotype/DogfoodsToken.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.phenotype;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class DogfoodsToken extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(DogfoodsToken.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/phenotype/FlagOverrides.java b/play-services-api/src/main/java/com/google/android/gms/phenotype/FlagOverrides.java
new file mode 100644
index 0000000..dca1216
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/phenotype/FlagOverrides.java
@@ -0,0 +1,12 @@
+/*
+ * SPDX-FileCopyrightText: 2020, microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.phenotype;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class FlagOverrides extends AutoSafeParcelable {
+ public static final Creator CREATOR = new AutoCreator<>(FlagOverrides.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/phenotype/RegistrationInfo.java b/play-services-api/src/main/java/com/google/android/gms/phenotype/RegistrationInfo.java
new file mode 100644
index 0000000..7b9f6cd
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/phenotype/RegistrationInfo.java
@@ -0,0 +1,27 @@
+/*
+ * SPDX-FileCopyrightText: 2021 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.phenotype;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class RegistrationInfo extends AutoSafeParcelable {
+ @Field(1)
+ public String packageName;
+ @Field(2)
+ public int version;
+ @Field(3)
+ public String[] field3;
+ @Field(4)
+ public byte[] field4;
+ @Field(5)
+ public boolean weak;
+ @Field(6)
+ public int[] field6;
+ @Field(7)
+ public String clientPackageName;
+
+ public static final Creator CREATOR = new AutoCreator<>(RegistrationInfo.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/plus/internal/PlusCommonExtras.java b/play-services-api/src/main/java/com/google/android/gms/plus/internal/PlusCommonExtras.java
new file mode 100644
index 0000000..72d908e
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/plus/internal/PlusCommonExtras.java
@@ -0,0 +1,20 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.plus.internal;
+
+public class PlusCommonExtras {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/plus/internal/PlusSession.java b/play-services-api/src/main/java/com/google/android/gms/plus/internal/PlusSession.java
new file mode 100644
index 0000000..b5b3f8a
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/plus/internal/PlusSession.java
@@ -0,0 +1,20 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.plus.internal;
+
+public class PlusSession {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/plus/internal/model/smart_profile/CardsRequest.java b/play-services-api/src/main/java/com/google/android/gms/plus/internal/model/smart_profile/CardsRequest.java
new file mode 100644
index 0000000..aee4d0b
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/plus/internal/model/smart_profile/CardsRequest.java
@@ -0,0 +1,20 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.plus.internal.model.smart_profile;
+
+public class CardsRequest {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/plus/internal/model/smart_profile/CardsResponse.java b/play-services-api/src/main/java/com/google/android/gms/plus/internal/model/smart_profile/CardsResponse.java
new file mode 100644
index 0000000..bf6c967
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/plus/internal/model/smart_profile/CardsResponse.java
@@ -0,0 +1,20 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.plus.internal.model.smart_profile;
+
+public class CardsResponse {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/plus/internal/model/smart_profile/PeopleForProfilesRequest.java b/play-services-api/src/main/java/com/google/android/gms/plus/internal/model/smart_profile/PeopleForProfilesRequest.java
new file mode 100644
index 0000000..c45512d
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/plus/internal/model/smart_profile/PeopleForProfilesRequest.java
@@ -0,0 +1,20 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.plus.internal.model.smart_profile;
+
+public class PeopleForProfilesRequest {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/plus/internal/model/smart_profile/PeopleForProfilesResponse.java b/play-services-api/src/main/java/com/google/android/gms/plus/internal/model/smart_profile/PeopleForProfilesResponse.java
new file mode 100644
index 0000000..4c108aa
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/plus/internal/model/smart_profile/PeopleForProfilesResponse.java
@@ -0,0 +1,20 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.plus.internal.model.smart_profile;
+
+public class PeopleForProfilesResponse {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/plus/model/posts/Comment.java b/play-services-api/src/main/java/com/google/android/gms/plus/model/posts/Comment.java
new file mode 100644
index 0000000..37a215c
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/plus/model/posts/Comment.java
@@ -0,0 +1,20 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.plus.model.posts;
+
+public class Comment {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/plus/model/posts/Post.java b/play-services-api/src/main/java/com/google/android/gms/plus/model/posts/Post.java
new file mode 100644
index 0000000..3b9c346
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/plus/model/posts/Post.java
@@ -0,0 +1,20 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.plus.model.posts;
+
+public class Post {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/plus/model/posts/Settings.java b/play-services-api/src/main/java/com/google/android/gms/plus/model/posts/Settings.java
new file mode 100644
index 0000000..a7045a3
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/plus/model/posts/Settings.java
@@ -0,0 +1,20 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.plus.model.posts;
+
+public class Settings {
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/potokens/PoToken.java b/play-services-api/src/main/java/com/google/android/gms/potokens/PoToken.java
new file mode 100644
index 0000000..9f5a3f4
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/potokens/PoToken.java
@@ -0,0 +1,20 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.potokens;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class PoToken extends AutoSafeParcelable {
+
+ @Field(1)
+ public byte[] data;
+
+ public PoToken(byte[] data) {
+ this.data = data;
+ }
+
+ public static Creator CREATOR = findCreator(PoToken.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/pseudonymous/PseudonymousIdToken.java b/play-services-api/src/main/java/com/google/android/gms/pseudonymous/PseudonymousIdToken.java
new file mode 100644
index 0000000..18df15c
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/pseudonymous/PseudonymousIdToken.java
@@ -0,0 +1,34 @@
+/*
+ * SPDX-FileCopyrightText: 2023 microG Project Team
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package com.google.android.gms.pseudonymous;
+
+import android.os.Parcel;
+
+import androidx.annotation.NonNull;
+
+import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelable;
+import com.google.android.gms.common.internal.safeparcel.SafeParcelableCreatorAndWriter;
+
+@SafeParcelable.Class
+public class PseudonymousIdToken extends AbstractSafeParcelable {
+
+ @Field(2)
+ public String name;
+
+ @Constructor
+ public PseudonymousIdToken(@Param(2) String name) {
+ this.name = name;
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ CREATOR.writeToParcel(this, dest, flags);
+ }
+
+ public static final SafeParcelableCreatorAndWriter CREATOR = findCreator(PseudonymousIdToken.class);
+
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/reminders/AccountState.java b/play-services-api/src/main/java/com/google/android/gms/reminders/AccountState.java
new file mode 100644
index 0000000..4ad0101
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/reminders/AccountState.java
@@ -0,0 +1,23 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.reminders;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class AccountState extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(AccountState.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/reminders/CreateReminderOptionsInternal.java b/play-services-api/src/main/java/com/google/android/gms/reminders/CreateReminderOptionsInternal.java
new file mode 100644
index 0000000..cc0d81c
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/reminders/CreateReminderOptionsInternal.java
@@ -0,0 +1,23 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.reminders;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class CreateReminderOptionsInternal extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(CreateReminderOptionsInternal.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/reminders/LoadRemindersOptions.java b/play-services-api/src/main/java/com/google/android/gms/reminders/LoadRemindersOptions.java
new file mode 100644
index 0000000..fd69c55
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/reminders/LoadRemindersOptions.java
@@ -0,0 +1,23 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.reminders;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class LoadRemindersOptions extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(LoadRemindersOptions.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/reminders/ReindexDueDatesOptions.java b/play-services-api/src/main/java/com/google/android/gms/reminders/ReindexDueDatesOptions.java
new file mode 100644
index 0000000..e6a4eba
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/reminders/ReindexDueDatesOptions.java
@@ -0,0 +1,23 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.reminders;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class ReindexDueDatesOptions extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(ReindexDueDatesOptions.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/reminders/UpdateRecurrenceOptions.java b/play-services-api/src/main/java/com/google/android/gms/reminders/UpdateRecurrenceOptions.java
new file mode 100644
index 0000000..ae70874
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/reminders/UpdateRecurrenceOptions.java
@@ -0,0 +1,23 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.reminders;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class UpdateRecurrenceOptions extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(UpdateRecurrenceOptions.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/reminders/model/CustomizedSnoozePresetEntity.java b/play-services-api/src/main/java/com/google/android/gms/reminders/model/CustomizedSnoozePresetEntity.java
new file mode 100644
index 0000000..29ee864
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/reminders/model/CustomizedSnoozePresetEntity.java
@@ -0,0 +1,23 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.reminders.model;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class CustomizedSnoozePresetEntity extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(CustomizedSnoozePresetEntity.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/reminders/model/TaskEntity.java b/play-services-api/src/main/java/com/google/android/gms/reminders/model/TaskEntity.java
new file mode 100644
index 0000000..4062335
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/reminders/model/TaskEntity.java
@@ -0,0 +1,23 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.reminders.model;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class TaskEntity extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator(TaskEntity.class);
+}
diff --git a/play-services-api/src/main/java/com/google/android/gms/reminders/model/TaskIdEntity.java b/play-services-api/src/main/java/com/google/android/gms/reminders/model/TaskIdEntity.java
new file mode 100644
index 0000000..1816b1f
--- /dev/null
+++ b/play-services-api/src/main/java/com/google/android/gms/reminders/model/TaskIdEntity.java
@@ -0,0 +1,23 @@
+/*
+ * 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.
+ */
+
+package com.google.android.gms.reminders.model;
+
+import org.microg.safeparcel.AutoSafeParcelable;
+
+public class TaskIdEntity extends AutoSafeParcelable {
+ public static Creator CREATOR = new AutoCreator