From 18c3a6154dc41cebe1d4aeda5592b8f23928356f Mon Sep 17 00:00:00 2001 From: Marvin W Date: Sun, 30 Oct 2022 18:28:54 -0600 Subject: [PATCH 01/14] Merge/rename/restructure modules. --- build.gradle | 13 +- .../build.gradle | 0 .../core}/build.gradle | 3 +- .../core}/src/main/AndroidManifest.xml | 0 .../core}/src/main/assets/recaptcha.html | 0 .../gms/firebase/auth/FirebaseAuthService.kt | 0 .../firebase/auth/IdentityToolkitClient.kt | 0 .../gms/firebase/auth/ReCaptchaActivity.kt | 0 .../gms/firebase/auth/ReCaptchaOverlay.kt | 0 .../main/res/layout/activity_recaptcha.xml | 0 .../src/main/AndroidManifest.xml | 0 .../firebase/auth/ActionCodeSettings.aidl | 0 .../firebase/auth/EmailAuthCredential.aidl | 0 .../firebase/auth/PhoneAuthCredential.aidl | 0 .../auth/UserProfileChangeRequest.aidl | 0 .../internal/ApplyActionCodeAidlRequest.aidl | 0 .../api/internal/ChangeEmailAidlRequest.aidl | 0 .../internal/ChangePasswordAidlRequest.aidl | 0 .../internal/CheckActionCodeAidlRequest.aidl | 0 .../ConfirmPasswordResetAidlRequest.aidl | 0 .../api/internal/CreateAuthUriResponse.aidl | 0 ...teUserWithEmailAndPasswordAidlRequest.aidl | 0 .../auth/api/internal/DeleteAidlRequest.aidl | 0 .../FinalizeMfaEnrollmentAidlRequest.aidl | 0 .../FinalizeMfaSignInAidlRequest.aidl | 0 .../internal/GetAccessTokenAidlRequest.aidl | 0 .../auth/api/internal/GetAccountInfoUser.aidl | 0 .../GetProvidersForEmailAidlRequest.aidl | 0 .../auth/api/internal/GetTokenResponse.aidl | 0 .../api/internal/IFirebaseAuthCallbacks.aidl | 0 .../api/internal/IFirebaseAuthService.aidl | 0 .../LinkEmailAuthCredentialAidlRequest.aidl | 0 .../LinkFederatedCredentialAidlRequest.aidl | 0 .../LinkPhoneAuthCredentialAidlRequest.aidl | 0 .../auth/api/internal/ReloadAidlRequest.aidl | 0 .../api/internal/ResetPasswordResponse.aidl | 0 ...ilVerificationWithSettingsAidlRequest.aidl | 0 ...etOobConfirmationCodeEmailAidlRequest.aidl | 0 .../SendVerificationCodeAidlRequest.aidl | 0 .../internal/SendVerificationCodeRequest.aidl | 0 .../SetFirebaseUiVersionAidlRequest.aidl | 0 .../SignInAnonymouslyAidlRequest.aidl | 0 .../SignInWithCredentialAidlRequest.aidl | 0 .../SignInWithCustomTokenAidlRequest.aidl | 0 ...SignInWithEmailAndPasswordAidlRequest.aidl | 0 .../SignInWithEmailLinkAidlRequest.aidl | 0 .../SignInWithPhoneNumberAidlRequest.aidl | 0 ...rtMfaPhoneNumberEnrollmentAidlRequest.aidl | 0 .../StartMfaPhoneNumberSignInAidlRequest.aidl | 0 .../auth/api/internal/StringList.aidl | 0 .../api/internal/UnenrollMfaAidlRequest.aidl | 0 .../UnlinkEmailCredentialAidlRequest.aidl | 0 .../UnlinkFederatedCredentialAidlRequest.aidl | 0 .../internal/UpdateProfileAidlRequest.aidl | 0 .../api/internal/VerifyAssertionRequest.aidl | 0 .../VerifyBeforeUpdateEmailAidlRequest.aidl | 0 .../firebase/auth/ActionCodeSettings.java | 0 .../google/firebase/auth/AuthCredential.java | 0 .../firebase/auth/DefaultOAuthCredential.java | 0 .../firebase/auth/EmailAuthCredential.java | 0 .../google/firebase/auth/OAuthCredential.java | 0 .../firebase/auth/PhoneAuthCredential.java | 0 .../auth/UserProfileChangeRequest.java | 0 .../internal/ApplyActionCodeAidlRequest.java | 0 .../api/internal/ChangeEmailAidlRequest.java | 0 .../internal/ChangePasswordAidlRequest.java | 0 .../internal/CheckActionCodeAidlRequest.java | 0 .../ConfirmPasswordResetAidlRequest.java | 0 .../api/internal/CreateAuthUriResponse.java | 0 ...teUserWithEmailAndPasswordAidlRequest.java | 0 .../auth/api/internal/DeleteAidlRequest.java | 0 .../FinalizeMfaEnrollmentAidlRequest.java | 0 .../FinalizeMfaSignInAidlRequest.java | 0 .../internal/GetAccessTokenAidlRequest.java | 0 .../auth/api/internal/GetAccountInfoUser.java | 0 .../GetProvidersForEmailAidlRequest.java | 0 .../auth/api/internal/GetTokenResponse.java | 0 .../LinkEmailAuthCredentialAidlRequest.java | 0 .../LinkFederatedCredentialAidlRequest.java | 0 .../LinkPhoneAuthCredentialAidlRequest.java | 0 .../firebase/auth/api/internal/MfaInfo.java | 0 .../auth/api/internal/ProviderUserInfo.java | 0 .../api/internal/ProviderUserInfoList.java | 0 .../auth/api/internal/ReloadAidlRequest.java | 0 .../api/internal/ResetPasswordResponse.java | 0 ...ilVerificationWithSettingsAidlRequest.java | 0 ...etOobConfirmationCodeEmailAidlRequest.java | 0 .../SendVerificationCodeAidlRequest.java | 0 .../internal/SendVerificationCodeRequest.java | 0 .../SetFirebaseUiVersionAidlRequest.java | 0 .../SignInAnonymouslyAidlRequest.java | 0 .../SignInWithCredentialAidlRequest.java | 0 .../SignInWithCustomTokenAidlRequest.java | 0 ...SignInWithEmailAndPasswordAidlRequest.java | 0 .../SignInWithEmailLinkAidlRequest.java | 0 .../SignInWithPhoneNumberAidlRequest.java | 0 ...rtMfaPhoneNumberEnrollmentAidlRequest.java | 0 .../StartMfaPhoneNumberSignInAidlRequest.java | 0 .../auth/api/internal/StringList.java | 0 .../api/internal/UnenrollMfaAidlRequest.java | 0 .../UnlinkEmailCredentialAidlRequest.java | 0 .../UnlinkFederatedCredentialAidlRequest.java | 0 .../internal/UpdateProfileAidlRequest.java | 0 .../api/internal/VerifyAssertionRequest.java | 0 .../VerifyBeforeUpdateEmailAidlRequest.java | 0 .../microg/gms/firebase/auth/Constants.java | 0 gradle/publish-android.gradle | 1 + play-services-api/build.gradle | 8 +- .../build.gradle | 0 .../src/main/AndroidManifest.xml | 2 +- .../internal/IAppInviteCallbacks.aidl | 0 .../appinvite/internal/IAppInviteService.aidl | 0 .../build.gradle | 11 +- .../src/main/AndroidManifest.xml | 2 +- .../android/auth/IAuthManagerService.aidl | 0 .../gms/auth/AccountChangeEventsRequest.aidl | 0 .../gms/auth/AccountChangeEventsResponse.aidl | 0 .../gms/auth/GetHubTokenInternalResponse.aidl | 0 .../android/gms/auth/GetHubTokenRequest.aidl | 0 .../gms/auth/HasCababilitiesRequest.aidl | 0 .../gms/auth/api/internal/IAuthCallbacks.aidl | 0 .../gms/auth/api/internal/IAuthService.aidl | 0 .../gms/auth/api/proxy/ProxyRequest.aidl | 0 .../gms/auth/api/proxy/ProxyResponse.aidl | 0 .../android/gms/auth/AccountChangeEvent.java | 0 .../gms/auth/AccountChangeEventsRequest.java | 0 .../gms/auth/AccountChangeEventsResponse.java | 0 .../gms/auth/GetHubTokenInternalResponse.java | 0 .../android/gms/auth/GetHubTokenRequest.java | 0 .../gms/auth/HasCababilitiesRequest.java | 0 .../google/android/gms/auth/TokenData.java | 0 .../gms/auth/api/proxy/ProxyRequest.java | 0 .../gms/auth/api/proxy/ProxyResponse.java | 0 play-services-auth/build.gradle | 40 +++ .../src/main/AndroidManifest.xml | 2 +- .../gms/auth/api/credentials/Credential.aidl | 0 .../api/credentials/CredentialRequest.aidl | 0 .../credentials/internal/DeleteRequest.aidl | 0 .../internal/GeneratePasswordRequest.aidl | 0 .../internal/ICredentialsCallbacks.aidl | 0 .../internal/ICredentialsService.aidl | 0 .../api/credentials/internal/SaveRequest.aidl | 0 .../gms/auth/api/credentials/Credential.java | 0 .../credentials/CredentialPickerConfig.java | 0 .../api/credentials/CredentialRequest.java | 0 .../gms/auth/api/credentials/HintRequest.java | 0 .../gms/auth/api/credentials/IdToken.java | 0 .../api/credentials/IdentityProviders.java | 0 .../credentials/internal/DeleteRequest.java | 0 .../internal/GeneratePasswordRequest.java | 0 .../api/credentials/internal/SaveRequest.java | 0 .../google/android/gms/auth/package-info.java | 11 + play-services-base-api/build.gradle | 47 ---- .../src/main/AndroidManifest.xml | 6 - .../src/main/AndroidManifest.xml | 9 - .../src/main/res/values-be/strings.xml | 14 - .../src/main/res/values-de/strings.xml | 14 - .../src/main/res/values-it/strings.xml | 13 - .../src/main/res/values-ru/strings.xml | 14 - .../src/main/res/values-zh-rCN/strings.xml | 7 - .../src/main/res/values/strings.xml | 14 - play-services-base-core/build.gradle | 41 --- play-services-base/build.gradle | 6 +- .../core}/build.gradle | 28 +- .../core}/src/main/AndroidManifest.xml | 0 .../microg/gms/AbstractGmsServiceBroker.java | 0 .../main/java/org/microg/gms/BaseService.java | 0 .../java/org/microg/gms/DummyService.java | 0 .../gms/common/DeviceConfiguration.java | 0 .../microg/gms/common/DeviceIdentifier.java | 0 .../gms/common/ForegroundServiceContext.java | 0 .../gms/common/ForegroundServiceInfo.java | 0 .../org/microg/gms/common/HttpFormClient.java | 0 .../microg/gms/common/MultiListenerProxy.java | 0 .../org/microg/gms/common/NonCancelToken.java | 0 .../org/microg/gms/common/PackageUtils.java | 0 .../java/org/microg/gms/common/PhoneInfo.java | 0 .../gms/common/RemoteListenerProxy.java | 0 .../java/org/microg/gms/common/Utils.java | 0 .../kotlin/org/microg/gms/profile/Build.kt | 0 .../org/microg/gms/profile/ProfileManager.kt | 0 .../microg/gms/settings/SettingsContract.kt | 0 .../microg/gms/settings/SettingsProvider.kt | 0 .../org/microg/gms/ui/AppIconPreference.kt | 0 .../kotlin/org/microg/gms/ui/Constants.kt | 0 .../org/microg/gms/ui/PreferenceSwitchBar.kt | 0 .../org/microg/gms/ui/TextPreference.kt | 0 .../main/kotlin/org/microg/gms/ui/Utils.kt | 0 .../org/microg/gms/utils/BinderUtils.kt | 0 .../microg/gms/utils/FileXmlResourceParser.kt | 0 .../microg/gms/utils/PackageManagerUtils.kt | 0 .../microg/gms/utils/PackageManagerWrapper.kt | 0 .../res/drawable/ic_background_notify.xml | 0 .../src/main/res/drawable/ic_expand_apps.xml | 0 .../src/main/res/drawable/ic_info_outline.xml | 0 .../core}/src/main/res/drawable/ic_open.xml | 0 .../core}/src/main/res/drawable/ic_radio.xml | 0 .../main/res/drawable/ic_radio_checked.xml | 0 .../main/res/drawable/ic_radio_unchecked.xml | 0 .../src/main/res/layout/list_no_item.xml | 0 .../layout/preference_category_no_label.xml | 0 .../main/res/layout/preference_switch_bar.xml | 0 .../core}/src/main/res/values-be/strings.xml | 7 + .../core}/src/main/res/values-de/strings.xml | 7 + .../core}/src/main/res/values-es/strings.xml | 0 .../core}/src/main/res/values-fr/strings.xml | 0 .../core}/src/main/res/values-it/strings.xml | 8 +- .../core}/src/main/res/values-ja/strings.xml | 0 .../core}/src/main/res/values-pl/strings.xml | 0 .../src/main/res/values-pt-rBR/strings.xml | 0 .../core}/src/main/res/values-ru/strings.xml | 7 + .../core}/src/main/res/values-sr/strings.xml | 0 .../core}/src/main/res/values-uk/strings.xml | 0 .../src/main/res/values-zh-rCN/strings.xml | 7 +- .../src/main/res/values-zh-rTW/strings.xml | 0 .../core}/src/main/res/values/strings.xml | 7 + .../core}/src/main/res/values/themes.xml | 0 .../src/main/AndroidManifest.xml | 21 +- .../common/api/internal/IStatusCallback.aidl | 0 .../android/gms/common/data/DataHolder.aidl | 0 .../android/gms/common/images/WebImage.aidl | 0 .../common/internal/ISignInButtonCreator.aidl | 0 .../common/server/FavaDiagnosticsEntity.aidl | 0 .../auth/api/signin/GoogleSignInAccount.java | 0 .../gms/common/api/GoogleApiClient.java | 2 + .../android/gms/common/data/DataHolder.java | 0 .../android/gms/common/data/Freezable.java | 0 .../android/gms/common/images/WebImage.java | 0 .../common/server/FavaDiagnosticsEntity.java | 0 .../api/VoidReturningGoogleApiCall.java | 22 ++ .../src/main/res/values/version.xml | 20 -- play-services-basement/build.gradle | 3 +- .../ktx}/build.gradle | 2 +- .../ktx}/src/main/AndroidManifest.xml | 0 .../android/gms/dynamic/ObjectWrapper.kt | 0 .../src/main/AndroidManifest.xml | 24 +- .../internal/GoogleCertificatesQuery.aidl | 0 .../gms/common/internal/ICertData.aidl | 0 .../internal/IGoogleCertificatesApi.aidl | 0 .../android/gms/dynamite/IDynamiteLoader.aidl | 0 .../android/gms/common/internal/CertData.java | 0 .../internal/GoogleCertificatesQuery.java | 0 .../java/org/microg/gms/common/Constants.java | 2 +- .../src/main/res/values/version.xml | 9 + play-services-cast-api/build.gradle | 42 --- .../src/main/AndroidManifest.xml | 18 -- play-services-cast-framework-api/build.gradle | 40 --- .../src/main/AndroidManifest.xml | 18 -- play-services-cast-framework/build.gradle | 48 ++++ .../core/build.gradle | 55 ++++ .../core/src/main/AndroidManifest.xml | 12 + .../framework/internal/CastContextImpl.java | 0 .../internal/CastDynamiteModuleImpl.java | 0 .../framework/internal/CastSessionImpl.java | 0 .../internal/DiscoveryManagerImpl.java | 0 .../internal/MediaRouterCallbackImpl.java | 0 .../cast/framework/internal/SessionImpl.java | 0 .../internal/SessionManagerImpl.java | 0 .../src/main/AndroidManifest.xml | 2 +- .../gms/cast/framework/CastOptions.aidl | 0 .../framework/IAppVisibilityListener.aidl | 0 .../framework/ICastConnectionController.aidl | 0 .../gms/cast/framework/ICastContext.aidl | 0 .../gms/cast/framework/ICastSession.aidl | 0 .../cast/framework/ICastStateListener.aidl | 0 .../gms/cast/framework/IDiscoveryManager.aidl | 0 .../framework/IDiscoveryManagerListener.aidl | 0 .../cast/framework/IReconnectionService.aidl | 0 .../android/gms/cast/framework/ISession.aidl | 0 .../gms/cast/framework/ISessionManager.aidl | 0 .../framework/ISessionManagerListener.aidl | 0 .../gms/cast/framework/ISessionProvider.aidl | 0 .../gms/cast/framework/ISessionProxy.aidl | 0 .../internal/ICastDynamiteModule.aidl | 0 .../cast/framework/internal/IMediaRouter.aidl | 0 .../internal/IMediaRouterCallback.aidl | 0 .../framework/media/CastMediaOptions.aidl | 0 .../cast/framework/media/IImagePicker.aidl | 0 .../media/IMediaNotificationService.aidl | 0 .../media/INotificationActionsProvider.aidl | 0 .../framework/media/NotificationOptions.aidl | 0 .../media/internal/IFetchBitmapTask.aidl | 0 .../IFetchBitmapTaskProgressPublisher.aidl | 0 .../gms/cast/framework/CastOptions.java | 0 .../android/gms/cast/framework/CastState.java | 0 .../framework/media/CastMediaOptions.java | 0 .../framework/media/NotificationOptions.java | 0 play-services-cast/build.gradle | 13 +- .../core}/build.gradle | 25 +- .../core/src/main/AndroidManifest.xml | 23 ++ .../media/CastMediaRouteProviderService.java | 0 .../gms/cast/CastDeviceControllerImpl.java | 0 .../gms/cast/CastDeviceControllerService.java | 0 .../gms/cast/CastMediaRouteController.java | 0 .../gms/cast/CastMediaRouteProvider.java | 0 .../android/gms/cast/ApplicationMetadata.aidl | 0 .../android/gms/cast/ApplicationStatus.aidl | 0 .../android/gms/cast/CastDeviceStatus.aidl | 0 .../google/android/gms/cast/JoinOptions.aidl | 0 .../android/gms/cast/LaunchOptions.aidl | 0 .../google/android/gms/cast/RequestItem.aidl | 0 .../gms/cast/internal/IBundleCallback.aidl | 0 .../cast/internal/ICastDeviceController.aidl | 0 .../ICastDeviceControllerListener.aidl | 0 .../gms/cast/internal/ICastService.aidl | 0 .../android/gms/cast/ApplicationMetadata.java | 0 .../android/gms/cast/ApplicationStatus.java | 0 .../google/android/gms/cast/CastDevice.java | 0 .../android/gms/cast/CastDeviceStatus.java | 0 .../gms/cast/CastMediaControlIntent.java | 0 .../android/gms/cast/CastStatusCodes.java | 0 .../google/android/gms/cast/JoinOptions.java | 0 .../android/gms/cast/LaunchOptions.java | 0 .../google/android/gms/cast/RequestItem.java | 0 play-services-clearcut/build.gradle | 39 +++ .../src/main/AndroidManifest.xml | 6 + .../gms/clearcut/LogEventParcelable.aidl | 0 .../internal/IClearcutLoggerCallbacks.aidl | 0 .../internal/IClearcutLoggerService.aidl | 0 .../clearcut/internal/PlayLoggerContext.aidl | 0 .../gms/playlog/internal/IPlayLogService.aidl | 0 .../gms/playlog/internal/LogEvent.aidl | 0 .../gms/clearcut/LogEventParcelable.java | 0 .../internal/LogVerifierResultParcelable.java | 0 .../clearcut/internal/PlayLoggerContext.java | 0 .../gms/playlog/internal/LogEvent.java | 0 play-services-core/build.gradle | 46 +-- .../src/main/AndroidManifest.xml | 14 - .../gms/location/LocationConstants.java | 0 .../microg/gms/auth/appcert/AppCertManager.kt | 2 +- .../gms/auth/login/DroidGuardHandler.kt | 7 +- .../gms/clearcut/ClearcutLoggerService.kt | 1 - .../gms/ui/NearbyPreferencesIntegration.kt | 5 +- .../core}/build.gradle | 2 +- .../core}/src/main/AndroidManifest.xml | 0 .../gms/cronet_dynamite/ModuleDescriptor.java | 0 .../build.gradle | 11 +- .../src/main/AndroidManifest.xml | 6 + .../internal/AddEventListenerRequest.aidl | 0 .../drive/internal/AddPermissionRequest.aidl | 0 .../internal/AuthorizeAccessRequest.aidl | 0 .../internal/CancelPendingActionsRequest.aidl | 0 .../ChangeResourceParentsRequest.aidl | 0 .../drive/internal/ChangeSequenceNumber.aidl | 0 .../gms/drive/internal/ChangesResponse.aidl | 0 .../CheckResourceIdsExistRequest.aidl | 0 ...CloseContentsAndUpdateMetadataRequest.aidl | 0 .../drive/internal/CloseContentsRequest.aidl | 0 .../gms/drive/internal/ContentsResponse.aidl | 0 .../internal/ControlProgressRequest.aidl | 0 .../drive/internal/CreateContentsRequest.aidl | 0 .../CreateFileIntentSenderRequest.aidl | 0 .../gms/drive/internal/CreateFileRequest.aidl | 0 .../drive/internal/CreateFolderRequest.aidl | 0 .../drive/internal/DeleteResourceRequest.aidl | 0 .../DeviceUsagePreferenceResponse.aidl | 0 .../gms/drive/internal/DisconnectRequest.aidl | 0 .../internal/DownloadProgressResponse.aidl | 0 .../gms/drive/internal/DriveIdResponse.aidl | 0 .../internal/DrivePreferencesResponse.aidl | 0 .../drive/internal/DriveServiceResponse.aidl | 0 .../gms/drive/internal/EventResponse.aidl | 0 .../drive/internal/FetchThumbnailRequest.aidl | 0 .../internal/FetchThumbnailResponse.aidl | 0 .../gms/drive/internal/GetChangesRequest.aidl | 0 .../GetDriveIdFromUniqueIdRequest.aidl | 0 .../drive/internal/GetMetadataRequest.aidl | 0 .../drive/internal/GetPermissionsRequest.aidl | 0 .../internal/GetPermissionsResponse.aidl | 0 .../gms/drive/internal/IDriveService.aidl | 0 .../internal/IDriveServiceCallbacks.aidl | 0 .../gms/drive/internal/IEventCallback.aidl | 0 .../gms/drive/internal/IRealtimeService.aidl | 0 .../drive/internal/ListEntriesResponse.aidl | 0 .../drive/internal/ListParentsRequest.aidl | 0 .../drive/internal/ListParentsResponse.aidl | 0 .../drive/internal/LoadRealtimeRequest.aidl | 0 .../drive/internal/LoadRealtimeResponse.aidl | 0 .../gms/drive/internal/MetadataResponse.aidl | 0 .../drive/internal/OpenContentsRequest.aidl | 0 .../internal/OpenFileIntentSenderRequest.aidl | 0 .../internal/RealtimeDocumentSyncRequest.aidl | 0 .../internal/RemoveEventListenerRequest.aidl | 0 .../internal/RemovePermissionRequest.aidl | 0 .../drive/internal/ResourceIdSetResponse.aidl | 0 .../internal/SetDrivePreferencesRequest.aidl | 0 .../SetFileUploadPreferencesRequest.aidl | 0 .../internal/SetResourceParentsRequest.aidl | 0 .../drive/internal/StartStreamSession.aidl | 0 .../drive/internal/StreamContentsRequest.aidl | 0 .../drive/internal/StringListResponse.aidl | 0 .../gms/drive/internal/SyncMoreResponse.aidl | 0 .../drive/internal/TrashResourceRequest.aidl | 0 .../internal/UnsubscribeResourceRequest.aidl | 0 .../internal/UntrashResourceRequest.aidl | 0 .../drive/internal/UpdateMetadataRequest.aidl | 0 .../internal/UpdatePermissionRequest.aidl | 0 .../internal/AddEventListenerRequest.java | 0 .../drive/internal/AddPermissionRequest.java | 0 .../internal/AuthorizeAccessRequest.java | 0 .../internal/CancelPendingActionsRequest.java | 0 .../ChangeResourceParentsRequest.java | 0 .../drive/internal/ChangeSequenceNumber.java | 0 .../gms/drive/internal/ChangesResponse.java | 0 .../CheckResourceIdsExistRequest.java | 0 ...CloseContentsAndUpdateMetadataRequest.java | 0 .../drive/internal/CloseContentsRequest.java | 0 .../gms/drive/internal/ContentsResponse.java | 0 .../internal/ControlProgressRequest.java | 0 .../drive/internal/CreateContentsRequest.java | 0 .../CreateFileIntentSenderRequest.java | 0 .../gms/drive/internal/CreateFileRequest.java | 0 .../drive/internal/CreateFolderRequest.java | 0 .../drive/internal/DeleteResourceRequest.java | 0 .../DeviceUsagePreferenceResponse.java | 0 .../gms/drive/internal/DisconnectRequest.java | 0 .../internal/DownloadProgressResponse.java | 0 .../gms/drive/internal/DriveIdResponse.java | 0 .../internal/DrivePreferencesResponse.java | 0 .../drive/internal/DriveServiceResponse.java | 0 .../gms/drive/internal/EventResponse.java | 0 .../drive/internal/FetchThumbnailRequest.java | 0 .../internal/FetchThumbnailResponse.java | 0 .../gms/drive/internal/GetChangesRequest.java | 0 .../GetDriveIdFromUniqueIdRequest.java | 0 .../drive/internal/GetMetadataRequest.java | 0 .../drive/internal/GetPermissionsRequest.java | 0 .../internal/GetPermissionsResponse.java | 0 .../drive/internal/ListEntriesResponse.java | 0 .../drive/internal/ListParentsRequest.java | 0 .../drive/internal/ListParentsResponse.java | 0 .../drive/internal/LoadRealtimeRequest.java | 0 .../drive/internal/LoadRealtimeResponse.java | 0 .../gms/drive/internal/MetadataResponse.java | 0 .../drive/internal/OpenContentsRequest.java | 0 .../internal/OpenFileIntentSenderRequest.java | 0 .../internal/RealtimeDocumentSyncRequest.java | 0 .../internal/RemoveEventListenerRequest.java | 0 .../internal/RemovePermissionRequest.java | 0 .../drive/internal/ResourceIdSetResponse.java | 0 .../internal/SetDrivePreferencesRequest.java | 0 .../SetFileUploadPreferencesRequest.java | 0 .../internal/SetResourceParentsRequest.java | 0 .../drive/internal/StartStreamSession.java | 0 .../drive/internal/StreamContentsRequest.java | 0 .../drive/internal/StringListResponse.java | 0 .../gms/drive/internal/SyncMoreResponse.java | 0 .../drive/internal/TrashResourceRequest.java | 0 .../internal/UnsubscribeResourceRequest.java | 0 .../internal/UntrashResourceRequest.java | 0 .../drive/internal/UpdateMetadataRequest.java | 0 .../internal/UpdatePermissionRequest.java | 0 .../metadata/internal/MetadataBundle.java | 0 .../src/main/AndroidManifest.xml | 7 - .../build.gradle | 33 --- .../src/main/AndroidManifest.xml | 11 - play-services-droidguard/build.gradle | 3 - .../core}/build.gradle | 17 +- .../core}/src/main/AndroidManifest.xml | 0 .../droidguard/DroidGuardChimeraService.java | 0 .../tracing/wrapper/TracingIntentService.java | 0 .../microg/gms/droidguard/GuardCallback.java | 0 .../microg/gms/droidguard/MediaDrmLock.java | 0 .../gms/droidguard/core/BytesException.kt | 0 .../gms/droidguard/core/DgDatabaseHelper.kt | 0 .../gms/droidguard/core/DgpDatabaseHelper.kt | 0 .../droidguard/core/DroidGuardHandleImpl.kt | 57 ++-- .../droidguard/core/DroidGuardPreferences.kt | 0 .../core/DroidGuardResultCreator.kt | 30 +- .../gms/droidguard/core/DroidGuardService.kt | 0 .../core/DroidGuardServiceBroker.kt | 0 .../droidguard/core/DroidGuardServiceImpl.kt | 0 .../gms/droidguard/core/FallbackCreator.kt | 0 .../microg/gms/droidguard/core/HandleProxy.kt | 0 .../gms/droidguard/core/HandleProxyFactory.kt | 0 .../gms/droidguard/core/SignatureVerifier.kt | 0 .../microg/gms/droidguard/core/VersionUtil.kt | 0 .../core/ui/ContainedEditTextPreference.kt | 1 + .../core/ui/DroidGuardPreferencesFragment.kt | 7 +- .../core}/src/main/proto/droidguard.proto | 0 .../res/layout/preference_edit_widget.xml | 0 .../preference_material_with_widget_below.xml | 0 .../core}/src/main/res/values-be/strings.xml | 0 .../core}/src/main/res/values-ru/strings.xml | 0 .../src/main/res/values-zh-rCN/strings.xml | 0 .../core}/src/main/res/values/strings.xml | 0 .../main/res/xml/preferences_droidguard.xml | 0 .../internal/DroidGuardInitReply.aidl | 0 .../internal/DroidGuardResultsRequest.aidl | 0 .../internal/IDroidGuardCallbacks.aidl | 0 .../internal/IDroidGuardHandle.aidl | 8 +- .../internal/IDroidGuardService.aidl | 0 .../android/gms/droidguard/DroidGuard.java | 16 ++ .../gms/droidguard/DroidGuardClient.java | 27 ++ .../gms/droidguard/DroidGuardHandle.java | 16 ++ .../internal/DroidGuardInitReply.java | 0 .../internal/DroidGuardResultsRequest.java | 0 .../gms/droidguard/DroidGuardApiClient.java | 81 ++++++ .../gms/droidguard/DroidGuardClientImpl.java | 44 +++ .../gms/droidguard/DroidGuardHandleImpl.java | 88 ++++++ .../java/org/microg/gms/droidguard/Utils.java | 18 ++ .../gms/droidguard/DroidGuardApiClient.kt | 25 -- .../microg/gms/droidguard/DroidGuardClient.kt | 12 - .../gms/droidguard/DroidGuardClientImpl.kt | 32 --- .../microg/gms/droidguard/DroidGuardHandle.kt | 70 ----- .../microg/gms/fido/api/FidoConstants.java | 13 - play-services-fido/build.gradle | 2 - .../core}/build.gradle | 4 +- .../core}/src/main/AndroidManifest.xml | 0 .../org/microg/gms/fido/core/Database.kt | 0 .../microg/gms/fido/core/RequestHandling.kt | 0 .../core/privileged/Fido2PrivilegedService.kt | 0 .../protocol/AndroidKeyAttestationObject.kt | 0 .../AndroidSafetyNetAttestationObject.kt | 0 .../fido/core/protocol/AttestationObject.kt | 0 .../core/protocol/AttestedCredentialData.kt | 0 .../fido/core/protocol/AuthenticatorData.kt | 0 .../org/microg/gms/fido/core/protocol/Cbor.kt | 0 .../microg/gms/fido/core/protocol/CoseKey.kt | 0 .../gms/fido/core/protocol/CredentialId.kt | 0 .../core/protocol/FidoU2fAttestationObject.kt | 0 .../core/protocol/NoneAttestationObject.kt | 0 .../gms/fido/core/protocol/msgs/Apdu.kt | 0 .../msgs/AuthenticatorGetAssertion.kt | 0 .../protocol/msgs/AuthenticatorGetInfo.kt | 0 .../msgs/AuthenticatorMakeCredential.kt | 0 .../fido/core/protocol/msgs/Ctap1Command.kt | 0 .../fido/core/protocol/msgs/Ctap2Command.kt | 0 .../core/protocol/msgs/U2fAuthentication.kt | 0 .../core/protocol/msgs/U2fRegistration.kt | 0 .../gms/fido/core/transport/CtapConnection.kt | 0 .../gms/fido/core/transport/Transport.kt | 0 .../fido/core/transport/TransportHandler.kt | 0 .../bluetooth/BluetoothTransportHandler.kt | 0 .../core/transport/nfc/CtapNfcConnection.kt | 0 .../core/transport/nfc/NfcTransportHandler.kt | 0 .../screenlock/ScreenLockCredentialStore.kt | 0 .../screenlock/ScreenLockTransportHandler.kt | 5 +- .../usb/UsbDevicePermissionManager.kt | 0 .../core/transport/usb/UsbTransportHandler.kt | 0 .../usb/ctaphid/CtapHidConnection.kt | 0 .../transport/usb/ctaphid/CtapHidMessage.kt | 0 .../transport/usb/ctaphid/CtapHidPacket.kt | 0 .../transport/usb/ctaphid/CtapHidRequest.kt | 0 .../transport/usb/ctaphid/CtapHidResponse.kt | 0 .../gms/fido/core/transport/usb/extensions.kt | 0 .../gms/fido/core/ui/AuthenticatorActivity.kt | 3 +- .../core/ui/AuthenticatorActivityFragment.kt | 0 .../ui/AuthenticatorActivityFragmentData.kt | 0 .../gms/fido/core/ui/NfcTransportFragment.kt | 0 .../core/ui/TransportSelectionFragment.kt | 0 .../gms/fido/core/ui/UsbTransportFragment.kt | 0 .../gms/fido/core/ui/WelcomeFragment.kt | 0 .../fido_nfc_wait_connect.xml | 0 .../fido_usb_wait_confirm.xml | 0 .../fido_usb_wait_connect.xml | 0 .../res/drawable/fido_nfc_wait_connect.xml | 0 .../res/drawable/fido_usb_wait_confirm.xml | 0 .../res/drawable/fido_usb_wait_connect.xml | 0 .../main/res/drawable/ic_fido_bluetooth.xml | 0 .../main/res/drawable/ic_fido_fingerprint.xml | 0 .../src/main/res/drawable/ic_fido_key.xml | 0 .../src/main/res/drawable/ic_fido_nfc.xml | 0 .../src/main/res/drawable/ic_fido_usb.xml | 0 .../layout/fido_authenticator_activity.xml | 0 .../layout/fido_nfc_transport_fragment.xml | 0 .../fido_transport_selection_fragment.xml | 0 .../layout/fido_usb_transport_fragment.xml | 0 .../main/res/layout/fido_welcome_fragment.xml | 0 .../res/navigation/nav_fido_authenticator.xml | 0 .../core}/src/main/res/values-be/strings.xml | 0 .../core}/src/main/res/values-ru/strings.xml | 0 .../src/main/res/values-zh-rCN/strings.xml | 0 .../core}/src/main/res/values/strings.xml | 0 .../core}/src/main/res/values/styles.xml | 0 .../src/main/AndroidManifest.xml | 2 +- .../gms/fido/fido2/api/IBooleanCallback.aidl | 0 ...serPublicKeyCredentialCreationOptions.aidl | 0 ...wserPublicKeyCredentialRequestOptions.aidl | 0 .../privileged/IFido2PrivilegedCallbacks.aidl | 0 .../privileged/IFido2PrivilegedService.aidl | 0 .../com/google/android/gms/fido/Fido.java | 10 +- .../android/gms/fido/common/Transport.java | 0 .../fido/fido2/Fido2PrivilegedApiClient.java | 4 - .../gms/fido/fido2/api/common/Algorithm.java | 0 .../gms/fido/fido2/api/common/Attachment.java | 5 - .../AttestationConveyancePreference.java | 0 .../api/common/AuthenticationExtensions.java | 0 ...AuthenticationExtensionsClientOutputs.java | 0 .../AuthenticatorAssertionResponse.java | 0 .../AuthenticatorAttestationResponse.java | 0 .../common/AuthenticatorErrorResponse.java | 0 .../api/common/AuthenticatorResponse.java | 0 .../AuthenticatorSelectionCriteria.java | 0 ...serPublicKeyCredentialCreationOptions.java | 4 - ...wserPublicKeyCredentialRequestOptions.java | 4 - .../api/common/BrowserRequestOptions.java | 0 .../api/common/COSEAlgorithmIdentifier.java | 0 .../api/common/CableAuthenticationData.java | 0 .../common/CableAuthenticationExtension.java | 0 .../fido/fido2/api/common/EC2Algorithm.java | 0 .../gms/fido/fido2/api/common/ErrorCode.java | 0 .../fido2/api/common/FidoAppIdExtension.java | 0 .../fido2/api/common/KeyProtectionTypes.java | 0 .../api/common/MatcherProtectionTypes.java | 0 .../fido2/api/common/PublicKeyCredential.java | 0 .../PublicKeyCredentialCreationOptions.java | 5 - .../common/PublicKeyCredentialDescriptor.java | 0 .../common/PublicKeyCredentialParameters.java | 0 .../PublicKeyCredentialRequestOptions.java | 0 .../common/PublicKeyCredentialRpEntity.java | 0 .../api/common/PublicKeyCredentialType.java | 0 .../common/PublicKeyCredentialUserEntity.java | 0 .../fido/fido2/api/common/RSAAlgorithm.java | 0 .../fido/fido2/api/common/RequestOptions.java | 0 .../fido/fido2/api/common/TokenBinding.java | 0 .../UserVerificationMethodExtension.java | 0 .../api/common/UserVerificationMethods.java | 0 .../common/UserVerificationRequirement.java | 0 .../gms/fido/fido2/api/common/UvmEntries.java | 0 .../gms/fido/fido2/api/common/UvmEntry.java | 0 .../SourceDirectTransferResult.java | 0 .../SourceStartDirectTransferOptions.java | 0 .../src/main/AndroidManifest.xml | 2 +- .../build.gradle | 3 +- .../core}/build.gradle | 4 +- .../core}/src/main/AndroidManifest.xml | 0 .../GmsDeviceComplianceService.kt | 0 .../src/main/AndroidManifest.xml | 0 .../GmsDeviceComplianceResponse.aidl | 0 .../IGmsDeviceComplianceService.aidl | 0 .../IGmsDeviceComplianceServiceCallback.aidl | 0 .../GmsDeviceComplianceResponse.java | 0 play-services-iid-api/build.gradle | 37 --- .../src/main/AndroidManifest.xml | 18 -- play-services-iid/build.gradle | 2 - .../src/main/AndroidManifest.xml | 17 +- .../android/gms/iid/IMessengerCompat.aidl | 0 .../android/gms/iid/MessengerCompat.java | 0 play-services-location-api/build.gradle | 39 --- play-services-location/build.gradle | 5 +- .../core}/build.gradle | 10 +- .../core}/src/main/AndroidManifest.xml | 0 .../gms/location/GoogleLocationManager.java | 0 .../GoogleLocationManagerService.java | 0 .../GoogleLocationManagerServiceImpl.java | 186 ++++++------ .../gms/location/LocationChangeListener.java | 0 .../gms/location/LocationRequestHelper.java | 0 .../gms/location/MockLocationProvider.java | 2 +- .../gms/location/RealLocationProvider.java | 0 .../gms/location/ReportingAndroidService.java | 0 .../gms/location/ReportingServiceImpl.java | 12 +- .../gms/location/UnifiedLocationProvider.kt | 0 .../src/main/AndroidManifest.xml | 8 +- .../location/ActivityRecognitionResult.aidl | 0 .../gms/location/DeviceOrientation.aidl | 0 .../gms/location/GeofencingRequest.aidl | 0 .../android/gms/location/GestureRequest.aidl | 0 .../location/IDeviceOrientationListener.aidl | 0 .../gms/location/ILocationCallback.aidl | 0 .../gms/location/ILocationListener.aidl | 0 .../gms/location/LocationAvailability.aidl | 0 .../android/gms/location/LocationRequest.aidl | 0 .../android/gms/location/LocationResult.aidl | 0 .../gms/location/LocationSettingsRequest.aidl | 0 .../gms/location/LocationSettingsResult.aidl | 0 .../android/gms/location/LocationStatus.aidl | 0 .../DeviceOrientationRequestUpdateData.aidl | 0 .../internal/FusedLocationProviderResult.aidl | 0 .../IFusedLocationProviderCallback.aidl | 0 .../internal/IGeofencerCallbacks.aidl | 0 .../IGoogleLocationManagerService.aidl | 52 ++-- .../location/internal/ISettingsCallbacks.aidl | 0 .../internal/LocationRequestInternal.aidl | 0 .../internal/LocationRequestUpdateData.aidl | 0 .../location/internal/ParcelableGeofence.aidl | 0 .../gms/location/reporting/OptInRequest.aidl | 0 .../location/reporting/ReportingState.aidl | 0 .../location/reporting/SendDataRequest.aidl | 0 .../reporting/UlrPrivateModeRequest.aidl | 0 .../gms/location/reporting/UploadRequest.aidl | 0 .../reporting/UploadRequestResult.aidl | 0 .../reporting/internal/IReportingService.aidl | 4 +- .../gms/location/ActivityRecognition.java | 45 ++- .../gms/location/ActivityRecognitionApi.java | 20 +- .../location/ActivityRecognitionClient.java | 89 ++++++ .../location/ActivityRecognitionResult.java | 103 +++---- .../location/ActivityTransitionRequest.java | 18 ++ .../gms/location/DetectedActivity.java | 0 .../gms/location/DeviceOrientation.java | 0 .../location/DeviceOrientationRequest.java | 0 .../location/FusedLocationProviderApi.java | 109 ++++++-- .../location/FusedLocationProviderClient.java | 88 +++++- .../google/android/gms/location/Geofence.java | 0 .../gms/location/GeofenceStatusCodes.java | 0 .../gms/location/GeofencingClient.java | 22 ++ .../android/gms/location/GeofencingEvent.java | 0 .../gms/location/GeofencingRequest.java | 0 .../android/gms/location/GestureRequest.java | 0 .../gms/location/LocationAvailability.java | 0 .../gms/location/LocationCallback.java | 44 +++ .../android/gms/location/LocationRequest.java | 0 .../android/gms/location/LocationResult.java | 0 .../gms/location/LocationServices.java | 90 ++++-- .../LocationSettingsConfiguration.java | 0 .../gms/location/LocationSettingsRequest.java | 0 .../gms/location/LocationSettingsResult.java | 0 .../gms/location/LocationSettingsStates.java | 0 .../location/LocationSettingsStatusCodes.java | 0 .../android/gms/location/LocationStatus.java | 0 .../gms/location/LocationStatusCodes.java | 43 ++- .../android/gms/location/SettingsApi.java | 18 +- .../android/gms/location/SettingsClient.java | 21 ++ .../gms/location/SleepClassifyEvent.java | 77 +++++ .../gms/location/SleepSegmentEvent.java | 36 +++ .../gms/location/SleepSegmentRequest.java | 71 +++++ .../gms/location/internal/ClientIdentity.java | 0 .../DeviceOrientationRequestInternal.java | 0 .../DeviceOrientationRequestUpdateData.java | 0 .../internal/FusedLocationProviderResult.java | 0 .../internal/LocationRequestInternal.java | 16 +- .../internal/LocationRequestUpdateData.java | 16 +- .../location/internal/ParcelableGeofence.java | 0 .../gms/location/reporting/OptInRequest.java | 1 - .../location/reporting/ReportingState.java | 16 +- .../location/reporting/SendDataRequest.java | 2 - .../reporting/UlrPrivateModeRequest.java | 0 .../gms/location/reporting/UploadRequest.java | 0 .../reporting/UploadRequestResult.java | 0 .../FusedLocationProviderApiImpl.java | 38 ++- .../FusedLocationProviderClientImpl.java | 57 ++++ .../gms/location/GeofencingClientImpl.java | 19 ++ .../gms/location/LocationClientImpl.java | 132 ++++----- .../location/NativeLocationClientImpl.java | 264 ------------------ .../gms/location/SettingsClientImpl.java | 20 ++ play-services-maps-core-mapbox/build.gradle | 2 +- play-services-maps-core-vtm/build.gradle | 2 +- play-services-maps/build.gradle | 35 +++ .../src/main/AndroidManifest.xml | 23 ++ .../android/gms/maps/GoogleMapOptions.aidl | 0 .../ICameraUpdateFactoryDelegate.aidl | 0 .../maps/internal/ICancelableCallback.aidl | 0 .../android/gms/maps/internal/ICreator.aidl | 0 .../gms/maps/internal/IGoogleMapDelegate.aidl | 0 .../gms/maps/internal/IInfoWindowAdapter.aidl | 0 .../internal/ILocationSourceDelegate.aidl | 0 .../maps/internal/IMapFragmentDelegate.aidl | 0 .../gms/maps/internal/IMapViewDelegate.aidl | 0 .../internal/IOnCameraChangeListener.aidl | 0 .../maps/internal/IOnCameraIdleListener.aidl | 0 .../IOnCameraMoveCanceledListener.aidl | 0 .../maps/internal/IOnCameraMoveListener.aidl | 0 .../IOnCameraMoveStartedListener.aidl | 0 .../internal/IOnInfoWindowClickListener.aidl | 0 .../maps/internal/IOnMapClickListener.aidl | 0 .../maps/internal/IOnMapLoadedCallback.aidl | 0 .../internal/IOnMapLongClickListener.aidl | 0 .../maps/internal/IOnMapReadyCallback.aidl | 0 .../maps/internal/IOnMarkerClickListener.aidl | 0 .../maps/internal/IOnMarkerDragListener.aidl | 0 .../IOnMyLocationButtonClickListener.aidl | 0 .../internal/IOnMyLocationChangeListener.aidl | 0 .../maps/internal/IProjectionDelegate.aidl | 0 .../maps/internal/ISnapshotReadyCallback.aidl | 0 .../maps/internal/IUiSettingsDelegate.aidl | 0 .../gms/maps/model/CameraPosition.aidl | 0 .../android/gms/maps/model/CircleOptions.aidl | 0 .../gms/maps/model/GroundOverlayOptions.aidl | 0 .../google/android/gms/maps/model/LatLng.aidl | 0 .../android/gms/maps/model/LatLngBounds.aidl | 0 .../gms/maps/model/MapStyleOptions.aidl | 0 .../android/gms/maps/model/MarkerOptions.aidl | 0 .../android/gms/maps/model/PatternItem.aidl | 0 .../gms/maps/model/PolygonOptions.aidl | 0 .../gms/maps/model/PolylineOptions.aidl | 0 .../google/android/gms/maps/model/Tile.aidl | 0 .../gms/maps/model/TileOverlayOptions.aidl | 0 .../android/gms/maps/model/VisibleRegion.aidl | 0 .../IBitmapDescriptorFactoryDelegate.aidl | 0 .../maps/model/internal/ICircleDelegate.aidl | 0 .../internal/IGroundOverlayDelegate.aidl | 0 .../maps/model/internal/IMarkerDelegate.aidl | 0 .../maps/model/internal/IPolygonDelegate.aidl | 0 .../model/internal/IPolylineDelegate.aidl | 0 .../model/internal/ITileOverlayDelegate.aidl | 0 .../model/internal/ITileProviderDelegate.aidl | 0 .../android/gms/maps/GoogleMapOptions.java | 0 .../gms/maps/StreetViewPanoramaOptions.java | 0 .../android/gms/maps/internal/Point.java | 0 .../gms/maps/model/BitmapDescriptor.java | 0 .../gms/maps/model/CameraPosition.java | 0 .../android/gms/maps/model/CircleOptions.java | 0 .../google/android/gms/maps/model/Dash.java | 0 .../google/android/gms/maps/model/Dot.java | 0 .../google/android/gms/maps/model/Gap.java | 0 .../gms/maps/model/GroundOverlayOptions.java | 0 .../android/gms/maps/model/JointType.java | 0 .../google/android/gms/maps/model/LatLng.java | 0 .../android/gms/maps/model/LatLngBounds.java | 0 .../gms/maps/model/MapStyleOptions.java | 0 .../android/gms/maps/model/MarkerOptions.java | 0 .../android/gms/maps/model/PatternItem.java | 0 .../gms/maps/model/PolygonOptions.java | 0 .../gms/maps/model/PolylineOptions.java | 0 .../maps/model/StreetViewPanoramaCamera.java | 0 .../maps/model/StreetViewPanoramaLink.java | 0 .../model/StreetViewPanoramaLocation.java | 0 .../model/StreetViewPanoramaOrientation.java | 0 .../google/android/gms/maps/model/Tile.java | 0 .../gms/maps/model/TileOverlayOptions.java | 0 .../android/gms/maps/model/TileProvider.java | 0 .../android/gms/maps/model/VisibleRegion.java | 0 .../android/gms/maps/model/package-info.java | 0 .../google/android/gms/maps/package-info.java | 11 + .../org/microg/gms/maps/MapsConstants.java | 0 .../build.gradle | 4 +- .../src/main/AndroidManifest.xml | 6 + .../IAppMeasurementDynamiteService.aidl | 0 .../api/internal/IBundleReceiver.aidl | 0 .../api/internal/IEventHandlerProxy.aidl | 0 .../api/internal/IStringProvider.aidl | 0 .../api/internal/InitializationParams.aidl | 0 .../api/internal/InitializationParams.java | 0 .../src/main/AndroidManifest.xml | 6 - .../exposurenotification/Constants.java | 24 -- play-services-nearby-core-proto/build.gradle | 33 --- play-services-nearby-core-ui/build.gradle | 65 ----- .../src/main/AndroidManifest.xml | 35 --- .../src/main/res/values-be/strings.xml | 11 - .../src/main/res/values-de/strings.xml | 10 - .../src/main/res/values-es/strings.xml | 10 - .../src/main/res/values-it/strings.xml | 7 - .../src/main/res/values-ru/strings.xml | 11 - .../src/main/res/values-zh-rCN/strings.xml | 8 - .../src/main/res/values/strings.xml | 11 - play-services-nearby/build.gradle | 2 - .../core}/build.gradle | 17 +- .../core}/src/main/AndroidManifest.xml | 20 ++ .../exposurenotification/AdvertiserService.kt | 0 .../exposurenotification/CleanupService.kt | 0 .../nearby/exposurenotification/Constants.kt | 0 .../gms/nearby/exposurenotification/Crypto.kt | 0 .../nearby/exposurenotification/DeviceInfo.kt | 0 .../exposurenotification/ExposureDatabase.kt | 0 .../ExposureFileProvider.kt | 0 .../ExposureNotificationService.kt | 0 .../ExposureNotificationServiceImpl.kt | 15 +- .../ExposurePreferences.kt | 0 .../nearby/exposurenotification/Extensions.kt | 0 .../exposurenotification/MeasuredExposure.kt | 0 .../exposurenotification/NotifyService.kt | 5 +- .../exposurenotification/ScannerService.kt | 0 .../exposurenotification/ServiceInfo.kt | 0 .../exposurenotification/ServiceTrigger.kt | 0 .../ui/DotChartPreference.kt | 5 +- .../exposurenotification}/ui/DotChartView.kt | 6 +- .../ui/ExposureNotificationsAppFragment.kt | 7 +- ...sureNotificationsAppPreferencesFragment.kt | 5 +- .../ExposureNotificationsConfirmActivity.kt | 5 +- .../ui/ExposureNotificationsFragment.kt | 8 +- ...xposureNotificationsPreferencesFragment.kt | 5 +- .../ui/ExposureNotificationsRpisFragment.kt | 5 +- .../ExposureNotificationsSettingsActivity.kt | 5 +- .../nearby/exposurenotification}/ui/Utils.kt | 2 +- .../main/proto/TemporaryExposureKeyFile.proto | 0 .../core}/src/main/res/drawable/ic_alert.xml | 0 .../main/res/drawable/ic_bluetooth_off.xml | 0 .../src/main/res/drawable/ic_location_off.xml | 0 .../res/drawable/ic_outline_location_on.xml | 0 .../main/res/drawable/ic_virus_outline.xml | 0 .../exposure_notifications_app_fragment.xml | 4 +- ...xposure_notifications_confirm_activity.xml | 0 .../exposure_notifications_confirm_delete.xml | 0 .../exposure_notifications_fragment.xml | 2 +- ...posure_notifications_settings_activity.xml | 0 .../main/res/layout/preference_dot_chart.xml | 2 +- .../src/main/res/navigation/nav_nearby.xml | 6 +- .../core}/src/main/res/values-be/strings.xml | 22 +- .../core}/src/main/res/values-de/strings.xml | 9 +- .../core}/src/main/res/values-es/strings.xml | 21 +- .../core}/src/main/res/values-it/strings.xml | 21 +- .../core}/src/main/res/values-ru/strings.xml | 22 +- .../src/main/res/values-zh-rCN/strings.xml | 13 +- .../core}/src/main/res/values/strings.xml | 22 +- .../preferences_exposure_notifications.xml | 0 ...preferences_exposure_notifications_app.xml | 0 ...s_exposure_notifications_exportedfiles.xml | 0 ...references_exposure_notifications_rpis.xml | 2 +- .../exposurenotification/CryptoTest.java | 0 .../exposurenotification/TestVectors.java | 0 .../src/main/AndroidManifest.xml | 12 +- .../exposurenotification/DailySummary.aidl | 0 .../DiagnosisKeysDataMapping.aidl | 0 .../ExposureInformation.aidl | 0 .../exposurenotification/ExposureSummary.aidl | 0 .../exposurenotification/ExposureWindow.aidl | 0 .../PackageConfiguration.aidl | 0 .../TemporaryExposureKey.aidl | 0 .../GetCalibrationConfidenceParams.aidl | 0 .../internal/GetDailySummariesParams.aidl | 0 .../GetDiagnosisKeysDataMappingParams.aidl | 0 .../GetExposureInformationParams.aidl | 0 .../internal/GetExposureSummaryParams.aidl | 0 .../internal/GetExposureWindowsParams.aidl | 0 .../GetPackageConfigurationParams.aidl | 0 .../internal/GetStatusParams.aidl | 0 .../GetTemporaryExposureKeyHistoryParams.aidl | 0 .../internal/GetVersionParams.aidl | 0 .../internal/IBooleanCallback.aidl | 0 .../internal/IDailySummaryListCallback.aidl | 0 .../internal/IDiagnosisKeyFileSupplier.aidl | 0 .../IDiagnosisKeysDataMappingCallback.aidl | 0 .../IExposureInformationListCallback.aidl | 0 .../internal/IExposureSummaryCallback.aidl | 0 .../internal/IExposureWindowListCallback.aidl | 0 .../internal/IIntCallback.aidl | 0 .../internal/ILongCallback.aidl | 0 .../INearbyExposureNotificationService.aidl | 0 .../IPackageConfigurationCallback.aidl | 0 .../ITemporaryExposureKeyListCallback.aidl | 0 .../internal/IsEnabledParams.aidl | 0 .../internal/ProvideDiagnosisKeysParams.aidl | 0 ...izedTemporaryExposureKeyHistoryParams.aidl | 0 ...izedTemporaryExposureKeyReleaseParams.aidl | 0 .../SetDiagnosisKeysDataMappingParams.aidl | 0 .../internal/StartParams.aidl | 0 .../internal/StopParams.aidl | 0 .../CalibrationConfidence.java | 0 .../DailySummariesConfig.java | 0 .../exposurenotification/DailySummary.java | 0 .../DiagnosisKeyFileProvider.java | 0 .../DiagnosisKeysDataMapping.java | 0 .../ExposureConfiguration.java | 0 .../ExposureInformation.java | 0 .../ExposureNotificationClient.java | 21 +- .../ExposureNotificationStatus.java | 0 .../ExposureNotificationStatusCodes.java | 0 .../exposurenotification/ExposureSummary.java | 0 .../exposurenotification/ExposureWindow.java | 0 .../exposurenotification/Infectiousness.java | 0 .../PackageConfiguration.java | 0 .../exposurenotification/ReportType.java | 0 .../exposurenotification/RiskLevel.java | 0 .../exposurenotification/ScanInstance.java | 0 .../TemporaryExposureKey.java | 3 +- .../GetCalibrationConfidenceParams.java | 0 .../internal/GetDailySummariesParams.java | 0 .../GetDiagnosisKeysDataMappingParams.java | 0 .../GetExposureInformationParams.java | 0 .../internal/GetExposureSummaryParams.java | 0 .../internal/GetExposureWindowsParams.java | 0 .../GetPackageConfigurationParams.java | 0 .../internal/GetStatusParams.java | 0 .../GetTemporaryExposureKeyHistoryParams.java | 0 .../internal/GetVersionParams.java | 0 .../internal/IsEnabledParams.java | 0 .../internal/ProvideDiagnosisKeysParams.java | 0 ...izedTemporaryExposureKeyHistoryParams.java | 0 ...izedTemporaryExposureKeyReleaseParams.java | 0 .../SetDiagnosisKeysDataMappingParams.java | 0 .../internal/StartParams.java | 0 .../internal/StopParams.java | 0 play-services-oss-licenses/build.gradle | 2 - .../core}/build.gradle | 3 +- .../core}/src/main/AndroidManifest.xml | 0 .../oss/licenses/core/OssLicensesService.kt | 0 .../src/main/AndroidManifest.xml | 2 +- .../gms/oss/licenses/IOSSLicenseService.aidl | 0 .../android/gms/oss/licenses/License.aidl | 0 .../android/gms/oss/licenses/License.java | 0 .../gms/oss/licenses/OssLicensesActivity.java | 1 - .../oss/licenses/OssLicensesMenuActivity.java | 1 - .../microg/gms/oss/licenses/LicenseUtil.java | 0 .../build.gradle | 8 +- .../src/main/AndroidManifest.xml | 6 + .../gms/location/places/PlaceReport.java | 15 +- play-services-places/build.gradle | 38 +++ .../src/main/AndroidManifest.xml | 6 + .../location/places/AutocompleteFilter.aidl | 0 .../location/places/NearbyAlertRequest.aidl | 0 .../gms/location/places/PlaceFilter.aidl | 0 .../gms/location/places/PlaceReport.aidl | 0 .../gms/location/places/PlaceRequest.aidl | 0 .../gms/location/places/UserAddedPlace.aidl | 0 .../gms/location/places/UserDataType.aidl | 0 .../IGooglePlaceDetectionService.aidl | 0 .../places/internal/IGooglePlacesService.aidl | 0 .../places/internal/IPlacesCallbacks.aidl | 0 .../places/internal/PlacesParams.aidl | 0 .../location/places/AutocompleteFilter.java | 0 .../location/places/NearbyAlertRequest.java | 0 .../android/gms/location/places/Place.java | 0 .../gms/location/places/PlaceFilter.java | 0 .../gms/location/places/PlaceRequest.java | 0 .../gms/location/places/UserAddedPlace.java | 0 .../gms/location/places/UserDataType.java | 0 .../location/places/internal/PlaceImpl.java | 0 .../places/internal/PlacesParams.java | 0 play-services-recaptcha/core/build.gradle | 0 .../microg/gms/recaptcha/RecaptchaService.kt | 0 .../src/main/AndroidManifest.xml | 0 play-services-safetynet-api/build.gradle | 35 --- .../src/main/AndroidManifest.xml | 7 - .../build.gradle | 35 --- .../src/main/AndroidManifest.xml | 17 -- play-services-safetynet/build.gradle | 2 - .../core}/build.gradle | 14 +- .../core}/src/main/AndroidManifest.xml | 7 +- .../org/microg/gms/safetynet/Attestation.java | 0 .../microg/gms/safetynet/ReCaptchaActivity.kt | 6 +- .../gms/safetynet/SafetyNetClientService.kt | 9 +- .../microg/gms/safetynet/SafetyNetDatabase.kt | 0 .../gms/safetynet/SafetyNetPreferences.kt | 0 .../gms/safetynet/SafetyNetRequestType.kt | 0 .../microg/gms/safetynet/SafetyNetSummary.kt | 0 .../core}/src/main/proto/safetynet.proto | 0 .../src/main/res/drawable/ic_recaptcha.xml | 0 .../src/main/res/layout/recaptcha_window.xml | 0 .../src/main/AndroidManifest.xml | 2 +- .../gms/safetynet/AttestationData.aidl | 0 .../gms/safetynet/HarmfulAppsData.aidl | 0 .../gms/safetynet/HarmfulAppsInfo.aidl | 0 .../gms/safetynet/RecaptchaResultData.aidl | 0 .../gms/safetynet/RemoveHarmfulAppData.aidl | 0 .../gms/safetynet/SafeBrowsingData.aidl | 0 .../internal/ISafetyNetCallbacks.aidl | 0 .../safetynet/internal/ISafetyNetService.aidl | 0 .../gms/safetynet/AttestationData.java | 0 .../gms/safetynet/HarmfulAppsData.java | 0 .../gms/safetynet/HarmfulAppsInfo.java | 0 .../gms/safetynet/RecaptchaResultData.java | 0 .../gms/safetynet/RemoveHarmfulAppData.java | 0 .../gms/safetynet/SafeBrowsingData.java | 0 .../gms/safetynet/SafetyNetStatusCodes.java | 0 .../gms/safetynet/VerifyAppsConstants.java | 0 .../build.gradle | 3 +- .../core}/build.gradle | 2 +- .../core}/src/main/AndroidManifest.xml | 0 .../microg/gms/tapandpay/TapAndPayService.kt | 0 .../src/main/AndroidManifest.xml | 0 .../gms/tapandpay/firstparty/TokenStatus.aidl | 0 .../tapandpay/internal/ITapAndPayService.aidl | 0 .../internal/ITapAndPayServiceCallbacks.aidl | 0 .../gms/tapandpay/issuer/TokenStatus.aidl | 0 .../gms/tapandpay/TapAndPayStatusCodes.java | 0 .../tapandpay/firstparty/TokenReference.java | 0 .../gms/tapandpay/firstparty/TokenStatus.java | 0 .../gms/tapandpay/issuer/TokenStatus.java | 0 play-services-tasks/build.gradle | 1 + .../ktx}/build.gradle | 2 +- .../ktx}/src/main/AndroidManifest.xml | 0 .../com/google/android/gms/tasks/Tasks.kt | 0 .../src/main/AndroidManifest.xml | 2 +- play-services-vision-api/build.gradle | 34 --- .../src/main/AndroidManifest.xml | 6 - play-services-vision-common-api/build.gradle | 33 --- .../src/main/AndroidManifest.xml | 6 - play-services-vision-common/build.gradle | 2 - .../src/main/AndroidManifest.xml | 2 +- .../vision/internal/FrameMetadataParcel.aidl | 0 .../vision/internal/FrameMetadataParcel.java | 0 play-services-vision/build.gradle | 2 - .../core}/build.gradle | 4 +- .../core}/src/main/AndroidManifest.xml | 0 .../gms/vision/barcode/ModuleDescriptor.java | 0 .../gms/vision/dynamite/ModuleDescriptor.java | 0 .../ChimeraNativeBarcodeDetectorCreator.kt | 0 .../DynamiteNativeBarcodeDetectorCreator.kt | 0 .../gms/vision/barcode/BarcodeDetector.kt | 0 .../vision/barcode/DirectLuminanceSource.kt | 0 .../microg/gms/vision/barcode/Extensions.kt | 0 .../src/main/AndroidManifest.xml | 2 +- .../android/gms/vision/barcode/Barcode.aidl | 0 .../client/BarcodeDetectorOptions.aidl | 0 .../client/INativeBarcodeDetector.aidl | 0 .../client/INativeBarcodeDetectorCreator.aidl | 0 .../android/gms/vision/barcode/Barcode.java | 0 .../client/BarcodeDetectorOptions.java | 0 play-services-wearable-api/build.gradle | 39 --- .../src/main/AndroidManifest.xml | 18 -- play-services-wearable-proto/build.gradle | 29 -- play-services-wearable/build.gradle | 17 +- .../core}/build.gradle | 24 +- .../core/src/main/AndroidManifest.xml | 12 + .../gms/wearable/CapabilityManager.java | 0 .../wearable/ClockworkNodePreferences.java | 0 .../wearable/ConfigurationDatabaseHelper.java | 0 .../microg/gms/wearable/DataItemInternal.java | 0 .../microg/gms/wearable/DataItemRecord.java | 0 .../microg/gms/wearable/MessageHandler.java | 7 +- .../gms/wearable/NodeDatabaseHelper.java | 0 .../org/microg/gms/wearable/RpcHelper.java | 0 .../org/microg/gms/wearable/WearableImpl.java | 2 +- .../microg/gms/wearable/WearableService.java | 0 .../gms/wearable/WearableServiceImpl.java | 0 .../location/WearableLocationService.java | 0 .../google/android/gms/wearable/Asset.aidl | 0 .../gms/wearable/ConnectionConfiguration.aidl | 0 .../wearable/internal/AddListenerRequest.aidl | 0 .../internal/AddLocalCapabilityResponse.aidl | 0 .../internal/AmsEntityUpdateParcelable.aidl | 0 .../internal/AncsNotificationParcelable.aidl | 0 .../internal/CapabilityInfoParcelable.aidl | 0 .../internal/ChannelEventParcelable.aidl | 0 .../internal/ChannelReceiveFileResponse.aidl | 0 .../internal/ChannelSendFileResponse.aidl | 0 .../internal/CloseChannelResponse.aidl | 0 .../internal/DeleteDataItemsResponse.aidl | 0 .../internal/GetAllCapabilitiesResponse.aidl | 0 .../internal/GetCapabilityResponse.aidl | 0 .../GetChannelInputStreamResponse.aidl | 0 .../GetChannelOutputStreamResponse.aidl | 0 .../GetCloudSyncOptInOutDoneResponse.aidl | 0 .../GetCloudSyncOptInStatusResponse.aidl | 0 .../internal/GetCloudSyncSettingResponse.aidl | 0 .../wearable/internal/GetConfigResponse.aidl | 0 .../wearable/internal/GetConfigsResponse.aidl | 0 .../internal/GetConnectedNodesResponse.aidl | 0 .../internal/GetDataItemResponse.aidl | 0 .../internal/GetFdForAssetResponse.aidl | 0 .../internal/GetLocalNodeResponse.aidl | 0 .../internal/IChannelStreamCallbacks.aidl | 0 .../wearable/internal/IWearableCallbacks.aidl | 0 .../wearable/internal/IWearableListener.aidl | 0 .../wearable/internal/IWearableService.aidl | 0 .../internal/MessageEventParcelable.aidl | 0 .../gms/wearable/internal/NodeParcelable.aidl | 0 .../internal/OpenChannelResponse.aidl | 0 .../gms/wearable/internal/PutDataRequest.aidl | 0 .../wearable/internal/PutDataResponse.aidl | 0 .../internal/RemoveListenerRequest.aidl | 0 .../RemoveLocalCapabilityResponse.aidl | 0 .../internal/SendMessageResponse.aidl | 0 .../internal/StorageInfoResponse.aidl | 0 .../android/gms/wearable/AmsEntityUpdate.java | 0 .../gms/wearable/AncsNotification.java | 0 .../google/android/gms/wearable/Asset.java | 0 .../android/gms/wearable/CapabilityInfo.java | 0 .../gms/wearable/ConnectionConfiguration.java | 0 .../google/android/gms/wearable/DataItem.java | 0 .../android/gms/wearable/DataItemAsset.java | 0 .../android/gms/wearable/MessageEvent.java | 0 .../com/google/android/gms/wearable/Node.java | 0 .../gms/wearable/WearableStatusCodes.java | 0 .../wearable/internal/AddListenerRequest.java | 0 .../internal/AddLocalCapabilityResponse.java | 0 .../internal/AmsEntityUpdateParcelable.java | 0 .../internal/AncsNotificationParcelable.java | 0 .../internal/CapabilityInfoParcelable.java | 0 .../internal/ChannelEventParcelable.java | 0 .../wearable/internal/ChannelParcelable.java | 0 .../internal/ChannelReceiveFileResponse.java | 0 .../internal/ChannelSendFileResponse.java | 0 .../internal/CloseChannelResponse.java | 0 .../internal/DataItemAssetParcelable.java | 0 .../wearable/internal/DataItemParcelable.java | 0 .../internal/DeleteDataItemsResponse.java | 0 .../internal/GetAllCapabilitiesResponse.java | 0 .../internal/GetCapabilityResponse.java | 0 .../GetChannelInputStreamResponse.java | 0 .../GetChannelOutputStreamResponse.java | 0 .../GetCloudSyncOptInOutDoneResponse.java | 0 .../GetCloudSyncOptInStatusResponse.java | 0 .../internal/GetCloudSyncSettingResponse.java | 0 .../wearable/internal/GetConfigResponse.java | 0 .../wearable/internal/GetConfigsResponse.java | 0 .../internal/GetConnectedNodesResponse.java | 0 .../internal/GetDataItemResponse.java | 0 .../internal/GetFdForAssetResponse.java | 0 .../internal/GetLocalNodeResponse.java | 0 .../internal/MessageEventParcelable.java | 0 .../gms/wearable/internal/NodeParcelable.java | 0 .../internal/OpenChannelResponse.java | 0 .../gms/wearable/internal/PutDataRequest.java | 0 .../wearable/internal/PutDataResponse.java | 0 .../internal/RemoveListenerRequest.java | 0 .../RemoveLocalCapabilityResponse.java | 0 .../internal/SendMessageResponse.java | 0 .../internal/StorageInfoResponse.java | 0 .../wearable/databundle/DataBundleUtil.java | 4 +- .../src/main/proto/databundle.proto | 0 settings.gradle | 77 +++-- 1182 files changed, 2259 insertions(+), 2324 deletions(-) rename {firebase-auth-api => firebase-auth}/build.gradle (100%) rename {firebase-auth-core => firebase-auth/core}/build.gradle (92%) rename {firebase-auth-core => firebase-auth/core}/src/main/AndroidManifest.xml (100%) rename {firebase-auth-core => firebase-auth/core}/src/main/assets/recaptcha.html (100%) rename {firebase-auth-core => firebase-auth/core}/src/main/kotlin/org/microg/gms/firebase/auth/FirebaseAuthService.kt (100%) rename {firebase-auth-core => firebase-auth/core}/src/main/kotlin/org/microg/gms/firebase/auth/IdentityToolkitClient.kt (100%) rename {firebase-auth-core => firebase-auth/core}/src/main/kotlin/org/microg/gms/firebase/auth/ReCaptchaActivity.kt (100%) rename {firebase-auth-core => firebase-auth/core}/src/main/kotlin/org/microg/gms/firebase/auth/ReCaptchaOverlay.kt (100%) rename {firebase-auth-core => firebase-auth/core}/src/main/res/layout/activity_recaptcha.xml (100%) rename {firebase-auth-api => firebase-auth}/src/main/AndroidManifest.xml (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/ActionCodeSettings.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/EmailAuthCredential.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/PhoneAuthCredential.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/UserProfileChangeRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/ApplyActionCodeAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/ChangeEmailAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/ChangePasswordAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/CheckActionCodeAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/ConfirmPasswordResetAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/CreateAuthUriResponse.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/CreateUserWithEmailAndPasswordAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/DeleteAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/FinalizeMfaEnrollmentAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/FinalizeMfaSignInAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/GetAccessTokenAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/GetAccountInfoUser.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/GetProvidersForEmailAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/GetTokenResponse.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/IFirebaseAuthCallbacks.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/IFirebaseAuthService.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/LinkEmailAuthCredentialAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/LinkFederatedCredentialAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/LinkPhoneAuthCredentialAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/ReloadAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/ResetPasswordResponse.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/SendEmailVerificationWithSettingsAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/SendGetOobConfirmationCodeEmailAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/SendVerificationCodeAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/SendVerificationCodeRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/SetFirebaseUiVersionAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/SignInAnonymouslyAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithCredentialAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithCustomTokenAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithEmailAndPasswordAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithEmailLinkAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithPhoneNumberAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/StartMfaPhoneNumberEnrollmentAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/StartMfaPhoneNumberSignInAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/StringList.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/UnenrollMfaAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/UnlinkEmailCredentialAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/UnlinkFederatedCredentialAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/UpdateProfileAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/VerifyAssertionRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/aidl/com/google/firebase/auth/api/internal/VerifyBeforeUpdateEmailAidlRequest.aidl (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/ActionCodeSettings.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/AuthCredential.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/DefaultOAuthCredential.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/EmailAuthCredential.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/OAuthCredential.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/PhoneAuthCredential.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/UserProfileChangeRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/ApplyActionCodeAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/ChangeEmailAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/ChangePasswordAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/CheckActionCodeAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/ConfirmPasswordResetAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/CreateAuthUriResponse.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/CreateUserWithEmailAndPasswordAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/DeleteAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/FinalizeMfaEnrollmentAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/FinalizeMfaSignInAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/GetAccessTokenAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/GetAccountInfoUser.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/GetProvidersForEmailAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/GetTokenResponse.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/LinkEmailAuthCredentialAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/LinkFederatedCredentialAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/LinkPhoneAuthCredentialAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/MfaInfo.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/ProviderUserInfo.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/ProviderUserInfoList.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/ReloadAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/ResetPasswordResponse.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/SendEmailVerificationWithSettingsAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/SendGetOobConfirmationCodeEmailAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/SendVerificationCodeAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/SendVerificationCodeRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/SetFirebaseUiVersionAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/SignInAnonymouslyAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/SignInWithCredentialAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/SignInWithCustomTokenAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/SignInWithEmailAndPasswordAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/SignInWithEmailLinkAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/SignInWithPhoneNumberAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/StartMfaPhoneNumberEnrollmentAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/StartMfaPhoneNumberSignInAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/StringList.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/UnenrollMfaAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/UnlinkEmailCredentialAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/UnlinkFederatedCredentialAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/UpdateProfileAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/VerifyAssertionRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/com/google/firebase/auth/api/internal/VerifyBeforeUpdateEmailAidlRequest.java (100%) rename {firebase-auth-api => firebase-auth}/src/main/java/org/microg/gms/firebase/auth/Constants.java (100%) rename {play-services-appinvite-api => play-services-appinvite}/build.gradle (100%) rename {play-services-appinvite-api => play-services-appinvite}/src/main/AndroidManifest.xml (92%) rename {play-services-appinvite-api => play-services-appinvite}/src/main/aidl/com/google/android/gms/appinvite/internal/IAppInviteCallbacks.aidl (100%) rename {play-services-appinvite-api => play-services-appinvite}/src/main/aidl/com/google/android/gms/appinvite/internal/IAppInviteService.aidl (100%) rename {play-services-droidguard-api => play-services-auth-base}/build.gradle (66%) rename {play-services-fido-api => play-services-auth-base}/src/main/AndroidManifest.xml (74%) rename {play-services-api => play-services-auth-base}/src/main/aidl/com/google/android/auth/IAuthManagerService.aidl (100%) rename {play-services-api => play-services-auth-base}/src/main/aidl/com/google/android/gms/auth/AccountChangeEventsRequest.aidl (100%) rename {play-services-api => play-services-auth-base}/src/main/aidl/com/google/android/gms/auth/AccountChangeEventsResponse.aidl (100%) rename {play-services-api => play-services-auth-base}/src/main/aidl/com/google/android/gms/auth/GetHubTokenInternalResponse.aidl (100%) rename {play-services-api => play-services-auth-base}/src/main/aidl/com/google/android/gms/auth/GetHubTokenRequest.aidl (100%) rename {play-services-api => play-services-auth-base}/src/main/aidl/com/google/android/gms/auth/HasCababilitiesRequest.aidl (100%) rename {play-services-api => play-services-auth-base}/src/main/aidl/com/google/android/gms/auth/api/internal/IAuthCallbacks.aidl (100%) rename {play-services-api => play-services-auth-base}/src/main/aidl/com/google/android/gms/auth/api/internal/IAuthService.aidl (100%) rename {play-services-api => play-services-auth-base}/src/main/aidl/com/google/android/gms/auth/api/proxy/ProxyRequest.aidl (100%) rename {play-services-api => play-services-auth-base}/src/main/aidl/com/google/android/gms/auth/api/proxy/ProxyResponse.aidl (100%) rename {play-services-api => play-services-auth-base}/src/main/java/com/google/android/gms/auth/AccountChangeEvent.java (100%) rename {play-services-api => play-services-auth-base}/src/main/java/com/google/android/gms/auth/AccountChangeEventsRequest.java (100%) rename {play-services-api => play-services-auth-base}/src/main/java/com/google/android/gms/auth/AccountChangeEventsResponse.java (100%) rename {play-services-api => play-services-auth-base}/src/main/java/com/google/android/gms/auth/GetHubTokenInternalResponse.java (100%) rename {play-services-api => play-services-auth-base}/src/main/java/com/google/android/gms/auth/GetHubTokenRequest.java (100%) rename {play-services-api => play-services-auth-base}/src/main/java/com/google/android/gms/auth/HasCababilitiesRequest.java (100%) rename {play-services-api => play-services-auth-base}/src/main/java/com/google/android/gms/auth/TokenData.java (100%) rename {play-services-api => play-services-auth-base}/src/main/java/com/google/android/gms/auth/api/proxy/ProxyRequest.java (100%) rename {play-services-api => play-services-auth-base}/src/main/java/com/google/android/gms/auth/api/proxy/ProxyResponse.java (100%) create mode 100644 play-services-auth/build.gradle rename {play-services-oss-licenses-api => play-services-auth}/src/main/AndroidManifest.xml (72%) rename {play-services-api => play-services-auth}/src/main/aidl/com/google/android/gms/auth/api/credentials/Credential.aidl (100%) rename {play-services-api => play-services-auth}/src/main/aidl/com/google/android/gms/auth/api/credentials/CredentialRequest.aidl (100%) rename {play-services-api => play-services-auth}/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/DeleteRequest.aidl (100%) rename {play-services-api => play-services-auth}/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/GeneratePasswordRequest.aidl (100%) rename {play-services-api => play-services-auth}/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/ICredentialsCallbacks.aidl (100%) rename {play-services-api => play-services-auth}/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/ICredentialsService.aidl (100%) rename {play-services-api => play-services-auth}/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/SaveRequest.aidl (100%) rename {play-services-api => play-services-auth}/src/main/java/com/google/android/gms/auth/api/credentials/Credential.java (100%) rename {play-services-api => play-services-auth}/src/main/java/com/google/android/gms/auth/api/credentials/CredentialPickerConfig.java (100%) rename {play-services-api => play-services-auth}/src/main/java/com/google/android/gms/auth/api/credentials/CredentialRequest.java (100%) rename {play-services-api => play-services-auth}/src/main/java/com/google/android/gms/auth/api/credentials/HintRequest.java (100%) rename {play-services-api => play-services-auth}/src/main/java/com/google/android/gms/auth/api/credentials/IdToken.java (100%) rename {play-services-api => play-services-auth}/src/main/java/com/google/android/gms/auth/api/credentials/IdentityProviders.java (100%) rename {play-services-api => play-services-auth}/src/main/java/com/google/android/gms/auth/api/credentials/internal/DeleteRequest.java (100%) rename {play-services-api => play-services-auth}/src/main/java/com/google/android/gms/auth/api/credentials/internal/GeneratePasswordRequest.java (100%) rename {play-services-api => play-services-auth}/src/main/java/com/google/android/gms/auth/api/credentials/internal/SaveRequest.java (100%) create mode 100644 play-services-auth/src/main/java/com/google/android/gms/auth/package-info.java delete mode 100644 play-services-base-api/build.gradle delete mode 100644 play-services-base-api/src/main/AndroidManifest.xml delete mode 100644 play-services-base-core-ui/src/main/AndroidManifest.xml delete mode 100644 play-services-base-core-ui/src/main/res/values-be/strings.xml delete mode 100644 play-services-base-core-ui/src/main/res/values-de/strings.xml delete mode 100644 play-services-base-core-ui/src/main/res/values-it/strings.xml delete mode 100644 play-services-base-core-ui/src/main/res/values-ru/strings.xml delete mode 100644 play-services-base-core-ui/src/main/res/values-zh-rCN/strings.xml delete mode 100644 play-services-base-core-ui/src/main/res/values/strings.xml delete mode 100644 play-services-base-core/build.gradle rename {play-services-base-core-ui => play-services-base/core}/build.gradle (74%) rename {play-services-base-core => play-services-base/core}/src/main/AndroidManifest.xml (100%) rename {play-services-base-core => play-services-base/core}/src/main/java/org/microg/gms/AbstractGmsServiceBroker.java (100%) rename {play-services-base-core => play-services-base/core}/src/main/java/org/microg/gms/BaseService.java (100%) rename {play-services-base-core => play-services-base/core}/src/main/java/org/microg/gms/DummyService.java (100%) rename {play-services-base-core => play-services-base/core}/src/main/java/org/microg/gms/common/DeviceConfiguration.java (100%) rename {play-services-base-core => play-services-base/core}/src/main/java/org/microg/gms/common/DeviceIdentifier.java (100%) rename {play-services-base-core => play-services-base/core}/src/main/java/org/microg/gms/common/ForegroundServiceContext.java (100%) rename {play-services-base-core => play-services-base/core}/src/main/java/org/microg/gms/common/ForegroundServiceInfo.java (100%) rename {play-services-base-core => play-services-base/core}/src/main/java/org/microg/gms/common/HttpFormClient.java (100%) rename {play-services-base-core => play-services-base/core}/src/main/java/org/microg/gms/common/MultiListenerProxy.java (100%) rename {play-services-base-core => play-services-base/core}/src/main/java/org/microg/gms/common/NonCancelToken.java (100%) rename {play-services-base-core => play-services-base/core}/src/main/java/org/microg/gms/common/PackageUtils.java (100%) rename {play-services-base-core => play-services-base/core}/src/main/java/org/microg/gms/common/PhoneInfo.java (100%) rename {play-services-base-core => play-services-base/core}/src/main/java/org/microg/gms/common/RemoteListenerProxy.java (100%) rename {play-services-base-core => play-services-base/core}/src/main/java/org/microg/gms/common/Utils.java (100%) rename {play-services-base-core => play-services-base/core}/src/main/kotlin/org/microg/gms/profile/Build.kt (100%) rename {play-services-base-core => play-services-base/core}/src/main/kotlin/org/microg/gms/profile/ProfileManager.kt (100%) rename {play-services-base-core => play-services-base/core}/src/main/kotlin/org/microg/gms/settings/SettingsContract.kt (100%) rename {play-services-base-core => play-services-base/core}/src/main/kotlin/org/microg/gms/settings/SettingsProvider.kt (100%) rename {play-services-base-core-ui => play-services-base/core}/src/main/kotlin/org/microg/gms/ui/AppIconPreference.kt (100%) rename {play-services-base-core-ui => play-services-base/core}/src/main/kotlin/org/microg/gms/ui/Constants.kt (100%) rename {play-services-base-core-ui => play-services-base/core}/src/main/kotlin/org/microg/gms/ui/PreferenceSwitchBar.kt (100%) rename {play-services-base-core-ui => play-services-base/core}/src/main/kotlin/org/microg/gms/ui/TextPreference.kt (100%) rename {play-services-base-core-ui => play-services-base/core}/src/main/kotlin/org/microg/gms/ui/Utils.kt (100%) rename {play-services-base-core => play-services-base/core}/src/main/kotlin/org/microg/gms/utils/BinderUtils.kt (100%) rename {play-services-base-core => play-services-base/core}/src/main/kotlin/org/microg/gms/utils/FileXmlResourceParser.kt (100%) rename {play-services-base-core => play-services-base/core}/src/main/kotlin/org/microg/gms/utils/PackageManagerUtils.kt (100%) rename {play-services-base-core => play-services-base/core}/src/main/kotlin/org/microg/gms/utils/PackageManagerWrapper.kt (100%) rename {play-services-base-core => play-services-base/core}/src/main/res/drawable/ic_background_notify.xml (100%) rename {play-services-base-core-ui => play-services-base/core}/src/main/res/drawable/ic_expand_apps.xml (100%) rename {play-services-base-core-ui => play-services-base/core}/src/main/res/drawable/ic_info_outline.xml (100%) rename {play-services-base-core-ui => play-services-base/core}/src/main/res/drawable/ic_open.xml (100%) rename {play-services-base-core-ui => play-services-base/core}/src/main/res/drawable/ic_radio.xml (100%) rename {play-services-base-core-ui => play-services-base/core}/src/main/res/drawable/ic_radio_checked.xml (100%) rename {play-services-base-core-ui => play-services-base/core}/src/main/res/drawable/ic_radio_unchecked.xml (100%) rename {play-services-base-core-ui => play-services-base/core}/src/main/res/layout/list_no_item.xml (100%) rename {play-services-base-core-ui => play-services-base/core}/src/main/res/layout/preference_category_no_label.xml (100%) rename {play-services-base-core-ui => play-services-base/core}/src/main/res/layout/preference_switch_bar.xml (100%) rename {play-services-base-core => play-services-base/core}/src/main/res/values-be/strings.xml (75%) rename {play-services-base-core => play-services-base/core}/src/main/res/values-de/strings.xml (76%) rename {play-services-base-core-ui => play-services-base/core}/src/main/res/values-es/strings.xml (100%) rename {play-services-base-core-ui => play-services-base/core}/src/main/res/values-fr/strings.xml (100%) rename {play-services-base-core => play-services-base/core}/src/main/res/values-it/strings.xml (71%) rename {play-services-base-core-ui => play-services-base/core}/src/main/res/values-ja/strings.xml (100%) rename {play-services-base-core-ui => play-services-base/core}/src/main/res/values-pl/strings.xml (100%) rename {play-services-base-core-ui => play-services-base/core}/src/main/res/values-pt-rBR/strings.xml (100%) rename {play-services-base-core => play-services-base/core}/src/main/res/values-ru/strings.xml (74%) rename {play-services-base-core-ui => play-services-base/core}/src/main/res/values-sr/strings.xml (100%) rename {play-services-base-core-ui => play-services-base/core}/src/main/res/values-uk/strings.xml (100%) rename {play-services-base-core => play-services-base/core}/src/main/res/values-zh-rCN/strings.xml (70%) rename {play-services-base-core-ui => play-services-base/core}/src/main/res/values-zh-rTW/strings.xml (100%) rename {play-services-base-core => play-services-base/core}/src/main/res/values/strings.xml (77%) rename {play-services-base-core-ui => play-services-base/core}/src/main/res/values/themes.xml (100%) rename {play-services-base-api => play-services-base}/src/main/aidl/com/google/android/gms/common/api/internal/IStatusCallback.aidl (100%) rename {play-services-base-api => play-services-base}/src/main/aidl/com/google/android/gms/common/data/DataHolder.aidl (100%) rename {play-services-base-api => play-services-base}/src/main/aidl/com/google/android/gms/common/images/WebImage.aidl (100%) rename {play-services-api => play-services-base}/src/main/aidl/com/google/android/gms/common/internal/ISignInButtonCreator.aidl (100%) rename {play-services-api => play-services-base}/src/main/aidl/com/google/android/gms/common/server/FavaDiagnosticsEntity.aidl (100%) rename {play-services-base-api => play-services-base}/src/main/java/com/google/android/gms/auth/api/signin/GoogleSignInAccount.java (100%) rename {play-services-base-api => play-services-base}/src/main/java/com/google/android/gms/common/data/DataHolder.java (100%) rename {play-services-base-api => play-services-base}/src/main/java/com/google/android/gms/common/data/Freezable.java (100%) rename {play-services-base-api => play-services-base}/src/main/java/com/google/android/gms/common/images/WebImage.java (100%) rename {play-services-api => play-services-base}/src/main/java/com/google/android/gms/common/server/FavaDiagnosticsEntity.java (100%) create mode 100644 play-services-base/src/main/java/org/microg/gms/common/api/VoidReturningGoogleApiCall.java delete mode 100644 play-services-base/src/main/res/values/version.xml rename {play-services-basement-ktx => play-services-basement/ktx}/build.gradle (94%) rename {play-services-basement-ktx => play-services-basement/ktx}/src/main/AndroidManifest.xml (100%) rename {play-services-basement-ktx => play-services-basement/ktx}/src/main/kotlin/com/google/android/gms/dynamic/ObjectWrapper.kt (100%) rename {play-services-api => play-services-basement}/src/main/aidl/com/google/android/gms/common/internal/GoogleCertificatesQuery.aidl (100%) rename {play-services-api => play-services-basement}/src/main/aidl/com/google/android/gms/common/internal/ICertData.aidl (100%) rename {play-services-api => play-services-basement}/src/main/aidl/com/google/android/gms/common/internal/IGoogleCertificatesApi.aidl (100%) rename {play-services-api => play-services-basement}/src/main/aidl/com/google/android/gms/dynamite/IDynamiteLoader.aidl (100%) rename {play-services-api => play-services-basement}/src/main/java/com/google/android/gms/common/internal/CertData.java (100%) rename {play-services-api => play-services-basement}/src/main/java/com/google/android/gms/common/internal/GoogleCertificatesQuery.java (100%) create mode 100644 play-services-basement/src/main/res/values/version.xml delete mode 100644 play-services-cast-api/build.gradle delete mode 100644 play-services-cast-api/src/main/AndroidManifest.xml delete mode 100644 play-services-cast-framework-api/build.gradle delete mode 100644 play-services-cast-framework-api/src/main/AndroidManifest.xml create mode 100644 play-services-cast-framework/build.gradle create mode 100644 play-services-cast-framework/core/build.gradle create mode 100644 play-services-cast-framework/core/src/main/AndroidManifest.xml rename {play-services-core => play-services-cast-framework/core}/src/main/java/com/google/android/gms/cast/framework/internal/CastContextImpl.java (100%) rename {play-services-core => play-services-cast-framework/core}/src/main/java/com/google/android/gms/cast/framework/internal/CastDynamiteModuleImpl.java (100%) rename {play-services-core => play-services-cast-framework/core}/src/main/java/com/google/android/gms/cast/framework/internal/CastSessionImpl.java (100%) rename {play-services-core => play-services-cast-framework/core}/src/main/java/com/google/android/gms/cast/framework/internal/DiscoveryManagerImpl.java (100%) rename {play-services-core => play-services-cast-framework/core}/src/main/java/com/google/android/gms/cast/framework/internal/MediaRouterCallbackImpl.java (100%) rename {play-services-core => play-services-cast-framework/core}/src/main/java/com/google/android/gms/cast/framework/internal/SessionImpl.java (100%) rename {play-services-core => play-services-cast-framework/core}/src/main/java/com/google/android/gms/cast/framework/internal/SessionManagerImpl.java (100%) rename {play-services-location-api => play-services-cast-framework}/src/main/AndroidManifest.xml (92%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/aidl/com/google/android/gms/cast/framework/CastOptions.aidl (100%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/aidl/com/google/android/gms/cast/framework/IAppVisibilityListener.aidl (100%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/aidl/com/google/android/gms/cast/framework/ICastConnectionController.aidl (100%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/aidl/com/google/android/gms/cast/framework/ICastContext.aidl (100%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/aidl/com/google/android/gms/cast/framework/ICastSession.aidl (100%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/aidl/com/google/android/gms/cast/framework/ICastStateListener.aidl (100%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/aidl/com/google/android/gms/cast/framework/IDiscoveryManager.aidl (100%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/aidl/com/google/android/gms/cast/framework/IDiscoveryManagerListener.aidl (100%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/aidl/com/google/android/gms/cast/framework/IReconnectionService.aidl (100%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/aidl/com/google/android/gms/cast/framework/ISession.aidl (100%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/aidl/com/google/android/gms/cast/framework/ISessionManager.aidl (100%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/aidl/com/google/android/gms/cast/framework/ISessionManagerListener.aidl (100%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/aidl/com/google/android/gms/cast/framework/ISessionProvider.aidl (100%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/aidl/com/google/android/gms/cast/framework/ISessionProxy.aidl (100%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/aidl/com/google/android/gms/cast/framework/internal/ICastDynamiteModule.aidl (100%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/aidl/com/google/android/gms/cast/framework/internal/IMediaRouter.aidl (100%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/aidl/com/google/android/gms/cast/framework/internal/IMediaRouterCallback.aidl (100%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/aidl/com/google/android/gms/cast/framework/media/CastMediaOptions.aidl (100%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/aidl/com/google/android/gms/cast/framework/media/IImagePicker.aidl (100%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/aidl/com/google/android/gms/cast/framework/media/IMediaNotificationService.aidl (100%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/aidl/com/google/android/gms/cast/framework/media/INotificationActionsProvider.aidl (100%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/aidl/com/google/android/gms/cast/framework/media/NotificationOptions.aidl (100%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/aidl/com/google/android/gms/cast/framework/media/internal/IFetchBitmapTask.aidl (100%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/aidl/com/google/android/gms/cast/framework/media/internal/IFetchBitmapTaskProgressPublisher.aidl (100%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/java/com/google/android/gms/cast/framework/CastOptions.java (100%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/java/com/google/android/gms/cast/framework/CastState.java (100%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/java/com/google/android/gms/cast/framework/media/CastMediaOptions.java (100%) rename {play-services-cast-framework-api => play-services-cast-framework}/src/main/java/com/google/android/gms/cast/framework/media/NotificationOptions.java (100%) rename {play-services-safetynet-core-ui => play-services-cast/core}/build.gradle (60%) create mode 100644 play-services-cast/core/src/main/AndroidManifest.xml rename {play-services-core => play-services-cast/core}/src/main/java/com/google/android/gms/cast/media/CastMediaRouteProviderService.java (100%) rename {play-services-core => play-services-cast/core}/src/main/java/org/microg/gms/cast/CastDeviceControllerImpl.java (100%) rename {play-services-core => play-services-cast/core}/src/main/java/org/microg/gms/cast/CastDeviceControllerService.java (100%) rename {play-services-core => play-services-cast/core}/src/main/java/org/microg/gms/cast/CastMediaRouteController.java (100%) rename {play-services-core => play-services-cast/core}/src/main/java/org/microg/gms/cast/CastMediaRouteProvider.java (100%) rename {play-services-cast-api => play-services-cast}/src/main/aidl/com/google/android/gms/cast/ApplicationMetadata.aidl (100%) rename {play-services-cast-api => play-services-cast}/src/main/aidl/com/google/android/gms/cast/ApplicationStatus.aidl (100%) rename {play-services-cast-api => play-services-cast}/src/main/aidl/com/google/android/gms/cast/CastDeviceStatus.aidl (100%) rename {play-services-cast-api => play-services-cast}/src/main/aidl/com/google/android/gms/cast/JoinOptions.aidl (100%) rename {play-services-cast-api => play-services-cast}/src/main/aidl/com/google/android/gms/cast/LaunchOptions.aidl (100%) rename {play-services-cast-api => play-services-cast}/src/main/aidl/com/google/android/gms/cast/RequestItem.aidl (100%) rename {play-services-cast-api => play-services-cast}/src/main/aidl/com/google/android/gms/cast/internal/IBundleCallback.aidl (100%) rename {play-services-cast-api => play-services-cast}/src/main/aidl/com/google/android/gms/cast/internal/ICastDeviceController.aidl (100%) rename {play-services-cast-api => play-services-cast}/src/main/aidl/com/google/android/gms/cast/internal/ICastDeviceControllerListener.aidl (100%) rename {play-services-cast-api => play-services-cast}/src/main/aidl/com/google/android/gms/cast/internal/ICastService.aidl (100%) rename {play-services-cast-api => play-services-cast}/src/main/java/com/google/android/gms/cast/ApplicationMetadata.java (100%) rename {play-services-cast-api => play-services-cast}/src/main/java/com/google/android/gms/cast/ApplicationStatus.java (100%) rename {play-services-cast-api => play-services-cast}/src/main/java/com/google/android/gms/cast/CastDevice.java (100%) rename {play-services-cast-api => play-services-cast}/src/main/java/com/google/android/gms/cast/CastDeviceStatus.java (100%) rename {play-services-cast-api => play-services-cast}/src/main/java/com/google/android/gms/cast/CastMediaControlIntent.java (100%) rename {play-services-cast-api => play-services-cast}/src/main/java/com/google/android/gms/cast/CastStatusCodes.java (100%) rename {play-services-cast-api => play-services-cast}/src/main/java/com/google/android/gms/cast/JoinOptions.java (100%) rename {play-services-cast-api => play-services-cast}/src/main/java/com/google/android/gms/cast/LaunchOptions.java (100%) rename {play-services-cast-api => play-services-cast}/src/main/java/com/google/android/gms/cast/RequestItem.java (100%) create mode 100644 play-services-clearcut/build.gradle create mode 100644 play-services-clearcut/src/main/AndroidManifest.xml rename {play-services-api => play-services-clearcut}/src/main/aidl/com/google/android/gms/clearcut/LogEventParcelable.aidl (100%) rename {play-services-api => play-services-clearcut}/src/main/aidl/com/google/android/gms/clearcut/internal/IClearcutLoggerCallbacks.aidl (100%) rename {play-services-api => play-services-clearcut}/src/main/aidl/com/google/android/gms/clearcut/internal/IClearcutLoggerService.aidl (100%) rename {play-services-api => play-services-clearcut}/src/main/aidl/com/google/android/gms/clearcut/internal/PlayLoggerContext.aidl (100%) rename {play-services-api => play-services-clearcut}/src/main/aidl/com/google/android/gms/playlog/internal/IPlayLogService.aidl (100%) rename {play-services-api => play-services-clearcut}/src/main/aidl/com/google/android/gms/playlog/internal/LogEvent.aidl (100%) rename {play-services-api => play-services-clearcut}/src/main/java/com/google/android/gms/clearcut/LogEventParcelable.java (100%) rename {play-services-api => play-services-clearcut}/src/main/java/com/google/android/gms/clearcut/internal/LogVerifierResultParcelable.java (100%) rename {play-services-api => play-services-clearcut}/src/main/java/com/google/android/gms/clearcut/internal/PlayLoggerContext.java (100%) rename {play-services-api => play-services-clearcut}/src/main/java/com/google/android/gms/playlog/internal/LogEvent.java (100%) rename {play-services-location-api => play-services-core}/src/main/java/org/microg/gms/location/LocationConstants.java (100%) rename {play-services-cronet-core => play-services-cronet/core}/build.gradle (96%) rename {play-services-cronet-core => play-services-cronet/core}/src/main/AndroidManifest.xml (100%) rename {play-services-cronet-core => play-services-cronet/core}/src/main/java/com/google/android/gms/dynamite/descriptors/com/google/android/gms/cronet_dynamite/ModuleDescriptor.java (100%) rename {play-services-nearby-api => play-services-drive}/build.gradle (66%) create mode 100644 play-services-drive/src/main/AndroidManifest.xml rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/AddEventListenerRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/AddPermissionRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/AuthorizeAccessRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/CancelPendingActionsRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/ChangeResourceParentsRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/ChangeSequenceNumber.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/ChangesResponse.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/CheckResourceIdsExistRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/CloseContentsAndUpdateMetadataRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/CloseContentsRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/ContentsResponse.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/ControlProgressRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/CreateContentsRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/CreateFileIntentSenderRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/CreateFileRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/CreateFolderRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/DeleteResourceRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/DeviceUsagePreferenceResponse.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/DisconnectRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/DownloadProgressResponse.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/DriveIdResponse.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/DrivePreferencesResponse.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/DriveServiceResponse.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/EventResponse.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/FetchThumbnailRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/FetchThumbnailResponse.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/GetChangesRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/GetDriveIdFromUniqueIdRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/GetMetadataRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/GetPermissionsRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/GetPermissionsResponse.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/IDriveService.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/IDriveServiceCallbacks.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/IEventCallback.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/IRealtimeService.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/ListEntriesResponse.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/ListParentsRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/ListParentsResponse.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/LoadRealtimeRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/LoadRealtimeResponse.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/MetadataResponse.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/OpenContentsRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/OpenFileIntentSenderRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/RealtimeDocumentSyncRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/RemoveEventListenerRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/RemovePermissionRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/ResourceIdSetResponse.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/SetDrivePreferencesRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/SetFileUploadPreferencesRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/SetResourceParentsRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/StartStreamSession.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/StreamContentsRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/StringListResponse.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/SyncMoreResponse.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/TrashResourceRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/UnsubscribeResourceRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/UntrashResourceRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/UpdateMetadataRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/aidl/com/google/android/gms/drive/internal/UpdatePermissionRequest.aidl (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/AddEventListenerRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/AddPermissionRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/AuthorizeAccessRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/CancelPendingActionsRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/ChangeResourceParentsRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/ChangeSequenceNumber.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/ChangesResponse.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/CheckResourceIdsExistRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/CloseContentsAndUpdateMetadataRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/CloseContentsRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/ContentsResponse.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/ControlProgressRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/CreateContentsRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/CreateFileIntentSenderRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/CreateFileRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/CreateFolderRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/DeleteResourceRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/DeviceUsagePreferenceResponse.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/DisconnectRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/DownloadProgressResponse.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/DriveIdResponse.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/DrivePreferencesResponse.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/DriveServiceResponse.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/EventResponse.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/FetchThumbnailRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/FetchThumbnailResponse.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/GetChangesRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/GetDriveIdFromUniqueIdRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/GetMetadataRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/GetPermissionsRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/GetPermissionsResponse.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/ListEntriesResponse.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/ListParentsRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/ListParentsResponse.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/LoadRealtimeRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/LoadRealtimeResponse.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/MetadataResponse.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/OpenContentsRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/OpenFileIntentSenderRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/RealtimeDocumentSyncRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/RemoveEventListenerRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/RemovePermissionRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/ResourceIdSetResponse.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/SetDrivePreferencesRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/SetFileUploadPreferencesRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/SetResourceParentsRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/StartStreamSession.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/StreamContentsRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/StringListResponse.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/SyncMoreResponse.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/TrashResourceRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/UnsubscribeResourceRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/UntrashResourceRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/UpdateMetadataRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/internal/UpdatePermissionRequest.java (100%) rename {play-services-api => play-services-drive}/src/main/java/com/google/android/gms/drive/metadata/internal/MetadataBundle.java (100%) delete mode 100644 play-services-droidguard-api/src/main/AndroidManifest.xml delete mode 100644 play-services-droidguard-core-proto/build.gradle delete mode 100644 play-services-droidguard-core-ui/src/main/AndroidManifest.xml rename {play-services-droidguard-core => play-services-droidguard/core}/build.gradle (83%) rename {play-services-droidguard-core => play-services-droidguard/core}/src/main/AndroidManifest.xml (100%) rename {play-services-droidguard-core => play-services-droidguard/core}/src/main/java/com/google/android/gms/droidguard/DroidGuardChimeraService.java (100%) rename {play-services-droidguard-core => play-services-droidguard/core}/src/main/java/com/google/android/gms/framework/tracing/wrapper/TracingIntentService.java (100%) rename {play-services-droidguard-core => play-services-droidguard/core}/src/main/java/org/microg/gms/droidguard/GuardCallback.java (100%) rename {play-services-droidguard-core => play-services-droidguard/core}/src/main/java/org/microg/gms/droidguard/MediaDrmLock.java (100%) rename {play-services-droidguard-core => play-services-droidguard/core}/src/main/kotlin/org/microg/gms/droidguard/core/BytesException.kt (100%) rename {play-services-droidguard-core => play-services-droidguard/core}/src/main/kotlin/org/microg/gms/droidguard/core/DgDatabaseHelper.kt (100%) rename {play-services-droidguard-core => play-services-droidguard/core}/src/main/kotlin/org/microg/gms/droidguard/core/DgpDatabaseHelper.kt (100%) rename {play-services-droidguard-core => play-services-droidguard/core}/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardHandleImpl.kt (68%) rename {play-services-droidguard-core => play-services-droidguard/core}/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardPreferences.kt (100%) rename {play-services-droidguard-core => play-services-droidguard/core}/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardResultCreator.kt (65%) rename {play-services-droidguard-core => play-services-droidguard/core}/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardService.kt (100%) rename {play-services-droidguard-core => play-services-droidguard/core}/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardServiceBroker.kt (100%) rename {play-services-droidguard-core => play-services-droidguard/core}/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardServiceImpl.kt (100%) rename {play-services-droidguard-core => play-services-droidguard/core}/src/main/kotlin/org/microg/gms/droidguard/core/FallbackCreator.kt (100%) rename {play-services-droidguard-core => play-services-droidguard/core}/src/main/kotlin/org/microg/gms/droidguard/core/HandleProxy.kt (100%) rename {play-services-droidguard-core => play-services-droidguard/core}/src/main/kotlin/org/microg/gms/droidguard/core/HandleProxyFactory.kt (100%) rename {play-services-droidguard-core => play-services-droidguard/core}/src/main/kotlin/org/microg/gms/droidguard/core/SignatureVerifier.kt (100%) rename {play-services-droidguard-core => play-services-droidguard/core}/src/main/kotlin/org/microg/gms/droidguard/core/VersionUtil.kt (100%) rename {play-services-droidguard-core-ui => play-services-droidguard/core}/src/main/kotlin/org/microg/gms/droidguard/core/ui/ContainedEditTextPreference.kt (98%) rename {play-services-droidguard-core-ui => play-services-droidguard/core}/src/main/kotlin/org/microg/gms/droidguard/core/ui/DroidGuardPreferencesFragment.kt (90%) rename {play-services-droidguard-core-proto => play-services-droidguard/core}/src/main/proto/droidguard.proto (100%) rename {play-services-droidguard-core-ui => play-services-droidguard/core}/src/main/res/layout/preference_edit_widget.xml (100%) rename {play-services-droidguard-core-ui => play-services-droidguard/core}/src/main/res/layout/preference_material_with_widget_below.xml (100%) rename {play-services-droidguard-core-ui => play-services-droidguard/core}/src/main/res/values-be/strings.xml (100%) rename {play-services-droidguard-core-ui => play-services-droidguard/core}/src/main/res/values-ru/strings.xml (100%) rename {play-services-droidguard-core-ui => play-services-droidguard/core}/src/main/res/values-zh-rCN/strings.xml (100%) rename {play-services-droidguard-core-ui => play-services-droidguard/core}/src/main/res/values/strings.xml (100%) rename {play-services-droidguard-core-ui => play-services-droidguard/core}/src/main/res/xml/preferences_droidguard.xml (100%) rename {play-services-droidguard-api => play-services-droidguard}/src/main/aidl/com/google/android/gms/droidguard/internal/DroidGuardInitReply.aidl (100%) rename {play-services-droidguard-api => play-services-droidguard}/src/main/aidl/com/google/android/gms/droidguard/internal/DroidGuardResultsRequest.aidl (100%) rename {play-services-droidguard-api => play-services-droidguard}/src/main/aidl/com/google/android/gms/droidguard/internal/IDroidGuardCallbacks.aidl (100%) rename {play-services-droidguard-api => play-services-droidguard}/src/main/aidl/com/google/android/gms/droidguard/internal/IDroidGuardHandle.aidl (75%) rename {play-services-droidguard-api => play-services-droidguard}/src/main/aidl/com/google/android/gms/droidguard/internal/IDroidGuardService.aidl (100%) create mode 100644 play-services-droidguard/src/main/java/com/google/android/gms/droidguard/DroidGuard.java create mode 100644 play-services-droidguard/src/main/java/com/google/android/gms/droidguard/DroidGuardClient.java create mode 100644 play-services-droidguard/src/main/java/com/google/android/gms/droidguard/DroidGuardHandle.java rename {play-services-droidguard-api => play-services-droidguard}/src/main/java/com/google/android/gms/droidguard/internal/DroidGuardInitReply.java (100%) rename {play-services-droidguard-api => play-services-droidguard}/src/main/java/com/google/android/gms/droidguard/internal/DroidGuardResultsRequest.java (100%) create mode 100644 play-services-droidguard/src/main/java/org/microg/gms/droidguard/DroidGuardApiClient.java create mode 100644 play-services-droidguard/src/main/java/org/microg/gms/droidguard/DroidGuardClientImpl.java create mode 100644 play-services-droidguard/src/main/java/org/microg/gms/droidguard/DroidGuardHandleImpl.java create mode 100644 play-services-droidguard/src/main/java/org/microg/gms/droidguard/Utils.java delete mode 100644 play-services-droidguard/src/main/kotlin/org/microg/gms/droidguard/DroidGuardApiClient.kt delete mode 100644 play-services-droidguard/src/main/kotlin/org/microg/gms/droidguard/DroidGuardClient.kt delete mode 100644 play-services-droidguard/src/main/kotlin/org/microg/gms/droidguard/DroidGuardClientImpl.kt delete mode 100644 play-services-droidguard/src/main/kotlin/org/microg/gms/droidguard/DroidGuardHandle.kt delete mode 100644 play-services-fido-api/src/main/java/org/microg/gms/fido/api/FidoConstants.java rename {play-services-fido-core => play-services-fido/core}/build.gradle (95%) rename {play-services-fido-core => play-services-fido/core}/src/main/AndroidManifest.xml (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/Database.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/RequestHandling.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/privileged/Fido2PrivilegedService.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/protocol/AndroidKeyAttestationObject.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/protocol/AndroidSafetyNetAttestationObject.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/protocol/AttestationObject.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/protocol/AttestedCredentialData.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/protocol/AuthenticatorData.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/protocol/Cbor.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/protocol/CoseKey.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/protocol/CredentialId.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/protocol/FidoU2fAttestationObject.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/protocol/NoneAttestationObject.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/Apdu.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/AuthenticatorGetAssertion.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/AuthenticatorGetInfo.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/AuthenticatorMakeCredential.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/Ctap1Command.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/Ctap2Command.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/U2fAuthentication.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/U2fRegistration.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/transport/CtapConnection.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/transport/Transport.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/transport/TransportHandler.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/transport/bluetooth/BluetoothTransportHandler.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/transport/nfc/CtapNfcConnection.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/transport/nfc/NfcTransportHandler.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/transport/screenlock/ScreenLockCredentialStore.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/transport/screenlock/ScreenLockTransportHandler.kt (98%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/transport/usb/UsbDevicePermissionManager.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/transport/usb/UsbTransportHandler.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/transport/usb/ctaphid/CtapHidConnection.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/transport/usb/ctaphid/CtapHidMessage.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/transport/usb/ctaphid/CtapHidPacket.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/transport/usb/ctaphid/CtapHidRequest.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/transport/usb/ctaphid/CtapHidResponse.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/transport/usb/extensions.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/ui/AuthenticatorActivity.kt (99%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/ui/AuthenticatorActivityFragment.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/ui/AuthenticatorActivityFragmentData.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/ui/NfcTransportFragment.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/ui/TransportSelectionFragment.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/ui/UsbTransportFragment.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/kotlin/org/microg/gms/fido/core/ui/WelcomeFragment.kt (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/res/drawable-anydpi-v23/fido_nfc_wait_connect.xml (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/res/drawable-anydpi-v23/fido_usb_wait_confirm.xml (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/res/drawable-anydpi-v23/fido_usb_wait_connect.xml (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/res/drawable/fido_nfc_wait_connect.xml (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/res/drawable/fido_usb_wait_confirm.xml (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/res/drawable/fido_usb_wait_connect.xml (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/res/drawable/ic_fido_bluetooth.xml (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/res/drawable/ic_fido_fingerprint.xml (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/res/drawable/ic_fido_key.xml (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/res/drawable/ic_fido_nfc.xml (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/res/drawable/ic_fido_usb.xml (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/res/layout/fido_authenticator_activity.xml (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/res/layout/fido_nfc_transport_fragment.xml (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/res/layout/fido_transport_selection_fragment.xml (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/res/layout/fido_usb_transport_fragment.xml (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/res/layout/fido_welcome_fragment.xml (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/res/navigation/nav_fido_authenticator.xml (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/res/values-be/strings.xml (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/res/values-ru/strings.xml (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/res/values-zh-rCN/strings.xml (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/res/values/strings.xml (100%) rename {play-services-fido-core => play-services-fido/core}/src/main/res/values/styles.xml (100%) rename {play-services-fido-api => play-services-fido}/src/main/aidl/com/google/android/gms/fido/fido2/api/IBooleanCallback.aidl (100%) rename {play-services-fido-api => play-services-fido}/src/main/aidl/com/google/android/gms/fido/fido2/api/common/BrowserPublicKeyCredentialCreationOptions.aidl (100%) rename {play-services-fido-api => play-services-fido}/src/main/aidl/com/google/android/gms/fido/fido2/api/common/BrowserPublicKeyCredentialRequestOptions.aidl (100%) rename {play-services-fido-api => play-services-fido}/src/main/aidl/com/google/android/gms/fido/fido2/internal/privileged/IFido2PrivilegedCallbacks.aidl (100%) rename {play-services-fido-api => play-services-fido}/src/main/aidl/com/google/android/gms/fido/fido2/internal/privileged/IFido2PrivilegedService.aidl (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/common/Transport.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/Algorithm.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/Attachment.java (87%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/AttestationConveyancePreference.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticationExtensions.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticationExtensionsClientOutputs.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticatorAssertionResponse.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticatorAttestationResponse.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticatorErrorResponse.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticatorResponse.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticatorSelectionCriteria.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/BrowserPublicKeyCredentialCreationOptions.java (94%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/BrowserPublicKeyCredentialRequestOptions.java (94%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/BrowserRequestOptions.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/COSEAlgorithmIdentifier.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/CableAuthenticationData.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/CableAuthenticationExtension.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/EC2Algorithm.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/ErrorCode.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/FidoAppIdExtension.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/KeyProtectionTypes.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/MatcherProtectionTypes.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredential.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialCreationOptions.java (97%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialDescriptor.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialParameters.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialRequestOptions.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialRpEntity.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialType.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialUserEntity.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/RSAAlgorithm.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/RequestOptions.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/TokenBinding.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/UserVerificationMethodExtension.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/UserVerificationMethods.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/UserVerificationRequirement.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/UvmEntries.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/fido2/api/common/UvmEntry.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/sourcedevice/SourceDirectTransferResult.java (100%) rename {play-services-fido-api => play-services-fido}/src/main/java/com/google/android/gms/fido/sourcedevice/SourceStartDirectTransferOptions.java (100%) rename {play-services-gmscompliance-api => play-services-gmscompliance}/build.gradle (89%) rename {play-services-gmscompliance-core => play-services-gmscompliance/core}/build.gradle (93%) rename {play-services-gmscompliance-core => play-services-gmscompliance/core}/src/main/AndroidManifest.xml (100%) rename {play-services-gmscompliance-core => play-services-gmscompliance/core}/src/main/kotlin/org/microg/gms/gmscompliance/GmsDeviceComplianceService.kt (100%) rename {play-services-gmscompliance-api => play-services-gmscompliance}/src/main/AndroidManifest.xml (100%) rename {play-services-gmscompliance-api => play-services-gmscompliance}/src/main/aidl/com/google/android/gms/gmscompliance/GmsDeviceComplianceResponse.aidl (100%) rename {play-services-gmscompliance-api => play-services-gmscompliance}/src/main/aidl/com/google/android/gms/gmscompliance/IGmsDeviceComplianceService.aidl (100%) rename {play-services-gmscompliance-api => play-services-gmscompliance}/src/main/aidl/com/google/android/gms/gmscompliance/IGmsDeviceComplianceServiceCallback.aidl (100%) rename {play-services-gmscompliance-api => play-services-gmscompliance}/src/main/java/com/google/android/gms/gmscompliance/GmsDeviceComplianceResponse.java (100%) delete mode 100644 play-services-iid-api/build.gradle delete mode 100644 play-services-iid-api/src/main/AndroidManifest.xml rename {play-services-iid-api => play-services-iid}/src/main/aidl/com/google/android/gms/iid/IMessengerCompat.aidl (100%) rename {play-services-iid-api => play-services-iid}/src/main/java/com/google/android/gms/iid/MessengerCompat.java (100%) delete mode 100644 play-services-location-api/build.gradle rename {play-services-location-core => play-services-location/core}/build.gradle (78%) rename {play-services-location-core => play-services-location/core}/src/main/AndroidManifest.xml (100%) rename {play-services-location-core => play-services-location/core}/src/main/java/org/microg/gms/location/GoogleLocationManager.java (100%) rename {play-services-location-core => play-services-location/core}/src/main/java/org/microg/gms/location/GoogleLocationManagerService.java (100%) rename {play-services-location-core => play-services-location/core}/src/main/java/org/microg/gms/location/GoogleLocationManagerServiceImpl.java (78%) rename {play-services-location-core => play-services-location/core}/src/main/java/org/microg/gms/location/LocationChangeListener.java (100%) rename {play-services-location-core => play-services-location/core}/src/main/java/org/microg/gms/location/LocationRequestHelper.java (100%) rename {play-services-location-core => play-services-location/core}/src/main/java/org/microg/gms/location/MockLocationProvider.java (94%) rename {play-services-location-core => play-services-location/core}/src/main/java/org/microg/gms/location/RealLocationProvider.java (100%) rename {play-services-location-core => play-services-location/core}/src/main/java/org/microg/gms/location/ReportingAndroidService.java (100%) rename {play-services-location-core => play-services-location/core}/src/main/java/org/microg/gms/location/ReportingServiceImpl.java (92%) rename {play-services-location-core => play-services-location/core}/src/main/java/org/microg/gms/location/UnifiedLocationProvider.kt (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/ActivityRecognitionResult.aidl (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/DeviceOrientation.aidl (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/GeofencingRequest.aidl (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/GestureRequest.aidl (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/IDeviceOrientationListener.aidl (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/ILocationCallback.aidl (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/ILocationListener.aidl (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/LocationAvailability.aidl (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/LocationRequest.aidl (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/LocationResult.aidl (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/LocationSettingsRequest.aidl (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/LocationSettingsResult.aidl (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/LocationStatus.aidl (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/internal/DeviceOrientationRequestUpdateData.aidl (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/internal/FusedLocationProviderResult.aidl (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/internal/IFusedLocationProviderCallback.aidl (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/internal/IGeofencerCallbacks.aidl (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/internal/IGoogleLocationManagerService.aidl (69%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/internal/ISettingsCallbacks.aidl (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/internal/LocationRequestInternal.aidl (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/internal/LocationRequestUpdateData.aidl (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/internal/ParcelableGeofence.aidl (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/reporting/OptInRequest.aidl (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/reporting/ReportingState.aidl (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/reporting/SendDataRequest.aidl (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/reporting/UlrPrivateModeRequest.aidl (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/reporting/UploadRequest.aidl (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/reporting/UploadRequestResult.aidl (100%) rename {play-services-location-api => play-services-location}/src/main/aidl/com/google/android/gms/location/reporting/internal/IReportingService.aidl (86%) create mode 100644 play-services-location/src/main/java/com/google/android/gms/location/ActivityRecognitionClient.java rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/ActivityRecognitionResult.java (63%) create mode 100644 play-services-location/src/main/java/com/google/android/gms/location/ActivityTransitionRequest.java rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/DetectedActivity.java (100%) rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/DeviceOrientation.java (100%) rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/DeviceOrientationRequest.java (100%) rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/Geofence.java (100%) rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/GeofenceStatusCodes.java (100%) create mode 100644 play-services-location/src/main/java/com/google/android/gms/location/GeofencingClient.java rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/GeofencingEvent.java (100%) rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/GeofencingRequest.java (100%) rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/GestureRequest.java (100%) rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/LocationAvailability.java (100%) create mode 100644 play-services-location/src/main/java/com/google/android/gms/location/LocationCallback.java rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/LocationRequest.java (100%) rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/LocationResult.java (100%) rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/LocationSettingsConfiguration.java (100%) rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/LocationSettingsRequest.java (100%) rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/LocationSettingsResult.java (100%) rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/LocationSettingsStates.java (100%) rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/LocationSettingsStatusCodes.java (100%) rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/LocationStatus.java (100%) create mode 100644 play-services-location/src/main/java/com/google/android/gms/location/SettingsClient.java create mode 100644 play-services-location/src/main/java/com/google/android/gms/location/SleepClassifyEvent.java create mode 100644 play-services-location/src/main/java/com/google/android/gms/location/SleepSegmentEvent.java create mode 100644 play-services-location/src/main/java/com/google/android/gms/location/SleepSegmentRequest.java rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/internal/ClientIdentity.java (100%) rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/internal/DeviceOrientationRequestInternal.java (100%) rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/internal/DeviceOrientationRequestUpdateData.java (100%) rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/internal/FusedLocationProviderResult.java (100%) rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/internal/LocationRequestInternal.java (76%) rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/internal/LocationRequestUpdateData.java (70%) rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/internal/ParcelableGeofence.java (100%) rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/reporting/OptInRequest.java (92%) rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/reporting/ReportingState.java (54%) rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/reporting/SendDataRequest.java (93%) rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/reporting/UlrPrivateModeRequest.java (100%) rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/reporting/UploadRequest.java (100%) rename {play-services-location-api => play-services-location}/src/main/java/com/google/android/gms/location/reporting/UploadRequestResult.java (100%) create mode 100644 play-services-location/src/main/java/org/microg/gms/location/FusedLocationProviderClientImpl.java create mode 100644 play-services-location/src/main/java/org/microg/gms/location/GeofencingClientImpl.java delete mode 100644 play-services-location/src/main/java/org/microg/gms/location/NativeLocationClientImpl.java create mode 100644 play-services-location/src/main/java/org/microg/gms/location/SettingsClientImpl.java create mode 100644 play-services-maps/build.gradle create mode 100644 play-services-maps/src/main/AndroidManifest.xml rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/GoogleMapOptions.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/internal/ICameraUpdateFactoryDelegate.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/internal/ICancelableCallback.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/internal/ICreator.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/internal/IGoogleMapDelegate.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/internal/IInfoWindowAdapter.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/internal/ILocationSourceDelegate.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/internal/IMapFragmentDelegate.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/internal/IMapViewDelegate.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraChangeListener.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraIdleListener.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraMoveCanceledListener.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraMoveListener.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraMoveStartedListener.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/internal/IOnInfoWindowClickListener.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/internal/IOnMapClickListener.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/internal/IOnMapLoadedCallback.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/internal/IOnMapLongClickListener.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/internal/IOnMapReadyCallback.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/internal/IOnMarkerClickListener.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/internal/IOnMarkerDragListener.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/internal/IOnMyLocationButtonClickListener.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/internal/IOnMyLocationChangeListener.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/internal/IProjectionDelegate.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/internal/ISnapshotReadyCallback.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/internal/IUiSettingsDelegate.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/model/CameraPosition.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/model/CircleOptions.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/model/GroundOverlayOptions.aidl (100%) rename {play-services-location-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/model/LatLng.aidl (100%) rename {play-services-location-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/model/LatLngBounds.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/model/MapStyleOptions.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/model/MarkerOptions.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/model/PatternItem.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/model/PolygonOptions.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/model/PolylineOptions.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/model/Tile.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/model/TileOverlayOptions.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/model/VisibleRegion.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/model/internal/IBitmapDescriptorFactoryDelegate.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/model/internal/ICircleDelegate.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/model/internal/IGroundOverlayDelegate.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/model/internal/IMarkerDelegate.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/model/internal/IPolygonDelegate.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/model/internal/IPolylineDelegate.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/model/internal/ITileOverlayDelegate.aidl (100%) rename {play-services-api => play-services-maps}/src/main/aidl/com/google/android/gms/maps/model/internal/ITileProviderDelegate.aidl (100%) rename {play-services-api => play-services-maps}/src/main/java/com/google/android/gms/maps/GoogleMapOptions.java (100%) rename {play-services-api => play-services-maps}/src/main/java/com/google/android/gms/maps/StreetViewPanoramaOptions.java (100%) rename {play-services-api => play-services-maps}/src/main/java/com/google/android/gms/maps/internal/Point.java (100%) rename {play-services-api => play-services-maps}/src/main/java/com/google/android/gms/maps/model/BitmapDescriptor.java (100%) rename {play-services-api => play-services-maps}/src/main/java/com/google/android/gms/maps/model/CameraPosition.java (100%) rename {play-services-api => play-services-maps}/src/main/java/com/google/android/gms/maps/model/CircleOptions.java (100%) rename {play-services-api => play-services-maps}/src/main/java/com/google/android/gms/maps/model/Dash.java (100%) rename {play-services-api => play-services-maps}/src/main/java/com/google/android/gms/maps/model/Dot.java (100%) rename {play-services-api => play-services-maps}/src/main/java/com/google/android/gms/maps/model/Gap.java (100%) rename {play-services-api => play-services-maps}/src/main/java/com/google/android/gms/maps/model/GroundOverlayOptions.java (100%) rename {play-services-api => play-services-maps}/src/main/java/com/google/android/gms/maps/model/JointType.java (100%) rename {play-services-location-api => play-services-maps}/src/main/java/com/google/android/gms/maps/model/LatLng.java (100%) rename {play-services-location-api => play-services-maps}/src/main/java/com/google/android/gms/maps/model/LatLngBounds.java (100%) rename {play-services-api => play-services-maps}/src/main/java/com/google/android/gms/maps/model/MapStyleOptions.java (100%) rename {play-services-api => play-services-maps}/src/main/java/com/google/android/gms/maps/model/MarkerOptions.java (100%) rename {play-services-api => play-services-maps}/src/main/java/com/google/android/gms/maps/model/PatternItem.java (100%) rename {play-services-api => play-services-maps}/src/main/java/com/google/android/gms/maps/model/PolygonOptions.java (100%) rename {play-services-api => play-services-maps}/src/main/java/com/google/android/gms/maps/model/PolylineOptions.java (100%) rename {play-services-api => play-services-maps}/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaCamera.java (100%) rename {play-services-api => play-services-maps}/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaLink.java (100%) rename {play-services-api => play-services-maps}/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaLocation.java (100%) rename {play-services-api => play-services-maps}/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaOrientation.java (100%) rename {play-services-api => play-services-maps}/src/main/java/com/google/android/gms/maps/model/Tile.java (100%) rename {play-services-api => play-services-maps}/src/main/java/com/google/android/gms/maps/model/TileOverlayOptions.java (100%) rename {play-services-api => play-services-maps}/src/main/java/com/google/android/gms/maps/model/TileProvider.java (100%) rename {play-services-api => play-services-maps}/src/main/java/com/google/android/gms/maps/model/VisibleRegion.java (100%) rename {play-services-api => play-services-maps}/src/main/java/com/google/android/gms/maps/model/package-info.java (100%) create mode 100644 play-services-maps/src/main/java/com/google/android/gms/maps/package-info.java rename {play-services-api => play-services-maps}/src/main/java/org/microg/gms/maps/MapsConstants.java (100%) rename {play-services-fido-api => play-services-measurement-base}/build.gradle (83%) create mode 100644 play-services-measurement-base/src/main/AndroidManifest.xml rename {play-services-api => play-services-measurement-base}/src/main/aidl/com/google/android/gms/measurement/api/internal/IAppMeasurementDynamiteService.aidl (100%) rename {play-services-api => play-services-measurement-base}/src/main/aidl/com/google/android/gms/measurement/api/internal/IBundleReceiver.aidl (100%) rename {play-services-api => play-services-measurement-base}/src/main/aidl/com/google/android/gms/measurement/api/internal/IEventHandlerProxy.aidl (100%) rename {play-services-api => play-services-measurement-base}/src/main/aidl/com/google/android/gms/measurement/api/internal/IStringProvider.aidl (100%) rename {play-services-api => play-services-measurement-base}/src/main/aidl/com/google/android/gms/measurement/api/internal/InitializationParams.aidl (100%) rename {play-services-api => play-services-measurement-base}/src/main/java/com/google/android/gms/measurement/api/internal/InitializationParams.java (100%) delete mode 100644 play-services-nearby-api/src/main/AndroidManifest.xml delete mode 100644 play-services-nearby-api/src/main/java/org/microg/gms/nearby/exposurenotification/Constants.java delete mode 100644 play-services-nearby-core-proto/build.gradle delete mode 100644 play-services-nearby-core-ui/build.gradle delete mode 100644 play-services-nearby-core-ui/src/main/AndroidManifest.xml delete mode 100644 play-services-nearby-core/src/main/res/values-be/strings.xml delete mode 100644 play-services-nearby-core/src/main/res/values-de/strings.xml delete mode 100644 play-services-nearby-core/src/main/res/values-es/strings.xml delete mode 100644 play-services-nearby-core/src/main/res/values-it/strings.xml delete mode 100644 play-services-nearby-core/src/main/res/values-ru/strings.xml delete mode 100644 play-services-nearby-core/src/main/res/values-zh-rCN/strings.xml delete mode 100644 play-services-nearby-core/src/main/res/values/strings.xml rename {play-services-nearby-core => play-services-nearby/core}/build.gradle (79%) rename {play-services-nearby-core => play-services-nearby/core}/src/main/AndroidManifest.xml (71%) rename {play-services-nearby-core => play-services-nearby/core}/src/main/kotlin/org/microg/gms/nearby/exposurenotification/AdvertiserService.kt (100%) rename {play-services-nearby-core => play-services-nearby/core}/src/main/kotlin/org/microg/gms/nearby/exposurenotification/CleanupService.kt (100%) rename {play-services-nearby-core => play-services-nearby/core}/src/main/kotlin/org/microg/gms/nearby/exposurenotification/Constants.kt (100%) rename {play-services-nearby-core => play-services-nearby/core}/src/main/kotlin/org/microg/gms/nearby/exposurenotification/Crypto.kt (100%) rename {play-services-nearby-core => play-services-nearby/core}/src/main/kotlin/org/microg/gms/nearby/exposurenotification/DeviceInfo.kt (100%) rename {play-services-nearby-core => play-services-nearby/core}/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposureDatabase.kt (100%) rename {play-services-nearby-core => play-services-nearby/core}/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposureFileProvider.kt (100%) rename {play-services-nearby-core => play-services-nearby/core}/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposureNotificationService.kt (100%) rename {play-services-nearby-core => play-services-nearby/core}/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposureNotificationServiceImpl.kt (98%) rename {play-services-nearby-core => play-services-nearby/core}/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposurePreferences.kt (100%) rename {play-services-nearby-core => play-services-nearby/core}/src/main/kotlin/org/microg/gms/nearby/exposurenotification/Extensions.kt (100%) rename {play-services-nearby-core => play-services-nearby/core}/src/main/kotlin/org/microg/gms/nearby/exposurenotification/MeasuredExposure.kt (100%) rename {play-services-nearby-core => play-services-nearby/core}/src/main/kotlin/org/microg/gms/nearby/exposurenotification/NotifyService.kt (93%) rename {play-services-nearby-core => play-services-nearby/core}/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ScannerService.kt (100%) rename {play-services-nearby-core => play-services-nearby/core}/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ServiceInfo.kt (100%) rename {play-services-nearby-core => play-services-nearby/core}/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ServiceTrigger.kt (100%) rename {play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core => play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification}/ui/DotChartPreference.kt (89%) rename {play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core => play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification}/ui/DotChartView.kt (99%) rename {play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core => play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification}/ui/ExposureNotificationsAppFragment.kt (89%) rename {play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core => play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification}/ui/ExposureNotificationsAppPreferencesFragment.kt (98%) rename {play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core => play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification}/ui/ExposureNotificationsConfirmActivity.kt (98%) rename {play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core => play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification}/ui/ExposureNotificationsFragment.kt (89%) rename {play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core => play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification}/ui/ExposureNotificationsPreferencesFragment.kt (98%) rename {play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core => play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification}/ui/ExposureNotificationsRpisFragment.kt (96%) rename {play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core => play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification}/ui/ExposureNotificationsSettingsActivity.kt (88%) rename {play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core => play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification}/ui/Utils.kt (88%) rename {play-services-nearby-core-proto => play-services-nearby/core}/src/main/proto/TemporaryExposureKeyFile.proto (100%) rename {play-services-nearby-core-ui => play-services-nearby/core}/src/main/res/drawable/ic_alert.xml (100%) rename {play-services-nearby-core-ui => play-services-nearby/core}/src/main/res/drawable/ic_bluetooth_off.xml (100%) rename {play-services-nearby-core-ui => play-services-nearby/core}/src/main/res/drawable/ic_location_off.xml (100%) rename {play-services-nearby-core-ui => play-services-nearby/core}/src/main/res/drawable/ic_outline_location_on.xml (100%) rename {play-services-nearby-core => play-services-nearby/core}/src/main/res/drawable/ic_virus_outline.xml (100%) rename {play-services-nearby-core-ui => play-services-nearby/core}/src/main/res/layout/exposure_notifications_app_fragment.xml (92%) rename {play-services-nearby-core-ui => play-services-nearby/core}/src/main/res/layout/exposure_notifications_confirm_activity.xml (100%) rename {play-services-nearby-core-ui => play-services-nearby/core}/src/main/res/layout/exposure_notifications_confirm_delete.xml (100%) rename {play-services-nearby-core-ui => play-services-nearby/core}/src/main/res/layout/exposure_notifications_fragment.xml (91%) rename {play-services-nearby-core-ui => play-services-nearby/core}/src/main/res/layout/exposure_notifications_settings_activity.xml (100%) rename {play-services-nearby-core-ui => play-services-nearby/core}/src/main/res/layout/preference_dot_chart.xml (72%) rename {play-services-nearby-core-ui => play-services-nearby/core}/src/main/res/navigation/nav_nearby.xml (84%) rename {play-services-nearby-core-ui => play-services-nearby/core}/src/main/res/values-be/strings.xml (90%) rename {play-services-nearby-core-ui => play-services-nearby/core}/src/main/res/values-de/strings.xml (93%) rename {play-services-nearby-core-ui => play-services-nearby/core}/src/main/res/values-es/strings.xml (91%) rename {play-services-nearby-core-ui => play-services-nearby/core}/src/main/res/values-it/strings.xml (91%) rename {play-services-nearby-core-ui => play-services-nearby/core}/src/main/res/values-ru/strings.xml (90%) rename {play-services-nearby-core-ui => play-services-nearby/core}/src/main/res/values-zh-rCN/strings.xml (90%) rename {play-services-nearby-core-ui => play-services-nearby/core}/src/main/res/values/strings.xml (91%) rename {play-services-nearby-core-ui => play-services-nearby/core}/src/main/res/xml/preferences_exposure_notifications.xml (100%) rename {play-services-nearby-core-ui => play-services-nearby/core}/src/main/res/xml/preferences_exposure_notifications_app.xml (100%) rename {play-services-nearby-core => play-services-nearby/core}/src/main/res/xml/preferences_exposure_notifications_exportedfiles.xml (100%) rename {play-services-nearby-core-ui => play-services-nearby/core}/src/main/res/xml/preferences_exposure_notifications_rpis.xml (95%) rename {play-services-nearby-core => play-services-nearby/core}/src/test/java/org/microg/gms/nearby/exposurenotification/CryptoTest.java (100%) rename {play-services-nearby-core => play-services-nearby/core}/src/test/java/org/microg/gms/nearby/exposurenotification/TestVectors.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/DailySummary.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/DiagnosisKeysDataMapping.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/ExposureInformation.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/ExposureSummary.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/ExposureWindow.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/PackageConfiguration.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/TemporaryExposureKey.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetCalibrationConfidenceParams.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetDailySummariesParams.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetDiagnosisKeysDataMappingParams.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetExposureInformationParams.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetExposureSummaryParams.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetExposureWindowsParams.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetPackageConfigurationParams.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetStatusParams.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetTemporaryExposureKeyHistoryParams.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetVersionParams.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IBooleanCallback.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IDailySummaryListCallback.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IDiagnosisKeyFileSupplier.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IDiagnosisKeysDataMappingCallback.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IExposureInformationListCallback.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IExposureSummaryCallback.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IExposureWindowListCallback.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IIntCallback.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/ILongCallback.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/INearbyExposureNotificationService.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IPackageConfigurationCallback.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/ITemporaryExposureKeyListCallback.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IsEnabledParams.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/ProvideDiagnosisKeysParams.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/RequestPreAuthorizedTemporaryExposureKeyHistoryParams.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/RequestPreAuthorizedTemporaryExposureKeyReleaseParams.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/SetDiagnosisKeysDataMappingParams.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/StartParams.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/StopParams.aidl (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/CalibrationConfidence.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/DailySummariesConfig.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/DailySummary.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/DiagnosisKeyFileProvider.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/DiagnosisKeysDataMapping.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/ExposureConfiguration.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/ExposureInformation.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/ExposureNotificationStatus.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/ExposureNotificationStatusCodes.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/ExposureSummary.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/ExposureWindow.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/Infectiousness.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/PackageConfiguration.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/ReportType.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/RiskLevel.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/ScanInstance.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/TemporaryExposureKey.java (98%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/internal/GetCalibrationConfidenceParams.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/internal/GetDailySummariesParams.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/internal/GetDiagnosisKeysDataMappingParams.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/internal/GetExposureInformationParams.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/internal/GetExposureSummaryParams.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/internal/GetExposureWindowsParams.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/internal/GetPackageConfigurationParams.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/internal/GetStatusParams.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/internal/GetTemporaryExposureKeyHistoryParams.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/internal/GetVersionParams.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/internal/IsEnabledParams.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/internal/ProvideDiagnosisKeysParams.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/internal/RequestPreAuthorizedTemporaryExposureKeyHistoryParams.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/internal/RequestPreAuthorizedTemporaryExposureKeyReleaseParams.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/internal/SetDiagnosisKeysDataMappingParams.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/internal/StartParams.java (100%) rename {play-services-nearby-api => play-services-nearby}/src/main/java/com/google/android/gms/nearby/exposurenotification/internal/StopParams.java (100%) rename {play-services-oss-licenses-core => play-services-oss-licenses/core}/build.gradle (90%) rename {play-services-oss-licenses-core => play-services-oss-licenses/core}/src/main/AndroidManifest.xml (100%) rename {play-services-oss-licenses-core => play-services-oss-licenses/core}/src/main/kotlin/org/microg/gms/oss/licenses/core/OssLicensesService.kt (100%) rename {play-services-oss-licenses-api => play-services-oss-licenses}/src/main/aidl/com/google/android/gms/oss/licenses/IOSSLicenseService.aidl (100%) rename {play-services-oss-licenses-api => play-services-oss-licenses}/src/main/aidl/com/google/android/gms/oss/licenses/License.aidl (100%) rename {play-services-oss-licenses-api => play-services-oss-licenses}/src/main/java/com/google/android/gms/oss/licenses/License.java (100%) rename {play-services-oss-licenses-api => play-services-oss-licenses}/src/main/java/org/microg/gms/oss/licenses/LicenseUtil.java (100%) rename {play-services-oss-licenses-api => play-services-places-placereport}/build.gradle (69%) create mode 100644 play-services-places-placereport/src/main/AndroidManifest.xml rename {play-services-location-api => play-services-places-placereport}/src/main/java/com/google/android/gms/location/places/PlaceReport.java (52%) create mode 100644 play-services-places/build.gradle create mode 100644 play-services-places/src/main/AndroidManifest.xml rename {play-services-location-api => play-services-places}/src/main/aidl/com/google/android/gms/location/places/AutocompleteFilter.aidl (100%) rename {play-services-location-api => play-services-places}/src/main/aidl/com/google/android/gms/location/places/NearbyAlertRequest.aidl (100%) rename {play-services-location-api => play-services-places}/src/main/aidl/com/google/android/gms/location/places/PlaceFilter.aidl (100%) rename {play-services-location-api => play-services-places}/src/main/aidl/com/google/android/gms/location/places/PlaceReport.aidl (100%) rename {play-services-location-api => play-services-places}/src/main/aidl/com/google/android/gms/location/places/PlaceRequest.aidl (100%) rename {play-services-location-api => play-services-places}/src/main/aidl/com/google/android/gms/location/places/UserAddedPlace.aidl (100%) rename {play-services-location-api => play-services-places}/src/main/aidl/com/google/android/gms/location/places/UserDataType.aidl (100%) rename {play-services-api => play-services-places}/src/main/aidl/com/google/android/gms/location/places/internal/IGooglePlaceDetectionService.aidl (100%) rename {play-services-api => play-services-places}/src/main/aidl/com/google/android/gms/location/places/internal/IGooglePlacesService.aidl (100%) rename {play-services-location-api => play-services-places}/src/main/aidl/com/google/android/gms/location/places/internal/IPlacesCallbacks.aidl (100%) rename {play-services-location-api => play-services-places}/src/main/aidl/com/google/android/gms/location/places/internal/PlacesParams.aidl (100%) rename {play-services-location-api => play-services-places}/src/main/java/com/google/android/gms/location/places/AutocompleteFilter.java (100%) rename {play-services-location-api => play-services-places}/src/main/java/com/google/android/gms/location/places/NearbyAlertRequest.java (100%) rename {play-services-location-api => play-services-places}/src/main/java/com/google/android/gms/location/places/Place.java (100%) rename {play-services-location-api => play-services-places}/src/main/java/com/google/android/gms/location/places/PlaceFilter.java (100%) rename {play-services-location-api => play-services-places}/src/main/java/com/google/android/gms/location/places/PlaceRequest.java (100%) rename {play-services-location-api => play-services-places}/src/main/java/com/google/android/gms/location/places/UserAddedPlace.java (100%) rename {play-services-location-api => play-services-places}/src/main/java/com/google/android/gms/location/places/UserDataType.java (100%) rename {play-services-location-api => play-services-places}/src/main/java/com/google/android/gms/location/places/internal/PlaceImpl.java (100%) rename {play-services-location-api => play-services-places}/src/main/java/com/google/android/gms/location/places/internal/PlacesParams.java (100%) create mode 100644 play-services-recaptcha/core/build.gradle create mode 100644 play-services-recaptcha/core/src/main/kotlin/org/microg/gms/recaptcha/RecaptchaService.kt create mode 100644 play-services-recaptcha/src/main/AndroidManifest.xml delete mode 100644 play-services-safetynet-api/build.gradle delete mode 100644 play-services-safetynet-api/src/main/AndroidManifest.xml delete mode 100644 play-services-safetynet-core-proto/build.gradle delete mode 100644 play-services-safetynet-core/src/main/AndroidManifest.xml rename {play-services-safetynet-core => play-services-safetynet/core}/build.gradle (83%) rename {play-services-safetynet-core-ui => play-services-safetynet/core}/src/main/AndroidManifest.xml (74%) rename {play-services-safetynet-core => play-services-safetynet/core}/src/main/java/org/microg/gms/safetynet/Attestation.java (100%) rename {play-services-safetynet-core-ui => play-services-safetynet/core}/src/main/kotlin/org/microg/gms/safetynet/ReCaptchaActivity.kt (96%) rename {play-services-safetynet-core => play-services-safetynet/core}/src/main/kotlin/org/microg/gms/safetynet/SafetyNetClientService.kt (97%) rename {play-services-safetynet-core => play-services-safetynet/core}/src/main/kotlin/org/microg/gms/safetynet/SafetyNetDatabase.kt (100%) rename {play-services-safetynet-core => play-services-safetynet/core}/src/main/kotlin/org/microg/gms/safetynet/SafetyNetPreferences.kt (100%) rename {play-services-safetynet-core => play-services-safetynet/core}/src/main/kotlin/org/microg/gms/safetynet/SafetyNetRequestType.kt (100%) rename {play-services-safetynet-core => play-services-safetynet/core}/src/main/kotlin/org/microg/gms/safetynet/SafetyNetSummary.kt (100%) rename {play-services-safetynet-core-proto => play-services-safetynet/core}/src/main/proto/safetynet.proto (100%) rename {play-services-safetynet-core-ui => play-services-safetynet/core}/src/main/res/drawable/ic_recaptcha.xml (100%) rename {play-services-safetynet-core-ui => play-services-safetynet/core}/src/main/res/layout/recaptcha_window.xml (100%) rename {play-services-safetynet-api => play-services-safetynet}/src/main/aidl/com/google/android/gms/safetynet/AttestationData.aidl (100%) rename {play-services-safetynet-api => play-services-safetynet}/src/main/aidl/com/google/android/gms/safetynet/HarmfulAppsData.aidl (100%) rename {play-services-safetynet-api => play-services-safetynet}/src/main/aidl/com/google/android/gms/safetynet/HarmfulAppsInfo.aidl (100%) rename {play-services-safetynet-api => play-services-safetynet}/src/main/aidl/com/google/android/gms/safetynet/RecaptchaResultData.aidl (100%) rename {play-services-safetynet-api => play-services-safetynet}/src/main/aidl/com/google/android/gms/safetynet/RemoveHarmfulAppData.aidl (100%) rename {play-services-safetynet-api => play-services-safetynet}/src/main/aidl/com/google/android/gms/safetynet/SafeBrowsingData.aidl (100%) rename {play-services-safetynet-api => play-services-safetynet}/src/main/aidl/com/google/android/gms/safetynet/internal/ISafetyNetCallbacks.aidl (100%) rename {play-services-safetynet-api => play-services-safetynet}/src/main/aidl/com/google/android/gms/safetynet/internal/ISafetyNetService.aidl (100%) rename {play-services-safetynet-api => play-services-safetynet}/src/main/java/com/google/android/gms/safetynet/AttestationData.java (100%) rename {play-services-safetynet-api => play-services-safetynet}/src/main/java/com/google/android/gms/safetynet/HarmfulAppsData.java (100%) rename {play-services-safetynet-api => play-services-safetynet}/src/main/java/com/google/android/gms/safetynet/HarmfulAppsInfo.java (100%) rename {play-services-safetynet-api => play-services-safetynet}/src/main/java/com/google/android/gms/safetynet/RecaptchaResultData.java (100%) rename {play-services-safetynet-api => play-services-safetynet}/src/main/java/com/google/android/gms/safetynet/RemoveHarmfulAppData.java (100%) rename {play-services-safetynet-api => play-services-safetynet}/src/main/java/com/google/android/gms/safetynet/SafeBrowsingData.java (100%) rename {play-services-safetynet-api => play-services-safetynet}/src/main/java/com/google/android/gms/safetynet/SafetyNetStatusCodes.java (100%) rename {play-services-safetynet-api => play-services-safetynet}/src/main/java/com/google/android/gms/safetynet/VerifyAppsConstants.java (100%) rename {play-services-tapandpay-api => play-services-tapandpay}/build.gradle (89%) rename {play-services-tapandpay-core => play-services-tapandpay/core}/build.gradle (96%) rename {play-services-tapandpay-core => play-services-tapandpay/core}/src/main/AndroidManifest.xml (100%) rename {play-services-tapandpay-core => play-services-tapandpay/core}/src/main/kotlin/org/microg/gms/tapandpay/TapAndPayService.kt (100%) rename {play-services-tapandpay-api => play-services-tapandpay}/src/main/AndroidManifest.xml (100%) rename {play-services-tapandpay-api => play-services-tapandpay}/src/main/aidl/com/google/android/gms/tapandpay/firstparty/TokenStatus.aidl (100%) rename {play-services-tapandpay-api => play-services-tapandpay}/src/main/aidl/com/google/android/gms/tapandpay/internal/ITapAndPayService.aidl (100%) rename {play-services-tapandpay-api => play-services-tapandpay}/src/main/aidl/com/google/android/gms/tapandpay/internal/ITapAndPayServiceCallbacks.aidl (100%) rename {play-services-tapandpay-api => play-services-tapandpay}/src/main/aidl/com/google/android/gms/tapandpay/issuer/TokenStatus.aidl (100%) rename {play-services-tapandpay-api => play-services-tapandpay}/src/main/java/com/google/android/gms/tapandpay/TapAndPayStatusCodes.java (100%) rename {play-services-tapandpay-api => play-services-tapandpay}/src/main/java/com/google/android/gms/tapandpay/firstparty/TokenReference.java (100%) rename {play-services-tapandpay-api => play-services-tapandpay}/src/main/java/com/google/android/gms/tapandpay/firstparty/TokenStatus.java (100%) rename {play-services-tapandpay-api => play-services-tapandpay}/src/main/java/com/google/android/gms/tapandpay/issuer/TokenStatus.java (100%) rename {play-services-tasks-ktx => play-services-tasks/ktx}/build.gradle (95%) rename {play-services-tasks-ktx => play-services-tasks/ktx}/src/main/AndroidManifest.xml (100%) rename {play-services-tasks-ktx => play-services-tasks/ktx}/src/main/kotlin/com/google/android/gms/tasks/Tasks.kt (100%) delete mode 100644 play-services-vision-api/build.gradle delete mode 100644 play-services-vision-api/src/main/AndroidManifest.xml delete mode 100644 play-services-vision-common-api/build.gradle delete mode 100644 play-services-vision-common-api/src/main/AndroidManifest.xml rename {play-services-vision-common-api => play-services-vision-common}/src/main/aidl/com/google/android/gms/vision/internal/FrameMetadataParcel.aidl (100%) rename {play-services-vision-common-api => play-services-vision-common}/src/main/java/com/google/android/gms/vision/internal/FrameMetadataParcel.java (100%) rename {play-services-vision-core => play-services-vision/core}/build.gradle (90%) rename {play-services-vision-core => play-services-vision/core}/src/main/AndroidManifest.xml (100%) rename {play-services-vision-core => play-services-vision/core}/src/main/java/com/google/android/gms/dynamite/descriptors/com/google/android/gms/vision/barcode/ModuleDescriptor.java (100%) rename {play-services-vision-core => play-services-vision/core}/src/main/java/com/google/android/gms/dynamite/descriptors/com/google/android/gms/vision/dynamite/ModuleDescriptor.java (100%) rename {play-services-vision-core => play-services-vision/core}/src/main/kotlin/com/google/android/gms/vision/barcode/ChimeraNativeBarcodeDetectorCreator.kt (100%) rename {play-services-vision-core => play-services-vision/core}/src/main/kotlin/com/google/android/gms/vision/client/DynamiteNativeBarcodeDetectorCreator.kt (100%) rename {play-services-vision-core => play-services-vision/core}/src/main/kotlin/org/microg/gms/vision/barcode/BarcodeDetector.kt (100%) rename {play-services-vision-core => play-services-vision/core}/src/main/kotlin/org/microg/gms/vision/barcode/DirectLuminanceSource.kt (100%) rename {play-services-vision-core => play-services-vision/core}/src/main/kotlin/org/microg/gms/vision/barcode/Extensions.kt (100%) rename {play-services-vision-api => play-services-vision}/src/main/aidl/com/google/android/gms/vision/barcode/Barcode.aidl (100%) rename {play-services-vision-api => play-services-vision}/src/main/aidl/com/google/android/gms/vision/barcode/internal/client/BarcodeDetectorOptions.aidl (100%) rename {play-services-vision-api => play-services-vision}/src/main/aidl/com/google/android/gms/vision/barcode/internal/client/INativeBarcodeDetector.aidl (100%) rename {play-services-vision-api => play-services-vision}/src/main/aidl/com/google/android/gms/vision/barcode/internal/client/INativeBarcodeDetectorCreator.aidl (100%) rename {play-services-vision-api => play-services-vision}/src/main/java/com/google/android/gms/vision/barcode/Barcode.java (100%) rename {play-services-vision-api => play-services-vision}/src/main/java/com/google/android/gms/vision/barcode/internal/client/BarcodeDetectorOptions.java (100%) delete mode 100644 play-services-wearable-api/build.gradle delete mode 100644 play-services-wearable-api/src/main/AndroidManifest.xml delete mode 100644 play-services-wearable-proto/build.gradle rename {play-services-droidguard-core-ui => play-services-wearable/core}/build.gradle (53%) create mode 100644 play-services-wearable/core/src/main/AndroidManifest.xml rename {play-services-core => play-services-wearable/core}/src/main/java/org/microg/gms/wearable/CapabilityManager.java (100%) rename {play-services-core => play-services-wearable/core}/src/main/java/org/microg/gms/wearable/ClockworkNodePreferences.java (100%) rename {play-services-core => play-services-wearable/core}/src/main/java/org/microg/gms/wearable/ConfigurationDatabaseHelper.java (100%) rename {play-services-core => play-services-wearable/core}/src/main/java/org/microg/gms/wearable/DataItemInternal.java (100%) rename {play-services-core => play-services-wearable/core}/src/main/java/org/microg/gms/wearable/DataItemRecord.java (100%) rename {play-services-core => play-services-wearable/core}/src/main/java/org/microg/gms/wearable/MessageHandler.java (94%) rename {play-services-core => play-services-wearable/core}/src/main/java/org/microg/gms/wearable/NodeDatabaseHelper.java (100%) rename {play-services-core => play-services-wearable/core}/src/main/java/org/microg/gms/wearable/RpcHelper.java (100%) rename {play-services-core => play-services-wearable/core}/src/main/java/org/microg/gms/wearable/WearableImpl.java (99%) rename {play-services-core => play-services-wearable/core}/src/main/java/org/microg/gms/wearable/WearableService.java (100%) rename {play-services-core => play-services-wearable/core}/src/main/java/org/microg/gms/wearable/WearableServiceImpl.java (100%) rename {play-services-core => play-services-wearable/core}/src/main/java/org/microg/gms/wearable/location/WearableLocationService.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/Asset.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/ConnectionConfiguration.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/AddListenerRequest.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/AddLocalCapabilityResponse.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/AmsEntityUpdateParcelable.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/AncsNotificationParcelable.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/CapabilityInfoParcelable.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/ChannelEventParcelable.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/ChannelReceiveFileResponse.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/ChannelSendFileResponse.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/CloseChannelResponse.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/DeleteDataItemsResponse.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/GetAllCapabilitiesResponse.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/GetCapabilityResponse.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/GetChannelInputStreamResponse.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/GetChannelOutputStreamResponse.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/GetCloudSyncOptInOutDoneResponse.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/GetCloudSyncOptInStatusResponse.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/GetCloudSyncSettingResponse.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/GetConfigResponse.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/GetConfigsResponse.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/GetConnectedNodesResponse.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/GetDataItemResponse.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/GetFdForAssetResponse.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/GetLocalNodeResponse.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/IChannelStreamCallbacks.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/IWearableCallbacks.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/IWearableListener.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/IWearableService.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/MessageEventParcelable.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/NodeParcelable.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/OpenChannelResponse.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/PutDataRequest.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/PutDataResponse.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/RemoveListenerRequest.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/RemoveLocalCapabilityResponse.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/SendMessageResponse.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/aidl/com/google/android/gms/wearable/internal/StorageInfoResponse.aidl (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/AmsEntityUpdate.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/AncsNotification.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/Asset.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/CapabilityInfo.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/ConnectionConfiguration.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/DataItem.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/DataItemAsset.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/MessageEvent.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/Node.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/WearableStatusCodes.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/AddListenerRequest.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/AddLocalCapabilityResponse.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/AmsEntityUpdateParcelable.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/AncsNotificationParcelable.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/CapabilityInfoParcelable.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/ChannelEventParcelable.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/ChannelParcelable.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/ChannelReceiveFileResponse.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/ChannelSendFileResponse.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/CloseChannelResponse.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/DataItemAssetParcelable.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/DataItemParcelable.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/DeleteDataItemsResponse.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/GetAllCapabilitiesResponse.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/GetCapabilityResponse.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/GetChannelInputStreamResponse.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/GetChannelOutputStreamResponse.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/GetCloudSyncOptInOutDoneResponse.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/GetCloudSyncOptInStatusResponse.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/GetCloudSyncSettingResponse.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/GetConfigResponse.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/GetConfigsResponse.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/GetConnectedNodesResponse.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/GetDataItemResponse.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/GetFdForAssetResponse.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/GetLocalNodeResponse.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/MessageEventParcelable.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/NodeParcelable.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/OpenChannelResponse.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/PutDataRequest.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/PutDataResponse.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/RemoveListenerRequest.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/RemoveLocalCapabilityResponse.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/SendMessageResponse.java (100%) rename {play-services-wearable-api => play-services-wearable}/src/main/java/com/google/android/gms/wearable/internal/StorageInfoResponse.java (100%) rename {play-services-wearable-proto => play-services-wearable}/src/main/proto/databundle.proto (100%) diff --git a/build.gradle b/build.gradle index f9bbde166..e5e04f906 100644 --- a/build.gradle +++ b/build.gradle @@ -12,7 +12,7 @@ buildscript { ext.kotlinVersion = '1.7.10' ext.coroutineVersion = '1.6.4' - ext.annotationVersion = '1.3.0' + ext.annotationVersion = '1.5.0' ext.appcompatVersion = '1.4.2' ext.biometricVersion = '1.1.0' ext.coreVersion = '1.8.0' @@ -21,7 +21,7 @@ buildscript { ext.loaderVersion = '1.1.0' ext.mediarouterVersion = '1.3.1' ext.multidexVersion = '2.0.1' - ext.navigationVersion = '2.5.1' + ext.navigationVersion = '2.5.3' ext.preferenceVersion = '1.2.0' ext.recyclerviewVersion = '1.2.0' ext.webkitVersion = '1.4.0' @@ -47,6 +47,7 @@ buildscript { classpath "com.android.tools.build:gradle:$androidBuildGradleVersion" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" classpath "com.squareup.wire:wire-gradle-plugin:$wireVersion" + classpath "com.github.kezong:fat-aar:1.3.8" } } @@ -100,5 +101,13 @@ subprojects { mavenCentral() google() } + afterEvaluate { + // Temporary hack for Android Studio + if (project.plugins.hasPlugin('com.android.base')) { + dependencies { + compileOnly "org.microg:safe-parcel:$safeParcelVersion" + } + } + } } diff --git a/firebase-auth-api/build.gradle b/firebase-auth/build.gradle similarity index 100% rename from firebase-auth-api/build.gradle rename to firebase-auth/build.gradle diff --git a/firebase-auth-core/build.gradle b/firebase-auth/core/build.gradle similarity index 92% rename from firebase-auth-core/build.gradle rename to firebase-auth/core/build.gradle index 20597d73a..6fe543467 100644 --- a/firebase-auth-core/build.gradle +++ b/firebase-auth/core/build.gradle @@ -7,7 +7,7 @@ apply plugin: 'com.android.library' apply plugin: 'kotlin-android' dependencies { - api project(':firebase-auth-api') + api project(':firebase-auth') implementation "androidx.lifecycle:lifecycle-service:$lifecycleVersion" implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycleVersion" @@ -15,7 +15,6 @@ dependencies { implementation "androidx.appcompat:appcompat:$appcompatVersion" implementation project(':play-services-base-core') - implementation project(':play-services-base-core-ui') implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutineVersion" diff --git a/firebase-auth-core/src/main/AndroidManifest.xml b/firebase-auth/core/src/main/AndroidManifest.xml similarity index 100% rename from firebase-auth-core/src/main/AndroidManifest.xml rename to firebase-auth/core/src/main/AndroidManifest.xml diff --git a/firebase-auth-core/src/main/assets/recaptcha.html b/firebase-auth/core/src/main/assets/recaptcha.html similarity index 100% rename from firebase-auth-core/src/main/assets/recaptcha.html rename to firebase-auth/core/src/main/assets/recaptcha.html diff --git a/firebase-auth-core/src/main/kotlin/org/microg/gms/firebase/auth/FirebaseAuthService.kt b/firebase-auth/core/src/main/kotlin/org/microg/gms/firebase/auth/FirebaseAuthService.kt similarity index 100% rename from firebase-auth-core/src/main/kotlin/org/microg/gms/firebase/auth/FirebaseAuthService.kt rename to firebase-auth/core/src/main/kotlin/org/microg/gms/firebase/auth/FirebaseAuthService.kt diff --git a/firebase-auth-core/src/main/kotlin/org/microg/gms/firebase/auth/IdentityToolkitClient.kt b/firebase-auth/core/src/main/kotlin/org/microg/gms/firebase/auth/IdentityToolkitClient.kt similarity index 100% rename from firebase-auth-core/src/main/kotlin/org/microg/gms/firebase/auth/IdentityToolkitClient.kt rename to firebase-auth/core/src/main/kotlin/org/microg/gms/firebase/auth/IdentityToolkitClient.kt diff --git a/firebase-auth-core/src/main/kotlin/org/microg/gms/firebase/auth/ReCaptchaActivity.kt b/firebase-auth/core/src/main/kotlin/org/microg/gms/firebase/auth/ReCaptchaActivity.kt similarity index 100% rename from firebase-auth-core/src/main/kotlin/org/microg/gms/firebase/auth/ReCaptchaActivity.kt rename to firebase-auth/core/src/main/kotlin/org/microg/gms/firebase/auth/ReCaptchaActivity.kt diff --git a/firebase-auth-core/src/main/kotlin/org/microg/gms/firebase/auth/ReCaptchaOverlay.kt b/firebase-auth/core/src/main/kotlin/org/microg/gms/firebase/auth/ReCaptchaOverlay.kt similarity index 100% rename from firebase-auth-core/src/main/kotlin/org/microg/gms/firebase/auth/ReCaptchaOverlay.kt rename to firebase-auth/core/src/main/kotlin/org/microg/gms/firebase/auth/ReCaptchaOverlay.kt diff --git a/firebase-auth-core/src/main/res/layout/activity_recaptcha.xml b/firebase-auth/core/src/main/res/layout/activity_recaptcha.xml similarity index 100% rename from firebase-auth-core/src/main/res/layout/activity_recaptcha.xml rename to firebase-auth/core/src/main/res/layout/activity_recaptcha.xml diff --git a/firebase-auth-api/src/main/AndroidManifest.xml b/firebase-auth/src/main/AndroidManifest.xml similarity index 100% rename from firebase-auth-api/src/main/AndroidManifest.xml rename to firebase-auth/src/main/AndroidManifest.xml diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/ActionCodeSettings.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/ActionCodeSettings.aidl similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/ActionCodeSettings.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/ActionCodeSettings.aidl diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/EmailAuthCredential.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/EmailAuthCredential.aidl similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/EmailAuthCredential.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/EmailAuthCredential.aidl diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/PhoneAuthCredential.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/PhoneAuthCredential.aidl similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/PhoneAuthCredential.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/PhoneAuthCredential.aidl diff --git a/firebase-auth-api/src/main/aidl/com/google/firebase/auth/UserProfileChangeRequest.aidl b/firebase-auth/src/main/aidl/com/google/firebase/auth/UserProfileChangeRequest.aidl similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/UserProfileChangeRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/UserProfileChangeRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/ApplyActionCodeAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/ApplyActionCodeAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/ChangeEmailAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/ChangeEmailAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/ChangePasswordAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/ChangePasswordAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/CheckActionCodeAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/CheckActionCodeAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/ConfirmPasswordResetAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/ConfirmPasswordResetAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/CreateAuthUriResponse.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/CreateAuthUriResponse.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/CreateUserWithEmailAndPasswordAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/CreateUserWithEmailAndPasswordAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/DeleteAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/DeleteAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/FinalizeMfaEnrollmentAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/FinalizeMfaEnrollmentAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/FinalizeMfaSignInAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/FinalizeMfaSignInAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/GetAccessTokenAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/GetAccessTokenAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/GetAccountInfoUser.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/GetAccountInfoUser.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/GetProvidersForEmailAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/GetProvidersForEmailAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/GetTokenResponse.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/GetTokenResponse.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/IFirebaseAuthCallbacks.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/IFirebaseAuthCallbacks.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/IFirebaseAuthService.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/IFirebaseAuthService.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/LinkEmailAuthCredentialAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/LinkEmailAuthCredentialAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/LinkFederatedCredentialAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/LinkFederatedCredentialAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/LinkPhoneAuthCredentialAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/LinkPhoneAuthCredentialAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/ReloadAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/ReloadAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/ResetPasswordResponse.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/ResetPasswordResponse.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SendEmailVerificationWithSettingsAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SendEmailVerificationWithSettingsAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SendGetOobConfirmationCodeEmailAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SendGetOobConfirmationCodeEmailAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SendVerificationCodeAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SendVerificationCodeAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SendVerificationCodeRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SendVerificationCodeRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SetFirebaseUiVersionAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SetFirebaseUiVersionAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SignInAnonymouslyAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SignInAnonymouslyAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithCredentialAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithCredentialAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithCustomTokenAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithCustomTokenAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithEmailAndPasswordAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithEmailAndPasswordAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithEmailLinkAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithEmailLinkAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithPhoneNumberAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/SignInWithPhoneNumberAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/StartMfaPhoneNumberEnrollmentAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/StartMfaPhoneNumberEnrollmentAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/StartMfaPhoneNumberSignInAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/StartMfaPhoneNumberSignInAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/StringList.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/StringList.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/UnenrollMfaAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/UnenrollMfaAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/UnlinkEmailCredentialAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/UnlinkEmailCredentialAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/UnlinkFederatedCredentialAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/UnlinkFederatedCredentialAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/UpdateProfileAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/UpdateProfileAidlRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/VerifyAssertionRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/VerifyAssertionRequest.aidl diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/aidl/com/google/firebase/auth/api/internal/VerifyBeforeUpdateEmailAidlRequest.aidl rename to firebase-auth/src/main/aidl/com/google/firebase/auth/api/internal/VerifyBeforeUpdateEmailAidlRequest.aidl diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/ActionCodeSettings.java b/firebase-auth/src/main/java/com/google/firebase/auth/ActionCodeSettings.java similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/ActionCodeSettings.java rename to firebase-auth/src/main/java/com/google/firebase/auth/ActionCodeSettings.java diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/AuthCredential.java b/firebase-auth/src/main/java/com/google/firebase/auth/AuthCredential.java similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/AuthCredential.java rename to firebase-auth/src/main/java/com/google/firebase/auth/AuthCredential.java diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/DefaultOAuthCredential.java b/firebase-auth/src/main/java/com/google/firebase/auth/DefaultOAuthCredential.java similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/DefaultOAuthCredential.java rename to firebase-auth/src/main/java/com/google/firebase/auth/DefaultOAuthCredential.java diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/EmailAuthCredential.java b/firebase-auth/src/main/java/com/google/firebase/auth/EmailAuthCredential.java similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/EmailAuthCredential.java rename to firebase-auth/src/main/java/com/google/firebase/auth/EmailAuthCredential.java diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/OAuthCredential.java b/firebase-auth/src/main/java/com/google/firebase/auth/OAuthCredential.java similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/OAuthCredential.java rename to firebase-auth/src/main/java/com/google/firebase/auth/OAuthCredential.java diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/PhoneAuthCredential.java b/firebase-auth/src/main/java/com/google/firebase/auth/PhoneAuthCredential.java similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/PhoneAuthCredential.java rename to firebase-auth/src/main/java/com/google/firebase/auth/PhoneAuthCredential.java diff --git a/firebase-auth-api/src/main/java/com/google/firebase/auth/UserProfileChangeRequest.java b/firebase-auth/src/main/java/com/google/firebase/auth/UserProfileChangeRequest.java similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/UserProfileChangeRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/UserProfileChangeRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ApplyActionCodeAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ApplyActionCodeAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ChangeEmailAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ChangeEmailAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ChangePasswordAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ChangePasswordAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/CheckActionCodeAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/CheckActionCodeAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ConfirmPasswordResetAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ConfirmPasswordResetAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/CreateAuthUriResponse.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/CreateAuthUriResponse.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/CreateUserWithEmailAndPasswordAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/CreateUserWithEmailAndPasswordAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/DeleteAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/DeleteAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/FinalizeMfaEnrollmentAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/FinalizeMfaEnrollmentAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/FinalizeMfaSignInAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/FinalizeMfaSignInAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/GetAccessTokenAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/GetAccessTokenAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/GetAccountInfoUser.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/GetAccountInfoUser.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/GetProvidersForEmailAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/GetProvidersForEmailAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/GetTokenResponse.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/GetTokenResponse.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/LinkEmailAuthCredentialAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/LinkEmailAuthCredentialAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/LinkFederatedCredentialAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/LinkFederatedCredentialAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/LinkPhoneAuthCredentialAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/LinkPhoneAuthCredentialAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/MfaInfo.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/MfaInfo.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ProviderUserInfo.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ProviderUserInfo.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ProviderUserInfoList.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ProviderUserInfoList.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ReloadAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ReloadAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/ResetPasswordResponse.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/ResetPasswordResponse.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SendEmailVerificationWithSettingsAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SendEmailVerificationWithSettingsAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SendGetOobConfirmationCodeEmailAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SendGetOobConfirmationCodeEmailAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SendVerificationCodeAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SendVerificationCodeAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SendVerificationCodeRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SendVerificationCodeRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SetFirebaseUiVersionAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SetFirebaseUiVersionAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SignInAnonymouslyAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SignInAnonymouslyAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SignInWithCredentialAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SignInWithCredentialAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SignInWithCustomTokenAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SignInWithCustomTokenAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SignInWithEmailAndPasswordAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SignInWithEmailAndPasswordAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SignInWithEmailLinkAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SignInWithEmailLinkAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/SignInWithPhoneNumberAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/SignInWithPhoneNumberAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/StartMfaPhoneNumberEnrollmentAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/StartMfaPhoneNumberEnrollmentAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/StartMfaPhoneNumberSignInAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/StartMfaPhoneNumberSignInAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/StringList.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/StringList.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/UnenrollMfaAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/UnenrollMfaAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/UnlinkEmailCredentialAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/UnlinkEmailCredentialAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/UnlinkFederatedCredentialAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/UnlinkFederatedCredentialAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/UpdateProfileAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/UpdateProfileAidlRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/VerifyAssertionRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/VerifyAssertionRequest.java diff --git a/firebase-auth-api/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 similarity index 100% rename from firebase-auth-api/src/main/java/com/google/firebase/auth/api/internal/VerifyBeforeUpdateEmailAidlRequest.java rename to firebase-auth/src/main/java/com/google/firebase/auth/api/internal/VerifyBeforeUpdateEmailAidlRequest.java diff --git a/firebase-auth-api/src/main/java/org/microg/gms/firebase/auth/Constants.java b/firebase-auth/src/main/java/org/microg/gms/firebase/auth/Constants.java similarity index 100% rename from firebase-auth-api/src/main/java/org/microg/gms/firebase/auth/Constants.java rename to firebase-auth/src/main/java/org/microg/gms/firebase/auth/Constants.java diff --git a/gradle/publish-android.gradle b/gradle/publish-android.gradle index 9a4569f25..46c6e6374 100644 --- a/gradle/publish-android.gradle +++ b/gradle/publish-android.gradle @@ -60,4 +60,5 @@ afterEvaluate { sign publishing.publications } } + tasks.getByPath("sourceReleaseJar").duplicatesStrategy = DuplicatesStrategy.EXCLUDE } diff --git a/play-services-api/build.gradle b/play-services-api/build.gradle index 259c6337d..2cbc97591 100644 --- a/play-services-api/build.gradle +++ b/play-services-api/build.gradle @@ -33,11 +33,5 @@ android { } dependencies { - api project(':play-services-basement') - api project(':play-services-appinvite-api') - api project(':play-services-cast-api') - api project(':play-services-cast-framework-api') - api project(':play-services-iid-api') - api project(':play-services-location-api') - api project(':play-services-wearable-api') + api project(':play-services-base') } diff --git a/play-services-appinvite-api/build.gradle b/play-services-appinvite/build.gradle similarity index 100% rename from play-services-appinvite-api/build.gradle rename to play-services-appinvite/build.gradle diff --git a/play-services-appinvite-api/src/main/AndroidManifest.xml b/play-services-appinvite/src/main/AndroidManifest.xml similarity index 92% rename from play-services-appinvite-api/src/main/AndroidManifest.xml rename to play-services-appinvite/src/main/AndroidManifest.xml index da7741f92..86039165e 100644 --- a/play-services-appinvite-api/src/main/AndroidManifest.xml +++ b/play-services-appinvite/src/main/AndroidManifest.xml @@ -15,4 +15,4 @@ ~ limitations under the License. --> - + diff --git a/play-services-appinvite-api/src/main/aidl/com/google/android/gms/appinvite/internal/IAppInviteCallbacks.aidl b/play-services-appinvite/src/main/aidl/com/google/android/gms/appinvite/internal/IAppInviteCallbacks.aidl similarity index 100% rename from play-services-appinvite-api/src/main/aidl/com/google/android/gms/appinvite/internal/IAppInviteCallbacks.aidl rename to play-services-appinvite/src/main/aidl/com/google/android/gms/appinvite/internal/IAppInviteCallbacks.aidl diff --git a/play-services-appinvite-api/src/main/aidl/com/google/android/gms/appinvite/internal/IAppInviteService.aidl b/play-services-appinvite/src/main/aidl/com/google/android/gms/appinvite/internal/IAppInviteService.aidl similarity index 100% rename from play-services-appinvite-api/src/main/aidl/com/google/android/gms/appinvite/internal/IAppInviteService.aidl rename to play-services-appinvite/src/main/aidl/com/google/android/gms/appinvite/internal/IAppInviteService.aidl diff --git a/play-services-droidguard-api/build.gradle b/play-services-auth-base/build.gradle similarity index 66% rename from play-services-droidguard-api/build.gradle rename to play-services-auth-base/build.gradle index 418290876..485e88245 100644 --- a/play-services-droidguard-api/build.gradle +++ b/play-services-auth-base/build.gradle @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2020, microG Project Team + * SPDX-FileCopyrightText: 2022 microG Project Team * SPDX-License-Identifier: Apache-2.0 */ @@ -25,11 +25,12 @@ android { apply from: '../gradle/publish-android.gradle' -description = 'microG API for play-services-droidguard' +description = 'microG implementation of play-services-auth-base' dependencies { + // Dependencies from play-services-auth-base:18.0.6 + api "androidx.collection:collection:1.0.0" api project(':play-services-basement') - api project(':play-services-base-api') - - implementation "androidx.annotation:annotation:$annotationVersion" + api project(':play-services-base') + api project(':play-services-tasks') } diff --git a/play-services-fido-api/src/main/AndroidManifest.xml b/play-services-auth-base/src/main/AndroidManifest.xml similarity index 74% rename from play-services-fido-api/src/main/AndroidManifest.xml rename to play-services-auth-base/src/main/AndroidManifest.xml index 00715eb7e..838878b37 100644 --- a/play-services-fido-api/src/main/AndroidManifest.xml +++ b/play-services-auth-base/src/main/AndroidManifest.xml @@ -3,4 +3,4 @@ ~ SPDX-FileCopyrightText: 2022 microG Project Team ~ SPDX-License-Identifier: Apache-2.0 --> - + \ No newline at end of file diff --git a/play-services-api/src/main/aidl/com/google/android/auth/IAuthManagerService.aidl b/play-services-auth-base/src/main/aidl/com/google/android/auth/IAuthManagerService.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/auth/IAuthManagerService.aidl rename to play-services-auth-base/src/main/aidl/com/google/android/auth/IAuthManagerService.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/auth/AccountChangeEventsRequest.aidl b/play-services-auth-base/src/main/aidl/com/google/android/gms/auth/AccountChangeEventsRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/auth/AccountChangeEventsRequest.aidl rename to play-services-auth-base/src/main/aidl/com/google/android/gms/auth/AccountChangeEventsRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/auth/AccountChangeEventsResponse.aidl b/play-services-auth-base/src/main/aidl/com/google/android/gms/auth/AccountChangeEventsResponse.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/auth/AccountChangeEventsResponse.aidl rename to play-services-auth-base/src/main/aidl/com/google/android/gms/auth/AccountChangeEventsResponse.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/auth/GetHubTokenInternalResponse.aidl b/play-services-auth-base/src/main/aidl/com/google/android/gms/auth/GetHubTokenInternalResponse.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/auth/GetHubTokenInternalResponse.aidl rename to play-services-auth-base/src/main/aidl/com/google/android/gms/auth/GetHubTokenInternalResponse.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/auth/GetHubTokenRequest.aidl b/play-services-auth-base/src/main/aidl/com/google/android/gms/auth/GetHubTokenRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/auth/GetHubTokenRequest.aidl rename to play-services-auth-base/src/main/aidl/com/google/android/gms/auth/GetHubTokenRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/auth/HasCababilitiesRequest.aidl b/play-services-auth-base/src/main/aidl/com/google/android/gms/auth/HasCababilitiesRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/auth/HasCababilitiesRequest.aidl rename to play-services-auth-base/src/main/aidl/com/google/android/gms/auth/HasCababilitiesRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/auth/api/internal/IAuthCallbacks.aidl b/play-services-auth-base/src/main/aidl/com/google/android/gms/auth/api/internal/IAuthCallbacks.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/auth/api/internal/IAuthCallbacks.aidl rename to play-services-auth-base/src/main/aidl/com/google/android/gms/auth/api/internal/IAuthCallbacks.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/auth/api/internal/IAuthService.aidl b/play-services-auth-base/src/main/aidl/com/google/android/gms/auth/api/internal/IAuthService.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/auth/api/internal/IAuthService.aidl rename to play-services-auth-base/src/main/aidl/com/google/android/gms/auth/api/internal/IAuthService.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/auth/api/proxy/ProxyRequest.aidl b/play-services-auth-base/src/main/aidl/com/google/android/gms/auth/api/proxy/ProxyRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/auth/api/proxy/ProxyRequest.aidl rename to play-services-auth-base/src/main/aidl/com/google/android/gms/auth/api/proxy/ProxyRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/auth/api/proxy/ProxyResponse.aidl b/play-services-auth-base/src/main/aidl/com/google/android/gms/auth/api/proxy/ProxyResponse.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/auth/api/proxy/ProxyResponse.aidl rename to play-services-auth-base/src/main/aidl/com/google/android/gms/auth/api/proxy/ProxyResponse.aidl diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/AccountChangeEvent.java b/play-services-auth-base/src/main/java/com/google/android/gms/auth/AccountChangeEvent.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/auth/AccountChangeEvent.java rename to play-services-auth-base/src/main/java/com/google/android/gms/auth/AccountChangeEvent.java diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/AccountChangeEventsRequest.java b/play-services-auth-base/src/main/java/com/google/android/gms/auth/AccountChangeEventsRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/auth/AccountChangeEventsRequest.java rename to play-services-auth-base/src/main/java/com/google/android/gms/auth/AccountChangeEventsRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/AccountChangeEventsResponse.java b/play-services-auth-base/src/main/java/com/google/android/gms/auth/AccountChangeEventsResponse.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/auth/AccountChangeEventsResponse.java rename to play-services-auth-base/src/main/java/com/google/android/gms/auth/AccountChangeEventsResponse.java diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/GetHubTokenInternalResponse.java b/play-services-auth-base/src/main/java/com/google/android/gms/auth/GetHubTokenInternalResponse.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/auth/GetHubTokenInternalResponse.java rename to play-services-auth-base/src/main/java/com/google/android/gms/auth/GetHubTokenInternalResponse.java diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/GetHubTokenRequest.java b/play-services-auth-base/src/main/java/com/google/android/gms/auth/GetHubTokenRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/auth/GetHubTokenRequest.java rename to play-services-auth-base/src/main/java/com/google/android/gms/auth/GetHubTokenRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/HasCababilitiesRequest.java b/play-services-auth-base/src/main/java/com/google/android/gms/auth/HasCababilitiesRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/auth/HasCababilitiesRequest.java rename to play-services-auth-base/src/main/java/com/google/android/gms/auth/HasCababilitiesRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/TokenData.java b/play-services-auth-base/src/main/java/com/google/android/gms/auth/TokenData.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/auth/TokenData.java rename to play-services-auth-base/src/main/java/com/google/android/gms/auth/TokenData.java diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/proxy/ProxyRequest.java b/play-services-auth-base/src/main/java/com/google/android/gms/auth/api/proxy/ProxyRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/auth/api/proxy/ProxyRequest.java rename to play-services-auth-base/src/main/java/com/google/android/gms/auth/api/proxy/ProxyRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/proxy/ProxyResponse.java b/play-services-auth-base/src/main/java/com/google/android/gms/auth/api/proxy/ProxyResponse.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/auth/api/proxy/ProxyResponse.java rename to play-services-auth-base/src/main/java/com/google/android/gms/auth/api/proxy/ProxyResponse.java diff --git a/play-services-auth/build.gradle b/play-services-auth/build.gradle new file mode 100644 index 000000000..78efc1bd8 --- /dev/null +++ b/play-services-auth/build.gradle @@ -0,0 +1,40 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +apply plugin: 'com.android.library' +apply plugin: 'maven-publish' +apply plugin: 'signing' + +android { + compileSdkVersion androidCompileSdk + buildToolsVersion "$androidBuildVersionTools" + + defaultConfig { + versionName version + minSdkVersion androidMinSdk + targetSdkVersion androidTargetSdk + } + + compileOptions { + sourceCompatibility = 1.8 + targetCompatibility = 1.8 + } +} + +apply from: '../gradle/publish-android.gradle' + +description = 'microG implementation of play-services-auth-base' + +dependencies { + // Dependencies from play-services-auth:20.4.0 + api "androidx.fragment:fragment:1.0.0" + api "androidx.loader:loader:1.0.0" +// api project(':play-services-auth-api-phone') + api project(':play-services-auth-base') + api project(':play-services-base') + api project(':play-services-basement') + api project(':play-services-fido') + api project(':play-services-tasks') +} diff --git a/play-services-oss-licenses-api/src/main/AndroidManifest.xml b/play-services-auth/src/main/AndroidManifest.xml similarity index 72% rename from play-services-oss-licenses-api/src/main/AndroidManifest.xml rename to play-services-auth/src/main/AndroidManifest.xml index ba30fb23e..43abf3842 100644 --- a/play-services-oss-licenses-api/src/main/AndroidManifest.xml +++ b/play-services-auth/src/main/AndroidManifest.xml @@ -3,4 +3,4 @@ ~ SPDX-FileCopyrightText: 2022 microG Project Team ~ SPDX-License-Identifier: Apache-2.0 --> - + \ No newline at end of file diff --git a/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/Credential.aidl b/play-services-auth/src/main/aidl/com/google/android/gms/auth/api/credentials/Credential.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/Credential.aidl rename to play-services-auth/src/main/aidl/com/google/android/gms/auth/api/credentials/Credential.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/CredentialRequest.aidl b/play-services-auth/src/main/aidl/com/google/android/gms/auth/api/credentials/CredentialRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/CredentialRequest.aidl rename to play-services-auth/src/main/aidl/com/google/android/gms/auth/api/credentials/CredentialRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/DeleteRequest.aidl b/play-services-auth/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/DeleteRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/DeleteRequest.aidl rename to play-services-auth/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/DeleteRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/GeneratePasswordRequest.aidl b/play-services-auth/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/GeneratePasswordRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/GeneratePasswordRequest.aidl rename to play-services-auth/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/GeneratePasswordRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/ICredentialsCallbacks.aidl b/play-services-auth/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/ICredentialsCallbacks.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/ICredentialsCallbacks.aidl rename to play-services-auth/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/ICredentialsCallbacks.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/ICredentialsService.aidl b/play-services-auth/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/ICredentialsService.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/ICredentialsService.aidl rename to play-services-auth/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/ICredentialsService.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/SaveRequest.aidl b/play-services-auth/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/SaveRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/SaveRequest.aidl rename to play-services-auth/src/main/aidl/com/google/android/gms/auth/api/credentials/internal/SaveRequest.aidl diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/Credential.java b/play-services-auth/src/main/java/com/google/android/gms/auth/api/credentials/Credential.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/Credential.java rename to play-services-auth/src/main/java/com/google/android/gms/auth/api/credentials/Credential.java diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/CredentialPickerConfig.java b/play-services-auth/src/main/java/com/google/android/gms/auth/api/credentials/CredentialPickerConfig.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/CredentialPickerConfig.java rename to play-services-auth/src/main/java/com/google/android/gms/auth/api/credentials/CredentialPickerConfig.java diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/CredentialRequest.java b/play-services-auth/src/main/java/com/google/android/gms/auth/api/credentials/CredentialRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/CredentialRequest.java rename to play-services-auth/src/main/java/com/google/android/gms/auth/api/credentials/CredentialRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/HintRequest.java b/play-services-auth/src/main/java/com/google/android/gms/auth/api/credentials/HintRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/HintRequest.java rename to play-services-auth/src/main/java/com/google/android/gms/auth/api/credentials/HintRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/IdToken.java b/play-services-auth/src/main/java/com/google/android/gms/auth/api/credentials/IdToken.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/IdToken.java rename to play-services-auth/src/main/java/com/google/android/gms/auth/api/credentials/IdToken.java diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/IdentityProviders.java b/play-services-auth/src/main/java/com/google/android/gms/auth/api/credentials/IdentityProviders.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/IdentityProviders.java rename to play-services-auth/src/main/java/com/google/android/gms/auth/api/credentials/IdentityProviders.java diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/internal/DeleteRequest.java b/play-services-auth/src/main/java/com/google/android/gms/auth/api/credentials/internal/DeleteRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/internal/DeleteRequest.java rename to play-services-auth/src/main/java/com/google/android/gms/auth/api/credentials/internal/DeleteRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/internal/GeneratePasswordRequest.java b/play-services-auth/src/main/java/com/google/android/gms/auth/api/credentials/internal/GeneratePasswordRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/internal/GeneratePasswordRequest.java rename to play-services-auth/src/main/java/com/google/android/gms/auth/api/credentials/internal/GeneratePasswordRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/internal/SaveRequest.java b/play-services-auth/src/main/java/com/google/android/gms/auth/api/credentials/internal/SaveRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/internal/SaveRequest.java rename to play-services-auth/src/main/java/com/google/android/gms/auth/api/credentials/internal/SaveRequest.java diff --git a/play-services-auth/src/main/java/com/google/android/gms/auth/package-info.java b/play-services-auth/src/main/java/com/google/android/gms/auth/package-info.java new file mode 100644 index 000000000..9f76f6b65 --- /dev/null +++ b/play-services-auth/src/main/java/com/google/android/gms/auth/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 authenticating Google accounts. + */ +package com.google.android.gms.auth; diff --git a/play-services-base-api/build.gradle b/play-services-base-api/build.gradle deleted file mode 100644 index 572ea274e..000000000 --- a/play-services-base-api/build.gradle +++ /dev/null @@ -1,47 +0,0 @@ -/* - * 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' -apply plugin: 'maven-publish' -apply plugin: 'signing' - -dependencies { - api project(':play-services-basement') -} - -android { - compileSdkVersion androidCompileSdk - buildToolsVersion "$androidBuildVersionTools" - - aidlPackageWhiteList "com/google/android/gms/common/data/DataHolder.aidl" - aidlPackageWhiteList "com/google/android/gms/common/images/WebImage.aidl" - aidlPackageWhiteList "com/google/android/gms/common/api/internal/IStatusCallback.aidl" - - defaultConfig { - versionName version - minSdkVersion androidMinSdk - targetSdkVersion androidTargetSdk - } - - compileOptions { - sourceCompatibility = 1.8 - targetCompatibility = 1.8 - } -} - -apply from: '../gradle/publish-android.gradle' - -description = 'microG API for play-services-base' diff --git a/play-services-base-api/src/main/AndroidManifest.xml b/play-services-base-api/src/main/AndroidManifest.xml deleted file mode 100644 index 7c8eeef38..000000000 --- a/play-services-base-api/src/main/AndroidManifest.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/play-services-base-core-ui/src/main/AndroidManifest.xml b/play-services-base-core-ui/src/main/AndroidManifest.xml deleted file mode 100644 index c034f80aa..000000000 --- a/play-services-base-core-ui/src/main/AndroidManifest.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - diff --git a/play-services-base-core-ui/src/main/res/values-be/strings.xml b/play-services-base-core-ui/src/main/res/values-be/strings.xml deleted file mode 100644 index b097336a7..000000000 --- a/play-services-base-core-ui/src/main/res/values-be/strings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - Дадаткова - - Пуста - Паказаць усё - - Aдкрыць - diff --git a/play-services-base-core-ui/src/main/res/values-de/strings.xml b/play-services-base-core-ui/src/main/res/values-de/strings.xml deleted file mode 100644 index f5c8a7740..000000000 --- a/play-services-base-core-ui/src/main/res/values-de/strings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - Erweitert - - Keine - Alle anzeigen - - Öffnen - diff --git a/play-services-base-core-ui/src/main/res/values-it/strings.xml b/play-services-base-core-ui/src/main/res/values-it/strings.xml deleted file mode 100644 index e4aab62eb..000000000 --- a/play-services-base-core-ui/src/main/res/values-it/strings.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - Impostazioni avanzate - - Nessuna - Mostra tutte - Apri - diff --git a/play-services-base-core-ui/src/main/res/values-ru/strings.xml b/play-services-base-core-ui/src/main/res/values-ru/strings.xml deleted file mode 100644 index 59d6ea3c0..000000000 --- a/play-services-base-core-ui/src/main/res/values-ru/strings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - Дополнительно - - Пусто - Показать всё - - Открыть - diff --git a/play-services-base-core-ui/src/main/res/values-zh-rCN/strings.xml b/play-services-base-core-ui/src/main/res/values-zh-rCN/strings.xml deleted file mode 100644 index 6919f44d3..000000000 --- a/play-services-base-core-ui/src/main/res/values-zh-rCN/strings.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - 高级 - - 全部显示 - 打开 - \ No newline at end of file diff --git a/play-services-base-core-ui/src/main/res/values/strings.xml b/play-services-base-core-ui/src/main/res/values/strings.xml deleted file mode 100644 index 560182d80..000000000 --- a/play-services-base-core-ui/src/main/res/values/strings.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - Advanced - - None - See all - - Open - diff --git a/play-services-base-core/build.gradle b/play-services-base-core/build.gradle deleted file mode 100644 index 809b32520..000000000 --- a/play-services-base-core/build.gradle +++ /dev/null @@ -1,41 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2020, microG Project Team - * SPDX-License-Identifier: Apache-2.0 - */ - -apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' -apply plugin: 'maven-publish' -apply plugin: 'signing' - -dependencies { - api project(':play-services-basement-ktx') - api "androidx.lifecycle:lifecycle-service:$lifecycleVersion" - - implementation "androidx.annotation:annotation:$annotationVersion" - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion" -} - -android { - 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 - } -} - -apply from: '../gradle/publish-android.gradle' - -description = 'microG service implementation for play-services-base' diff --git a/play-services-base/build.gradle b/play-services-base/build.gradle index 34149ae12..2eba04081 100644 --- a/play-services-base/build.gradle +++ b/play-services-base/build.gradle @@ -22,6 +22,10 @@ android { compileSdkVersion androidCompileSdk buildToolsVersion "$androidBuildVersionTools" + aidlPackageWhiteList "com/google/android/gms/common/data/DataHolder.aidl" + aidlPackageWhiteList "com/google/android/gms/common/images/WebImage.aidl" + aidlPackageWhiteList "com/google/android/gms/common/api/internal/IStatusCallback.aidl" + defaultConfig { versionName version minSdkVersion androidMinSdk @@ -39,8 +43,6 @@ apply from: '../gradle/publish-android.gradle' description = 'microG implementation of play-services-base' dependencies { - api project(':play-services-base-api') - // Dependencies from play-services-base:18.1.0 api "androidx.collection:collection:1.0.0" api "androidx.core:core:1.2.0" diff --git a/play-services-base-core-ui/build.gradle b/play-services-base/core/build.gradle similarity index 74% rename from play-services-base-core-ui/build.gradle rename to play-services-base/core/build.gradle index e3fbbc79e..c87165d86 100644 --- a/play-services-base-core-ui/build.gradle +++ b/play-services-base/core/build.gradle @@ -10,19 +10,15 @@ apply plugin: 'maven-publish' apply plugin: 'signing' dependencies { - api project(':play-services-base') + api project(':play-services-basement-ktx') - // AndroidX UI - implementation "androidx.multidex:multidex:$multidexVersion" + implementation "androidx.annotation:annotation:$annotationVersion" implementation "androidx.appcompat:appcompat:$appcompatVersion" - implementation "androidx.mediarouter:mediarouter:$mediarouterVersion" - implementation "androidx.preference:preference-ktx:$preferenceVersion" - - // Navigation + implementation "androidx.lifecycle:lifecycle-service:$lifecycleVersion" implementation "androidx.navigation:navigation-fragment-ktx:$navigationVersion" implementation "androidx.navigation:navigation-ui-ktx:$navigationVersion" + implementation "androidx.preference:preference-ktx:$preferenceVersion" - implementation "androidx.lifecycle:lifecycle-service:$lifecycleVersion" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion" } @@ -41,21 +37,19 @@ android { } sourceSets { - main { - java.srcDirs += 'src/main/kotlin' - } - } - - lintOptions { - disable 'MissingTranslation' + main.java.srcDirs += 'src/main/kotlin' } compileOptions { sourceCompatibility = 1.8 targetCompatibility = 1.8 } + + lintOptions { + disable 'MissingTranslation' + } } -apply from: '../gradle/publish-android.gradle' +apply from: '../../gradle/publish-android.gradle' -description = 'UI for microG service implementation for play-services-base' +description = 'microG service implementation for play-services-base' diff --git a/play-services-base-core/src/main/AndroidManifest.xml b/play-services-base/core/src/main/AndroidManifest.xml similarity index 100% rename from play-services-base-core/src/main/AndroidManifest.xml rename to play-services-base/core/src/main/AndroidManifest.xml diff --git a/play-services-base-core/src/main/java/org/microg/gms/AbstractGmsServiceBroker.java b/play-services-base/core/src/main/java/org/microg/gms/AbstractGmsServiceBroker.java similarity index 100% rename from play-services-base-core/src/main/java/org/microg/gms/AbstractGmsServiceBroker.java rename to play-services-base/core/src/main/java/org/microg/gms/AbstractGmsServiceBroker.java diff --git a/play-services-base-core/src/main/java/org/microg/gms/BaseService.java b/play-services-base/core/src/main/java/org/microg/gms/BaseService.java similarity index 100% rename from play-services-base-core/src/main/java/org/microg/gms/BaseService.java rename to play-services-base/core/src/main/java/org/microg/gms/BaseService.java diff --git a/play-services-base-core/src/main/java/org/microg/gms/DummyService.java b/play-services-base/core/src/main/java/org/microg/gms/DummyService.java similarity index 100% rename from play-services-base-core/src/main/java/org/microg/gms/DummyService.java rename to play-services-base/core/src/main/java/org/microg/gms/DummyService.java diff --git a/play-services-base-core/src/main/java/org/microg/gms/common/DeviceConfiguration.java b/play-services-base/core/src/main/java/org/microg/gms/common/DeviceConfiguration.java similarity index 100% rename from play-services-base-core/src/main/java/org/microg/gms/common/DeviceConfiguration.java rename to play-services-base/core/src/main/java/org/microg/gms/common/DeviceConfiguration.java diff --git a/play-services-base-core/src/main/java/org/microg/gms/common/DeviceIdentifier.java b/play-services-base/core/src/main/java/org/microg/gms/common/DeviceIdentifier.java similarity index 100% rename from play-services-base-core/src/main/java/org/microg/gms/common/DeviceIdentifier.java rename to play-services-base/core/src/main/java/org/microg/gms/common/DeviceIdentifier.java diff --git a/play-services-base-core/src/main/java/org/microg/gms/common/ForegroundServiceContext.java b/play-services-base/core/src/main/java/org/microg/gms/common/ForegroundServiceContext.java similarity index 100% rename from play-services-base-core/src/main/java/org/microg/gms/common/ForegroundServiceContext.java rename to play-services-base/core/src/main/java/org/microg/gms/common/ForegroundServiceContext.java diff --git a/play-services-base-core/src/main/java/org/microg/gms/common/ForegroundServiceInfo.java b/play-services-base/core/src/main/java/org/microg/gms/common/ForegroundServiceInfo.java similarity index 100% rename from play-services-base-core/src/main/java/org/microg/gms/common/ForegroundServiceInfo.java rename to play-services-base/core/src/main/java/org/microg/gms/common/ForegroundServiceInfo.java diff --git a/play-services-base-core/src/main/java/org/microg/gms/common/HttpFormClient.java b/play-services-base/core/src/main/java/org/microg/gms/common/HttpFormClient.java similarity index 100% rename from play-services-base-core/src/main/java/org/microg/gms/common/HttpFormClient.java rename to play-services-base/core/src/main/java/org/microg/gms/common/HttpFormClient.java diff --git a/play-services-base-core/src/main/java/org/microg/gms/common/MultiListenerProxy.java b/play-services-base/core/src/main/java/org/microg/gms/common/MultiListenerProxy.java similarity index 100% rename from play-services-base-core/src/main/java/org/microg/gms/common/MultiListenerProxy.java rename to play-services-base/core/src/main/java/org/microg/gms/common/MultiListenerProxy.java diff --git a/play-services-base-core/src/main/java/org/microg/gms/common/NonCancelToken.java b/play-services-base/core/src/main/java/org/microg/gms/common/NonCancelToken.java similarity index 100% rename from play-services-base-core/src/main/java/org/microg/gms/common/NonCancelToken.java rename to play-services-base/core/src/main/java/org/microg/gms/common/NonCancelToken.java diff --git a/play-services-base-core/src/main/java/org/microg/gms/common/PackageUtils.java b/play-services-base/core/src/main/java/org/microg/gms/common/PackageUtils.java similarity index 100% rename from play-services-base-core/src/main/java/org/microg/gms/common/PackageUtils.java rename to play-services-base/core/src/main/java/org/microg/gms/common/PackageUtils.java diff --git a/play-services-base-core/src/main/java/org/microg/gms/common/PhoneInfo.java b/play-services-base/core/src/main/java/org/microg/gms/common/PhoneInfo.java similarity index 100% rename from play-services-base-core/src/main/java/org/microg/gms/common/PhoneInfo.java rename to play-services-base/core/src/main/java/org/microg/gms/common/PhoneInfo.java diff --git a/play-services-base-core/src/main/java/org/microg/gms/common/RemoteListenerProxy.java b/play-services-base/core/src/main/java/org/microg/gms/common/RemoteListenerProxy.java similarity index 100% rename from play-services-base-core/src/main/java/org/microg/gms/common/RemoteListenerProxy.java rename to play-services-base/core/src/main/java/org/microg/gms/common/RemoteListenerProxy.java diff --git a/play-services-base-core/src/main/java/org/microg/gms/common/Utils.java b/play-services-base/core/src/main/java/org/microg/gms/common/Utils.java similarity index 100% rename from play-services-base-core/src/main/java/org/microg/gms/common/Utils.java rename to play-services-base/core/src/main/java/org/microg/gms/common/Utils.java diff --git a/play-services-base-core/src/main/kotlin/org/microg/gms/profile/Build.kt b/play-services-base/core/src/main/kotlin/org/microg/gms/profile/Build.kt similarity index 100% rename from play-services-base-core/src/main/kotlin/org/microg/gms/profile/Build.kt rename to play-services-base/core/src/main/kotlin/org/microg/gms/profile/Build.kt diff --git a/play-services-base-core/src/main/kotlin/org/microg/gms/profile/ProfileManager.kt b/play-services-base/core/src/main/kotlin/org/microg/gms/profile/ProfileManager.kt similarity index 100% rename from play-services-base-core/src/main/kotlin/org/microg/gms/profile/ProfileManager.kt rename to play-services-base/core/src/main/kotlin/org/microg/gms/profile/ProfileManager.kt diff --git a/play-services-base-core/src/main/kotlin/org/microg/gms/settings/SettingsContract.kt b/play-services-base/core/src/main/kotlin/org/microg/gms/settings/SettingsContract.kt similarity index 100% rename from play-services-base-core/src/main/kotlin/org/microg/gms/settings/SettingsContract.kt rename to play-services-base/core/src/main/kotlin/org/microg/gms/settings/SettingsContract.kt diff --git a/play-services-base-core/src/main/kotlin/org/microg/gms/settings/SettingsProvider.kt b/play-services-base/core/src/main/kotlin/org/microg/gms/settings/SettingsProvider.kt similarity index 100% rename from play-services-base-core/src/main/kotlin/org/microg/gms/settings/SettingsProvider.kt rename to play-services-base/core/src/main/kotlin/org/microg/gms/settings/SettingsProvider.kt diff --git a/play-services-base-core-ui/src/main/kotlin/org/microg/gms/ui/AppIconPreference.kt b/play-services-base/core/src/main/kotlin/org/microg/gms/ui/AppIconPreference.kt similarity index 100% rename from play-services-base-core-ui/src/main/kotlin/org/microg/gms/ui/AppIconPreference.kt rename to play-services-base/core/src/main/kotlin/org/microg/gms/ui/AppIconPreference.kt diff --git a/play-services-base-core-ui/src/main/kotlin/org/microg/gms/ui/Constants.kt b/play-services-base/core/src/main/kotlin/org/microg/gms/ui/Constants.kt similarity index 100% rename from play-services-base-core-ui/src/main/kotlin/org/microg/gms/ui/Constants.kt rename to play-services-base/core/src/main/kotlin/org/microg/gms/ui/Constants.kt diff --git a/play-services-base-core-ui/src/main/kotlin/org/microg/gms/ui/PreferenceSwitchBar.kt b/play-services-base/core/src/main/kotlin/org/microg/gms/ui/PreferenceSwitchBar.kt similarity index 100% rename from play-services-base-core-ui/src/main/kotlin/org/microg/gms/ui/PreferenceSwitchBar.kt rename to play-services-base/core/src/main/kotlin/org/microg/gms/ui/PreferenceSwitchBar.kt diff --git a/play-services-base-core-ui/src/main/kotlin/org/microg/gms/ui/TextPreference.kt b/play-services-base/core/src/main/kotlin/org/microg/gms/ui/TextPreference.kt similarity index 100% rename from play-services-base-core-ui/src/main/kotlin/org/microg/gms/ui/TextPreference.kt rename to play-services-base/core/src/main/kotlin/org/microg/gms/ui/TextPreference.kt diff --git a/play-services-base-core-ui/src/main/kotlin/org/microg/gms/ui/Utils.kt b/play-services-base/core/src/main/kotlin/org/microg/gms/ui/Utils.kt similarity index 100% rename from play-services-base-core-ui/src/main/kotlin/org/microg/gms/ui/Utils.kt rename to play-services-base/core/src/main/kotlin/org/microg/gms/ui/Utils.kt diff --git a/play-services-base-core/src/main/kotlin/org/microg/gms/utils/BinderUtils.kt b/play-services-base/core/src/main/kotlin/org/microg/gms/utils/BinderUtils.kt similarity index 100% rename from play-services-base-core/src/main/kotlin/org/microg/gms/utils/BinderUtils.kt rename to play-services-base/core/src/main/kotlin/org/microg/gms/utils/BinderUtils.kt diff --git a/play-services-base-core/src/main/kotlin/org/microg/gms/utils/FileXmlResourceParser.kt b/play-services-base/core/src/main/kotlin/org/microg/gms/utils/FileXmlResourceParser.kt similarity index 100% rename from play-services-base-core/src/main/kotlin/org/microg/gms/utils/FileXmlResourceParser.kt rename to play-services-base/core/src/main/kotlin/org/microg/gms/utils/FileXmlResourceParser.kt diff --git a/play-services-base-core/src/main/kotlin/org/microg/gms/utils/PackageManagerUtils.kt b/play-services-base/core/src/main/kotlin/org/microg/gms/utils/PackageManagerUtils.kt similarity index 100% rename from play-services-base-core/src/main/kotlin/org/microg/gms/utils/PackageManagerUtils.kt rename to play-services-base/core/src/main/kotlin/org/microg/gms/utils/PackageManagerUtils.kt diff --git a/play-services-base-core/src/main/kotlin/org/microg/gms/utils/PackageManagerWrapper.kt b/play-services-base/core/src/main/kotlin/org/microg/gms/utils/PackageManagerWrapper.kt similarity index 100% rename from play-services-base-core/src/main/kotlin/org/microg/gms/utils/PackageManagerWrapper.kt rename to play-services-base/core/src/main/kotlin/org/microg/gms/utils/PackageManagerWrapper.kt diff --git a/play-services-base-core/src/main/res/drawable/ic_background_notify.xml b/play-services-base/core/src/main/res/drawable/ic_background_notify.xml similarity index 100% rename from play-services-base-core/src/main/res/drawable/ic_background_notify.xml rename to play-services-base/core/src/main/res/drawable/ic_background_notify.xml diff --git a/play-services-base-core-ui/src/main/res/drawable/ic_expand_apps.xml b/play-services-base/core/src/main/res/drawable/ic_expand_apps.xml similarity index 100% rename from play-services-base-core-ui/src/main/res/drawable/ic_expand_apps.xml rename to play-services-base/core/src/main/res/drawable/ic_expand_apps.xml diff --git a/play-services-base-core-ui/src/main/res/drawable/ic_info_outline.xml b/play-services-base/core/src/main/res/drawable/ic_info_outline.xml similarity index 100% rename from play-services-base-core-ui/src/main/res/drawable/ic_info_outline.xml rename to play-services-base/core/src/main/res/drawable/ic_info_outline.xml diff --git a/play-services-base-core-ui/src/main/res/drawable/ic_open.xml b/play-services-base/core/src/main/res/drawable/ic_open.xml similarity index 100% rename from play-services-base-core-ui/src/main/res/drawable/ic_open.xml rename to play-services-base/core/src/main/res/drawable/ic_open.xml diff --git a/play-services-base-core-ui/src/main/res/drawable/ic_radio.xml b/play-services-base/core/src/main/res/drawable/ic_radio.xml similarity index 100% rename from play-services-base-core-ui/src/main/res/drawable/ic_radio.xml rename to play-services-base/core/src/main/res/drawable/ic_radio.xml diff --git a/play-services-base-core-ui/src/main/res/drawable/ic_radio_checked.xml b/play-services-base/core/src/main/res/drawable/ic_radio_checked.xml similarity index 100% rename from play-services-base-core-ui/src/main/res/drawable/ic_radio_checked.xml rename to play-services-base/core/src/main/res/drawable/ic_radio_checked.xml diff --git a/play-services-base-core-ui/src/main/res/drawable/ic_radio_unchecked.xml b/play-services-base/core/src/main/res/drawable/ic_radio_unchecked.xml similarity index 100% rename from play-services-base-core-ui/src/main/res/drawable/ic_radio_unchecked.xml rename to play-services-base/core/src/main/res/drawable/ic_radio_unchecked.xml diff --git a/play-services-base-core-ui/src/main/res/layout/list_no_item.xml b/play-services-base/core/src/main/res/layout/list_no_item.xml similarity index 100% rename from play-services-base-core-ui/src/main/res/layout/list_no_item.xml rename to play-services-base/core/src/main/res/layout/list_no_item.xml diff --git a/play-services-base-core-ui/src/main/res/layout/preference_category_no_label.xml b/play-services-base/core/src/main/res/layout/preference_category_no_label.xml similarity index 100% rename from play-services-base-core-ui/src/main/res/layout/preference_category_no_label.xml rename to play-services-base/core/src/main/res/layout/preference_category_no_label.xml diff --git a/play-services-base-core-ui/src/main/res/layout/preference_switch_bar.xml b/play-services-base/core/src/main/res/layout/preference_switch_bar.xml similarity index 100% rename from play-services-base-core-ui/src/main/res/layout/preference_switch_bar.xml rename to play-services-base/core/src/main/res/layout/preference_switch_bar.xml diff --git a/play-services-base-core/src/main/res/values-be/strings.xml b/play-services-base/core/src/main/res/values-be/strings.xml similarity index 75% rename from play-services-base-core/src/main/res/values-be/strings.xml rename to play-services-base/core/src/main/res/values-be/strings.xml index 23983ba8d..958cf45eb 100644 --- a/play-services-base-core/src/main/res/values-be/strings.xml +++ b/play-services-base/core/src/main/res/values-be/strings.xml @@ -8,4 +8,11 @@ Фонавая актыўнасць %1$s працуе ў фонавым рэжыме. Адключыце эканомію выкарыстання акумулятара для %1$s, каб ўбраць гэтае паведамленне. + + Дадаткова + + Пуста + Паказаць усё + + Aдкрыць diff --git a/play-services-base-core/src/main/res/values-de/strings.xml b/play-services-base/core/src/main/res/values-de/strings.xml similarity index 76% rename from play-services-base-core/src/main/res/values-de/strings.xml rename to play-services-base/core/src/main/res/values-de/strings.xml index 0d3ec6449..708d2e6bf 100644 --- a/play-services-base-core/src/main/res/values-de/strings.xml +++ b/play-services-base/core/src/main/res/values-de/strings.xml @@ -8,4 +8,11 @@ Im Hintergrund aktiv %1$s läuft im Hintergrund weiter. Füge %1$s als Ausnahme zur Batterie-Optimierung hinzu oder verstecke diese Benachrichtigung in den Systemeinstelleungen. + + Erweitert + + Keine + Alle anzeigen + + Öffnen diff --git a/play-services-base-core-ui/src/main/res/values-es/strings.xml b/play-services-base/core/src/main/res/values-es/strings.xml similarity index 100% rename from play-services-base-core-ui/src/main/res/values-es/strings.xml rename to play-services-base/core/src/main/res/values-es/strings.xml diff --git a/play-services-base-core-ui/src/main/res/values-fr/strings.xml b/play-services-base/core/src/main/res/values-fr/strings.xml similarity index 100% rename from play-services-base-core-ui/src/main/res/values-fr/strings.xml rename to play-services-base/core/src/main/res/values-fr/strings.xml diff --git a/play-services-base-core/src/main/res/values-it/strings.xml b/play-services-base/core/src/main/res/values-it/strings.xml similarity index 71% rename from play-services-base-core/src/main/res/values-it/strings.xml rename to play-services-base/core/src/main/res/values-it/strings.xml index ebd264b51..3d02336ff 100644 --- a/play-services-base-core/src/main/res/values-it/strings.xml +++ b/play-services-base/core/src/main/res/values-it/strings.xml @@ -3,4 +3,10 @@ Esecuzione in background %1$s è in esecuzione in background. Disabilita le ottimizzazioni della batteria per %1$s oppure modifica le impostazioni delle notifiche per nascondere questa notifica. - \ No newline at end of file + + Impostazioni avanzate + + Nessuna + Mostra tutte + Apri + diff --git a/play-services-base-core-ui/src/main/res/values-ja/strings.xml b/play-services-base/core/src/main/res/values-ja/strings.xml similarity index 100% rename from play-services-base-core-ui/src/main/res/values-ja/strings.xml rename to play-services-base/core/src/main/res/values-ja/strings.xml diff --git a/play-services-base-core-ui/src/main/res/values-pl/strings.xml b/play-services-base/core/src/main/res/values-pl/strings.xml similarity index 100% rename from play-services-base-core-ui/src/main/res/values-pl/strings.xml rename to play-services-base/core/src/main/res/values-pl/strings.xml diff --git a/play-services-base-core-ui/src/main/res/values-pt-rBR/strings.xml b/play-services-base/core/src/main/res/values-pt-rBR/strings.xml similarity index 100% rename from play-services-base-core-ui/src/main/res/values-pt-rBR/strings.xml rename to play-services-base/core/src/main/res/values-pt-rBR/strings.xml diff --git a/play-services-base-core/src/main/res/values-ru/strings.xml b/play-services-base/core/src/main/res/values-ru/strings.xml similarity index 74% rename from play-services-base-core/src/main/res/values-ru/strings.xml rename to play-services-base/core/src/main/res/values-ru/strings.xml index e6fb4115c..56df8da4a 100644 --- a/play-services-base-core/src/main/res/values-ru/strings.xml +++ b/play-services-base/core/src/main/res/values-ru/strings.xml @@ -8,4 +8,11 @@ Фоновая активность %1$s работает в фоновом режиме. Отключите экономию заряда батареи для %1$s, чтобы убрать это уведомление. + + Дополнительно + + Пусто + Показать всё + + Открыть diff --git a/play-services-base-core-ui/src/main/res/values-sr/strings.xml b/play-services-base/core/src/main/res/values-sr/strings.xml similarity index 100% rename from play-services-base-core-ui/src/main/res/values-sr/strings.xml rename to play-services-base/core/src/main/res/values-sr/strings.xml diff --git a/play-services-base-core-ui/src/main/res/values-uk/strings.xml b/play-services-base/core/src/main/res/values-uk/strings.xml similarity index 100% rename from play-services-base-core-ui/src/main/res/values-uk/strings.xml rename to play-services-base/core/src/main/res/values-uk/strings.xml diff --git a/play-services-base-core/src/main/res/values-zh-rCN/strings.xml b/play-services-base/core/src/main/res/values-zh-rCN/strings.xml similarity index 70% rename from play-services-base-core/src/main/res/values-zh-rCN/strings.xml rename to play-services-base/core/src/main/res/values-zh-rCN/strings.xml index f2ce05646..e84fcf97d 100644 --- a/play-services-base-core/src/main/res/values-zh-rCN/strings.xml +++ b/play-services-base/core/src/main/res/values-zh-rCN/strings.xml @@ -3,4 +3,9 @@ 正在后台活动 %1$s 正在后台运行 %1$s 忽略电池优化,或者修改通知设置以隐藏此通知。 - \ No newline at end of file + + 高级 + + 全部显示 + 打开 + diff --git a/play-services-base-core-ui/src/main/res/values-zh-rTW/strings.xml b/play-services-base/core/src/main/res/values-zh-rTW/strings.xml similarity index 100% rename from play-services-base-core-ui/src/main/res/values-zh-rTW/strings.xml rename to play-services-base/core/src/main/res/values-zh-rTW/strings.xml diff --git a/play-services-base-core/src/main/res/values/strings.xml b/play-services-base/core/src/main/res/values/strings.xml similarity index 77% rename from play-services-base-core/src/main/res/values/strings.xml rename to play-services-base/core/src/main/res/values/strings.xml index 5514f42cb..7ce13eba7 100644 --- a/play-services-base-core/src/main/res/values/strings.xml +++ b/play-services-base/core/src/main/res/values/strings.xml @@ -8,4 +8,11 @@ Active in background %1$s is running in background. Exclude %1$s from battery optimizations or change notification settings to hide this notification. + + Advanced + + None + See all + + Open diff --git a/play-services-base-core-ui/src/main/res/values/themes.xml b/play-services-base/core/src/main/res/values/themes.xml similarity index 100% rename from play-services-base-core-ui/src/main/res/values/themes.xml rename to play-services-base/core/src/main/res/values/themes.xml diff --git a/play-services-base/src/main/AndroidManifest.xml b/play-services-base/src/main/AndroidManifest.xml index f46f23341..35b97ae7f 100644 --- a/play-services-base/src/main/AndroidManifest.xml +++ b/play-services-base/src/main/AndroidManifest.xml @@ -1,29 +1,14 @@ - - - extends PendingGoogleApiCall{ + void execute(A client) throws Exception; + + @Override + default void execute(A client, TaskCompletionSource completionSource) { + try { + execute(client); + completionSource.setResult(null); + } catch (Exception e) { + completionSource.setException(e); + } + } +} diff --git a/play-services-base/src/main/res/values/version.xml b/play-services-base/src/main/res/values/version.xml deleted file mode 100644 index 318bb1c26..000000000 --- a/play-services-base/src/main/res/values/version.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - 6599436 - diff --git a/play-services-basement/build.gradle b/play-services-basement/build.gradle index 7c40d5a86..1c1d7cb08 100644 --- a/play-services-basement/build.gradle +++ b/play-services-basement/build.gradle @@ -17,9 +17,10 @@ apply plugin: 'com.android.library' apply plugin: 'maven-publish' apply plugin: 'signing' +apply plugin: 'com.kezong.fat-aar' dependencies { - api "org.microg:safe-parcel:$safeParcelVersion" + embed "org.microg:safe-parcel:$safeParcelVersion" // Dependencies from play-services-basement:18.1.0 api "androidx.collection:collection:1.0.0" diff --git a/play-services-basement-ktx/build.gradle b/play-services-basement/ktx/build.gradle similarity index 94% rename from play-services-basement-ktx/build.gradle rename to play-services-basement/ktx/build.gradle index 008247762..5bf42aa0d 100644 --- a/play-services-basement-ktx/build.gradle +++ b/play-services-basement/ktx/build.gradle @@ -33,6 +33,6 @@ android { } } -apply from: '../gradle/publish-android.gradle' +apply from: '../../gradle/publish-android.gradle' description = 'microG kotlin extensions for play-services-basement' diff --git a/play-services-basement-ktx/src/main/AndroidManifest.xml b/play-services-basement/ktx/src/main/AndroidManifest.xml similarity index 100% rename from play-services-basement-ktx/src/main/AndroidManifest.xml rename to play-services-basement/ktx/src/main/AndroidManifest.xml diff --git a/play-services-basement-ktx/src/main/kotlin/com/google/android/gms/dynamic/ObjectWrapper.kt b/play-services-basement/ktx/src/main/kotlin/com/google/android/gms/dynamic/ObjectWrapper.kt similarity index 100% rename from play-services-basement-ktx/src/main/kotlin/com/google/android/gms/dynamic/ObjectWrapper.kt rename to play-services-basement/ktx/src/main/kotlin/com/google/android/gms/dynamic/ObjectWrapper.kt diff --git a/play-services-basement/src/main/AndroidManifest.xml b/play-services-basement/src/main/AndroidManifest.xml index bd4367736..c7a78a1b5 100644 --- a/play-services-basement/src/main/AndroidManifest.xml +++ b/play-services-basement/src/main/AndroidManifest.xml @@ -1,18 +1,14 @@ - + + + + + diff --git a/play-services-api/src/main/aidl/com/google/android/gms/common/internal/GoogleCertificatesQuery.aidl b/play-services-basement/src/main/aidl/com/google/android/gms/common/internal/GoogleCertificatesQuery.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/common/internal/GoogleCertificatesQuery.aidl rename to play-services-basement/src/main/aidl/com/google/android/gms/common/internal/GoogleCertificatesQuery.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/common/internal/ICertData.aidl b/play-services-basement/src/main/aidl/com/google/android/gms/common/internal/ICertData.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/common/internal/ICertData.aidl rename to play-services-basement/src/main/aidl/com/google/android/gms/common/internal/ICertData.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/common/internal/IGoogleCertificatesApi.aidl b/play-services-basement/src/main/aidl/com/google/android/gms/common/internal/IGoogleCertificatesApi.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/common/internal/IGoogleCertificatesApi.aidl rename to play-services-basement/src/main/aidl/com/google/android/gms/common/internal/IGoogleCertificatesApi.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/dynamite/IDynamiteLoader.aidl b/play-services-basement/src/main/aidl/com/google/android/gms/dynamite/IDynamiteLoader.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/dynamite/IDynamiteLoader.aidl rename to play-services-basement/src/main/aidl/com/google/android/gms/dynamite/IDynamiteLoader.aidl diff --git a/play-services-api/src/main/java/com/google/android/gms/common/internal/CertData.java b/play-services-basement/src/main/java/com/google/android/gms/common/internal/CertData.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/common/internal/CertData.java rename to play-services-basement/src/main/java/com/google/android/gms/common/internal/CertData.java diff --git a/play-services-api/src/main/java/com/google/android/gms/common/internal/GoogleCertificatesQuery.java b/play-services-basement/src/main/java/com/google/android/gms/common/internal/GoogleCertificatesQuery.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/common/internal/GoogleCertificatesQuery.java rename to play-services-basement/src/main/java/com/google/android/gms/common/internal/GoogleCertificatesQuery.java diff --git a/play-services-basement/src/main/java/org/microg/gms/common/Constants.java b/play-services-basement/src/main/java/org/microg/gms/common/Constants.java index 957a3e650..e8784f926 100644 --- a/play-services-basement/src/main/java/org/microg/gms/common/Constants.java +++ b/play-services-basement/src/main/java/org/microg/gms/common/Constants.java @@ -16,7 +16,7 @@ package org.microg.gms.common; -import org.microg.gms.basement.BuildConfig; +import com.google.android.gms.common.BuildConfig; public class Constants { public static final int GMS_VERSION_CODE = (BuildConfig.VERSION_CODE / 1000) * 1000; diff --git a/play-services-basement/src/main/res/values/version.xml b/play-services-basement/src/main/res/values/version.xml new file mode 100644 index 000000000..11fa2b4ba --- /dev/null +++ b/play-services-basement/src/main/res/values/version.xml @@ -0,0 +1,9 @@ + + + + + 12451000 + diff --git a/play-services-cast-api/build.gradle b/play-services-cast-api/build.gradle deleted file mode 100644 index bdc679a1a..000000000 --- a/play-services-cast-api/build.gradle +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 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 { - compileSdkVersion androidCompileSdk - buildToolsVersion "$androidBuildVersionTools" - - aidlPackageWhiteList "com/google/android/gms/cast/ApplicationMetadata.aidl" - aidlPackageWhiteList "com/google/android/gms/cast/LaunchOptions.aidl" - - defaultConfig { - versionName version - minSdkVersion androidMinSdk - targetSdkVersion androidTargetSdk - } - - compileOptions { - sourceCompatibility = 1.8 - targetCompatibility = 1.8 - } -} - -dependencies { - api project(':play-services-basement') - - api project(':play-services-base-api') -} diff --git a/play-services-cast-api/src/main/AndroidManifest.xml b/play-services-cast-api/src/main/AndroidManifest.xml deleted file mode 100644 index d559e5896..000000000 --- a/play-services-cast-api/src/main/AndroidManifest.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - diff --git a/play-services-cast-framework-api/build.gradle b/play-services-cast-framework-api/build.gradle deleted file mode 100644 index 9db7c8123..000000000 --- a/play-services-cast-framework-api/build.gradle +++ /dev/null @@ -1,40 +0,0 @@ -/* - * 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 { - compileSdkVersion androidCompileSdk - buildToolsVersion "$androidBuildVersionTools" - - defaultConfig { - versionName version - minSdkVersion androidMinSdk - targetSdkVersion androidTargetSdk - } - - compileOptions { - sourceCompatibility = 1.8 - targetCompatibility = 1.8 - } -} - -dependencies { - api project(':play-services-basement') - - api project(':play-services-base-api') - api project(':play-services-cast-api') -} diff --git a/play-services-cast-framework-api/src/main/AndroidManifest.xml b/play-services-cast-framework-api/src/main/AndroidManifest.xml deleted file mode 100644 index 89224918d..000000000 --- a/play-services-cast-framework-api/src/main/AndroidManifest.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - diff --git a/play-services-cast-framework/build.gradle b/play-services-cast-framework/build.gradle new file mode 100644 index 000000000..94ab3b69a --- /dev/null +++ b/play-services-cast-framework/build.gradle @@ -0,0 +1,48 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +apply plugin: 'com.android.library' +apply plugin: 'maven-publish' +apply plugin: 'signing' + +android { + compileSdkVersion androidCompileSdk + buildToolsVersion "$androidBuildVersionTools" + + 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-cast-framework' + +dependencies { + // Dependencies from play-services-cast-framework:21.2.0 + api 'androidx.appcompat:appcompat:1.0.0' + api 'androidx.collection:collection:1.0.0' + api 'androidx.concurrent:concurrent-futures:1.1.0' + api 'androidx.core:core:1.0.0' + api 'androidx.fragment:fragment:1.0.0' + api 'androidx.media:media:1.6.0' + api 'androidx.mediarouter:mediarouter:1.3.0' + api 'androidx.recyclerview:recyclerview:1.0.0' + // com.google.android.datatransport:transport-api:3.0.0 + // com.google.android.datatransport:transport-backend-cct:3.1.3 + // com.google.android.datatransport:transport-runtime:3.1.3 + api project(':play-services-base') + api project(':play-services-basement') + api project(':play-services-cast') + api project(':play-services-tasks') + api 'com.google.guava:listenablefuture:1.0' +} diff --git a/play-services-cast-framework/core/build.gradle b/play-services-cast-framework/core/build.gradle new file mode 100644 index 000000000..988f11813 --- /dev/null +++ b/play-services-cast-framework/core/build.gradle @@ -0,0 +1,55 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-kapt' +apply plugin: 'maven-publish' +apply plugin: 'signing' + +dependencies { + implementation project(':play-services-cast-framework') + implementation project(':play-services-base-core') + + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion" + implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutineVersion" + implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutineVersion" +} + +android { + compileSdkVersion androidCompileSdk + buildToolsVersion "$androidBuildVersionTools" + + defaultConfig { + versionName version + minSdkVersion androidMinSdk + targetSdkVersion androidTargetSdk + } + + buildFeatures { + dataBinding = true + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + lintOptions { + disable 'MissingTranslation' + } + + compileOptions { + sourceCompatibility = 1.8 + targetCompatibility = 1.8 + } + + kotlinOptions { + jvmTarget = 1.8 + } +} + +apply from: '../../gradle/publish-android.gradle' + +description = 'microG service implementation for play-services-cast-framework' diff --git a/play-services-cast-framework/core/src/main/AndroidManifest.xml b/play-services-cast-framework/core/src/main/AndroidManifest.xml new file mode 100644 index 000000000..ee3ec94f7 --- /dev/null +++ b/play-services-cast-framework/core/src/main/AndroidManifest.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/CastContextImpl.java b/play-services-cast-framework/core/src/main/java/com/google/android/gms/cast/framework/internal/CastContextImpl.java similarity index 100% rename from play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/CastContextImpl.java rename to play-services-cast-framework/core/src/main/java/com/google/android/gms/cast/framework/internal/CastContextImpl.java diff --git a/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/CastDynamiteModuleImpl.java b/play-services-cast-framework/core/src/main/java/com/google/android/gms/cast/framework/internal/CastDynamiteModuleImpl.java similarity index 100% rename from play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/CastDynamiteModuleImpl.java rename to play-services-cast-framework/core/src/main/java/com/google/android/gms/cast/framework/internal/CastDynamiteModuleImpl.java diff --git a/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/CastSessionImpl.java b/play-services-cast-framework/core/src/main/java/com/google/android/gms/cast/framework/internal/CastSessionImpl.java similarity index 100% rename from play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/CastSessionImpl.java rename to play-services-cast-framework/core/src/main/java/com/google/android/gms/cast/framework/internal/CastSessionImpl.java diff --git a/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/DiscoveryManagerImpl.java b/play-services-cast-framework/core/src/main/java/com/google/android/gms/cast/framework/internal/DiscoveryManagerImpl.java similarity index 100% rename from play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/DiscoveryManagerImpl.java rename to play-services-cast-framework/core/src/main/java/com/google/android/gms/cast/framework/internal/DiscoveryManagerImpl.java diff --git a/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/MediaRouterCallbackImpl.java b/play-services-cast-framework/core/src/main/java/com/google/android/gms/cast/framework/internal/MediaRouterCallbackImpl.java similarity index 100% rename from play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/MediaRouterCallbackImpl.java rename to play-services-cast-framework/core/src/main/java/com/google/android/gms/cast/framework/internal/MediaRouterCallbackImpl.java diff --git a/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/SessionImpl.java b/play-services-cast-framework/core/src/main/java/com/google/android/gms/cast/framework/internal/SessionImpl.java similarity index 100% rename from play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/SessionImpl.java rename to play-services-cast-framework/core/src/main/java/com/google/android/gms/cast/framework/internal/SessionImpl.java diff --git a/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/SessionManagerImpl.java b/play-services-cast-framework/core/src/main/java/com/google/android/gms/cast/framework/internal/SessionManagerImpl.java similarity index 100% rename from play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/SessionManagerImpl.java rename to play-services-cast-framework/core/src/main/java/com/google/android/gms/cast/framework/internal/SessionManagerImpl.java diff --git a/play-services-location-api/src/main/AndroidManifest.xml b/play-services-cast-framework/src/main/AndroidManifest.xml similarity index 92% rename from play-services-location-api/src/main/AndroidManifest.xml rename to play-services-cast-framework/src/main/AndroidManifest.xml index 4a97d6164..b0c67262e 100644 --- a/play-services-location-api/src/main/AndroidManifest.xml +++ b/play-services-cast-framework/src/main/AndroidManifest.xml @@ -15,4 +15,4 @@ ~ limitations under the License. --> - + diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/CastOptions.aidl b/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/CastOptions.aidl similarity index 100% rename from play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/CastOptions.aidl rename to play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/CastOptions.aidl diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/IAppVisibilityListener.aidl b/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/IAppVisibilityListener.aidl similarity index 100% rename from play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/IAppVisibilityListener.aidl rename to play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/IAppVisibilityListener.aidl diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ICastConnectionController.aidl b/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/ICastConnectionController.aidl similarity index 100% rename from play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ICastConnectionController.aidl rename to play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/ICastConnectionController.aidl diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ICastContext.aidl b/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/ICastContext.aidl similarity index 100% rename from play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ICastContext.aidl rename to play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/ICastContext.aidl diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ICastSession.aidl b/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/ICastSession.aidl similarity index 100% rename from play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ICastSession.aidl rename to play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/ICastSession.aidl diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ICastStateListener.aidl b/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/ICastStateListener.aidl similarity index 100% rename from play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ICastStateListener.aidl rename to play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/ICastStateListener.aidl diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/IDiscoveryManager.aidl b/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/IDiscoveryManager.aidl similarity index 100% rename from play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/IDiscoveryManager.aidl rename to play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/IDiscoveryManager.aidl diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/IDiscoveryManagerListener.aidl b/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/IDiscoveryManagerListener.aidl similarity index 100% rename from play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/IDiscoveryManagerListener.aidl rename to play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/IDiscoveryManagerListener.aidl diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/IReconnectionService.aidl b/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/IReconnectionService.aidl similarity index 100% rename from play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/IReconnectionService.aidl rename to play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/IReconnectionService.aidl diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISession.aidl b/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/ISession.aidl similarity index 100% rename from play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISession.aidl rename to play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/ISession.aidl diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISessionManager.aidl b/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/ISessionManager.aidl similarity index 100% rename from play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISessionManager.aidl rename to play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/ISessionManager.aidl diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISessionManagerListener.aidl b/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/ISessionManagerListener.aidl similarity index 100% rename from play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISessionManagerListener.aidl rename to play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/ISessionManagerListener.aidl diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISessionProvider.aidl b/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/ISessionProvider.aidl similarity index 100% rename from play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISessionProvider.aidl rename to play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/ISessionProvider.aidl diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISessionProxy.aidl b/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/ISessionProxy.aidl similarity index 100% rename from play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/ISessionProxy.aidl rename to play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/ISessionProxy.aidl diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/internal/ICastDynamiteModule.aidl b/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/internal/ICastDynamiteModule.aidl similarity index 100% rename from play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/internal/ICastDynamiteModule.aidl rename to play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/internal/ICastDynamiteModule.aidl diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/internal/IMediaRouter.aidl b/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/internal/IMediaRouter.aidl similarity index 100% rename from play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/internal/IMediaRouter.aidl rename to play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/internal/IMediaRouter.aidl diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/internal/IMediaRouterCallback.aidl b/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/internal/IMediaRouterCallback.aidl similarity index 100% rename from play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/internal/IMediaRouterCallback.aidl rename to play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/internal/IMediaRouterCallback.aidl diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/media/CastMediaOptions.aidl b/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/media/CastMediaOptions.aidl similarity index 100% rename from play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/media/CastMediaOptions.aidl rename to play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/media/CastMediaOptions.aidl diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/media/IImagePicker.aidl b/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/media/IImagePicker.aidl similarity index 100% rename from play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/media/IImagePicker.aidl rename to play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/media/IImagePicker.aidl diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/media/IMediaNotificationService.aidl b/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/media/IMediaNotificationService.aidl similarity index 100% rename from play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/media/IMediaNotificationService.aidl rename to play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/media/IMediaNotificationService.aidl diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/media/INotificationActionsProvider.aidl b/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/media/INotificationActionsProvider.aidl similarity index 100% rename from play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/media/INotificationActionsProvider.aidl rename to play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/media/INotificationActionsProvider.aidl diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/media/NotificationOptions.aidl b/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/media/NotificationOptions.aidl similarity index 100% rename from play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/media/NotificationOptions.aidl rename to play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/media/NotificationOptions.aidl diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/media/internal/IFetchBitmapTask.aidl b/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/media/internal/IFetchBitmapTask.aidl similarity index 100% rename from play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/media/internal/IFetchBitmapTask.aidl rename to play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/media/internal/IFetchBitmapTask.aidl diff --git a/play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/media/internal/IFetchBitmapTaskProgressPublisher.aidl b/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/media/internal/IFetchBitmapTaskProgressPublisher.aidl similarity index 100% rename from play-services-cast-framework-api/src/main/aidl/com/google/android/gms/cast/framework/media/internal/IFetchBitmapTaskProgressPublisher.aidl rename to play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/media/internal/IFetchBitmapTaskProgressPublisher.aidl diff --git a/play-services-cast-framework-api/src/main/java/com/google/android/gms/cast/framework/CastOptions.java b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/CastOptions.java similarity index 100% rename from play-services-cast-framework-api/src/main/java/com/google/android/gms/cast/framework/CastOptions.java rename to play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/CastOptions.java diff --git a/play-services-cast-framework-api/src/main/java/com/google/android/gms/cast/framework/CastState.java b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/CastState.java similarity index 100% rename from play-services-cast-framework-api/src/main/java/com/google/android/gms/cast/framework/CastState.java rename to play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/CastState.java diff --git a/play-services-cast-framework-api/src/main/java/com/google/android/gms/cast/framework/media/CastMediaOptions.java b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/media/CastMediaOptions.java similarity index 100% rename from play-services-cast-framework-api/src/main/java/com/google/android/gms/cast/framework/media/CastMediaOptions.java rename to play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/media/CastMediaOptions.java diff --git a/play-services-cast-framework-api/src/main/java/com/google/android/gms/cast/framework/media/NotificationOptions.java b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/media/NotificationOptions.java similarity index 100% rename from play-services-cast-framework-api/src/main/java/com/google/android/gms/cast/framework/media/NotificationOptions.java rename to play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/media/NotificationOptions.java diff --git a/play-services-cast/build.gradle b/play-services-cast/build.gradle index 765153148..1deb9f18c 100644 --- a/play-services-cast/build.gradle +++ b/play-services-cast/build.gradle @@ -4,11 +4,16 @@ */ apply plugin: 'com.android.library' +apply plugin: 'maven-publish' +apply plugin: 'signing' android { compileSdkVersion androidCompileSdk buildToolsVersion "$androidBuildVersionTools" + aidlPackageWhiteList "com/google/android/gms/cast/ApplicationMetadata.aidl" + aidlPackageWhiteList "com/google/android/gms/cast/LaunchOptions.aidl" + defaultConfig { versionName version minSdkVersion androidMinSdk @@ -21,10 +26,12 @@ android { } } -dependencies { - api project(':play-services-cast-api') +apply from: '../gradle/publish-android.gradle' - // Dependencies from play-services-cast:21.0.1 +description = 'microG implementation of play-services-cast' + +dependencies { + // Dependencies from play-services-cast:21.2.0 api "androidx.core:core:1.0.0" api "androidx.mediarouter:mediarouter:1.2.2" api project(':play-services-base') diff --git a/play-services-safetynet-core-ui/build.gradle b/play-services-cast/core/build.gradle similarity index 60% rename from play-services-safetynet-core-ui/build.gradle rename to play-services-cast/core/build.gradle index 23dd3f451..3cf9fd733 100644 --- a/play-services-safetynet-core-ui/build.gradle +++ b/play-services-cast/core/build.gradle @@ -1,29 +1,26 @@ /* - * SPDX-FileCopyrightText: 2021 microG Project Team + * SPDX-FileCopyrightText: 2022 microG Project Team * SPDX-License-Identifier: Apache-2.0 */ apply plugin: 'com.android.library' apply plugin: 'kotlin-android' +apply plugin: 'kotlin-kapt' apply plugin: 'maven-publish' apply plugin: 'signing' dependencies { - api project(':play-services-safetynet-api') - + implementation project(':play-services-cast') implementation project(':play-services-base-core') - implementation project(':play-services-base-core-ui') - implementation project(':play-services-droidguard') - implementation project(':play-services-droidguard-core') implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutineVersion" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutineVersion" - implementation "androidx.appcompat:appcompat:$appcompatVersion" - implementation "androidx.core:core-ktx:$coreVersion" - implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycleVersion" - implementation "androidx.webkit:webkit:$webkitVersion" + // TODO: Switch to upstream once raw requests are merged + // https://github.com/vitalidze/chromecast-java-api-v2/pull/99 + // implementation "su.litvak.chromecast:api-v2:0.10.4" + implementation "info.armills.chromecast-java-api-v2:api-v2-raw-request:0.10.4-raw-request-1" } android { @@ -36,6 +33,10 @@ android { targetSdkVersion androidTargetSdk } + buildFeatures { + dataBinding = true + } + sourceSets { main.java.srcDirs += 'src/main/kotlin' } @@ -54,6 +55,6 @@ android { } } -apply from: '../gradle/publish-android.gradle' +apply from: '../../gradle/publish-android.gradle' -description = 'UI for microG service implementation for play-services-safetynet' +description = 'microG service implementation for play-services-cast' diff --git a/play-services-cast/core/src/main/AndroidManifest.xml b/play-services-cast/core/src/main/AndroidManifest.xml new file mode 100644 index 000000000..699dafdfd --- /dev/null +++ b/play-services-cast/core/src/main/AndroidManifest.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + diff --git a/play-services-core/src/main/java/com/google/android/gms/cast/media/CastMediaRouteProviderService.java b/play-services-cast/core/src/main/java/com/google/android/gms/cast/media/CastMediaRouteProviderService.java similarity index 100% rename from play-services-core/src/main/java/com/google/android/gms/cast/media/CastMediaRouteProviderService.java rename to play-services-cast/core/src/main/java/com/google/android/gms/cast/media/CastMediaRouteProviderService.java diff --git a/play-services-core/src/main/java/org/microg/gms/cast/CastDeviceControllerImpl.java b/play-services-cast/core/src/main/java/org/microg/gms/cast/CastDeviceControllerImpl.java similarity index 100% rename from play-services-core/src/main/java/org/microg/gms/cast/CastDeviceControllerImpl.java rename to play-services-cast/core/src/main/java/org/microg/gms/cast/CastDeviceControllerImpl.java diff --git a/play-services-core/src/main/java/org/microg/gms/cast/CastDeviceControllerService.java b/play-services-cast/core/src/main/java/org/microg/gms/cast/CastDeviceControllerService.java similarity index 100% rename from play-services-core/src/main/java/org/microg/gms/cast/CastDeviceControllerService.java rename to play-services-cast/core/src/main/java/org/microg/gms/cast/CastDeviceControllerService.java diff --git a/play-services-core/src/main/java/org/microg/gms/cast/CastMediaRouteController.java b/play-services-cast/core/src/main/java/org/microg/gms/cast/CastMediaRouteController.java similarity index 100% rename from play-services-core/src/main/java/org/microg/gms/cast/CastMediaRouteController.java rename to play-services-cast/core/src/main/java/org/microg/gms/cast/CastMediaRouteController.java diff --git a/play-services-core/src/main/java/org/microg/gms/cast/CastMediaRouteProvider.java b/play-services-cast/core/src/main/java/org/microg/gms/cast/CastMediaRouteProvider.java similarity index 100% rename from play-services-core/src/main/java/org/microg/gms/cast/CastMediaRouteProvider.java rename to play-services-cast/core/src/main/java/org/microg/gms/cast/CastMediaRouteProvider.java diff --git a/play-services-cast-api/src/main/aidl/com/google/android/gms/cast/ApplicationMetadata.aidl b/play-services-cast/src/main/aidl/com/google/android/gms/cast/ApplicationMetadata.aidl similarity index 100% rename from play-services-cast-api/src/main/aidl/com/google/android/gms/cast/ApplicationMetadata.aidl rename to play-services-cast/src/main/aidl/com/google/android/gms/cast/ApplicationMetadata.aidl diff --git a/play-services-cast-api/src/main/aidl/com/google/android/gms/cast/ApplicationStatus.aidl b/play-services-cast/src/main/aidl/com/google/android/gms/cast/ApplicationStatus.aidl similarity index 100% rename from play-services-cast-api/src/main/aidl/com/google/android/gms/cast/ApplicationStatus.aidl rename to play-services-cast/src/main/aidl/com/google/android/gms/cast/ApplicationStatus.aidl diff --git a/play-services-cast-api/src/main/aidl/com/google/android/gms/cast/CastDeviceStatus.aidl b/play-services-cast/src/main/aidl/com/google/android/gms/cast/CastDeviceStatus.aidl similarity index 100% rename from play-services-cast-api/src/main/aidl/com/google/android/gms/cast/CastDeviceStatus.aidl rename to play-services-cast/src/main/aidl/com/google/android/gms/cast/CastDeviceStatus.aidl diff --git a/play-services-cast-api/src/main/aidl/com/google/android/gms/cast/JoinOptions.aidl b/play-services-cast/src/main/aidl/com/google/android/gms/cast/JoinOptions.aidl similarity index 100% rename from play-services-cast-api/src/main/aidl/com/google/android/gms/cast/JoinOptions.aidl rename to play-services-cast/src/main/aidl/com/google/android/gms/cast/JoinOptions.aidl diff --git a/play-services-cast-api/src/main/aidl/com/google/android/gms/cast/LaunchOptions.aidl b/play-services-cast/src/main/aidl/com/google/android/gms/cast/LaunchOptions.aidl similarity index 100% rename from play-services-cast-api/src/main/aidl/com/google/android/gms/cast/LaunchOptions.aidl rename to play-services-cast/src/main/aidl/com/google/android/gms/cast/LaunchOptions.aidl diff --git a/play-services-cast-api/src/main/aidl/com/google/android/gms/cast/RequestItem.aidl b/play-services-cast/src/main/aidl/com/google/android/gms/cast/RequestItem.aidl similarity index 100% rename from play-services-cast-api/src/main/aidl/com/google/android/gms/cast/RequestItem.aidl rename to play-services-cast/src/main/aidl/com/google/android/gms/cast/RequestItem.aidl diff --git a/play-services-cast-api/src/main/aidl/com/google/android/gms/cast/internal/IBundleCallback.aidl b/play-services-cast/src/main/aidl/com/google/android/gms/cast/internal/IBundleCallback.aidl similarity index 100% rename from play-services-cast-api/src/main/aidl/com/google/android/gms/cast/internal/IBundleCallback.aidl rename to play-services-cast/src/main/aidl/com/google/android/gms/cast/internal/IBundleCallback.aidl diff --git a/play-services-cast-api/src/main/aidl/com/google/android/gms/cast/internal/ICastDeviceController.aidl b/play-services-cast/src/main/aidl/com/google/android/gms/cast/internal/ICastDeviceController.aidl similarity index 100% rename from play-services-cast-api/src/main/aidl/com/google/android/gms/cast/internal/ICastDeviceController.aidl rename to play-services-cast/src/main/aidl/com/google/android/gms/cast/internal/ICastDeviceController.aidl diff --git a/play-services-cast-api/src/main/aidl/com/google/android/gms/cast/internal/ICastDeviceControllerListener.aidl b/play-services-cast/src/main/aidl/com/google/android/gms/cast/internal/ICastDeviceControllerListener.aidl similarity index 100% rename from play-services-cast-api/src/main/aidl/com/google/android/gms/cast/internal/ICastDeviceControllerListener.aidl rename to play-services-cast/src/main/aidl/com/google/android/gms/cast/internal/ICastDeviceControllerListener.aidl diff --git a/play-services-cast-api/src/main/aidl/com/google/android/gms/cast/internal/ICastService.aidl b/play-services-cast/src/main/aidl/com/google/android/gms/cast/internal/ICastService.aidl similarity index 100% rename from play-services-cast-api/src/main/aidl/com/google/android/gms/cast/internal/ICastService.aidl rename to play-services-cast/src/main/aidl/com/google/android/gms/cast/internal/ICastService.aidl diff --git a/play-services-cast-api/src/main/java/com/google/android/gms/cast/ApplicationMetadata.java b/play-services-cast/src/main/java/com/google/android/gms/cast/ApplicationMetadata.java similarity index 100% rename from play-services-cast-api/src/main/java/com/google/android/gms/cast/ApplicationMetadata.java rename to play-services-cast/src/main/java/com/google/android/gms/cast/ApplicationMetadata.java diff --git a/play-services-cast-api/src/main/java/com/google/android/gms/cast/ApplicationStatus.java b/play-services-cast/src/main/java/com/google/android/gms/cast/ApplicationStatus.java similarity index 100% rename from play-services-cast-api/src/main/java/com/google/android/gms/cast/ApplicationStatus.java rename to play-services-cast/src/main/java/com/google/android/gms/cast/ApplicationStatus.java diff --git a/play-services-cast-api/src/main/java/com/google/android/gms/cast/CastDevice.java b/play-services-cast/src/main/java/com/google/android/gms/cast/CastDevice.java similarity index 100% rename from play-services-cast-api/src/main/java/com/google/android/gms/cast/CastDevice.java rename to play-services-cast/src/main/java/com/google/android/gms/cast/CastDevice.java diff --git a/play-services-cast-api/src/main/java/com/google/android/gms/cast/CastDeviceStatus.java b/play-services-cast/src/main/java/com/google/android/gms/cast/CastDeviceStatus.java similarity index 100% rename from play-services-cast-api/src/main/java/com/google/android/gms/cast/CastDeviceStatus.java rename to play-services-cast/src/main/java/com/google/android/gms/cast/CastDeviceStatus.java diff --git a/play-services-cast-api/src/main/java/com/google/android/gms/cast/CastMediaControlIntent.java b/play-services-cast/src/main/java/com/google/android/gms/cast/CastMediaControlIntent.java similarity index 100% rename from play-services-cast-api/src/main/java/com/google/android/gms/cast/CastMediaControlIntent.java rename to play-services-cast/src/main/java/com/google/android/gms/cast/CastMediaControlIntent.java diff --git a/play-services-cast-api/src/main/java/com/google/android/gms/cast/CastStatusCodes.java b/play-services-cast/src/main/java/com/google/android/gms/cast/CastStatusCodes.java similarity index 100% rename from play-services-cast-api/src/main/java/com/google/android/gms/cast/CastStatusCodes.java rename to play-services-cast/src/main/java/com/google/android/gms/cast/CastStatusCodes.java diff --git a/play-services-cast-api/src/main/java/com/google/android/gms/cast/JoinOptions.java b/play-services-cast/src/main/java/com/google/android/gms/cast/JoinOptions.java similarity index 100% rename from play-services-cast-api/src/main/java/com/google/android/gms/cast/JoinOptions.java rename to play-services-cast/src/main/java/com/google/android/gms/cast/JoinOptions.java diff --git a/play-services-cast-api/src/main/java/com/google/android/gms/cast/LaunchOptions.java b/play-services-cast/src/main/java/com/google/android/gms/cast/LaunchOptions.java similarity index 100% rename from play-services-cast-api/src/main/java/com/google/android/gms/cast/LaunchOptions.java rename to play-services-cast/src/main/java/com/google/android/gms/cast/LaunchOptions.java diff --git a/play-services-cast-api/src/main/java/com/google/android/gms/cast/RequestItem.java b/play-services-cast/src/main/java/com/google/android/gms/cast/RequestItem.java similarity index 100% rename from play-services-cast-api/src/main/java/com/google/android/gms/cast/RequestItem.java rename to play-services-cast/src/main/java/com/google/android/gms/cast/RequestItem.java diff --git a/play-services-clearcut/build.gradle b/play-services-clearcut/build.gradle new file mode 100644 index 000000000..0cf2d5241 --- /dev/null +++ b/play-services-clearcut/build.gradle @@ -0,0 +1,39 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +apply plugin: 'com.android.library' +apply plugin: 'maven-publish' +apply plugin: 'signing' + +android { + compileSdkVersion androidCompileSdk + buildToolsVersion "$androidBuildVersionTools" + + defaultConfig { + versionName version + minSdkVersion androidMinSdk + targetSdkVersion androidTargetSdk + } + + compileOptions { + sourceCompatibility = 1.8 + targetCompatibility = 1.8 + } +} + +apply from: '../gradle/publish-android.gradle' + +description = 'microG implementation of play-services-clearcut' + +dependencies { + implementation project(':play-services-api') + + // Dependencies from play-services-clearcut:17.0.0 + api "androidx.core:core:1.0.0" + api project(':play-services-base') + api project(':play-services-basement') +// api project(':play-services-phenotype') + api project(':play-services-tasks') +} diff --git a/play-services-clearcut/src/main/AndroidManifest.xml b/play-services-clearcut/src/main/AndroidManifest.xml new file mode 100644 index 000000000..a471bed7a --- /dev/null +++ b/play-services-clearcut/src/main/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + \ No newline at end of file diff --git a/play-services-api/src/main/aidl/com/google/android/gms/clearcut/LogEventParcelable.aidl b/play-services-clearcut/src/main/aidl/com/google/android/gms/clearcut/LogEventParcelable.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/clearcut/LogEventParcelable.aidl rename to play-services-clearcut/src/main/aidl/com/google/android/gms/clearcut/LogEventParcelable.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/clearcut/internal/IClearcutLoggerCallbacks.aidl b/play-services-clearcut/src/main/aidl/com/google/android/gms/clearcut/internal/IClearcutLoggerCallbacks.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/clearcut/internal/IClearcutLoggerCallbacks.aidl rename to play-services-clearcut/src/main/aidl/com/google/android/gms/clearcut/internal/IClearcutLoggerCallbacks.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/clearcut/internal/IClearcutLoggerService.aidl b/play-services-clearcut/src/main/aidl/com/google/android/gms/clearcut/internal/IClearcutLoggerService.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/clearcut/internal/IClearcutLoggerService.aidl rename to play-services-clearcut/src/main/aidl/com/google/android/gms/clearcut/internal/IClearcutLoggerService.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/clearcut/internal/PlayLoggerContext.aidl b/play-services-clearcut/src/main/aidl/com/google/android/gms/clearcut/internal/PlayLoggerContext.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/clearcut/internal/PlayLoggerContext.aidl rename to play-services-clearcut/src/main/aidl/com/google/android/gms/clearcut/internal/PlayLoggerContext.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/playlog/internal/IPlayLogService.aidl b/play-services-clearcut/src/main/aidl/com/google/android/gms/playlog/internal/IPlayLogService.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/playlog/internal/IPlayLogService.aidl rename to play-services-clearcut/src/main/aidl/com/google/android/gms/playlog/internal/IPlayLogService.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/playlog/internal/LogEvent.aidl b/play-services-clearcut/src/main/aidl/com/google/android/gms/playlog/internal/LogEvent.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/playlog/internal/LogEvent.aidl rename to play-services-clearcut/src/main/aidl/com/google/android/gms/playlog/internal/LogEvent.aidl diff --git a/play-services-api/src/main/java/com/google/android/gms/clearcut/LogEventParcelable.java b/play-services-clearcut/src/main/java/com/google/android/gms/clearcut/LogEventParcelable.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/clearcut/LogEventParcelable.java rename to play-services-clearcut/src/main/java/com/google/android/gms/clearcut/LogEventParcelable.java diff --git a/play-services-api/src/main/java/com/google/android/gms/clearcut/internal/LogVerifierResultParcelable.java b/play-services-clearcut/src/main/java/com/google/android/gms/clearcut/internal/LogVerifierResultParcelable.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/clearcut/internal/LogVerifierResultParcelable.java rename to play-services-clearcut/src/main/java/com/google/android/gms/clearcut/internal/LogVerifierResultParcelable.java diff --git a/play-services-api/src/main/java/com/google/android/gms/clearcut/internal/PlayLoggerContext.java b/play-services-clearcut/src/main/java/com/google/android/gms/clearcut/internal/PlayLoggerContext.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/clearcut/internal/PlayLoggerContext.java rename to play-services-clearcut/src/main/java/com/google/android/gms/clearcut/internal/PlayLoggerContext.java diff --git a/play-services-api/src/main/java/com/google/android/gms/playlog/internal/LogEvent.java b/play-services-clearcut/src/main/java/com/google/android/gms/playlog/internal/LogEvent.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/playlog/internal/LogEvent.java rename to play-services-clearcut/src/main/java/com/google/android/gms/playlog/internal/LogEvent.java diff --git a/play-services-core/build.gradle b/play-services-core/build.gradle index 2718f8eca..8eef55346 100644 --- a/play-services-core/build.gradle +++ b/play-services-core/build.gradle @@ -17,49 +17,53 @@ configurations { dependencies { implementation "com.squareup.wire:wire-runtime:$wireVersion" implementation "de.hdodenhof:circleimageview:1.3.0" - // TODO: Switch to upstream once raw requests are merged - // https://github.com/vitalidze/chromecast-java-api-v2/pull/99 - // implementation "su.litvak.chromecast:api-v2:0.10.4" - implementation "info.armills.chromecast-java-api-v2:api-v2-raw-request:0.10.4-raw-request-1" - - // Specified manually due to - // https://github.com/vitalidze/chromecast-java-api-v2/issues/91 - api "org.slf4j:slf4j-api:1.7.25" - api "uk.uuid.slf4j:slf4j-android:1.7.25-1" implementation project(':firebase-dynamic-links-api') implementation project(':firebase-auth-core') implementation project(':play-services-base-core') - implementation project(':play-services-base-core-ui') + implementation project(':play-services-cast-core') + implementation project(':play-services-cast-framework-core') implementation project(':play-services-conscrypt-provider-core') implementation project(':play-services-cronet-core') implementation project(':play-services-droidguard-core') - implementation project(':play-services-droidguard-core-ui') implementation project(':play-services-fido-core') implementation project(':play-services-gmscompliance-core') implementation project(':play-services-location-core') withNearbyImplementation project(':play-services-nearby-core') - withNearbyImplementation project(':play-services-nearby-core-ui') - implementation project(':play-services-safetynet-core') implementation project(':play-services-oss-licenses-core') - implementation project(':play-services-safetynet-core-ui') + implementation project(':play-services-safetynet-core') implementation project(':play-services-tapandpay-core') implementation project(':play-services-vision-core') + implementation project(':play-services-wearable-core') implementation project(':play-services-core-proto') + implementation project(':play-services-core:microg-ui-tools') // deprecated implementation project(':play-services-api') - implementation project(':play-services-cast-api') - implementation project(':play-services-wearable') - implementation "org.microg:wearable:$wearableVersion" + implementation project(':play-services-appinvite') + implementation project(':play-services-auth-base') + implementation project(':play-services-auth') + implementation project(':play-services-clearcut') + implementation project(':play-services-drive') + implementation project(':play-services-maps') + implementation project(':play-services-measurement-base') + implementation project(':play-services-places') implementation project(':play-services-safetynet') implementation project(':play-services-tasks-ktx') - runtimeOnly "org.microg.nlp:geocode-v1:$nlpVersion" - runtimeOnly "org.microg.nlp:location-v2:$nlpVersion" - runtimeOnly "org.microg.nlp:location-v3:$nlpVersion" - implementation "org.microg.nlp:ui:$nlpVersion" + runtimeOnly("org.microg.nlp:geocode-v1:$nlpVersion") { + exclude group: 'org.microg', module: 'safe-parcel' + } + runtimeOnly("org.microg.nlp:location-v2:$nlpVersion") { + exclude group: 'org.microg', module: 'safe-parcel' + } + runtimeOnly("org.microg.nlp:location-v3:$nlpVersion") { + exclude group: 'org.microg', module: 'safe-parcel' + } + implementation("org.microg.nlp:ui:$nlpVersion") { + exclude group: 'org.microg', module: 'safe-parcel' + } withMapboxImplementation project(':play-services-maps-core-mapbox') withVtmImplementation project(':play-services-maps-core-vtm') diff --git a/play-services-core/src/main/AndroidManifest.xml b/play-services-core/src/main/AndroidManifest.xml index eff2404f9..c4fffeadf 100644 --- a/play-services-core/src/main/AndroidManifest.xml +++ b/play-services-core/src/main/AndroidManifest.xml @@ -445,14 +445,6 @@ - - - - - - - - - - - - - - diff --git a/play-services-location-api/src/main/java/org/microg/gms/location/LocationConstants.java b/play-services-core/src/main/java/org/microg/gms/location/LocationConstants.java similarity index 100% rename from play-services-location-api/src/main/java/org/microg/gms/location/LocationConstants.java rename to play-services-core/src/main/java/org/microg/gms/location/LocationConstants.java diff --git a/play-services-core/src/main/kotlin/org/microg/gms/auth/appcert/AppCertManager.kt b/play-services-core/src/main/kotlin/org/microg/gms/auth/appcert/AppCertManager.kt index d4cfd2a0c..adc178fb4 100644 --- a/play-services-core/src/main/kotlin/org/microg/gms/auth/appcert/AppCertManager.kt +++ b/play-services-core/src/main/kotlin/org/microg/gms/auth/appcert/AppCertManager.kt @@ -73,7 +73,7 @@ class AppCertManager(private val context: Context) { "dg_sdkVersion" to Build.VERSION.SDK_INT.toString() ) val droidGuardResult = try { - Base64.encodeToString(DroidGuardResultCreator.getResult(context, "devicekey", data), Base64.NO_WRAP + Base64.NO_PADDING + Base64.URL_SAFE) + DroidGuardResultCreator.getResults(context, "devicekey", data) } catch (e: Exception) { null } diff --git a/play-services-core/src/main/kotlin/org/microg/gms/auth/login/DroidGuardHandler.kt b/play-services-core/src/main/kotlin/org/microg/gms/auth/login/DroidGuardHandler.kt index 553553a10..c540031ad 100644 --- a/play-services-core/src/main/kotlin/org/microg/gms/auth/login/DroidGuardHandler.kt +++ b/play-services-core/src/main/kotlin/org/microg/gms/auth/login/DroidGuardHandler.kt @@ -5,18 +5,15 @@ package org.microg.gms.auth.login -import android.util.Base64 import androidx.lifecycle.lifecycleScope -import org.microg.gms.droidguard.core.DroidGuardResultCreator.Companion.getResult -import org.microg.gms.utils.toBase64 +import org.microg.gms.droidguard.core.DroidGuardResultCreator import java.util.* class DroidGuardHandler(private val activity: LoginActivity) { fun start(dg: String) { activity.lifecycleScope.launchWhenStarted { try { - val result = getResult(activity, "minute_maid", Collections.singletonMap("dg_minutemaid", dg)) - .toBase64(Base64.NO_WRAP, Base64.NO_PADDING, Base64.URL_SAFE) + val result = DroidGuardResultCreator.getResults(activity, "minute_maid", Collections.singletonMap("dg_minutemaid", dg)) activity.runScript("window.setDgResult('$result')") } catch (e: Exception) { // Ignore diff --git a/play-services-core/src/main/kotlin/org/microg/gms/clearcut/ClearcutLoggerService.kt b/play-services-core/src/main/kotlin/org/microg/gms/clearcut/ClearcutLoggerService.kt index afe0dc7f9..1e0d9b82d 100644 --- a/play-services-core/src/main/kotlin/org/microg/gms/clearcut/ClearcutLoggerService.kt +++ b/play-services-core/src/main/kotlin/org/microg/gms/clearcut/ClearcutLoggerService.kt @@ -5,7 +5,6 @@ package org.microg.gms.clearcut import android.os.Parcel -import android.os.RemoteException import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.lifecycleScope diff --git a/play-services-core/src/withNearby/kotlin/org/microg/gms/ui/NearbyPreferencesIntegration.kt b/play-services-core/src/withNearby/kotlin/org/microg/gms/ui/NearbyPreferencesIntegration.kt index d4f940e17..fb4d803fb 100644 --- a/play-services-core/src/withNearby/kotlin/org/microg/gms/ui/NearbyPreferencesIntegration.kt +++ b/play-services-core/src/withNearby/kotlin/org/microg/gms/ui/NearbyPreferencesIntegration.kt @@ -11,9 +11,8 @@ import android.graphics.drawable.Drawable import android.net.Uri import androidx.core.content.ContextCompat import com.google.android.gms.R -import org.microg.gms.nearby.exposurenotification.Constants +import com.google.android.gms.nearby.exposurenotification.ExposureNotificationClient import org.microg.gms.nearby.exposurenotification.ExposurePreferences -import org.microg.gms.nearby.exposurenotification.getExposureNotificationsServiceInfo interface NearbyPreferencesIntegration { companion object { @@ -24,7 +23,7 @@ interface NearbyPreferencesIntegration { } fun preProcessSettingsIntent(intent: Intent) { - if (Constants.ACTION_EXPOSURE_NOTIFICATION_SETTINGS == intent.action && intent.data == null) { + if (ExposureNotificationClient.ACTION_EXPOSURE_NOTIFICATION_SETTINGS == intent.action && intent.data == null) { intent.data = Uri.parse("x-gms-settings://exposure-notifications") } } diff --git a/play-services-cronet-core/build.gradle b/play-services-cronet/core/build.gradle similarity index 96% rename from play-services-cronet-core/build.gradle rename to play-services-cronet/core/build.gradle index 8b30e62a4..82e0cc695 100644 --- a/play-services-cronet-core/build.gradle +++ b/play-services-cronet/core/build.gradle @@ -37,6 +37,6 @@ android { } } -apply from: '../gradle/publish-android.gradle' +apply from: '../../gradle/publish-android.gradle' description = 'microG service implementation for play-services-cronet' diff --git a/play-services-cronet-core/src/main/AndroidManifest.xml b/play-services-cronet/core/src/main/AndroidManifest.xml similarity index 100% rename from play-services-cronet-core/src/main/AndroidManifest.xml rename to play-services-cronet/core/src/main/AndroidManifest.xml diff --git a/play-services-cronet-core/src/main/java/com/google/android/gms/dynamite/descriptors/com/google/android/gms/cronet_dynamite/ModuleDescriptor.java b/play-services-cronet/core/src/main/java/com/google/android/gms/dynamite/descriptors/com/google/android/gms/cronet_dynamite/ModuleDescriptor.java similarity index 100% rename from play-services-cronet-core/src/main/java/com/google/android/gms/dynamite/descriptors/com/google/android/gms/cronet_dynamite/ModuleDescriptor.java rename to play-services-cronet/core/src/main/java/com/google/android/gms/dynamite/descriptors/com/google/android/gms/cronet_dynamite/ModuleDescriptor.java diff --git a/play-services-nearby-api/build.gradle b/play-services-drive/build.gradle similarity index 66% rename from play-services-nearby-api/build.gradle rename to play-services-drive/build.gradle index 132747d26..5ec34464e 100644 --- a/play-services-nearby-api/build.gradle +++ b/play-services-drive/build.gradle @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2020, microG Project Team + * SPDX-FileCopyrightText: 2022 microG Project Team * SPDX-License-Identifier: Apache-2.0 */ @@ -25,11 +25,12 @@ android { apply from: '../gradle/publish-android.gradle' -description = 'microG API for play-services-nearby' +description = 'microG implementation of play-services-drive' dependencies { + // Dependencies from play-services-drive:17.0.0 + api "androidx.collection:collection:1.0.0" + api project(':play-services-base') api project(':play-services-basement') - api project(':play-services-base-api') - - implementation "androidx.annotation:annotation:$annotationVersion" + api project(':play-services-tasks') } diff --git a/play-services-drive/src/main/AndroidManifest.xml b/play-services-drive/src/main/AndroidManifest.xml new file mode 100644 index 000000000..bd1652f25 --- /dev/null +++ b/play-services-drive/src/main/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + \ No newline at end of file diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/AddEventListenerRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/AddEventListenerRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/AddEventListenerRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/AddEventListenerRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/AddPermissionRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/AddPermissionRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/AddPermissionRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/AddPermissionRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/AuthorizeAccessRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/AuthorizeAccessRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/AuthorizeAccessRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/AuthorizeAccessRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CancelPendingActionsRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/CancelPendingActionsRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CancelPendingActionsRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/CancelPendingActionsRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ChangeResourceParentsRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/ChangeResourceParentsRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ChangeResourceParentsRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/ChangeResourceParentsRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ChangeSequenceNumber.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/ChangeSequenceNumber.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ChangeSequenceNumber.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/ChangeSequenceNumber.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ChangesResponse.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/ChangesResponse.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ChangesResponse.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/ChangesResponse.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CheckResourceIdsExistRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/CheckResourceIdsExistRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CheckResourceIdsExistRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/CheckResourceIdsExistRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CloseContentsAndUpdateMetadataRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/CloseContentsAndUpdateMetadataRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CloseContentsAndUpdateMetadataRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/CloseContentsAndUpdateMetadataRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CloseContentsRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/CloseContentsRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CloseContentsRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/CloseContentsRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ContentsResponse.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/ContentsResponse.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ContentsResponse.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/ContentsResponse.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ControlProgressRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/ControlProgressRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ControlProgressRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/ControlProgressRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CreateContentsRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/CreateContentsRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CreateContentsRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/CreateContentsRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CreateFileIntentSenderRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/CreateFileIntentSenderRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CreateFileIntentSenderRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/CreateFileIntentSenderRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CreateFileRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/CreateFileRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CreateFileRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/CreateFileRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CreateFolderRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/CreateFolderRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/CreateFolderRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/CreateFolderRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DeleteResourceRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/DeleteResourceRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DeleteResourceRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/DeleteResourceRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DeviceUsagePreferenceResponse.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/DeviceUsagePreferenceResponse.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DeviceUsagePreferenceResponse.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/DeviceUsagePreferenceResponse.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DisconnectRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/DisconnectRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DisconnectRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/DisconnectRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DownloadProgressResponse.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/DownloadProgressResponse.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DownloadProgressResponse.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/DownloadProgressResponse.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DriveIdResponse.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/DriveIdResponse.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DriveIdResponse.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/DriveIdResponse.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DrivePreferencesResponse.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/DrivePreferencesResponse.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DrivePreferencesResponse.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/DrivePreferencesResponse.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DriveServiceResponse.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/DriveServiceResponse.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/DriveServiceResponse.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/DriveServiceResponse.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/EventResponse.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/EventResponse.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/EventResponse.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/EventResponse.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/FetchThumbnailRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/FetchThumbnailRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/FetchThumbnailRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/FetchThumbnailRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/FetchThumbnailResponse.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/FetchThumbnailResponse.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/FetchThumbnailResponse.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/FetchThumbnailResponse.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/GetChangesRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/GetChangesRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/GetChangesRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/GetChangesRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/GetDriveIdFromUniqueIdRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/GetDriveIdFromUniqueIdRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/GetDriveIdFromUniqueIdRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/GetDriveIdFromUniqueIdRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/GetMetadataRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/GetMetadataRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/GetMetadataRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/GetMetadataRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/GetPermissionsRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/GetPermissionsRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/GetPermissionsRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/GetPermissionsRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/GetPermissionsResponse.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/GetPermissionsResponse.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/GetPermissionsResponse.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/GetPermissionsResponse.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/IDriveService.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/IDriveService.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/IDriveService.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/IDriveService.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/IDriveServiceCallbacks.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/IDriveServiceCallbacks.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/IDriveServiceCallbacks.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/IDriveServiceCallbacks.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/IEventCallback.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/IEventCallback.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/IEventCallback.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/IEventCallback.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/IRealtimeService.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/IRealtimeService.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/IRealtimeService.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/IRealtimeService.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ListEntriesResponse.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/ListEntriesResponse.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ListEntriesResponse.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/ListEntriesResponse.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ListParentsRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/ListParentsRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ListParentsRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/ListParentsRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ListParentsResponse.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/ListParentsResponse.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ListParentsResponse.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/ListParentsResponse.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/LoadRealtimeRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/LoadRealtimeRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/LoadRealtimeRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/LoadRealtimeRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/LoadRealtimeResponse.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/LoadRealtimeResponse.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/LoadRealtimeResponse.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/LoadRealtimeResponse.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/MetadataResponse.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/MetadataResponse.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/MetadataResponse.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/MetadataResponse.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/OpenContentsRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/OpenContentsRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/OpenContentsRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/OpenContentsRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/OpenFileIntentSenderRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/OpenFileIntentSenderRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/OpenFileIntentSenderRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/OpenFileIntentSenderRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/RealtimeDocumentSyncRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/RealtimeDocumentSyncRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/RealtimeDocumentSyncRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/RealtimeDocumentSyncRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/RemoveEventListenerRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/RemoveEventListenerRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/RemoveEventListenerRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/RemoveEventListenerRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/RemovePermissionRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/RemovePermissionRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/RemovePermissionRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/RemovePermissionRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ResourceIdSetResponse.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/ResourceIdSetResponse.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/ResourceIdSetResponse.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/ResourceIdSetResponse.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/SetDrivePreferencesRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/SetDrivePreferencesRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/SetDrivePreferencesRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/SetDrivePreferencesRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/SetFileUploadPreferencesRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/SetFileUploadPreferencesRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/SetFileUploadPreferencesRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/SetFileUploadPreferencesRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/SetResourceParentsRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/SetResourceParentsRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/SetResourceParentsRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/SetResourceParentsRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/StartStreamSession.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/StartStreamSession.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/StartStreamSession.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/StartStreamSession.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/StreamContentsRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/StreamContentsRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/StreamContentsRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/StreamContentsRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/StringListResponse.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/StringListResponse.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/StringListResponse.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/StringListResponse.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/SyncMoreResponse.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/SyncMoreResponse.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/SyncMoreResponse.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/SyncMoreResponse.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/TrashResourceRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/TrashResourceRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/TrashResourceRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/TrashResourceRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/UnsubscribeResourceRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/UnsubscribeResourceRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/UnsubscribeResourceRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/UnsubscribeResourceRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/UntrashResourceRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/UntrashResourceRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/UntrashResourceRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/UntrashResourceRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/UpdateMetadataRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/UpdateMetadataRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/UpdateMetadataRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/UpdateMetadataRequest.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/drive/internal/UpdatePermissionRequest.aidl b/play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/UpdatePermissionRequest.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/drive/internal/UpdatePermissionRequest.aidl rename to play-services-drive/src/main/aidl/com/google/android/gms/drive/internal/UpdatePermissionRequest.aidl diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/AddEventListenerRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/AddEventListenerRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/AddEventListenerRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/AddEventListenerRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/AddPermissionRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/AddPermissionRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/AddPermissionRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/AddPermissionRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/AuthorizeAccessRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/AuthorizeAccessRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/AuthorizeAccessRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/AuthorizeAccessRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/CancelPendingActionsRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/CancelPendingActionsRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/CancelPendingActionsRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/CancelPendingActionsRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/ChangeResourceParentsRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/ChangeResourceParentsRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/ChangeResourceParentsRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/ChangeResourceParentsRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/ChangeSequenceNumber.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/ChangeSequenceNumber.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/ChangeSequenceNumber.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/ChangeSequenceNumber.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/ChangesResponse.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/ChangesResponse.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/ChangesResponse.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/ChangesResponse.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/CheckResourceIdsExistRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/CheckResourceIdsExistRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/CheckResourceIdsExistRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/CheckResourceIdsExistRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/CloseContentsAndUpdateMetadataRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/CloseContentsAndUpdateMetadataRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/CloseContentsAndUpdateMetadataRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/CloseContentsAndUpdateMetadataRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/CloseContentsRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/CloseContentsRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/CloseContentsRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/CloseContentsRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/ContentsResponse.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/ContentsResponse.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/ContentsResponse.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/ContentsResponse.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/ControlProgressRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/ControlProgressRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/ControlProgressRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/ControlProgressRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/CreateContentsRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/CreateContentsRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/CreateContentsRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/CreateContentsRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/CreateFileIntentSenderRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/CreateFileIntentSenderRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/CreateFileIntentSenderRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/CreateFileIntentSenderRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/CreateFileRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/CreateFileRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/CreateFileRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/CreateFileRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/CreateFolderRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/CreateFolderRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/CreateFolderRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/CreateFolderRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/DeleteResourceRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/DeleteResourceRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/DeleteResourceRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/DeleteResourceRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/DeviceUsagePreferenceResponse.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/DeviceUsagePreferenceResponse.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/DeviceUsagePreferenceResponse.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/DeviceUsagePreferenceResponse.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/DisconnectRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/DisconnectRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/DisconnectRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/DisconnectRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/DownloadProgressResponse.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/DownloadProgressResponse.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/DownloadProgressResponse.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/DownloadProgressResponse.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/DriveIdResponse.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/DriveIdResponse.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/DriveIdResponse.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/DriveIdResponse.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/DrivePreferencesResponse.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/DrivePreferencesResponse.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/DrivePreferencesResponse.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/DrivePreferencesResponse.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/DriveServiceResponse.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/DriveServiceResponse.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/DriveServiceResponse.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/DriveServiceResponse.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/EventResponse.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/EventResponse.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/EventResponse.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/EventResponse.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/FetchThumbnailRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/FetchThumbnailRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/FetchThumbnailRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/FetchThumbnailRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/FetchThumbnailResponse.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/FetchThumbnailResponse.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/FetchThumbnailResponse.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/FetchThumbnailResponse.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/GetChangesRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/GetChangesRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/GetChangesRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/GetChangesRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/GetDriveIdFromUniqueIdRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/GetDriveIdFromUniqueIdRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/GetDriveIdFromUniqueIdRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/GetDriveIdFromUniqueIdRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/GetMetadataRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/GetMetadataRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/GetMetadataRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/GetMetadataRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/GetPermissionsRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/GetPermissionsRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/GetPermissionsRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/GetPermissionsRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/GetPermissionsResponse.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/GetPermissionsResponse.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/GetPermissionsResponse.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/GetPermissionsResponse.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/ListEntriesResponse.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/ListEntriesResponse.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/ListEntriesResponse.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/ListEntriesResponse.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/ListParentsRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/ListParentsRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/ListParentsRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/ListParentsRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/ListParentsResponse.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/ListParentsResponse.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/ListParentsResponse.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/ListParentsResponse.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/LoadRealtimeRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/LoadRealtimeRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/LoadRealtimeRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/LoadRealtimeRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/LoadRealtimeResponse.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/LoadRealtimeResponse.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/LoadRealtimeResponse.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/LoadRealtimeResponse.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/MetadataResponse.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/MetadataResponse.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/MetadataResponse.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/MetadataResponse.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/OpenContentsRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/OpenContentsRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/OpenContentsRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/OpenContentsRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/OpenFileIntentSenderRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/OpenFileIntentSenderRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/OpenFileIntentSenderRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/OpenFileIntentSenderRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/RealtimeDocumentSyncRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/RealtimeDocumentSyncRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/RealtimeDocumentSyncRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/RealtimeDocumentSyncRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/RemoveEventListenerRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/RemoveEventListenerRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/RemoveEventListenerRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/RemoveEventListenerRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/RemovePermissionRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/RemovePermissionRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/RemovePermissionRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/RemovePermissionRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/ResourceIdSetResponse.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/ResourceIdSetResponse.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/ResourceIdSetResponse.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/ResourceIdSetResponse.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/SetDrivePreferencesRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/SetDrivePreferencesRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/SetDrivePreferencesRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/SetDrivePreferencesRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/SetFileUploadPreferencesRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/SetFileUploadPreferencesRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/SetFileUploadPreferencesRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/SetFileUploadPreferencesRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/SetResourceParentsRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/SetResourceParentsRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/SetResourceParentsRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/SetResourceParentsRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/StartStreamSession.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/StartStreamSession.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/StartStreamSession.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/StartStreamSession.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/StreamContentsRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/StreamContentsRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/StreamContentsRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/StreamContentsRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/StringListResponse.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/StringListResponse.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/StringListResponse.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/StringListResponse.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/SyncMoreResponse.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/SyncMoreResponse.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/SyncMoreResponse.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/SyncMoreResponse.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/TrashResourceRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/TrashResourceRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/TrashResourceRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/TrashResourceRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/UnsubscribeResourceRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/UnsubscribeResourceRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/UnsubscribeResourceRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/UnsubscribeResourceRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/UntrashResourceRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/UntrashResourceRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/UntrashResourceRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/UntrashResourceRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/UpdateMetadataRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/UpdateMetadataRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/UpdateMetadataRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/UpdateMetadataRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/internal/UpdatePermissionRequest.java b/play-services-drive/src/main/java/com/google/android/gms/drive/internal/UpdatePermissionRequest.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/internal/UpdatePermissionRequest.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/internal/UpdatePermissionRequest.java diff --git a/play-services-api/src/main/java/com/google/android/gms/drive/metadata/internal/MetadataBundle.java b/play-services-drive/src/main/java/com/google/android/gms/drive/metadata/internal/MetadataBundle.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/drive/metadata/internal/MetadataBundle.java rename to play-services-drive/src/main/java/com/google/android/gms/drive/metadata/internal/MetadataBundle.java diff --git a/play-services-droidguard-api/src/main/AndroidManifest.xml b/play-services-droidguard-api/src/main/AndroidManifest.xml deleted file mode 100644 index 30563293b..000000000 --- a/play-services-droidguard-api/src/main/AndroidManifest.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/play-services-droidguard-core-proto/build.gradle b/play-services-droidguard-core-proto/build.gradle deleted file mode 100644 index 234ab40a0..000000000 --- a/play-services-droidguard-core-proto/build.gradle +++ /dev/null @@ -1,33 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2020, microG Project Team - * SPDX-License-Identifier: Apache-2.0 - */ - -apply plugin: 'com.squareup.wire' -apply plugin: 'kotlin' -apply plugin: 'maven-publish' -apply plugin: 'signing' - -dependencies { - implementation "com.squareup.wire:wire-runtime:$wireVersion" -} - -wire { - kotlin {} -} - -sourceSets { - main.java.srcDirs += "$buildDir/generated/source/wire" -} - -compileKotlin { - kotlinOptions.jvmTarget = 1.8 -} - -compileTestKotlin { - kotlinOptions.jvmTarget = 1.8 -} - -apply from: '../gradle/publish-java.gradle' - -description = 'Protocol buffers for microG implementation of play-services-droidguard' diff --git a/play-services-droidguard-core-ui/src/main/AndroidManifest.xml b/play-services-droidguard-core-ui/src/main/AndroidManifest.xml deleted file mode 100644 index 400eff150..000000000 --- a/play-services-droidguard-core-ui/src/main/AndroidManifest.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/play-services-droidguard/build.gradle b/play-services-droidguard/build.gradle index 31f1e865f..8cb77f47e 100644 --- a/play-services-droidguard/build.gradle +++ b/play-services-droidguard/build.gradle @@ -4,7 +4,6 @@ */ apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' apply plugin: 'maven-publish' apply plugin: 'signing' @@ -34,8 +33,6 @@ description = 'microG implementation of play-services-droidguard' dependencies { api project(':play-services-base') - api project(':play-services-droidguard-api') implementation "androidx.annotation:annotation:$annotationVersion" - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion" } diff --git a/play-services-droidguard-core/build.gradle b/play-services-droidguard/core/build.gradle similarity index 83% rename from play-services-droidguard-core/build.gradle rename to play-services-droidguard/core/build.gradle index e96945d28..d6c6d51d3 100644 --- a/play-services-droidguard-core/build.gradle +++ b/play-services-droidguard/core/build.gradle @@ -4,23 +4,30 @@ */ apply plugin: 'com.android.library' +apply plugin: 'com.squareup.wire' apply plugin: 'kotlin-android' apply plugin: 'maven-publish' apply plugin: 'signing' dependencies { - api project(':play-services-droidguard-api') + api project(':play-services-droidguard') implementation project(':play-services-base-core') implementation project(':play-services-chimera-core') - implementation project(':play-services-droidguard') - implementation project(':play-services-droidguard-core-proto') implementation project(':play-services-tasks-ktx') - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion" + implementation "androidx.appcompat:appcompat:$appcompatVersion" implementation "androidx.core:core-ktx:$coreVersion" + implementation "androidx.preference:preference-ktx:$preferenceVersion" + implementation "com.android.volley:volley:$volleyVersion" implementation "com.squareup.wire:wire-runtime:$wireVersion" + + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion" +} + +wire { + kotlin {} } android { @@ -54,6 +61,6 @@ android { } } -apply from: '../gradle/publish-android.gradle' +apply from: '../../gradle/publish-android.gradle' description = 'microG service implementation for play-services-droidguard' diff --git a/play-services-droidguard-core/src/main/AndroidManifest.xml b/play-services-droidguard/core/src/main/AndroidManifest.xml similarity index 100% rename from play-services-droidguard-core/src/main/AndroidManifest.xml rename to play-services-droidguard/core/src/main/AndroidManifest.xml diff --git a/play-services-droidguard-core/src/main/java/com/google/android/gms/droidguard/DroidGuardChimeraService.java b/play-services-droidguard/core/src/main/java/com/google/android/gms/droidguard/DroidGuardChimeraService.java similarity index 100% rename from play-services-droidguard-core/src/main/java/com/google/android/gms/droidguard/DroidGuardChimeraService.java rename to play-services-droidguard/core/src/main/java/com/google/android/gms/droidguard/DroidGuardChimeraService.java diff --git a/play-services-droidguard-core/src/main/java/com/google/android/gms/framework/tracing/wrapper/TracingIntentService.java b/play-services-droidguard/core/src/main/java/com/google/android/gms/framework/tracing/wrapper/TracingIntentService.java similarity index 100% rename from play-services-droidguard-core/src/main/java/com/google/android/gms/framework/tracing/wrapper/TracingIntentService.java rename to play-services-droidguard/core/src/main/java/com/google/android/gms/framework/tracing/wrapper/TracingIntentService.java diff --git a/play-services-droidguard-core/src/main/java/org/microg/gms/droidguard/GuardCallback.java b/play-services-droidguard/core/src/main/java/org/microg/gms/droidguard/GuardCallback.java similarity index 100% rename from play-services-droidguard-core/src/main/java/org/microg/gms/droidguard/GuardCallback.java rename to play-services-droidguard/core/src/main/java/org/microg/gms/droidguard/GuardCallback.java diff --git a/play-services-droidguard-core/src/main/java/org/microg/gms/droidguard/MediaDrmLock.java b/play-services-droidguard/core/src/main/java/org/microg/gms/droidguard/MediaDrmLock.java similarity index 100% rename from play-services-droidguard-core/src/main/java/org/microg/gms/droidguard/MediaDrmLock.java rename to play-services-droidguard/core/src/main/java/org/microg/gms/droidguard/MediaDrmLock.java diff --git a/play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/BytesException.kt b/play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/BytesException.kt similarity index 100% rename from play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/BytesException.kt rename to play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/BytesException.kt diff --git a/play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/DgDatabaseHelper.kt b/play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/DgDatabaseHelper.kt similarity index 100% rename from play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/DgDatabaseHelper.kt rename to play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/DgDatabaseHelper.kt diff --git a/play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/DgpDatabaseHelper.kt b/play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/DgpDatabaseHelper.kt similarity index 100% rename from play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/DgpDatabaseHelper.kt rename to play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/DgpDatabaseHelper.kt diff --git a/play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardHandleImpl.kt b/play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardHandleImpl.kt similarity index 68% rename from play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardHandleImpl.kt rename to play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardHandleImpl.kt index 87a73f18e..d9487d1da 100644 --- a/play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardHandleImpl.kt +++ b/play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardHandleImpl.kt @@ -10,7 +10,6 @@ import android.content.Context import android.os.ConditionVariable import android.os.ParcelFileDescriptor import android.os.Parcelable -import android.util.Base64 import android.util.Log import com.google.android.gms.droidguard.internal.DroidGuardInitReply import com.google.android.gms.droidguard.internal.DroidGuardResultsRequest @@ -32,19 +31,21 @@ class DroidGuardHandleImpl(private val context: Context, private val packageName @SuppressLint("SetWorldReadable") override fun initWithRequest(flow: String?, request: DroidGuardResultsRequest?): DroidGuardInitReply { - Log.d(TAG, "initWithRequest($flow)") + Log.d(TAG, "initWithRequest($flow, $request)") this.flow = flow + var handleProxy: HandleProxy? = null try { - var handleProxy: HandleProxy? = null - // FIXME: Temporary disabled low latency handle -// if (flow !in NOT_LOW_LATENCY_FLOWS) { -// try { -// handleProxy = factory.createLowLatencyHandle(flow, callback, request) -// Log.d(TAG, "Using low-latency handle") -// } catch (e: Exception) { -// Log.w(TAG, e) -// } -// } + if (!LOW_LATENCY_ENABLED || flow in NOT_LOW_LATENCY_FLOWS) { + handleProxy = null + } else { + try { + handleProxy = factory.createLowLatencyHandle(flow, callback, request) + Log.d(TAG, "Using low-latency handle") + } catch (e: Exception) { + Log.w(TAG, e) + handleProxy = null + } + } if (handleProxy == null) { handleProxy = factory.createHandle(packageName, flow, callback, request) } @@ -53,24 +54,22 @@ class DroidGuardHandleImpl(private val context: Context, private val packageName } else { throw Exception("init failed") } - } catch (e: Throwable) { + } catch (e: Exception) { Log.w(TAG, "Error during handle init", e) - handleInitError = e + this.handleInitError = e } - condition.open() + this.condition.open() if (handleInitError == null) { try { - handleProxy?.let { handleProxy -> - val `object` = handleProxy.handle.javaClass.getDeclaredMethod("rb").invoke(handleProxy.handle) as? Parcelable? - if (`object` != null) { - val vmKey = handleProxy.vmKey - val theApk = factory.getTheApkFile(vmKey) - try { - theApk.setReadable(true, false) - return DroidGuardInitReply(ParcelFileDescriptor.open(theApk, ParcelFileDescriptor.MODE_READ_ONLY), `object`) - } catch (e: FileNotFoundException) { - throw Exception("Files for VM $vmKey not found on disk") - } + val `object` = handleProxy!!.handle.javaClass.getDeclaredMethod("rb").invoke(handleProxy.handle) as? Parcelable? + if (`object` != null) { + val vmKey = handleProxy.vmKey + val theApk = factory.getTheApkFile(vmKey) + try { + theApk.setReadable(true, false) + return DroidGuardInitReply(ParcelFileDescriptor.open(theApk, ParcelFileDescriptor.MODE_READ_ONLY), `object`) + } catch (e: FileNotFoundException) { + throw Exception("Files for VM $vmKey not found on disk") } } } catch (e: Exception) { @@ -81,8 +80,9 @@ class DroidGuardHandleImpl(private val context: Context, private val packageName return DroidGuardInitReply(null, null) } - override fun guard(map: MutableMap): ByteArray { - Log.d(TAG, "guard()") + override fun snapshot(map: MutableMap): ByteArray { + Log.d(TAG, "snapshot()") + condition.block() handleInitError?.let { return FallbackCreator.create(flow, context, map, it) } val handleProxy = this.handleProxy ?: return FallbackCreator.create(flow, context, map, IllegalStateException()) return try { @@ -110,6 +110,7 @@ class DroidGuardHandleImpl(private val context: Context, private val packageName companion object { private const val TAG = "GmsGuardHandleImpl" + private val LOW_LATENCY_ENABLED = false private val NOT_LOW_LATENCY_FLOWS = setOf("ad_attest", "attest", "checkin", "federatedMachineLearningReduced", "msa-f", "ad-event-attest-token") } } diff --git a/play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardPreferences.kt b/play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardPreferences.kt similarity index 100% rename from play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardPreferences.kt rename to play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardPreferences.kt diff --git a/play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardResultCreator.kt b/play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardResultCreator.kt similarity index 65% rename from play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardResultCreator.kt rename to play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardResultCreator.kt index 932b40731..9c42992b1 100644 --- a/play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardResultCreator.kt +++ b/play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardResultCreator.kt @@ -6,19 +6,18 @@ package org.microg.gms.droidguard.core import android.content.Context -import android.util.Base64 import com.android.volley.VolleyError import com.android.volley.toolbox.StringRequest import com.android.volley.toolbox.Volley +import com.google.android.gms.droidguard.DroidGuardClient +import com.google.android.gms.tasks.Task import com.google.android.gms.tasks.await -import org.microg.gms.droidguard.DroidGuardClient -import org.microg.gms.droidguard.DroidGuardClientImpl import kotlin.coroutines.resume import kotlin.coroutines.resumeWithException import kotlin.coroutines.suspendCoroutine interface DroidGuardResultCreator { - suspend fun getResult(flow: String, data: Map): ByteArray + suspend fun getResults(flow: String, data: Map): String companion object { fun getInstance(context: Context): DroidGuardResultCreator = @@ -31,8 +30,8 @@ interface DroidGuardResultCreator { throw RuntimeException("DroidGuard disabled") } - suspend fun getResult(context: Context, flow: String, data: Map): ByteArray = - getInstance(context).getResult(flow, data) + suspend fun getResults(context: Context, flow: String, data: Map): String = + getInstance(context).getResults(flow, data) } } @@ -41,9 +40,9 @@ private class NetworkDroidGuardResultCreator(private val context: Context) : Dro private val url: String get() = DroidGuardPreferences.getNetworkServerUrl(context) ?: throw IllegalStateException("Network URL required") - override suspend fun getResult(flow: String, data: Map): ByteArray = suspendCoroutine { continuation -> + override suspend fun getResults(flow: String, data: Map): String = suspendCoroutine { continuation -> queue.add(PostParamsStringRequest("$url?flow=$flow", data, { - continuation.resume(Base64.decode(it, Base64.NO_WRAP + Base64.NO_PADDING + Base64.URL_SAFE)) + continuation.resume(it) }, { continuation.resumeWithException(it.cause ?: it) })) @@ -57,18 +56,7 @@ private class NetworkDroidGuardResultCreator(private val context: Context) : Dro } private class EmbeddedDroidGuardResultCreator(private val context: Context) : DroidGuardResultCreator { - private val client: DroidGuardClient by lazy { DroidGuardClientImpl(context) } - override suspend fun getResult(flow: String, data: Map): ByteArray { - val handle = client.getHandle().await() - try { - handle.init(flow) - return handle.guard(data) - } finally { - try { - handle.close() - } catch (e: Exception) { - // ignore - } - } + override suspend fun getResults(flow: String, data: Map): String { + return DroidGuardClient.getResults(context, flow, data).await() } } diff --git a/play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardService.kt b/play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardService.kt similarity index 100% rename from play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardService.kt rename to play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardService.kt diff --git a/play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardServiceBroker.kt b/play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardServiceBroker.kt similarity index 100% rename from play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardServiceBroker.kt rename to play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardServiceBroker.kt diff --git a/play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardServiceImpl.kt b/play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardServiceImpl.kt similarity index 100% rename from play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardServiceImpl.kt rename to play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/DroidGuardServiceImpl.kt diff --git a/play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/FallbackCreator.kt b/play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/FallbackCreator.kt similarity index 100% rename from play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/FallbackCreator.kt rename to play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/FallbackCreator.kt diff --git a/play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/HandleProxy.kt b/play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/HandleProxy.kt similarity index 100% rename from play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/HandleProxy.kt rename to play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/HandleProxy.kt diff --git a/play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/HandleProxyFactory.kt b/play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/HandleProxyFactory.kt similarity index 100% rename from play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/HandleProxyFactory.kt rename to play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/HandleProxyFactory.kt diff --git a/play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/SignatureVerifier.kt b/play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/SignatureVerifier.kt similarity index 100% rename from play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/SignatureVerifier.kt rename to play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/SignatureVerifier.kt diff --git a/play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/VersionUtil.kt b/play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/VersionUtil.kt similarity index 100% rename from play-services-droidguard-core/src/main/kotlin/org/microg/gms/droidguard/core/VersionUtil.kt rename to play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/VersionUtil.kt diff --git a/play-services-droidguard-core-ui/src/main/kotlin/org/microg/gms/droidguard/core/ui/ContainedEditTextPreference.kt b/play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/ui/ContainedEditTextPreference.kt similarity index 98% rename from play-services-droidguard-core-ui/src/main/kotlin/org/microg/gms/droidguard/core/ui/ContainedEditTextPreference.kt rename to play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/ui/ContainedEditTextPreference.kt index a91434c74..ad471c716 100644 --- a/play-services-droidguard-core-ui/src/main/kotlin/org/microg/gms/droidguard/core/ui/ContainedEditTextPreference.kt +++ b/play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/ui/ContainedEditTextPreference.kt @@ -13,6 +13,7 @@ import android.widget.EditText import androidx.core.widget.addTextChangedListener import androidx.preference.Preference import androidx.preference.PreferenceViewHolder +import org.microg.gms.droidguard.core.R class ContainedEditTextPreference : Preference { constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes) diff --git a/play-services-droidguard-core-ui/src/main/kotlin/org/microg/gms/droidguard/core/ui/DroidGuardPreferencesFragment.kt b/play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/ui/DroidGuardPreferencesFragment.kt similarity index 90% rename from play-services-droidguard-core-ui/src/main/kotlin/org/microg/gms/droidguard/core/ui/DroidGuardPreferencesFragment.kt rename to play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/ui/DroidGuardPreferencesFragment.kt index a52339da7..69bcfb609 100644 --- a/play-services-droidguard-core-ui/src/main/kotlin/org/microg/gms/droidguard/core/ui/DroidGuardPreferencesFragment.kt +++ b/play-services-droidguard/core/src/main/kotlin/org/microg/gms/droidguard/core/ui/DroidGuardPreferencesFragment.kt @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2021 microG Project Team + * SPDX-FileCopyrightText: 2022 microG Project Team * SPDX-License-Identifier: Apache-2.0 */ @@ -12,8 +12,9 @@ import androidx.preference.PreferenceFragmentCompat import org.microg.gms.droidguard.core.DroidGuardPreferences import org.microg.gms.droidguard.core.DroidGuardPreferences.Mode.Embedded import org.microg.gms.droidguard.core.DroidGuardPreferences.Mode.Network -import org.microg.gms.droidguard.core.ui.R.drawable.ic_radio_checked -import org.microg.gms.droidguard.core.ui.R.drawable.ic_radio_unchecked +import org.microg.gms.droidguard.core.R +import org.microg.gms.droidguard.core.R.drawable.ic_radio_checked +import org.microg.gms.droidguard.core.R.drawable.ic_radio_unchecked class DroidGuardPreferencesFragment : PreferenceFragmentCompat() { private lateinit var modeEmbedded: Preference diff --git a/play-services-droidguard-core-proto/src/main/proto/droidguard.proto b/play-services-droidguard/core/src/main/proto/droidguard.proto similarity index 100% rename from play-services-droidguard-core-proto/src/main/proto/droidguard.proto rename to play-services-droidguard/core/src/main/proto/droidguard.proto diff --git a/play-services-droidguard-core-ui/src/main/res/layout/preference_edit_widget.xml b/play-services-droidguard/core/src/main/res/layout/preference_edit_widget.xml similarity index 100% rename from play-services-droidguard-core-ui/src/main/res/layout/preference_edit_widget.xml rename to play-services-droidguard/core/src/main/res/layout/preference_edit_widget.xml diff --git a/play-services-droidguard-core-ui/src/main/res/layout/preference_material_with_widget_below.xml b/play-services-droidguard/core/src/main/res/layout/preference_material_with_widget_below.xml similarity index 100% rename from play-services-droidguard-core-ui/src/main/res/layout/preference_material_with_widget_below.xml rename to play-services-droidguard/core/src/main/res/layout/preference_material_with_widget_below.xml diff --git a/play-services-droidguard-core-ui/src/main/res/values-be/strings.xml b/play-services-droidguard/core/src/main/res/values-be/strings.xml similarity index 100% rename from play-services-droidguard-core-ui/src/main/res/values-be/strings.xml rename to play-services-droidguard/core/src/main/res/values-be/strings.xml diff --git a/play-services-droidguard-core-ui/src/main/res/values-ru/strings.xml b/play-services-droidguard/core/src/main/res/values-ru/strings.xml similarity index 100% rename from play-services-droidguard-core-ui/src/main/res/values-ru/strings.xml rename to play-services-droidguard/core/src/main/res/values-ru/strings.xml diff --git a/play-services-droidguard-core-ui/src/main/res/values-zh-rCN/strings.xml b/play-services-droidguard/core/src/main/res/values-zh-rCN/strings.xml similarity index 100% rename from play-services-droidguard-core-ui/src/main/res/values-zh-rCN/strings.xml rename to play-services-droidguard/core/src/main/res/values-zh-rCN/strings.xml diff --git a/play-services-droidguard-core-ui/src/main/res/values/strings.xml b/play-services-droidguard/core/src/main/res/values/strings.xml similarity index 100% rename from play-services-droidguard-core-ui/src/main/res/values/strings.xml rename to play-services-droidguard/core/src/main/res/values/strings.xml diff --git a/play-services-droidguard-core-ui/src/main/res/xml/preferences_droidguard.xml b/play-services-droidguard/core/src/main/res/xml/preferences_droidguard.xml similarity index 100% rename from play-services-droidguard-core-ui/src/main/res/xml/preferences_droidguard.xml rename to play-services-droidguard/core/src/main/res/xml/preferences_droidguard.xml diff --git a/play-services-droidguard-api/src/main/aidl/com/google/android/gms/droidguard/internal/DroidGuardInitReply.aidl b/play-services-droidguard/src/main/aidl/com/google/android/gms/droidguard/internal/DroidGuardInitReply.aidl similarity index 100% rename from play-services-droidguard-api/src/main/aidl/com/google/android/gms/droidguard/internal/DroidGuardInitReply.aidl rename to play-services-droidguard/src/main/aidl/com/google/android/gms/droidguard/internal/DroidGuardInitReply.aidl diff --git a/play-services-droidguard-api/src/main/aidl/com/google/android/gms/droidguard/internal/DroidGuardResultsRequest.aidl b/play-services-droidguard/src/main/aidl/com/google/android/gms/droidguard/internal/DroidGuardResultsRequest.aidl similarity index 100% rename from play-services-droidguard-api/src/main/aidl/com/google/android/gms/droidguard/internal/DroidGuardResultsRequest.aidl rename to play-services-droidguard/src/main/aidl/com/google/android/gms/droidguard/internal/DroidGuardResultsRequest.aidl diff --git a/play-services-droidguard-api/src/main/aidl/com/google/android/gms/droidguard/internal/IDroidGuardCallbacks.aidl b/play-services-droidguard/src/main/aidl/com/google/android/gms/droidguard/internal/IDroidGuardCallbacks.aidl similarity index 100% rename from play-services-droidguard-api/src/main/aidl/com/google/android/gms/droidguard/internal/IDroidGuardCallbacks.aidl rename to play-services-droidguard/src/main/aidl/com/google/android/gms/droidguard/internal/IDroidGuardCallbacks.aidl diff --git a/play-services-droidguard-api/src/main/aidl/com/google/android/gms/droidguard/internal/IDroidGuardHandle.aidl b/play-services-droidguard/src/main/aidl/com/google/android/gms/droidguard/internal/IDroidGuardHandle.aidl similarity index 75% rename from play-services-droidguard-api/src/main/aidl/com/google/android/gms/droidguard/internal/IDroidGuardHandle.aidl rename to play-services-droidguard/src/main/aidl/com/google/android/gms/droidguard/internal/IDroidGuardHandle.aidl index 649f2fd8a..b47260ca9 100644 --- a/play-services-droidguard-api/src/main/aidl/com/google/android/gms/droidguard/internal/IDroidGuardHandle.aidl +++ b/play-services-droidguard/src/main/aidl/com/google/android/gms/droidguard/internal/IDroidGuardHandle.aidl @@ -4,10 +4,8 @@ import com.google.android.gms.droidguard.internal.DroidGuardInitReply; import com.google.android.gms.droidguard.internal.DroidGuardResultsRequest; interface IDroidGuardHandle { - void init(String flow) = 0; + oneway void init(String flow) = 0; + byte[] snapshot(in Map map) = 1; + oneway void close() = 2; DroidGuardInitReply initWithRequest(String flow, in DroidGuardResultsRequest request) = 4; - - byte[] guard(in Map map) = 1; - - void close() = 2; } diff --git a/play-services-droidguard-api/src/main/aidl/com/google/android/gms/droidguard/internal/IDroidGuardService.aidl b/play-services-droidguard/src/main/aidl/com/google/android/gms/droidguard/internal/IDroidGuardService.aidl similarity index 100% rename from play-services-droidguard-api/src/main/aidl/com/google/android/gms/droidguard/internal/IDroidGuardService.aidl rename to play-services-droidguard/src/main/aidl/com/google/android/gms/droidguard/internal/IDroidGuardService.aidl diff --git a/play-services-droidguard/src/main/java/com/google/android/gms/droidguard/DroidGuard.java b/play-services-droidguard/src/main/java/com/google/android/gms/droidguard/DroidGuard.java new file mode 100644 index 000000000..3646353ce --- /dev/null +++ b/play-services-droidguard/src/main/java/com/google/android/gms/droidguard/DroidGuard.java @@ -0,0 +1,16 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.droidguard; + +import android.content.Context; + +import org.microg.gms.droidguard.DroidGuardClientImpl; + +public class DroidGuard { + public static DroidGuardClient getClient(Context context) { + return new DroidGuardClientImpl(context); + } +} diff --git a/play-services-droidguard/src/main/java/com/google/android/gms/droidguard/DroidGuardClient.java b/play-services-droidguard/src/main/java/com/google/android/gms/droidguard/DroidGuardClient.java new file mode 100644 index 000000000..6a0c84e26 --- /dev/null +++ b/play-services-droidguard/src/main/java/com/google/android/gms/droidguard/DroidGuardClient.java @@ -0,0 +1,27 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.droidguard; + +import android.content.Context; + +import com.google.android.gms.droidguard.internal.DroidGuardResultsRequest; +import com.google.android.gms.tasks.Task; + +import java.util.Map; + +public interface DroidGuardClient { + Task init(String flow, DroidGuardResultsRequest request); + + Task getResults(String flow, Map data, DroidGuardResultsRequest request); + + static Task init(Context context, String flow) { + return DroidGuard.getClient(context).init(flow, null); + } + + static Task getResults(Context context, String flow, Map data) { + return DroidGuard.getClient(context).getResults(flow, data, null); + } +} diff --git a/play-services-droidguard/src/main/java/com/google/android/gms/droidguard/DroidGuardHandle.java b/play-services-droidguard/src/main/java/com/google/android/gms/droidguard/DroidGuardHandle.java new file mode 100644 index 000000000..d9e6d69fe --- /dev/null +++ b/play-services-droidguard/src/main/java/com/google/android/gms/droidguard/DroidGuardHandle.java @@ -0,0 +1,16 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.droidguard; + +import java.util.Map; + +public interface DroidGuardHandle { + String snapshot(Map data); + + boolean isOpened(); + + void close(); +} diff --git a/play-services-droidguard-api/src/main/java/com/google/android/gms/droidguard/internal/DroidGuardInitReply.java b/play-services-droidguard/src/main/java/com/google/android/gms/droidguard/internal/DroidGuardInitReply.java similarity index 100% rename from play-services-droidguard-api/src/main/java/com/google/android/gms/droidguard/internal/DroidGuardInitReply.java rename to play-services-droidguard/src/main/java/com/google/android/gms/droidguard/internal/DroidGuardInitReply.java diff --git a/play-services-droidguard-api/src/main/java/com/google/android/gms/droidguard/internal/DroidGuardResultsRequest.java b/play-services-droidguard/src/main/java/com/google/android/gms/droidguard/internal/DroidGuardResultsRequest.java similarity index 100% rename from play-services-droidguard-api/src/main/java/com/google/android/gms/droidguard/internal/DroidGuardResultsRequest.java rename to play-services-droidguard/src/main/java/com/google/android/gms/droidguard/internal/DroidGuardResultsRequest.java diff --git a/play-services-droidguard/src/main/java/org/microg/gms/droidguard/DroidGuardApiClient.java b/play-services-droidguard/src/main/java/org/microg/gms/droidguard/DroidGuardApiClient.java new file mode 100644 index 000000000..593137f2a --- /dev/null +++ b/play-services-droidguard/src/main/java/org/microg/gms/droidguard/DroidGuardApiClient.java @@ -0,0 +1,81 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.microg.gms.droidguard; + +import android.content.Context; +import android.os.Bundle; +import android.os.Handler; +import android.os.HandlerThread; +import android.os.IBinder; +import android.os.Looper; +import android.util.Log; + +import com.google.android.gms.droidguard.DroidGuardHandle; +import com.google.android.gms.droidguard.internal.DroidGuardInitReply; +import com.google.android.gms.droidguard.internal.DroidGuardResultsRequest; +import com.google.android.gms.droidguard.internal.IDroidGuardHandle; +import com.google.android.gms.droidguard.internal.IDroidGuardService; + +import org.microg.gms.common.GmsClient; +import org.microg.gms.common.GmsService; +import org.microg.gms.common.api.ConnectionCallbacks; +import org.microg.gms.common.api.OnConnectionFailedListener; + +public class DroidGuardApiClient extends GmsClient { + private static final String TAG = "DroidGuardApiClient"; + private final Context context; + private int openHandles = 0; + private Handler handler; + + public DroidGuardApiClient(Context context, ConnectionCallbacks callbacks, OnConnectionFailedListener connectionFailedListener) { + super(context, callbacks, connectionFailedListener, GmsService.DROIDGUARD.ACTION); + this.context = context; + serviceId = GmsService.DROIDGUARD.SERVICE_ID; + + HandlerThread thread = new HandlerThread("DG"); + thread.start(); + handler = new Handler(thread.getLooper()); + } + + public DroidGuardHandle openHandle(String flow, DroidGuardResultsRequest request) { + try { + IDroidGuardHandle handle = getServiceInterface().getHandle(); + request.setOpenHandles(openHandles); + DroidGuardInitReply reply = handle.initWithRequest(flow, request); + if (reply == null) { + handle.init(flow); + } + if (reply != null) { + if (reply.pfd != null && reply.object != null) { + Log.w(TAG, "DroidGuardInitReply suggests additional actions in main thread"); + Bundle bundle = (Bundle) reply.object; + if (bundle != null) { + for (String key : bundle.keySet()) { + Log.d(TAG, "reply.object[" + key + "] = " + bundle.get(key)); + } + } + } + } + openHandles++; + return new DroidGuardHandleImpl(this, request, handle); + } catch (Exception e) { + return new DroidGuardHandleImpl(this, request, "Initialization failed: " + e); + } + } + + public void runOnHandler(Runnable runnable) { + if (Looper.myLooper() == handler.getLooper()) { + runnable.run(); + } else { + handler.post(runnable); + } + } + + @Override + protected IDroidGuardService interfaceFromBinder(IBinder binder) { + return IDroidGuardService.Stub.asInterface(binder); + } +} diff --git a/play-services-droidguard/src/main/java/org/microg/gms/droidguard/DroidGuardClientImpl.java b/play-services-droidguard/src/main/java/org/microg/gms/droidguard/DroidGuardClientImpl.java new file mode 100644 index 000000000..f4e064d6b --- /dev/null +++ b/play-services-droidguard/src/main/java/org/microg/gms/droidguard/DroidGuardClientImpl.java @@ -0,0 +1,44 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.microg.gms.droidguard; + +import android.content.Context; + +import com.google.android.gms.common.api.Api; +import com.google.android.gms.common.api.GoogleApi; +import com.google.android.gms.droidguard.DroidGuardClient; +import com.google.android.gms.droidguard.DroidGuardHandle; +import com.google.android.gms.droidguard.internal.DroidGuardResultsRequest; +import com.google.android.gms.tasks.Task; + +import org.microg.gms.common.api.ReturningGoogleApiCall; + +import java.util.Map; + +public class DroidGuardClientImpl extends GoogleApi implements DroidGuardClient { + private static final Api API = new Api<>((options, context, looper, clientSettings, callbacks, connectionFailedListener) -> new DroidGuardApiClient(context, callbacks, connectionFailedListener)); + + public DroidGuardClientImpl(Context context) { + super(context, API); + } + + @Override + public Task init(String flow, DroidGuardResultsRequest request) { + DroidGuardResultsRequest finalRequest = request != null ? request : new DroidGuardResultsRequest(); + return scheduleTask((ReturningGoogleApiCall) client -> client.openHandle(flow, finalRequest)); + } + + @Override + public Task getResults(String flow, Map data, DroidGuardResultsRequest request) { + DroidGuardResultsRequest finalRequest = request != null ? request : new DroidGuardResultsRequest(); + return scheduleTask((ReturningGoogleApiCall) client -> { + DroidGuardHandle handle = client.openHandle(flow, finalRequest); + String results = handle.snapshot(data); + handle.close(); + return results; + }); + } +} diff --git a/play-services-droidguard/src/main/java/org/microg/gms/droidguard/DroidGuardHandleImpl.java b/play-services-droidguard/src/main/java/org/microg/gms/droidguard/DroidGuardHandleImpl.java new file mode 100644 index 000000000..e99be7a3d --- /dev/null +++ b/play-services-droidguard/src/main/java/org/microg/gms/droidguard/DroidGuardHandleImpl.java @@ -0,0 +1,88 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.microg.gms.droidguard; + +import android.util.Log; + +import com.google.android.gms.droidguard.DroidGuardHandle; +import com.google.android.gms.droidguard.internal.DroidGuardResultsRequest; +import com.google.android.gms.droidguard.internal.IDroidGuardHandle; + +import java.util.Map; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.TimeUnit; + +public class DroidGuardHandleImpl implements DroidGuardHandle { + private static final String TAG = "DroidGuardHandle"; + private final DroidGuardApiClient apiClient; + private final DroidGuardResultsRequest request; + private IDroidGuardHandle handle; + private byte[] error; + + public DroidGuardHandleImpl(DroidGuardApiClient apiClient, DroidGuardResultsRequest request, IDroidGuardHandle handle) { + this.apiClient = apiClient; + this.request = request; + this.handle = handle; + } + + public DroidGuardHandleImpl(DroidGuardApiClient apiClient, DroidGuardResultsRequest request, String error) { + this.apiClient = apiClient; + this.request = request; + this.error = Utils.getErrorBytes(error); + } + + @Override + public String snapshot(Map data) { + byte[] result; + if (error != null) { + result = error; + } else { + ArrayBlockingQueue resultQueue = new ArrayBlockingQueue<>(1); + apiClient.runOnHandler(() -> { + byte[] innerResult; + try { + innerResult = handle.snapshot(data); + if (innerResult == null) { + error = Utils.getErrorBytes("Received null"); + innerResult = error; + } + } catch (Exception e) { + error = Utils.getErrorBytes("Snapshot failed: " + e); + innerResult = error; + } + resultQueue.offer(innerResult); + }); + try { + result = resultQueue.poll(request.getTimeoutMillis(), TimeUnit.MILLISECONDS); + if (result == null) { + result = Utils.getErrorBytes("Snapshot timeout: " + request.getTimeoutMillis() + " ms"); + } + } catch (InterruptedException e) { + result = Utils.getErrorBytes("Results transfer failed: " + e); + } + } + return Utils.toBase64(result); + } + + @Override + public boolean isOpened() { + return handle != null && error == null && handle.asBinder().pingBinder(); + } + + @Override + public void close() { + apiClient.runOnHandler(() -> { + if (handle != null) { + try { + handle.close(); + } catch (Exception e) { + Log.w(TAG, "Error while closing handle."); + } + handle = null; + } + }); + } +} diff --git a/play-services-droidguard/src/main/java/org/microg/gms/droidguard/Utils.java b/play-services-droidguard/src/main/java/org/microg/gms/droidguard/Utils.java new file mode 100644 index 000000000..5d5e0087a --- /dev/null +++ b/play-services-droidguard/src/main/java/org/microg/gms/droidguard/Utils.java @@ -0,0 +1,18 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.microg.gms.droidguard; + +import android.util.Base64; + +public class Utils { + public static byte[] getErrorBytes(String s) { + return ("ERROR : " + s).getBytes(); + } + + public static String toBase64(byte[] result) { + return Base64.encodeToString(result, Base64.URL_SAFE + Base64.NO_WRAP + Base64.NO_PADDING); + } +} diff --git a/play-services-droidguard/src/main/kotlin/org/microg/gms/droidguard/DroidGuardApiClient.kt b/play-services-droidguard/src/main/kotlin/org/microg/gms/droidguard/DroidGuardApiClient.kt deleted file mode 100644 index a9aa7a857..000000000 --- a/play-services-droidguard/src/main/kotlin/org/microg/gms/droidguard/DroidGuardApiClient.kt +++ /dev/null @@ -1,25 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2020, microG Project Team - * SPDX-License-Identifier: Apache-2.0 - */ - -package org.microg.gms.droidguard - -import android.content.Context -import android.os.IBinder -import com.google.android.gms.droidguard.internal.IDroidGuardHandle -import com.google.android.gms.droidguard.internal.IDroidGuardService -import org.microg.gms.common.GmsClient -import org.microg.gms.common.GmsService -import org.microg.gms.common.api.ConnectionCallbacks -import org.microg.gms.common.api.OnConnectionFailedListener - -class DroidGuardApiClient(context: Context, connectionCallbacks: ConnectionCallbacks, onConnectionFailedListener: OnConnectionFailedListener) : GmsClient(context, connectionCallbacks, onConnectionFailedListener, GmsService.DROIDGUARD.ACTION) { - init { - serviceId = GmsService.DROIDGUARD.SERVICE_ID - } - - override fun interfaceFromBinder(binder: IBinder): IDroidGuardService = IDroidGuardService.Stub.asInterface(binder) - - fun getHandle() = serviceInterface.handle -} diff --git a/play-services-droidguard/src/main/kotlin/org/microg/gms/droidguard/DroidGuardClient.kt b/play-services-droidguard/src/main/kotlin/org/microg/gms/droidguard/DroidGuardClient.kt deleted file mode 100644 index a5b8f3d4e..000000000 --- a/play-services-droidguard/src/main/kotlin/org/microg/gms/droidguard/DroidGuardClient.kt +++ /dev/null @@ -1,12 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2020, microG Project Team - * SPDX-License-Identifier: Apache-2.0 - */ - -package org.microg.gms.droidguard - -import com.google.android.gms.tasks.Task - -interface DroidGuardClient { - fun getHandle(): Task -} diff --git a/play-services-droidguard/src/main/kotlin/org/microg/gms/droidguard/DroidGuardClientImpl.kt b/play-services-droidguard/src/main/kotlin/org/microg/gms/droidguard/DroidGuardClientImpl.kt deleted file mode 100644 index d8af0b6de..000000000 --- a/play-services-droidguard/src/main/kotlin/org/microg/gms/droidguard/DroidGuardClientImpl.kt +++ /dev/null @@ -1,32 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2020, microG Project Team - * SPDX-License-Identifier: Apache-2.0 - */ - -package org.microg.gms.droidguard - -import android.content.Context -import android.os.Looper -import com.google.android.gms.common.api.Api -import com.google.android.gms.common.api.Api.ApiOptions.NoOptions -import com.google.android.gms.common.api.GoogleApi -import com.google.android.gms.tasks.Task -import org.microg.gms.common.api.ApiClientSettings -import org.microg.gms.common.api.ConnectionCallbacks -import org.microg.gms.common.api.OnConnectionFailedListener - -class DroidGuardClientImpl(context: Context) : GoogleApi(context, API), DroidGuardClient { - companion object { - private val API = Api { _: NoOptions?, context: Context, _: Looper?, _: ApiClientSettings?, callbacks: ConnectionCallbacks, connectionFailedListener: OnConnectionFailedListener -> DroidGuardApiClient(context, callbacks, connectionFailedListener) } - } - - override fun getHandle(): Task { - return scheduleTask { client: DroidGuardApiClient, completionSource -> - try { - completionSource.setResult(DroidGuardHandle(client.getHandle())) - } catch (e: Exception) { - completionSource.setException(e) - } - } - } -} diff --git a/play-services-droidguard/src/main/kotlin/org/microg/gms/droidguard/DroidGuardHandle.kt b/play-services-droidguard/src/main/kotlin/org/microg/gms/droidguard/DroidGuardHandle.kt deleted file mode 100644 index 3335a40a0..000000000 --- a/play-services-droidguard/src/main/kotlin/org/microg/gms/droidguard/DroidGuardHandle.kt +++ /dev/null @@ -1,70 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2020, microG Project Team - * SPDX-License-Identifier: Apache-2.0 - */ - -package org.microg.gms.droidguard - -import android.os.Bundle -import android.os.ParcelFileDescriptor -import android.util.Log -import com.google.android.gms.droidguard.internal.DroidGuardResultsRequest -import com.google.android.gms.droidguard.internal.IDroidGuardHandle - -class DroidGuardHandle(private val handle: IDroidGuardHandle) { - private var state = 0 - var fd: ParcelFileDescriptor? = null - - fun init(flow: String) { - if (state != 0) throw IllegalStateException("init() already called") - try { - val reply = handle.initWithRequest(flow, DroidGuardResultsRequest().setOpenHandles(openHandles++).also { fd?.let { fd -> it.fd = fd } }) - if (reply != null) { - if (reply.pfd != null && reply.`object` != null) { - Log.w(TAG, "DroidGuardInitReply suggests additional actions in main thread") - val bundle = reply.`object` as? Bundle - if (bundle != null) { - for (key in bundle.keySet()) { - Log.d(TAG, "reply.object[$key] = ${bundle[key]}") - } - } - } - } - state = 1 - } catch (e: Exception) { - state = -1 - throw e - } - } - - fun guard(map: Map): ByteArray { - if (state != 1) throw IllegalStateException("init() must be called before guard()") - try { - return handle.guard(map) - } catch (e: Exception) { - state = -1 - throw e - } - } - - fun close() { - if (state != 1) throw IllegalStateException("init() must be called before close()") - try { - handle.close() - openHandles-- - state = 2 - } catch (e: Exception) { - state = -1 - throw e - } - } - - fun finalize() { - if (state == 1) close() - } - - companion object { - private const val TAG = "DroidGuardHandler" - private var openHandles = 0 - } -} diff --git a/play-services-fido-api/src/main/java/org/microg/gms/fido/api/FidoConstants.java b/play-services-fido-api/src/main/java/org/microg/gms/fido/api/FidoConstants.java deleted file mode 100644 index c03055823..000000000 --- a/play-services-fido-api/src/main/java/org/microg/gms/fido/api/FidoConstants.java +++ /dev/null @@ -1,13 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2022 microG Project Team - * SPDX-License-Identifier: Apache-2.0 - */ - -package org.microg.gms.fido.api; - -public class FidoConstants { - public static final String FIDO2_KEY_CREDENTIAL_EXTRA = "FIDO2_CREDENTIAL_EXTRA"; - public static final String FIDO2_KEY_ERROR_EXTRA = "FIDO2_ERROR_EXTRA"; - public static final String FIDO2_KEY_RESPONSE_EXTRA = "FIDO2_RESPONSE_EXTRA"; - public static final String KEY_RESPONSE_EXTRA = "RESPONSE_EXTRA"; -} diff --git a/play-services-fido/build.gradle b/play-services-fido/build.gradle index 4b6532758..9fadc6648 100644 --- a/play-services-fido/build.gradle +++ b/play-services-fido/build.gradle @@ -28,8 +28,6 @@ apply from: '../gradle/publish-android.gradle' description = 'microG implementation of play-services-fido' dependencies { - api project(':play-services-fido-api') - // Dependencies from play-services-fido:18.1.0 api project(':play-services-base') api project(':play-services-basement') diff --git a/play-services-fido-core/build.gradle b/play-services-fido/core/build.gradle similarity index 95% rename from play-services-fido-core/build.gradle rename to play-services-fido/core/build.gradle index 76c6199d8..b8414fb45 100644 --- a/play-services-fido-core/build.gradle +++ b/play-services-fido/core/build.gradle @@ -10,7 +10,7 @@ apply plugin: 'maven-publish' apply plugin: 'signing' dependencies { - api project(':play-services-fido-api') + api project(':play-services-fido') implementation project(':play-services-base-core') implementation project(':play-services-safetynet') @@ -67,6 +67,6 @@ android { } } -apply from: '../gradle/publish-android.gradle' +apply from: '../../gradle/publish-android.gradle' description = 'microG service implementation for play-services-fido' diff --git a/play-services-fido-core/src/main/AndroidManifest.xml b/play-services-fido/core/src/main/AndroidManifest.xml similarity index 100% rename from play-services-fido-core/src/main/AndroidManifest.xml rename to play-services-fido/core/src/main/AndroidManifest.xml diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/Database.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/Database.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/Database.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/Database.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/RequestHandling.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/RequestHandling.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/RequestHandling.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/RequestHandling.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/privileged/Fido2PrivilegedService.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/privileged/Fido2PrivilegedService.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/privileged/Fido2PrivilegedService.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/privileged/Fido2PrivilegedService.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/AndroidKeyAttestationObject.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/AndroidKeyAttestationObject.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/AndroidKeyAttestationObject.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/AndroidKeyAttestationObject.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/AndroidSafetyNetAttestationObject.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/AndroidSafetyNetAttestationObject.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/AndroidSafetyNetAttestationObject.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/AndroidSafetyNetAttestationObject.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/AttestationObject.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/AttestationObject.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/AttestationObject.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/AttestationObject.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/AttestedCredentialData.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/AttestedCredentialData.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/AttestedCredentialData.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/AttestedCredentialData.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/AuthenticatorData.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/AuthenticatorData.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/AuthenticatorData.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/AuthenticatorData.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/Cbor.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/Cbor.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/Cbor.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/Cbor.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/CoseKey.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/CoseKey.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/CoseKey.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/CoseKey.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/CredentialId.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/CredentialId.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/CredentialId.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/CredentialId.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/FidoU2fAttestationObject.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/FidoU2fAttestationObject.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/FidoU2fAttestationObject.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/FidoU2fAttestationObject.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/NoneAttestationObject.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/NoneAttestationObject.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/NoneAttestationObject.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/NoneAttestationObject.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/Apdu.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/Apdu.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/Apdu.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/Apdu.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/AuthenticatorGetAssertion.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/AuthenticatorGetAssertion.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/AuthenticatorGetAssertion.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/AuthenticatorGetAssertion.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/AuthenticatorGetInfo.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/AuthenticatorGetInfo.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/AuthenticatorGetInfo.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/AuthenticatorGetInfo.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/AuthenticatorMakeCredential.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/AuthenticatorMakeCredential.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/AuthenticatorMakeCredential.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/AuthenticatorMakeCredential.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/Ctap1Command.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/Ctap1Command.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/Ctap1Command.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/Ctap1Command.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/Ctap2Command.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/Ctap2Command.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/Ctap2Command.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/Ctap2Command.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/U2fAuthentication.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/U2fAuthentication.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/U2fAuthentication.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/U2fAuthentication.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/U2fRegistration.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/U2fRegistration.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/U2fRegistration.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/protocol/msgs/U2fRegistration.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/CtapConnection.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/CtapConnection.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/CtapConnection.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/CtapConnection.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/Transport.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/Transport.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/Transport.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/Transport.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/TransportHandler.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/TransportHandler.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/TransportHandler.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/TransportHandler.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/bluetooth/BluetoothTransportHandler.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/bluetooth/BluetoothTransportHandler.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/bluetooth/BluetoothTransportHandler.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/bluetooth/BluetoothTransportHandler.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/nfc/CtapNfcConnection.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/nfc/CtapNfcConnection.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/nfc/CtapNfcConnection.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/nfc/CtapNfcConnection.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/nfc/NfcTransportHandler.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/nfc/NfcTransportHandler.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/nfc/NfcTransportHandler.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/nfc/NfcTransportHandler.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/screenlock/ScreenLockCredentialStore.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/screenlock/ScreenLockCredentialStore.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/screenlock/ScreenLockCredentialStore.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/screenlock/ScreenLockCredentialStore.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/screenlock/ScreenLockTransportHandler.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/screenlock/ScreenLockTransportHandler.kt similarity index 98% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/screenlock/ScreenLockTransportHandler.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/screenlock/ScreenLockTransportHandler.kt index 7cc5141f9..9bfbfb897 100644 --- a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/screenlock/ScreenLockTransportHandler.kt +++ b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/screenlock/ScreenLockTransportHandler.kt @@ -13,11 +13,10 @@ import androidx.biometric.BiometricPrompt import androidx.core.content.getSystemService import androidx.fragment.app.FragmentActivity import com.google.android.gms.fido.fido2.api.common.* -import com.google.android.gms.fido.fido2.api.common.AttestationConveyancePreference.NONE import com.google.android.gms.safetynet.SafetyNet import com.google.android.gms.tasks.await import kotlinx.coroutines.suspendCancellableCoroutine -import org.microg.gms.basement.BuildConfig +import org.microg.gms.common.Constants import org.microg.gms.fido.core.* import org.microg.gms.fido.core.protocol.* import org.microg.gms.fido.core.transport.Transport @@ -180,7 +179,7 @@ class ScreenLockTransportHandler(private val activity: FragmentActivity, callbac ).await() return AndroidSafetyNetAttestationObject( authenticatorData, - BuildConfig.VERSION_CODE.toString(), + Constants.GMS_VERSION_CODE.toString(), response.jwsResult.toByteArray() ) } diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/UsbDevicePermissionManager.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/UsbDevicePermissionManager.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/UsbDevicePermissionManager.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/UsbDevicePermissionManager.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/UsbTransportHandler.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/UsbTransportHandler.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/UsbTransportHandler.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/UsbTransportHandler.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/ctaphid/CtapHidConnection.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/ctaphid/CtapHidConnection.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/ctaphid/CtapHidConnection.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/ctaphid/CtapHidConnection.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/ctaphid/CtapHidMessage.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/ctaphid/CtapHidMessage.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/ctaphid/CtapHidMessage.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/ctaphid/CtapHidMessage.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/ctaphid/CtapHidPacket.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/ctaphid/CtapHidPacket.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/ctaphid/CtapHidPacket.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/ctaphid/CtapHidPacket.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/ctaphid/CtapHidRequest.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/ctaphid/CtapHidRequest.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/ctaphid/CtapHidRequest.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/ctaphid/CtapHidRequest.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/ctaphid/CtapHidResponse.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/ctaphid/CtapHidResponse.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/ctaphid/CtapHidResponse.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/ctaphid/CtapHidResponse.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/extensions.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/extensions.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/extensions.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/transport/usb/extensions.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/ui/AuthenticatorActivity.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/ui/AuthenticatorActivity.kt similarity index 99% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/ui/AuthenticatorActivity.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/ui/AuthenticatorActivity.kt index 73271cc62..a5c06801b 100644 --- a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/ui/AuthenticatorActivity.kt +++ b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/ui/AuthenticatorActivity.kt @@ -17,12 +17,13 @@ import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.commit import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.NavHostFragment +import com.google.android.gms.fido.Fido +import com.google.android.gms.fido.Fido.* import com.google.android.gms.fido.fido2.api.common.* import com.google.android.gms.fido.fido2.api.common.ErrorCode.* import kotlinx.coroutines.CancellationException import kotlinx.coroutines.Job import org.microg.gms.common.GmsService -import org.microg.gms.fido.api.FidoConstants.* import org.microg.gms.fido.core.* import org.microg.gms.fido.core.transport.Transport import org.microg.gms.fido.core.transport.Transport.* diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/ui/AuthenticatorActivityFragment.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/ui/AuthenticatorActivityFragment.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/ui/AuthenticatorActivityFragment.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/ui/AuthenticatorActivityFragment.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/ui/AuthenticatorActivityFragmentData.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/ui/AuthenticatorActivityFragmentData.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/ui/AuthenticatorActivityFragmentData.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/ui/AuthenticatorActivityFragmentData.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/ui/NfcTransportFragment.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/ui/NfcTransportFragment.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/ui/NfcTransportFragment.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/ui/NfcTransportFragment.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/ui/TransportSelectionFragment.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/ui/TransportSelectionFragment.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/ui/TransportSelectionFragment.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/ui/TransportSelectionFragment.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/ui/UsbTransportFragment.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/ui/UsbTransportFragment.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/ui/UsbTransportFragment.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/ui/UsbTransportFragment.kt diff --git a/play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/ui/WelcomeFragment.kt b/play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/ui/WelcomeFragment.kt similarity index 100% rename from play-services-fido-core/src/main/kotlin/org/microg/gms/fido/core/ui/WelcomeFragment.kt rename to play-services-fido/core/src/main/kotlin/org/microg/gms/fido/core/ui/WelcomeFragment.kt diff --git a/play-services-fido-core/src/main/res/drawable-anydpi-v23/fido_nfc_wait_connect.xml b/play-services-fido/core/src/main/res/drawable-anydpi-v23/fido_nfc_wait_connect.xml similarity index 100% rename from play-services-fido-core/src/main/res/drawable-anydpi-v23/fido_nfc_wait_connect.xml rename to play-services-fido/core/src/main/res/drawable-anydpi-v23/fido_nfc_wait_connect.xml diff --git a/play-services-fido-core/src/main/res/drawable-anydpi-v23/fido_usb_wait_confirm.xml b/play-services-fido/core/src/main/res/drawable-anydpi-v23/fido_usb_wait_confirm.xml similarity index 100% rename from play-services-fido-core/src/main/res/drawable-anydpi-v23/fido_usb_wait_confirm.xml rename to play-services-fido/core/src/main/res/drawable-anydpi-v23/fido_usb_wait_confirm.xml diff --git a/play-services-fido-core/src/main/res/drawable-anydpi-v23/fido_usb_wait_connect.xml b/play-services-fido/core/src/main/res/drawable-anydpi-v23/fido_usb_wait_connect.xml similarity index 100% rename from play-services-fido-core/src/main/res/drawable-anydpi-v23/fido_usb_wait_connect.xml rename to play-services-fido/core/src/main/res/drawable-anydpi-v23/fido_usb_wait_connect.xml diff --git a/play-services-fido-core/src/main/res/drawable/fido_nfc_wait_connect.xml b/play-services-fido/core/src/main/res/drawable/fido_nfc_wait_connect.xml similarity index 100% rename from play-services-fido-core/src/main/res/drawable/fido_nfc_wait_connect.xml rename to play-services-fido/core/src/main/res/drawable/fido_nfc_wait_connect.xml diff --git a/play-services-fido-core/src/main/res/drawable/fido_usb_wait_confirm.xml b/play-services-fido/core/src/main/res/drawable/fido_usb_wait_confirm.xml similarity index 100% rename from play-services-fido-core/src/main/res/drawable/fido_usb_wait_confirm.xml rename to play-services-fido/core/src/main/res/drawable/fido_usb_wait_confirm.xml diff --git a/play-services-fido-core/src/main/res/drawable/fido_usb_wait_connect.xml b/play-services-fido/core/src/main/res/drawable/fido_usb_wait_connect.xml similarity index 100% rename from play-services-fido-core/src/main/res/drawable/fido_usb_wait_connect.xml rename to play-services-fido/core/src/main/res/drawable/fido_usb_wait_connect.xml diff --git a/play-services-fido-core/src/main/res/drawable/ic_fido_bluetooth.xml b/play-services-fido/core/src/main/res/drawable/ic_fido_bluetooth.xml similarity index 100% rename from play-services-fido-core/src/main/res/drawable/ic_fido_bluetooth.xml rename to play-services-fido/core/src/main/res/drawable/ic_fido_bluetooth.xml diff --git a/play-services-fido-core/src/main/res/drawable/ic_fido_fingerprint.xml b/play-services-fido/core/src/main/res/drawable/ic_fido_fingerprint.xml similarity index 100% rename from play-services-fido-core/src/main/res/drawable/ic_fido_fingerprint.xml rename to play-services-fido/core/src/main/res/drawable/ic_fido_fingerprint.xml diff --git a/play-services-fido-core/src/main/res/drawable/ic_fido_key.xml b/play-services-fido/core/src/main/res/drawable/ic_fido_key.xml similarity index 100% rename from play-services-fido-core/src/main/res/drawable/ic_fido_key.xml rename to play-services-fido/core/src/main/res/drawable/ic_fido_key.xml diff --git a/play-services-fido-core/src/main/res/drawable/ic_fido_nfc.xml b/play-services-fido/core/src/main/res/drawable/ic_fido_nfc.xml similarity index 100% rename from play-services-fido-core/src/main/res/drawable/ic_fido_nfc.xml rename to play-services-fido/core/src/main/res/drawable/ic_fido_nfc.xml diff --git a/play-services-fido-core/src/main/res/drawable/ic_fido_usb.xml b/play-services-fido/core/src/main/res/drawable/ic_fido_usb.xml similarity index 100% rename from play-services-fido-core/src/main/res/drawable/ic_fido_usb.xml rename to play-services-fido/core/src/main/res/drawable/ic_fido_usb.xml diff --git a/play-services-fido-core/src/main/res/layout/fido_authenticator_activity.xml b/play-services-fido/core/src/main/res/layout/fido_authenticator_activity.xml similarity index 100% rename from play-services-fido-core/src/main/res/layout/fido_authenticator_activity.xml rename to play-services-fido/core/src/main/res/layout/fido_authenticator_activity.xml diff --git a/play-services-fido-core/src/main/res/layout/fido_nfc_transport_fragment.xml b/play-services-fido/core/src/main/res/layout/fido_nfc_transport_fragment.xml similarity index 100% rename from play-services-fido-core/src/main/res/layout/fido_nfc_transport_fragment.xml rename to play-services-fido/core/src/main/res/layout/fido_nfc_transport_fragment.xml diff --git a/play-services-fido-core/src/main/res/layout/fido_transport_selection_fragment.xml b/play-services-fido/core/src/main/res/layout/fido_transport_selection_fragment.xml similarity index 100% rename from play-services-fido-core/src/main/res/layout/fido_transport_selection_fragment.xml rename to play-services-fido/core/src/main/res/layout/fido_transport_selection_fragment.xml diff --git a/play-services-fido-core/src/main/res/layout/fido_usb_transport_fragment.xml b/play-services-fido/core/src/main/res/layout/fido_usb_transport_fragment.xml similarity index 100% rename from play-services-fido-core/src/main/res/layout/fido_usb_transport_fragment.xml rename to play-services-fido/core/src/main/res/layout/fido_usb_transport_fragment.xml diff --git a/play-services-fido-core/src/main/res/layout/fido_welcome_fragment.xml b/play-services-fido/core/src/main/res/layout/fido_welcome_fragment.xml similarity index 100% rename from play-services-fido-core/src/main/res/layout/fido_welcome_fragment.xml rename to play-services-fido/core/src/main/res/layout/fido_welcome_fragment.xml diff --git a/play-services-fido-core/src/main/res/navigation/nav_fido_authenticator.xml b/play-services-fido/core/src/main/res/navigation/nav_fido_authenticator.xml similarity index 100% rename from play-services-fido-core/src/main/res/navigation/nav_fido_authenticator.xml rename to play-services-fido/core/src/main/res/navigation/nav_fido_authenticator.xml diff --git a/play-services-fido-core/src/main/res/values-be/strings.xml b/play-services-fido/core/src/main/res/values-be/strings.xml similarity index 100% rename from play-services-fido-core/src/main/res/values-be/strings.xml rename to play-services-fido/core/src/main/res/values-be/strings.xml diff --git a/play-services-fido-core/src/main/res/values-ru/strings.xml b/play-services-fido/core/src/main/res/values-ru/strings.xml similarity index 100% rename from play-services-fido-core/src/main/res/values-ru/strings.xml rename to play-services-fido/core/src/main/res/values-ru/strings.xml diff --git a/play-services-fido-core/src/main/res/values-zh-rCN/strings.xml b/play-services-fido/core/src/main/res/values-zh-rCN/strings.xml similarity index 100% rename from play-services-fido-core/src/main/res/values-zh-rCN/strings.xml rename to play-services-fido/core/src/main/res/values-zh-rCN/strings.xml diff --git a/play-services-fido-core/src/main/res/values/strings.xml b/play-services-fido/core/src/main/res/values/strings.xml similarity index 100% rename from play-services-fido-core/src/main/res/values/strings.xml rename to play-services-fido/core/src/main/res/values/strings.xml diff --git a/play-services-fido-core/src/main/res/values/styles.xml b/play-services-fido/core/src/main/res/values/styles.xml similarity index 100% rename from play-services-fido-core/src/main/res/values/styles.xml rename to play-services-fido/core/src/main/res/values/styles.xml diff --git a/play-services-fido/src/main/AndroidManifest.xml b/play-services-fido/src/main/AndroidManifest.xml index 0b2ef0198..2c6c2f9a9 100644 --- a/play-services-fido/src/main/AndroidManifest.xml +++ b/play-services-fido/src/main/AndroidManifest.xml @@ -3,4 +3,4 @@ ~ SPDX-FileCopyrightText: 2022 microG Project Team ~ SPDX-License-Identifier: Apache-2.0 --> - + diff --git a/play-services-fido-api/src/main/aidl/com/google/android/gms/fido/fido2/api/IBooleanCallback.aidl b/play-services-fido/src/main/aidl/com/google/android/gms/fido/fido2/api/IBooleanCallback.aidl similarity index 100% rename from play-services-fido-api/src/main/aidl/com/google/android/gms/fido/fido2/api/IBooleanCallback.aidl rename to play-services-fido/src/main/aidl/com/google/android/gms/fido/fido2/api/IBooleanCallback.aidl diff --git a/play-services-fido-api/src/main/aidl/com/google/android/gms/fido/fido2/api/common/BrowserPublicKeyCredentialCreationOptions.aidl b/play-services-fido/src/main/aidl/com/google/android/gms/fido/fido2/api/common/BrowserPublicKeyCredentialCreationOptions.aidl similarity index 100% rename from play-services-fido-api/src/main/aidl/com/google/android/gms/fido/fido2/api/common/BrowserPublicKeyCredentialCreationOptions.aidl rename to play-services-fido/src/main/aidl/com/google/android/gms/fido/fido2/api/common/BrowserPublicKeyCredentialCreationOptions.aidl diff --git a/play-services-fido-api/src/main/aidl/com/google/android/gms/fido/fido2/api/common/BrowserPublicKeyCredentialRequestOptions.aidl b/play-services-fido/src/main/aidl/com/google/android/gms/fido/fido2/api/common/BrowserPublicKeyCredentialRequestOptions.aidl similarity index 100% rename from play-services-fido-api/src/main/aidl/com/google/android/gms/fido/fido2/api/common/BrowserPublicKeyCredentialRequestOptions.aidl rename to play-services-fido/src/main/aidl/com/google/android/gms/fido/fido2/api/common/BrowserPublicKeyCredentialRequestOptions.aidl diff --git a/play-services-fido-api/src/main/aidl/com/google/android/gms/fido/fido2/internal/privileged/IFido2PrivilegedCallbacks.aidl b/play-services-fido/src/main/aidl/com/google/android/gms/fido/fido2/internal/privileged/IFido2PrivilegedCallbacks.aidl similarity index 100% rename from play-services-fido-api/src/main/aidl/com/google/android/gms/fido/fido2/internal/privileged/IFido2PrivilegedCallbacks.aidl rename to play-services-fido/src/main/aidl/com/google/android/gms/fido/fido2/internal/privileged/IFido2PrivilegedCallbacks.aidl diff --git a/play-services-fido-api/src/main/aidl/com/google/android/gms/fido/fido2/internal/privileged/IFido2PrivilegedService.aidl b/play-services-fido/src/main/aidl/com/google/android/gms/fido/fido2/internal/privileged/IFido2PrivilegedService.aidl similarity index 100% rename from play-services-fido-api/src/main/aidl/com/google/android/gms/fido/fido2/internal/privileged/IFido2PrivilegedService.aidl rename to play-services-fido/src/main/aidl/com/google/android/gms/fido/fido2/internal/privileged/IFido2PrivilegedService.aidl diff --git a/play-services-fido/src/main/java/com/google/android/gms/fido/Fido.java b/play-services-fido/src/main/java/com/google/android/gms/fido/Fido.java index a37c69323..b8ab33dd4 100644 --- a/play-services-fido/src/main/java/com/google/android/gms/fido/Fido.java +++ b/play-services-fido/src/main/java/com/google/android/gms/fido/Fido.java @@ -21,10 +21,8 @@ import com.google.android.gms.fido.fido2.Fido2PendingIntent; import com.google.android.gms.fido.fido2.Fido2PrivilegedApiClient; import com.google.android.gms.fido.sourcedevice.SourceDirectTransferClient; import com.google.android.gms.fido.u2f.U2fApiClient; -import com.google.android.gms.fido.u2f.U2fPendingIntent; import org.microg.gms.common.PublicApi; -import org.microg.gms.fido.api.FidoConstants; /** * Entry point for Fido APIs. @@ -37,7 +35,7 @@ public class Fido { * The key used by the calling {@link Activity} to retrieve {@link PublicKeyCredential} from the Intent received by * {@link Activity#onActivityResult(int, int, Intent)} after launching {@link Fido2PendingIntent}. */ - public static final String FIDO2_KEY_CREDENTIAL_EXTRA = FidoConstants.FIDO2_KEY_CREDENTIAL_EXTRA; + public static final String FIDO2_KEY_CREDENTIAL_EXTRA = "FIDO2_CREDENTIAL_EXTRA"; /** * The key used by the calling {@link Activity} to retrieve {@link AuthenticatorErrorResponse} from the Intent received by @@ -47,7 +45,7 @@ public class Fido { * {@link PublicKeyCredential} contains an {@link AuthenticatorErrorResponse}. */ @Deprecated - public static final String FIDO2_KEY_ERROR_EXTRA = FidoConstants.FIDO2_KEY_ERROR_EXTRA; + public static final String FIDO2_KEY_ERROR_EXTRA = "FIDO2_ERROR_EXTRA"; /** * The key used by the calling {@link Activity} to retrieve {@link AuthenticatorAttestationResponse} or @@ -58,13 +56,13 @@ public class Fido { * {@link PublicKeyCredential} contains an {@link AuthenticatorAttestationResponse} or an {@link AuthenticatorAssertionResponse}. */ @Deprecated - public static final String FIDO2_KEY_RESPONSE_EXTRA = FidoConstants.FIDO2_KEY_RESPONSE_EXTRA; + public static final String FIDO2_KEY_RESPONSE_EXTRA = "FIDO2_RESPONSE_EXTRA"; /** * The key used by the calling {@link Activity} to retrieve {@link ResponseData} from the Intent received by * {@link Activity#onActivityResult(int, int, Intent)} after launching {@link Fido2PendingIntent}. */ - public static final String KEY_RESPONSE_EXTRA = FidoConstants.KEY_RESPONSE_EXTRA; + public static final String KEY_RESPONSE_EXTRA = "RESPONSE_EXTRA"; /** * Creates a new instance of {@link Fido2ApiClient} for use in a non-activity {@link Context}. diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/common/Transport.java b/play-services-fido/src/main/java/com/google/android/gms/fido/common/Transport.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/common/Transport.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/common/Transport.java diff --git a/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/Fido2PrivilegedApiClient.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/Fido2PrivilegedApiClient.java index 3d05b02e4..83256d315 100644 --- a/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/Fido2PrivilegedApiClient.java +++ b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/Fido2PrivilegedApiClient.java @@ -19,15 +19,11 @@ import com.google.android.gms.common.api.Status; import com.google.android.gms.fido.fido2.api.IBooleanCallback; import com.google.android.gms.fido.fido2.api.common.BrowserPublicKeyCredentialCreationOptions; import com.google.android.gms.fido.fido2.api.common.BrowserPublicKeyCredentialRequestOptions; -import com.google.android.gms.fido.fido2.api.common.PublicKeyCredentialCreationOptions; -import com.google.android.gms.fido.fido2.api.common.PublicKeyCredentialRequestOptions; import com.google.android.gms.fido.fido2.internal.privileged.IFido2PrivilegedCallbacks; import com.google.android.gms.tasks.Task; -import com.google.android.gms.tasks.TaskCompletionSource; import com.google.android.gms.tasks.Tasks; import org.microg.gms.common.PublicApi; -import org.microg.gms.common.api.ApiClient; import org.microg.gms.common.api.PendingGoogleApiCall; import org.microg.gms.fido.fido2.Fido2PendingIntentImpl; import org.microg.gms.fido.fido2.Fido2PrivilegedGmsClient; diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/Algorithm.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/Algorithm.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/Algorithm.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/Algorithm.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/Attachment.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/Attachment.java similarity index 87% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/Attachment.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/Attachment.java index 4f031468c..34caae66f 100644 --- a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/Attachment.java +++ b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/Attachment.java @@ -1,9 +1,6 @@ /* * SPDX-FileCopyrightText: 2022 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.fido.fido2.api.common; @@ -11,8 +8,6 @@ package com.google.android.gms.fido.fido2.api.common; import android.os.Parcel; import android.os.Parcelable; -import com.google.android.gms.fido.common.Transport; - import org.microg.gms.common.PublicApi; /** diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/AttestationConveyancePreference.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/AttestationConveyancePreference.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/AttestationConveyancePreference.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/AttestationConveyancePreference.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticationExtensions.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticationExtensions.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticationExtensions.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticationExtensions.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticationExtensionsClientOutputs.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticationExtensionsClientOutputs.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticationExtensionsClientOutputs.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticationExtensionsClientOutputs.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticatorAssertionResponse.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticatorAssertionResponse.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticatorAssertionResponse.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticatorAssertionResponse.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticatorAttestationResponse.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticatorAttestationResponse.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticatorAttestationResponse.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticatorAttestationResponse.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticatorErrorResponse.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticatorErrorResponse.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticatorErrorResponse.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticatorErrorResponse.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticatorResponse.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticatorResponse.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticatorResponse.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticatorResponse.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticatorSelectionCriteria.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticatorSelectionCriteria.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticatorSelectionCriteria.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/AuthenticatorSelectionCriteria.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/BrowserPublicKeyCredentialCreationOptions.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/BrowserPublicKeyCredentialCreationOptions.java similarity index 94% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/BrowserPublicKeyCredentialCreationOptions.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/BrowserPublicKeyCredentialCreationOptions.java index c296bf231..dd79edf0e 100644 --- a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/BrowserPublicKeyCredentialCreationOptions.java +++ b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/BrowserPublicKeyCredentialCreationOptions.java @@ -1,15 +1,11 @@ /* * SPDX-FileCopyrightText: 2022 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.fido.fido2.api.common; import android.net.Uri; -import android.util.Base64; import org.microg.gms.common.PublicApi; import org.microg.gms.utils.ToStringHelper; diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/BrowserPublicKeyCredentialRequestOptions.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/BrowserPublicKeyCredentialRequestOptions.java similarity index 94% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/BrowserPublicKeyCredentialRequestOptions.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/BrowserPublicKeyCredentialRequestOptions.java index 848112284..d0e2b79ce 100644 --- a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/BrowserPublicKeyCredentialRequestOptions.java +++ b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/BrowserPublicKeyCredentialRequestOptions.java @@ -1,15 +1,11 @@ /* * SPDX-FileCopyrightText: 2022 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.fido.fido2.api.common; import android.net.Uri; -import android.util.Base64; import org.microg.gms.common.PublicApi; import org.microg.gms.utils.ToStringHelper; diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/BrowserRequestOptions.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/BrowserRequestOptions.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/BrowserRequestOptions.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/BrowserRequestOptions.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/COSEAlgorithmIdentifier.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/COSEAlgorithmIdentifier.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/COSEAlgorithmIdentifier.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/COSEAlgorithmIdentifier.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/CableAuthenticationData.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/CableAuthenticationData.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/CableAuthenticationData.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/CableAuthenticationData.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/CableAuthenticationExtension.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/CableAuthenticationExtension.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/CableAuthenticationExtension.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/CableAuthenticationExtension.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/EC2Algorithm.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/EC2Algorithm.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/EC2Algorithm.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/EC2Algorithm.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/ErrorCode.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/ErrorCode.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/ErrorCode.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/ErrorCode.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/FidoAppIdExtension.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/FidoAppIdExtension.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/FidoAppIdExtension.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/FidoAppIdExtension.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/KeyProtectionTypes.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/KeyProtectionTypes.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/KeyProtectionTypes.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/KeyProtectionTypes.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/MatcherProtectionTypes.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/MatcherProtectionTypes.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/MatcherProtectionTypes.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/MatcherProtectionTypes.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredential.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredential.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredential.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredential.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialCreationOptions.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialCreationOptions.java similarity index 97% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialCreationOptions.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialCreationOptions.java index fbf4b5d5c..bc44f1d02 100644 --- a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialCreationOptions.java +++ b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialCreationOptions.java @@ -1,15 +1,10 @@ /* * SPDX-FileCopyrightText: 2022 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.fido.fido2.api.common; -import android.util.Base64; - import org.microg.gms.common.PublicApi; import org.microg.gms.utils.ToStringHelper; import org.microg.safeparcel.SafeParcelUtil; diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialDescriptor.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialDescriptor.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialDescriptor.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialDescriptor.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialParameters.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialParameters.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialParameters.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialParameters.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialRequestOptions.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialRequestOptions.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialRequestOptions.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialRequestOptions.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialRpEntity.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialRpEntity.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialRpEntity.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialRpEntity.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialType.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialType.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialType.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialType.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialUserEntity.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialUserEntity.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialUserEntity.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/PublicKeyCredentialUserEntity.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/RSAAlgorithm.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/RSAAlgorithm.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/RSAAlgorithm.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/RSAAlgorithm.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/RequestOptions.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/RequestOptions.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/RequestOptions.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/RequestOptions.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/TokenBinding.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/TokenBinding.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/TokenBinding.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/TokenBinding.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/UserVerificationMethodExtension.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/UserVerificationMethodExtension.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/UserVerificationMethodExtension.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/UserVerificationMethodExtension.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/UserVerificationMethods.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/UserVerificationMethods.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/UserVerificationMethods.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/UserVerificationMethods.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/UserVerificationRequirement.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/UserVerificationRequirement.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/UserVerificationRequirement.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/UserVerificationRequirement.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/UvmEntries.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/UvmEntries.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/UvmEntries.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/UvmEntries.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/UvmEntry.java b/play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/UvmEntry.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/fido2/api/common/UvmEntry.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/fido2/api/common/UvmEntry.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/sourcedevice/SourceDirectTransferResult.java b/play-services-fido/src/main/java/com/google/android/gms/fido/sourcedevice/SourceDirectTransferResult.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/sourcedevice/SourceDirectTransferResult.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/sourcedevice/SourceDirectTransferResult.java diff --git a/play-services-fido-api/src/main/java/com/google/android/gms/fido/sourcedevice/SourceStartDirectTransferOptions.java b/play-services-fido/src/main/java/com/google/android/gms/fido/sourcedevice/SourceStartDirectTransferOptions.java similarity index 100% rename from play-services-fido-api/src/main/java/com/google/android/gms/fido/sourcedevice/SourceStartDirectTransferOptions.java rename to play-services-fido/src/main/java/com/google/android/gms/fido/sourcedevice/SourceStartDirectTransferOptions.java diff --git a/play-services-gcm/src/main/AndroidManifest.xml b/play-services-gcm/src/main/AndroidManifest.xml index ca9ea2216..71c6fcd4c 100644 --- a/play-services-gcm/src/main/AndroidManifest.xml +++ b/play-services-gcm/src/main/AndroidManifest.xml @@ -15,7 +15,7 @@ ~ limitations under the License. --> - diff --git a/play-services-gmscompliance-api/build.gradle b/play-services-gmscompliance/build.gradle similarity index 89% rename from play-services-gmscompliance-api/build.gradle rename to play-services-gmscompliance/build.gradle index 4ef3e610b..3e12f9b79 100644 --- a/play-services-gmscompliance-api/build.gradle +++ b/play-services-gmscompliance/build.gradle @@ -28,8 +28,7 @@ apply from: '../gradle/publish-android.gradle' description = 'microG API for play-services-gmscompliance' dependencies { - api project(':play-services-basement') - api project(':play-services-base-api') + api project(':play-services-base') implementation "androidx.annotation:annotation:$annotationVersion" } diff --git a/play-services-gmscompliance-core/build.gradle b/play-services-gmscompliance/core/build.gradle similarity index 93% rename from play-services-gmscompliance-core/build.gradle rename to play-services-gmscompliance/core/build.gradle index 454e76e64..9cbc82ba1 100644 --- a/play-services-gmscompliance-core/build.gradle +++ b/play-services-gmscompliance/core/build.gradle @@ -9,7 +9,7 @@ apply plugin: 'maven-publish' apply plugin: 'signing' dependencies { - api project(':play-services-gmscompliance-api') + api project(':play-services-gmscompliance') implementation project(':play-services-base-core') @@ -53,6 +53,6 @@ android { } } -apply from: '../gradle/publish-android.gradle' +apply from: '../../gradle/publish-android.gradle' description = 'microG service implementation for play-services-gmscompliance' diff --git a/play-services-gmscompliance-core/src/main/AndroidManifest.xml b/play-services-gmscompliance/core/src/main/AndroidManifest.xml similarity index 100% rename from play-services-gmscompliance-core/src/main/AndroidManifest.xml rename to play-services-gmscompliance/core/src/main/AndroidManifest.xml diff --git a/play-services-gmscompliance-core/src/main/kotlin/org/microg/gms/gmscompliance/GmsDeviceComplianceService.kt b/play-services-gmscompliance/core/src/main/kotlin/org/microg/gms/gmscompliance/GmsDeviceComplianceService.kt similarity index 100% rename from play-services-gmscompliance-core/src/main/kotlin/org/microg/gms/gmscompliance/GmsDeviceComplianceService.kt rename to play-services-gmscompliance/core/src/main/kotlin/org/microg/gms/gmscompliance/GmsDeviceComplianceService.kt diff --git a/play-services-gmscompliance-api/src/main/AndroidManifest.xml b/play-services-gmscompliance/src/main/AndroidManifest.xml similarity index 100% rename from play-services-gmscompliance-api/src/main/AndroidManifest.xml rename to play-services-gmscompliance/src/main/AndroidManifest.xml diff --git a/play-services-gmscompliance-api/src/main/aidl/com/google/android/gms/gmscompliance/GmsDeviceComplianceResponse.aidl b/play-services-gmscompliance/src/main/aidl/com/google/android/gms/gmscompliance/GmsDeviceComplianceResponse.aidl similarity index 100% rename from play-services-gmscompliance-api/src/main/aidl/com/google/android/gms/gmscompliance/GmsDeviceComplianceResponse.aidl rename to play-services-gmscompliance/src/main/aidl/com/google/android/gms/gmscompliance/GmsDeviceComplianceResponse.aidl diff --git a/play-services-gmscompliance-api/src/main/aidl/com/google/android/gms/gmscompliance/IGmsDeviceComplianceService.aidl b/play-services-gmscompliance/src/main/aidl/com/google/android/gms/gmscompliance/IGmsDeviceComplianceService.aidl similarity index 100% rename from play-services-gmscompliance-api/src/main/aidl/com/google/android/gms/gmscompliance/IGmsDeviceComplianceService.aidl rename to play-services-gmscompliance/src/main/aidl/com/google/android/gms/gmscompliance/IGmsDeviceComplianceService.aidl diff --git a/play-services-gmscompliance-api/src/main/aidl/com/google/android/gms/gmscompliance/IGmsDeviceComplianceServiceCallback.aidl b/play-services-gmscompliance/src/main/aidl/com/google/android/gms/gmscompliance/IGmsDeviceComplianceServiceCallback.aidl similarity index 100% rename from play-services-gmscompliance-api/src/main/aidl/com/google/android/gms/gmscompliance/IGmsDeviceComplianceServiceCallback.aidl rename to play-services-gmscompliance/src/main/aidl/com/google/android/gms/gmscompliance/IGmsDeviceComplianceServiceCallback.aidl diff --git a/play-services-gmscompliance-api/src/main/java/com/google/android/gms/gmscompliance/GmsDeviceComplianceResponse.java b/play-services-gmscompliance/src/main/java/com/google/android/gms/gmscompliance/GmsDeviceComplianceResponse.java similarity index 100% rename from play-services-gmscompliance-api/src/main/java/com/google/android/gms/gmscompliance/GmsDeviceComplianceResponse.java rename to play-services-gmscompliance/src/main/java/com/google/android/gms/gmscompliance/GmsDeviceComplianceResponse.java diff --git a/play-services-iid-api/build.gradle b/play-services-iid-api/build.gradle deleted file mode 100644 index 7d1eb81f6..000000000 --- a/play-services-iid-api/build.gradle +++ /dev/null @@ -1,37 +0,0 @@ -/* - * 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 { - compileSdkVersion androidCompileSdk - buildToolsVersion "$androidBuildVersionTools" - - defaultConfig { - versionName version - minSdkVersion androidMinSdk - targetSdkVersion androidTargetSdk - } - - compileOptions { - sourceCompatibility = 1.8 - targetCompatibility = 1.8 - } -} - -dependencies { - api project(':play-services-basement') -} diff --git a/play-services-iid-api/src/main/AndroidManifest.xml b/play-services-iid-api/src/main/AndroidManifest.xml deleted file mode 100644 index e979258e3..000000000 --- a/play-services-iid-api/src/main/AndroidManifest.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - \ No newline at end of file diff --git a/play-services-iid/build.gradle b/play-services-iid/build.gradle index c9c87580d..899b9dd33 100644 --- a/play-services-iid/build.gradle +++ b/play-services-iid/build.gradle @@ -22,8 +22,6 @@ android { } dependencies { - api project(':play-services-iid-api') - // Dependencies from play-services-iid:17.0.0 api "androidx.collection:collection:1.0.0" api "androidx.core:core:1.0.0" diff --git a/play-services-iid/src/main/AndroidManifest.xml b/play-services-iid/src/main/AndroidManifest.xml index 67377ff0a..a3b0ea2aa 100644 --- a/play-services-iid/src/main/AndroidManifest.xml +++ b/play-services-iid/src/main/AndroidManifest.xml @@ -1,21 +1,10 @@ - diff --git a/play-services-iid-api/src/main/aidl/com/google/android/gms/iid/IMessengerCompat.aidl b/play-services-iid/src/main/aidl/com/google/android/gms/iid/IMessengerCompat.aidl similarity index 100% rename from play-services-iid-api/src/main/aidl/com/google/android/gms/iid/IMessengerCompat.aidl rename to play-services-iid/src/main/aidl/com/google/android/gms/iid/IMessengerCompat.aidl diff --git a/play-services-iid-api/src/main/java/com/google/android/gms/iid/MessengerCompat.java b/play-services-iid/src/main/java/com/google/android/gms/iid/MessengerCompat.java similarity index 100% rename from play-services-iid-api/src/main/java/com/google/android/gms/iid/MessengerCompat.java rename to play-services-iid/src/main/java/com/google/android/gms/iid/MessengerCompat.java diff --git a/play-services-location-api/build.gradle b/play-services-location-api/build.gradle deleted file mode 100644 index fb66e4c73..000000000 --- a/play-services-location-api/build.gradle +++ /dev/null @@ -1,39 +0,0 @@ -/* - * 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 { - compileSdkVersion androidCompileSdk - buildToolsVersion "$androidBuildVersionTools" - - defaultConfig { - versionName version - minSdkVersion androidMinSdk - targetSdkVersion androidTargetSdk - } - - compileOptions { - sourceCompatibility = 1.8 - targetCompatibility = 1.8 - } -} - -dependencies { - api project(':play-services-basement') - - api project(':play-services-base-api') -} diff --git a/play-services-location/build.gradle b/play-services-location/build.gradle index 090dbedcc..3e8d6b8f9 100644 --- a/play-services-location/build.gradle +++ b/play-services-location/build.gradle @@ -22,11 +22,8 @@ android { } dependencies { - api project(':play-services-location-api') - - // Dependencies from play-services-location:19.0.1 + // Dependencies from play-services-location:21.0.1 api project(':play-services-base') api project(':play-services-basement') - //api project(':play-services-places-placereport') api project(':play-services-tasks') } diff --git a/play-services-location-core/build.gradle b/play-services-location/core/build.gradle similarity index 78% rename from play-services-location-core/build.gradle rename to play-services-location/core/build.gradle index db9e86438..5913723f9 100644 --- a/play-services-location-core/build.gradle +++ b/play-services-location/core/build.gradle @@ -7,11 +7,15 @@ apply plugin: 'com.android.library' apply plugin: 'kotlin-android' dependencies { - api project(':play-services-location-api') + api project(':play-services-location') implementation project(':play-services-base-core') - runtimeOnly "org.microg.nlp:service:$nlpVersion" - api "org.microg.nlp:client:$nlpVersion" + runtimeOnly("org.microg.nlp:service:$nlpVersion") { + exclude group: 'org.microg', module: 'safe-parcel' + } + api("org.microg.nlp:client:$nlpVersion") { + exclude group: 'org.microg', module: 'safe-parcel' + } implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutineVersion" diff --git a/play-services-location-core/src/main/AndroidManifest.xml b/play-services-location/core/src/main/AndroidManifest.xml similarity index 100% rename from play-services-location-core/src/main/AndroidManifest.xml rename to play-services-location/core/src/main/AndroidManifest.xml diff --git a/play-services-location-core/src/main/java/org/microg/gms/location/GoogleLocationManager.java b/play-services-location/core/src/main/java/org/microg/gms/location/GoogleLocationManager.java similarity index 100% rename from play-services-location-core/src/main/java/org/microg/gms/location/GoogleLocationManager.java rename to play-services-location/core/src/main/java/org/microg/gms/location/GoogleLocationManager.java diff --git a/play-services-location-core/src/main/java/org/microg/gms/location/GoogleLocationManagerService.java b/play-services-location/core/src/main/java/org/microg/gms/location/GoogleLocationManagerService.java similarity index 100% rename from play-services-location-core/src/main/java/org/microg/gms/location/GoogleLocationManagerService.java rename to play-services-location/core/src/main/java/org/microg/gms/location/GoogleLocationManagerService.java diff --git a/play-services-location-core/src/main/java/org/microg/gms/location/GoogleLocationManagerServiceImpl.java b/play-services-location/core/src/main/java/org/microg/gms/location/GoogleLocationManagerServiceImpl.java similarity index 78% rename from play-services-location-core/src/main/java/org/microg/gms/location/GoogleLocationManagerServiceImpl.java rename to play-services-location/core/src/main/java/org/microg/gms/location/GoogleLocationManagerServiceImpl.java index 8169a4c77..4187bbbd9 100644 --- a/play-services-location-core/src/main/java/org/microg/gms/location/GoogleLocationManagerServiceImpl.java +++ b/play-services-location/core/src/main/java/org/microg/gms/location/GoogleLocationManagerServiceImpl.java @@ -49,17 +49,17 @@ import com.google.android.gms.location.internal.ISettingsCallbacks; import com.google.android.gms.location.internal.LocationRequestInternal; import com.google.android.gms.location.internal.LocationRequestUpdateData; import com.google.android.gms.location.internal.ParcelableGeofence; -import com.google.android.gms.location.places.AutocompleteFilter; -import com.google.android.gms.location.places.NearbyAlertRequest; -import com.google.android.gms.location.places.PlaceFilter; -import com.google.android.gms.location.places.PlaceReport; -import com.google.android.gms.location.places.PlaceRequest; -import com.google.android.gms.location.places.UserAddedPlace; -import com.google.android.gms.location.places.UserDataType; -import com.google.android.gms.location.places.internal.IPlacesCallbacks; -import com.google.android.gms.location.places.internal.PlacesParams; -import com.google.android.gms.maps.model.LatLng; -import com.google.android.gms.maps.model.LatLngBounds; +//import com.google.android.gms.location.places.AutocompleteFilter; +//import com.google.android.gms.location.places.NearbyAlertRequest; +//import com.google.android.gms.location.places.PlaceFilter; +//import com.google.android.gms.location.places.PlaceReport; +//import com.google.android.gms.location.places.PlaceRequest; +//import com.google.android.gms.location.places.UserAddedPlace; +//import com.google.android.gms.location.places.UserDataType; +//import com.google.android.gms.location.places.internal.IPlacesCallbacks; +//import com.google.android.gms.location.places.internal.PlacesParams; +//import com.google.android.gms.maps.model.LatLng; +//import com.google.android.gms.maps.model.LatLngBounds; import org.microg.gms.common.PackageUtils; @@ -208,40 +208,40 @@ public class GoogleLocationManagerServiceImpl extends IGoogleLocationManagerServ Log.d(TAG, "injectLocation[" + injectionType + "]: " + mockLocation); } - @Override - public void iglms14(LatLngBounds var1, int var2, PlaceFilter var3, PlacesParams var4, - IPlacesCallbacks var5) throws RemoteException { - Log.d(TAG, "iglms14: " + var1); - } - - @Override - public void iglms15(String var1, PlacesParams var2, IPlacesCallbacks var3) - throws RemoteException { - Log.d(TAG, "iglms15: " + var1); - } - - @Override - public void iglms16(LatLng var1, PlaceFilter var2, PlacesParams var3, IPlacesCallbacks var4) - throws RemoteException { - Log.d(TAG, "iglms16: " + var1); - } - - @Override - public void iglms17(PlaceFilter var1, PlacesParams var2, IPlacesCallbacks var3) - throws RemoteException { - Log.d(TAG, "iglms17: " + var1); - } - - @Override - public void iglms18(PlaceRequest var1, PlacesParams var2, PendingIntent var3) - throws RemoteException { - Log.d(TAG, "iglms18: " + var1); - } - - @Override - public void iglms19(PlacesParams var1, PendingIntent var2) throws RemoteException { - Log.d(TAG, "iglms19: " + var1); - } +// @Override +// public void iglms14(LatLngBounds var1, int var2, PlaceFilter var3, PlacesParams var4, +// IPlacesCallbacks var5) throws RemoteException { +// Log.d(TAG, "iglms14: " + var1); +// } +// +// @Override +// public void iglms15(String var1, PlacesParams var2, IPlacesCallbacks var3) +// throws RemoteException { +// Log.d(TAG, "iglms15: " + var1); +// } +// +// @Override +// public void iglms16(LatLng var1, PlaceFilter var2, PlacesParams var3, IPlacesCallbacks var4) +// throws RemoteException { +// Log.d(TAG, "iglms16: " + var1); +// } +// +// @Override +// public void iglms17(PlaceFilter var1, PlacesParams var2, IPlacesCallbacks var3) +// throws RemoteException { +// Log.d(TAG, "iglms17: " + var1); +// } +// +// @Override +// public void iglms18(PlaceRequest var1, PlacesParams var2, PendingIntent var3) +// throws RemoteException { +// Log.d(TAG, "iglms18: " + var1); +// } +// +// @Override +// public void iglms19(PlacesParams var1, PendingIntent var2) throws RemoteException { +// Log.d(TAG, "iglms19: " + var1); +// } @Override public void requestLocationUpdatesWithPackage(LocationRequest request, ILocationListener listener, @@ -264,10 +264,10 @@ public class GoogleLocationManagerServiceImpl extends IGoogleLocationManagerServ return getLastLocation(); } - @Override - public void iglms25(PlaceReport var1, PlacesParams var2) throws RemoteException { - Log.d(TAG, "iglms25: " + var1); - } +// @Override +// public void iglms25(PlaceReport var1, PlacesParams var2) throws RemoteException { +// Log.d(TAG, "iglms25: " + var1); +// } @Override public LocationAvailability getLocationAvailabilityWithPackage(String packageName) throws RemoteException { @@ -281,40 +281,40 @@ public class GoogleLocationManagerServiceImpl extends IGoogleLocationManagerServ Log.d(TAG, "removeSleepSegmentUpdates"); } - @Override - public void iglms42(String var1, PlacesParams var2, IPlacesCallbacks var3) - throws RemoteException { - Log.d(TAG, "iglms42: " + var1); - } - - @Override - public void iglms46(UserAddedPlace var1, PlacesParams var2, IPlacesCallbacks var3) - throws RemoteException { - Log.d(TAG, "iglms46: " + var1); - } - - @Override - public void iglms47(LatLngBounds var1, int var2, String var3, PlaceFilter var4, - PlacesParams var5, IPlacesCallbacks var6) throws RemoteException { - Log.d(TAG, "iglms47: " + var1); - } - - @Override - public void iglms48(NearbyAlertRequest var1, PlacesParams var2, PendingIntent var3) - throws RemoteException { - Log.d(TAG, "iglms48: " + var1); - } - - @Override - public void iglms49(PlacesParams var1, PendingIntent var2) throws RemoteException { - Log.d(TAG, "iglms49: " + var1); - } - - @Override - public void iglms50(UserDataType var1, LatLngBounds var2, List var3, PlacesParams var4, - IPlacesCallbacks var5) throws RemoteException { - Log.d(TAG, "iglms50: " + var1); - } +// @Override +// public void iglms42(String var1, PlacesParams var2, IPlacesCallbacks var3) +// throws RemoteException { +// Log.d(TAG, "iglms42: " + var1); +// } +// +// @Override +// public void iglms46(UserAddedPlace var1, PlacesParams var2, IPlacesCallbacks var3) +// throws RemoteException { +// Log.d(TAG, "iglms46: " + var1); +// } +// +// @Override +// public void iglms47(LatLngBounds var1, int var2, String var3, PlaceFilter var4, +// PlacesParams var5, IPlacesCallbacks var6) throws RemoteException { +// Log.d(TAG, "iglms47: " + var1); +// } +// +// @Override +// public void iglms48(NearbyAlertRequest var1, PlacesParams var2, PendingIntent var3) +// throws RemoteException { +// Log.d(TAG, "iglms48: " + var1); +// } +// +// @Override +// public void iglms49(PlacesParams var1, PendingIntent var2) throws RemoteException { +// Log.d(TAG, "iglms49: " + var1); +// } +// +// @Override +// public void iglms50(UserDataType var1, LatLngBounds var2, List var3, PlacesParams var4, +// IPlacesCallbacks var5) throws RemoteException { +// Log.d(TAG, "iglms50: " + var1); +// } @Override public IBinder iglms51() throws RemoteException { @@ -371,11 +371,11 @@ public class GoogleLocationManagerServiceImpl extends IGoogleLocationManagerServ return null; } - @Override - public void iglms55(String var1, LatLngBounds var2, AutocompleteFilter var3, PlacesParams var4, - IPlacesCallbacks var5) throws RemoteException { - Log.d(TAG, "iglms55: " + var1); - } +// @Override +// public void iglms55(String var1, LatLngBounds var2, AutocompleteFilter var3, PlacesParams var4, +// IPlacesCallbacks var5) throws RemoteException { +// Log.d(TAG, "iglms55: " + var1); +// } @Override public void addGeofences(GeofencingRequest geofencingRequest, PendingIntent pendingIntent, @@ -383,11 +383,11 @@ public class GoogleLocationManagerServiceImpl extends IGoogleLocationManagerServ Log.d(TAG, "addGeofences: " + geofencingRequest); } - @Override - public void iglms58(List var1, PlacesParams var2, IPlacesCallbacks var3) - throws RemoteException { - Log.d(TAG, "iglms58: " + var1); - } +// @Override +// public void iglms58(List var1, PlacesParams var2, IPlacesCallbacks var3) +// throws RemoteException { +// Log.d(TAG, "iglms58: " + var1); +// } @Override public void iglms65(PendingIntent pendingIntent, IStatusCallback callback) throws RemoteException { diff --git a/play-services-location-core/src/main/java/org/microg/gms/location/LocationChangeListener.java b/play-services-location/core/src/main/java/org/microg/gms/location/LocationChangeListener.java similarity index 100% rename from play-services-location-core/src/main/java/org/microg/gms/location/LocationChangeListener.java rename to play-services-location/core/src/main/java/org/microg/gms/location/LocationChangeListener.java diff --git a/play-services-location-core/src/main/java/org/microg/gms/location/LocationRequestHelper.java b/play-services-location/core/src/main/java/org/microg/gms/location/LocationRequestHelper.java similarity index 100% rename from play-services-location-core/src/main/java/org/microg/gms/location/LocationRequestHelper.java rename to play-services-location/core/src/main/java/org/microg/gms/location/LocationRequestHelper.java diff --git a/play-services-location-core/src/main/java/org/microg/gms/location/MockLocationProvider.java b/play-services-location/core/src/main/java/org/microg/gms/location/MockLocationProvider.java similarity index 94% rename from play-services-location-core/src/main/java/org/microg/gms/location/MockLocationProvider.java rename to play-services-location/core/src/main/java/org/microg/gms/location/MockLocationProvider.java index bdeb73180..75ebc6a8f 100644 --- a/play-services-location-core/src/main/java/org/microg/gms/location/MockLocationProvider.java +++ b/play-services-location/core/src/main/java/org/microg/gms/location/MockLocationProvider.java @@ -19,7 +19,7 @@ package org.microg.gms.location; import android.location.Location; import android.os.Bundle; -import static org.microg.gms.location.LocationConstants.KEY_MOCK_LOCATION; +import static com.google.android.gms.location.FusedLocationProviderClient.KEY_MOCK_LOCATION; public class MockLocationProvider { private boolean mockEnabled = false; diff --git a/play-services-location-core/src/main/java/org/microg/gms/location/RealLocationProvider.java b/play-services-location/core/src/main/java/org/microg/gms/location/RealLocationProvider.java similarity index 100% rename from play-services-location-core/src/main/java/org/microg/gms/location/RealLocationProvider.java rename to play-services-location/core/src/main/java/org/microg/gms/location/RealLocationProvider.java diff --git a/play-services-location-core/src/main/java/org/microg/gms/location/ReportingAndroidService.java b/play-services-location/core/src/main/java/org/microg/gms/location/ReportingAndroidService.java similarity index 100% rename from play-services-location-core/src/main/java/org/microg/gms/location/ReportingAndroidService.java rename to play-services-location/core/src/main/java/org/microg/gms/location/ReportingAndroidService.java diff --git a/play-services-location-core/src/main/java/org/microg/gms/location/ReportingServiceImpl.java b/play-services-location/core/src/main/java/org/microg/gms/location/ReportingServiceImpl.java similarity index 92% rename from play-services-location-core/src/main/java/org/microg/gms/location/ReportingServiceImpl.java rename to play-services-location/core/src/main/java/org/microg/gms/location/ReportingServiceImpl.java index 705f7d4a2..5fedc85d8 100644 --- a/play-services-location-core/src/main/java/org/microg/gms/location/ReportingServiceImpl.java +++ b/play-services-location/core/src/main/java/org/microg/gms/location/ReportingServiceImpl.java @@ -22,7 +22,7 @@ import android.os.Parcel; import android.os.RemoteException; import android.util.Log; -import com.google.android.gms.location.places.PlaceReport; +//import com.google.android.gms.location.places.PlaceReport; import com.google.android.gms.location.reporting.OptInRequest; import com.google.android.gms.location.reporting.ReportingState; import com.google.android.gms.location.reporting.SendDataRequest; @@ -70,11 +70,11 @@ public class ReportingServiceImpl extends IReportingService.Stub { return 0; } - @Override - public int reportDeviceAtPlace(Account account, PlaceReport report) throws RemoteException { - Log.d(TAG, "reportDeviceAtPlace"); - return 0; - } +// @Override +// public int reportDeviceAtPlace(Account account, PlaceReport report) throws RemoteException { +// Log.d(TAG, "reportDeviceAtPlace"); +// return 0; +// } @Override public int tryOptIn(OptInRequest request) throws RemoteException { diff --git a/play-services-location-core/src/main/java/org/microg/gms/location/UnifiedLocationProvider.kt b/play-services-location/core/src/main/java/org/microg/gms/location/UnifiedLocationProvider.kt similarity index 100% rename from play-services-location-core/src/main/java/org/microg/gms/location/UnifiedLocationProvider.kt rename to play-services-location/core/src/main/java/org/microg/gms/location/UnifiedLocationProvider.kt diff --git a/play-services-location/src/main/AndroidManifest.xml b/play-services-location/src/main/AndroidManifest.xml index 79e10fc2c..2bb2cda6f 100644 --- a/play-services-location/src/main/AndroidManifest.xml +++ b/play-services-location/src/main/AndroidManifest.xml @@ -15,10 +15,4 @@ ~ limitations under the License. --> - - - - - - + diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/ActivityRecognitionResult.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/ActivityRecognitionResult.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/ActivityRecognitionResult.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/ActivityRecognitionResult.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/DeviceOrientation.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/DeviceOrientation.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/DeviceOrientation.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/DeviceOrientation.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/GeofencingRequest.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/GeofencingRequest.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/GeofencingRequest.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/GeofencingRequest.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/GestureRequest.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/GestureRequest.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/GestureRequest.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/GestureRequest.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/IDeviceOrientationListener.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/IDeviceOrientationListener.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/IDeviceOrientationListener.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/IDeviceOrientationListener.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/ILocationCallback.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/ILocationCallback.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/ILocationCallback.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/ILocationCallback.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/ILocationListener.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/ILocationListener.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/ILocationListener.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/ILocationListener.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/LocationAvailability.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/LocationAvailability.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/LocationAvailability.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/LocationAvailability.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/LocationRequest.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/LocationRequest.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/LocationRequest.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/LocationRequest.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/LocationResult.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/LocationResult.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/LocationResult.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/LocationResult.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/LocationSettingsRequest.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/LocationSettingsRequest.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/LocationSettingsRequest.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/LocationSettingsRequest.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/LocationSettingsResult.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/LocationSettingsResult.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/LocationSettingsResult.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/LocationSettingsResult.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/LocationStatus.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/LocationStatus.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/LocationStatus.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/LocationStatus.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/internal/DeviceOrientationRequestUpdateData.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/internal/DeviceOrientationRequestUpdateData.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/internal/DeviceOrientationRequestUpdateData.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/internal/DeviceOrientationRequestUpdateData.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/internal/FusedLocationProviderResult.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/internal/FusedLocationProviderResult.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/internal/FusedLocationProviderResult.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/internal/FusedLocationProviderResult.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/internal/IFusedLocationProviderCallback.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/internal/IFusedLocationProviderCallback.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/internal/IFusedLocationProviderCallback.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/internal/IFusedLocationProviderCallback.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/internal/IGeofencerCallbacks.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/internal/IGeofencerCallbacks.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/internal/IGeofencerCallbacks.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/internal/IGeofencerCallbacks.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/internal/IGoogleLocationManagerService.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/internal/IGoogleLocationManagerService.aidl similarity index 69% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/internal/IGoogleLocationManagerService.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/internal/IGoogleLocationManagerService.aidl index 19f9be10f..6211d27d4 100644 --- a/play-services-location-api/src/main/aidl/com/google/android/gms/location/internal/IGoogleLocationManagerService.aidl +++ b/play-services-location/src/main/aidl/com/google/android/gms/location/internal/IGoogleLocationManagerService.aidl @@ -6,20 +6,20 @@ import android.os.Bundle; import com.google.android.gms.common.api.Status; import com.google.android.gms.common.api.internal.IStatusCallback; -import com.google.android.gms.location.places.AutocompleteFilter; -import com.google.android.gms.location.places.internal.IPlacesCallbacks; +//import com.google.android.gms.location.places.AutocompleteFilter; +//import com.google.android.gms.location.places.internal.IPlacesCallbacks; import com.google.android.gms.location.internal.DeviceOrientationRequestUpdateData; import com.google.android.gms.location.internal.ISettingsCallbacks; import com.google.android.gms.location.internal.LocationRequestInternal; import com.google.android.gms.location.internal.LocationRequestUpdateData; import com.google.android.gms.location.internal.ParcelableGeofence; -import com.google.android.gms.location.places.NearbyAlertRequest; -import com.google.android.gms.location.places.PlaceFilter; -import com.google.android.gms.location.places.PlaceRequest; -import com.google.android.gms.location.places.PlaceReport; -import com.google.android.gms.location.places.internal.PlacesParams; -import com.google.android.gms.location.places.UserAddedPlace; -import com.google.android.gms.location.places.UserDataType; +//import com.google.android.gms.location.places.NearbyAlertRequest; +//import com.google.android.gms.location.places.PlaceFilter; +//import com.google.android.gms.location.places.PlaceRequest; +//import com.google.android.gms.location.places.PlaceReport; +//import com.google.android.gms.location.places.internal.PlacesParams; +//import com.google.android.gms.location.places.UserAddedPlace; +//import com.google.android.gms.location.places.UserDataType; import com.google.android.gms.location.ActivityRecognitionResult; import com.google.android.gms.location.GeofencingRequest; import com.google.android.gms.location.GestureRequest; @@ -29,8 +29,8 @@ import com.google.android.gms.location.LocationSettingsRequest; import com.google.android.gms.location.LocationStatus; import com.google.android.gms.location.internal.IGeofencerCallbacks; import com.google.android.gms.location.ILocationListener; -import com.google.android.gms.maps.model.LatLng; -import com.google.android.gms.maps.model.LatLngBounds; +//import com.google.android.gms.maps.model.LatLng; +//import com.google.android.gms.maps.model.LatLngBounds; interface IGoogleLocationManagerService { void addGeofencesList(in List geofences, in PendingIntent pendingIntent, IGeofencerCallbacks callbacks, String packageName) = 0; @@ -79,28 +79,28 @@ interface IGoogleLocationManagerService { boolean setActivityRecognitionMode(int mode) = 76; - void iglms14(in LatLngBounds var1, int var2, in PlaceFilter var3, in PlacesParams var4, IPlacesCallbacks var5) = 13; - void iglms15(String var1, in PlacesParams var2, IPlacesCallbacks var3) = 14; - void iglms16(in LatLng var1, in PlaceFilter var2, in PlacesParams var3, IPlacesCallbacks var4) = 15; - void iglms17(in PlaceFilter var1, in PlacesParams var2, IPlacesCallbacks var3) = 16; - void iglms18(in PlaceRequest var1, in PlacesParams var2, in PendingIntent var3) = 17; - void iglms19(in PlacesParams var1, in PendingIntent var2) = 18; +// void iglms14(in LatLngBounds var1, int var2, in PlaceFilter var3, in PlacesParams var4, IPlacesCallbacks var5) = 13; +// void iglms15(String var1, in PlacesParams var2, IPlacesCallbacks var3) = 14; +// void iglms16(in LatLng var1, in PlaceFilter var2, in PlacesParams var3, IPlacesCallbacks var4) = 15; +// void iglms17(in PlaceFilter var1, in PlacesParams var2, IPlacesCallbacks var3) = 16; +// void iglms18(in PlaceRequest var1, in PlacesParams var2, in PendingIntent var3) = 17; +// void iglms19(in PlacesParams var1, in PendingIntent var2) = 18; - void iglms25(in PlaceReport var1, in PlacesParams var2) = 24; +// void iglms25(in PlaceReport var1, in PlacesParams var2) = 24; - void iglms42(String var1, in PlacesParams var2, IPlacesCallbacks var3) = 41; +// void iglms42(String var1, in PlacesParams var2, IPlacesCallbacks var3) = 41; - void iglms46(in UserAddedPlace var1, in PlacesParams var2, IPlacesCallbacks var3) = 45; - void iglms47(in LatLngBounds var1, int var2, String var3, in PlaceFilter var4, in PlacesParams var5, IPlacesCallbacks var6) = 46; - void iglms48(in NearbyAlertRequest var1, in PlacesParams var2, in PendingIntent var3) = 47; - void iglms49(in PlacesParams var1, in PendingIntent var2) = 48; - void iglms50(in UserDataType var1, in LatLngBounds var2, in List var3, in PlacesParams var4, IPlacesCallbacks var5) = 49; +// void iglms46(in UserAddedPlace var1, in PlacesParams var2, IPlacesCallbacks var3) = 45; +// void iglms47(in LatLngBounds var1, int var2, String var3, in PlaceFilter var4, in PlacesParams var5, IPlacesCallbacks var6) = 46; +// void iglms48(in NearbyAlertRequest var1, in PlacesParams var2, in PendingIntent var3) = 47; +// void iglms49(in PlacesParams var1, in PendingIntent var2) = 48; +// void iglms50(in UserDataType var1, in LatLngBounds var2, in List var3, in PlacesParams var4, IPlacesCallbacks var5) = 49; IBinder iglms51() = 50; IBinder iglms54() = 53; - void iglms55(String var1, in LatLngBounds var2, in AutocompleteFilter var3, in PlacesParams var4, IPlacesCallbacks var5) = 54; +// void iglms55(String var1, in LatLngBounds var2, in AutocompleteFilter var3, in PlacesParams var4, IPlacesCallbacks var5) = 54; - void iglms58(in List var1, in PlacesParams var2, IPlacesCallbacks var3) = 57; +// void iglms58(in List var1, in PlacesParams var2, IPlacesCallbacks var3) = 57; void iglms65(in PendingIntent pendingIntent, IStatusCallback callback) = 64; void iglms66(in PendingIntent pendingIntent, IStatusCallback callback) = 65; diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/internal/ISettingsCallbacks.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/internal/ISettingsCallbacks.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/internal/ISettingsCallbacks.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/internal/ISettingsCallbacks.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/internal/LocationRequestInternal.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/internal/LocationRequestInternal.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/internal/LocationRequestInternal.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/internal/LocationRequestInternal.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/internal/LocationRequestUpdateData.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/internal/LocationRequestUpdateData.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/internal/LocationRequestUpdateData.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/internal/LocationRequestUpdateData.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/internal/ParcelableGeofence.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/internal/ParcelableGeofence.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/internal/ParcelableGeofence.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/internal/ParcelableGeofence.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/reporting/OptInRequest.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/reporting/OptInRequest.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/reporting/OptInRequest.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/reporting/OptInRequest.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/reporting/ReportingState.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/reporting/ReportingState.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/reporting/ReportingState.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/reporting/ReportingState.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/reporting/SendDataRequest.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/reporting/SendDataRequest.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/reporting/SendDataRequest.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/reporting/SendDataRequest.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/reporting/UlrPrivateModeRequest.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/reporting/UlrPrivateModeRequest.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/reporting/UlrPrivateModeRequest.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/reporting/UlrPrivateModeRequest.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/reporting/UploadRequest.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/reporting/UploadRequest.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/reporting/UploadRequest.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/reporting/UploadRequest.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/reporting/UploadRequestResult.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/reporting/UploadRequestResult.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/reporting/UploadRequestResult.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/reporting/UploadRequestResult.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/reporting/internal/IReportingService.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/reporting/internal/IReportingService.aidl similarity index 86% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/reporting/internal/IReportingService.aidl rename to play-services-location/src/main/aidl/com/google/android/gms/location/reporting/internal/IReportingService.aidl index 8f7d1d607..0d47e26ab 100644 --- a/play-services-location-api/src/main/aidl/com/google/android/gms/location/reporting/internal/IReportingService.aidl +++ b/play-services-location/src/main/aidl/com/google/android/gms/location/reporting/internal/IReportingService.aidl @@ -1,7 +1,7 @@ package com.google.android.gms.location.reporting.internal; import android.accounts.Account; -import com.google.android.gms.location.places.PlaceReport; +//import com.google.android.gms.location.places.PlaceReport; import com.google.android.gms.location.reporting.OptInRequest; import com.google.android.gms.location.reporting.ReportingState; import com.google.android.gms.location.reporting.SendDataRequest; @@ -14,7 +14,7 @@ interface IReportingService { int tryOptInAccount(in Account account) = 1; UploadRequestResult requestUpload(in UploadRequest request) = 2; int cancelUploadRequest(long l) = 3; - int reportDeviceAtPlace(in Account account, in PlaceReport report) = 4; +// int reportDeviceAtPlace(in Account account, in PlaceReport report) = 4; int tryOptIn(in OptInRequest request) = 5; int sendData(in SendDataRequest request) = 6; int requestPrivateMode(in UlrPrivateModeRequest request) = 7; diff --git a/play-services-location/src/main/java/com/google/android/gms/location/ActivityRecognition.java b/play-services-location/src/main/java/com/google/android/gms/location/ActivityRecognition.java index f8f116563..10e8a2984 100644 --- a/play-services-location/src/main/java/com/google/android/gms/location/ActivityRecognition.java +++ b/play-services-location/src/main/java/com/google/android/gms/location/ActivityRecognition.java @@ -1,40 +1,55 @@ /* - * Copyright (C) 2017 microG Project Team - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * SPDX-FileCopyrightText: 2017 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.location; +import android.app.Activity; +import android.content.Context; + import com.google.android.gms.common.api.Api; -import com.google.android.gms.common.api.GoogleApiClient.Builder; +import com.google.android.gms.common.api.GoogleApiClient; +import org.microg.gms.common.PublicApi; import org.microg.gms.location.ActivityRecognitionApiClientBuilder; import org.microg.gms.location.ActivityRecognitionApiImpl; /** * The main entry point for activity recognition integration. */ +@PublicApi public class ActivityRecognition { public static final String CLIENT_NAME = "activity_recognition"; /** - * Token to pass to {@link Builder#addApi(Api)} to enable ContextServices. + * Token to pass to {@link GoogleApiClient.Builder#addApi(Api)} to enable ActivityRecognition. + * + * @deprecated Use {@link ActivityRecognitionClient} instead. */ public static final Api API = new Api(new ActivityRecognitionApiClientBuilder()); /** * Entry point to the activity recognition APIs. + * + * @deprecated Use {@link ActivityRecognitionClient} instead. */ public static final ActivityRecognitionApi ActivityRecognitionApi = new ActivityRecognitionApiImpl(); + + /** + * Create a new instance of {@link ActivityRecognitionClient} for use in an {@link Activity}. + */ + public static ActivityRecognitionClient getClient (Activity activity) { + throw new UnsupportedOperationException(); + } + + /** + * Create a new instance of {@link ActivityRecognitionClient} for use in a non-activity {@link Context}. + */ + public static ActivityRecognitionClient getClient (Context context) { + throw new UnsupportedOperationException(); + } } diff --git a/play-services-location/src/main/java/com/google/android/gms/location/ActivityRecognitionApi.java b/play-services-location/src/main/java/com/google/android/gms/location/ActivityRecognitionApi.java index 08bc50b96..885cc454b 100644 --- a/play-services-location/src/main/java/com/google/android/gms/location/ActivityRecognitionApi.java +++ b/play-services-location/src/main/java/com/google/android/gms/location/ActivityRecognitionApi.java @@ -1,17 +1,9 @@ /* - * Copyright (C) 2017 microG Project Team - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * SPDX-FileCopyrightText: 2017 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.location; @@ -35,6 +27,8 @@ import com.google.android.gms.common.api.Status; * .addOnConnectionFailedListener(this) * .build() * + * + * @deprecated Use the GoogleApi-based API {@link ActivityRecognitionClient} instead. */ public interface ActivityRecognitionApi { /** diff --git a/play-services-location/src/main/java/com/google/android/gms/location/ActivityRecognitionClient.java b/play-services-location/src/main/java/com/google/android/gms/location/ActivityRecognitionClient.java new file mode 100644 index 000000000..aaa8ddd0e --- /dev/null +++ b/play-services-location/src/main/java/com/google/android/gms/location/ActivityRecognitionClient.java @@ -0,0 +1,89 @@ +/* + * SPDX-FileCopyrightText: 2022 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.location; + +import android.app.PendingIntent; + +import com.google.android.gms.common.api.Api; +import com.google.android.gms.common.api.ApiException; +import com.google.android.gms.common.api.HasApiKey; +import com.google.android.gms.tasks.Task; + +/** + * The main entry point for interacting with activity recognition. + *

+ * Activity Recognition provides the following APIs: the Activity Recognition Transition API, the Activity + * Recognition Sampling API, and the Activity Recognition Sleep API. + */ +public interface ActivityRecognitionClient extends HasApiKey { + /** + * Removes activity transition updates associated with the given {@code pendingIntent}. + *

+ * To call this function, a different permission is required depending on your Android API level: + *

    + *
  • For Android 10 (API level 29) and later: {@code android.permission.ACTIVITY_RECOGNITION} permission
  • + *
  • For Android 9 (API level 28) and earlier: {@code com.google.android.gms.permission.ACTIVITY_RECOGNITION} permission
  • + *
+ * + * @param pendingIntent the associated {@link PendingIntent} of the activity transition request which is to be removed + * @return a {@link Task} for apps to check the status of the call. If the task fails, the status code for the + * failure can be found by examining {@link ApiException#getStatusCode()}. + */ + Task removeActivityTransitionUpdates(PendingIntent pendingIntent); + + /** + * Removes all activity updates for the specified PendingIntent. + *

+ * To call this function, a different permission is required depending on your Android API level: + *

    + *
  • For Android 10 (API level 29) and later: {@code android.permission.ACTIVITY_RECOGNITION} permission
  • + *
  • For Android 9 (API level 28) and earlier: {@code com.google.android.gms.permission.ACTIVITY_RECOGNITION} permission
  • + *
+ * + * @param callbackIntent the PendingIntent that was used in {@link #requestActivityUpdates(long, PendingIntent)} or + * is equal as defined by {@link PendingIntent#equals(Object)}. + * @return a {@link Task} for apps to check the status of the call. If the task fails, the status code for the + * failure can be found by examining {@link ApiException#getStatusCode()}. + */ + Task removeActivityUpdates(PendingIntent callbackIntent); + + /** + * Removes all sleep segment detection updates for the specified {@code PendingIntent}. + * + * @param callbackIntent the PendingIntent that was used in {@link #requestSleepSegmentUpdates(PendingIntent, SleepSegmentRequest)} + * or is equal as defined by {@link PendingIntent#equals(Object)}. + * @return a {@link Task} for apps to check the status of the call. If the task fails, the status code for the + * failure can be found by examining {@link ApiException#getStatusCode()}. + */ + Task removeSleepSegmentUpdates(PendingIntent callbackIntent); + + /** + * @param activityTransitionRequest + * @param pendingIntent + * @return a {@link Task} for apps to check the status of the call. If the task fails, the status code for the + * failure can be found by examining {@link ApiException#getStatusCode()}. + */ + Task requestActivityTransitionUpdates(ActivityTransitionRequest activityTransitionRequest, PendingIntent pendingIntent); + + /** + * @param detectionIntervalMillis + * @param callbackIntent + * @return a {@link Task} for apps to check the status of the call. If the task fails, the status code for the + * failure can be found by examining {@link ApiException#getStatusCode()}. + */ + Task requestActivityUpdates(long detectionIntervalMillis, PendingIntent callbackIntent); + + /** + * @param callbackIntent + * @param sleepSegmentRequest + * @return a {@link Task} for apps to check the status of the call. If the task fails, the status code for the + * failure can be found by examining {@link ApiException#getStatusCode()}. + */ + Task requestSleepSegmentUpdates(PendingIntent callbackIntent, SleepSegmentRequest sleepSegmentRequest); +} diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/ActivityRecognitionResult.java b/play-services-location/src/main/java/com/google/android/gms/location/ActivityRecognitionResult.java similarity index 63% rename from play-services-location-api/src/main/java/com/google/android/gms/location/ActivityRecognitionResult.java rename to play-services-location/src/main/java/com/google/android/gms/location/ActivityRecognitionResult.java index 614c85520..cf3b86280 100644 --- a/play-services-location-api/src/main/java/com/google/android/gms/location/ActivityRecognitionResult.java +++ b/play-services-location/src/main/java/com/google/android/gms/location/ActivityRecognitionResult.java @@ -1,17 +1,9 @@ /* - * Copyright (C) 2013-2017 microG Project Team - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + * 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.location; @@ -19,10 +11,11 @@ package com.google.android.gms.location; import android.content.Intent; import android.os.Bundle; +import androidx.annotation.NonNull; + import org.microg.gms.common.PublicApi; import org.microg.safeparcel.AutoSafeParcelable; import org.microg.safeparcel.SafeParcelUtil; -import org.microg.safeparcel.SafeParceled; import java.util.Collections; import java.util.List; @@ -30,77 +23,68 @@ import java.util.List; /** * Result of an activity recognition. *

- * It contains a list of activities that a user may have been doing at a particular time. The - * activities are sorted by the most probable activity first. A confidence is associated with each - * activity which indicates how likely that activity is. + * It contains a list of activities that a user may have been doing at a particular time. The activities are sorted by + * the most probable activity first. A confidence is associated with each activity which indicates how likely that + * activity is. *

- * {@link #getMostProbableActivity()} will return the most probable activity of the user at the time - * that activity recognition was run. + * {@link #getMostProbableActivity()} will return the most probable activity of the user at the time that activity + * recognition was run. */ @PublicApi public class ActivityRecognitionResult extends AutoSafeParcelable { + public static final Creator CREATOR = new AutoCreator<>(ActivityRecognitionResult.class); @PublicApi(exclude = true) public static final String EXTRA_ACTIVITY_RESULT = "com.google.android.location.internal.EXTRA_ACTIVITY_RESULT"; @PublicApi(exclude = true) public static final String EXTRA_ACTIVITY_RESULT_LIST = "com.google.android.location.internal.EXTRA_ACTIVITY_RESULT_LIST"; - @SafeParceled(1000) + @Field(1000) private int versionCode = 2; - - @SafeParceled(value = 1, subClass = DetectedActivity.class) + @Field(value = 1, subClass = DetectedActivity.class) private List probableActivities; - - @SafeParceled(2) + @Field(2) private long time; - - @SafeParceled(3) + @Field(3) private long elapsedRealtimeMillis; - - @SafeParceled(5) + @Field(5) private Bundle extras; + private ActivityRecognitionResult() { + + } + /** * Constructs an ActivityRecognitionResult. * - * @param probableActivities the activities that where detected, sorted by confidence (most probable first). + * @param probableActivities the activities that were detected, sorted by confidence (most probable first). * @param time the UTC time of this detection, in milliseconds since January 1, 1970. * @param elapsedRealtimeMillis milliseconds since boot */ public ActivityRecognitionResult(List probableActivities, long time, long elapsedRealtimeMillis) { - this(probableActivities, time, elapsedRealtimeMillis, null); + this.probableActivities = probableActivities; + this.time = time; + this.elapsedRealtimeMillis = elapsedRealtimeMillis; } /** * Constructs an ActivityRecognitionResult from a single activity. * - * @param activity the most probable activity of the device. + * @param mostProbableActivity the most probable activity of the device. * @param time the UTC time of this detection, in milliseconds since January 1, 1970. * @param elapsedRealtimeMillis milliseconds since boot */ - public ActivityRecognitionResult(DetectedActivity activity, long time, long elapsedRealtimeMillis) { - this(Collections.singletonList(activity), time, elapsedRealtimeMillis); - } - - private ActivityRecognitionResult(List probableActivities, long time, long elapsedRealtimeMillis, Bundle extras) { - if (probableActivities == null || probableActivities.isEmpty()) - throw new IllegalArgumentException("Must have at least 1 detected activity"); - if (time <= 0 || elapsedRealtimeMillis <= 0) - throw new IllegalArgumentException("Must set times"); - this.probableActivities = probableActivities; - this.time = time; - this.elapsedRealtimeMillis = elapsedRealtimeMillis; - this.extras = extras; + public ActivityRecognitionResult(DetectedActivity mostProbableActivity, long time, long elapsedRealtimeMillis) { + this(Collections.singletonList(mostProbableActivity), time, elapsedRealtimeMillis); } /** * Extracts the ActivityRecognitionResult from an Intent. *

- * This is a utility function which extracts the ActivityRecognitionResult from the extras of - * an Intent that was sent from the activity detection service. + * This is a utility function which extracts the ActivityRecognitionResult from the extras of an Intent that was + * sent from the activity detection service. * - * @return an ActivityRecognitionResult, or {@code null} if the intent doesn't contain an - * ActivityRecognitionResult. + * @return an ActivityRecognitionResult, or {@code null} if the intent doesn't contain an ActivityRecognitionResult. */ public static ActivityRecognitionResult extractResult(Intent intent) { if (intent.hasExtra(EXTRA_ACTIVITY_RESULT_LIST)) { @@ -133,8 +117,8 @@ public class ActivityRecognitionResult extends AutoSafeParcelable { } /** - * Returns the elapsed real time of this detection in milliseconds since boot, including time - * spent in sleep as obtained by SystemClock.elapsedRealtime(). + * Returns the elapsed real time of this detection in milliseconds since boot, including time spent in sleep as + * obtained by SystemClock.elapsedRealtime(). */ public long getElapsedRealtimeMillis() { return elapsedRealtimeMillis; @@ -148,13 +132,12 @@ public class ActivityRecognitionResult extends AutoSafeParcelable { } /** - * Returns the list of activities that where detected with the confidence value associated with - * each activity. The activities are sorted by most probable activity first. + * Returns the list of activities that were detected with the confidence value associated with each activity. + * The activities are sorted by most probable activity first. *

- * The sum of the confidences of all detected activities this method returns does not have to - * be <= 100 since some activities are not mutually exclusive (for example, you can be walking - * while in a bus) and some activities are hierarchical (ON_FOOT is a generalization of WALKING - * and RUNNING). + * The sum of the confidences of all detected activities this method returns does not have to be <= 100 since some + * activities are not mutually exclusive (for example, you can be walking while in a bus) and some activities are + * hierarchical (ON_FOOT is a generalization of WALKING and RUNNING). */ public List getProbableActivities() { return probableActivities; @@ -170,8 +153,8 @@ public class ActivityRecognitionResult extends AutoSafeParcelable { /** * Returns true if an Intent contains an ActivityRecognitionResult. *

- * This is a utility function that can be called from inside an intent receiver to make sure - * the received intent is from activity recognition. + * This is a utility function that can be called from inside an intent receiver to make sure the received intent is + * from activity recognition. * * @return true if the intent contains an ActivityRecognitionResult, false otherwise or the given intent is null */ @@ -183,10 +166,8 @@ public class ActivityRecognitionResult extends AutoSafeParcelable { return list != null && !list.isEmpty(); } - @Override + @NonNull public String toString() { return "ActivityRecognitionResult [probableActivities=" + probableActivities + ", timeMillis" + time + ", elapsedRealtimeMillis=" + elapsedRealtimeMillis + "]"; } - - public static final Creator CREATOR = new AutoCreator(ActivityRecognitionResult.class); } diff --git a/play-services-location/src/main/java/com/google/android/gms/location/ActivityTransitionRequest.java b/play-services-location/src/main/java/com/google/android/gms/location/ActivityTransitionRequest.java new file mode 100644 index 000000000..781050ef7 --- /dev/null +++ b/play-services-location/src/main/java/com/google/android/gms/location/ActivityTransitionRequest.java @@ -0,0 +1,18 @@ +/* + * SPDX-FileCopyrightText: 2022 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.location; + +import org.microg.safeparcel.AutoSafeParcelable; + +/** + * The request object for apps to get notified when user's activity changes. + */ +public class ActivityTransitionRequest extends AutoSafeParcelable { + public static final Creator CREATOR = new AutoCreator<>(ActivityTransitionRequest.class); +} diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/DetectedActivity.java b/play-services-location/src/main/java/com/google/android/gms/location/DetectedActivity.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/DetectedActivity.java rename to play-services-location/src/main/java/com/google/android/gms/location/DetectedActivity.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/DeviceOrientation.java b/play-services-location/src/main/java/com/google/android/gms/location/DeviceOrientation.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/DeviceOrientation.java rename to play-services-location/src/main/java/com/google/android/gms/location/DeviceOrientation.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/DeviceOrientationRequest.java b/play-services-location/src/main/java/com/google/android/gms/location/DeviceOrientationRequest.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/DeviceOrientationRequest.java rename to play-services-location/src/main/java/com/google/android/gms/location/DeviceOrientationRequest.java diff --git a/play-services-location/src/main/java/com/google/android/gms/location/FusedLocationProviderApi.java b/play-services-location/src/main/java/com/google/android/gms/location/FusedLocationProviderApi.java index 077bae352..985fcbd43 100644 --- a/play-services-location/src/main/java/com/google/android/gms/location/FusedLocationProviderApi.java +++ b/play-services-location/src/main/java/com/google/android/gms/location/FusedLocationProviderApi.java @@ -1,54 +1,111 @@ /* - * Copyright (C) 2013-2017 microG Project Team - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * SPDX-FileCopyrightText: 2015 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.location; import android.app.PendingIntent; +import android.content.Intent; import android.location.Location; +import android.os.Bundle; import android.os.Looper; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.common.api.PendingResult; import com.google.android.gms.common.api.Status; -import org.microg.gms.location.LocationConstants; - +/** + * The main entry point for interacting with the fused location provider. + *

+ * The methods must be used in conjunction with a {@link GoogleApiClient}. + * + * @deprecated Use the GoogleApi-based API {@link FusedLocationProviderClient} instead. + */ @Deprecated public interface FusedLocationProviderApi { + /** + * Key used for a Bundle extra holding a {@link Location} value when a location change is broadcast using a PendingIntent. + * + * @deprecated Use {@link LocationResult#hasResult(Intent)} and {@link LocationResult#extractResult(Intent)}. + * You may also receive {@link LocationAvailability} in the Intent which you can access using + * {@link LocationAvailability#hasLocationAvailability(Intent)} and {@link LocationAvailability#extractLocationAvailability(Intent)}. + */ @Deprecated String KEY_LOCATION_CHANGED = "com.google.android.location.LOCATION"; - String KEY_MOCK_LOCATION = LocationConstants.KEY_MOCK_LOCATION; + /** + * Key used for the Bundle extra in {@link Location} object holding a boolean indicating whether the location was + * set using {@link #setMockLocation(GoogleApiClient, Location)}. If the value is false this extra is not set. + * + * @deprecated Prefer to use {@link LocationCompat#isMock()} from the compat libraries. + */ + String KEY_MOCK_LOCATION = "mockLocation"; - Location getLastLocation(GoogleApiClient client); + /** + * Flushes any locations currently being batched and sends them to all registered {@link LocationListener}s, + * {@link LocationCallback}s, and {@link PendingIntent}s. This call is only useful when batching is specified using + * {@link LocationRequest#setMaxWaitTime(long)}, otherwise locations are already delivered immediately when available. + *

+ * When the returned {@link PendingResult} is complete, then you can assume that any pending batched locations have already been delivered. + */ + PendingResult flushLocations(GoogleApiClient client); - PendingResult requestLocationUpdates(GoogleApiClient client, LocationRequest request, - LocationListener listener); + /** + * Returns the best most recent location currently available. + *

+ * If a location is not available, which should happen very rarely, null will be returned. The best accuracy + * available while respecting the location permissions will be returned. + *

+ * This method provides a simplified way to get location. It is particularly well suited for applications that do + * not require an accurate location and that do not want to maintain extra logic for location updates. + * + * @param client An existing GoogleApiClient. If not connected null will be returned. + */ + Location getLastLocation(GoogleApiClient client); - PendingResult requestLocationUpdates(GoogleApiClient client, LocationRequest request, - LocationListener listener, Looper looper); + /** + * Returns the availability of location data. When {@link LocationAvailability#isLocationAvailable()} returns true, + * then the location returned by {@link #getLastLocation(GoogleApiClient)} will be reasonably up to date within the + * hints specified by the active LocationRequests. + *

+ * If the client isn't connected to Google Play services and the request times out, null is returned. + *

+ * Note it's always possible for {@link #getLastLocation(GoogleApiClient)} to return null even when this method + * returns true (e.g. location settings were disabled between calls). + * + * @param client An existing GoogleApiClient. If not connected null will be returned. + */ + LocationAvailability getLocationAvailability(GoogleApiClient client); - PendingResult requestLocationUpdates(GoogleApiClient client, LocationRequest request, - PendingIntent callbackIntent); + /** + * Removes all location updates for the given pending intent. + *

+ * It is possible for this call to cancel the PendingIntent under some circumstances. + * + * @param client An existing GoogleApiClient. It must be connected at the time of this call, which is normally + * achieved by calling {@link GoogleApiClient#connect()} and waiting for {@link GoogleApiClient.ConnectionCallbacks#onConnected(Bundle)} to be called. + * @param callbackIntent The PendingIntent that was used in {@link #requestLocationUpdates(GoogleApiClient, LocationRequest, PendingIntent)} + * or is equal as defined by {@link PendingIntent#equals(Object)}. + * @return a PendingResult for the call, check {@link Status#isSuccess()} to determine if it was successful. + */ + PendingResult removeLocationUpdates(GoogleApiClient client, PendingIntent callbackIntent); PendingResult removeLocationUpdates(GoogleApiClient client, LocationListener listener); - PendingResult removeLocationUpdates(GoogleApiClient client, - PendingIntent callbackIntent); + PendingResult removeLocationUpdates(GoogleApiClient client, LocationCallback callback); - PendingResult setMockMode(GoogleApiClient client, boolean isMockMode); + PendingResult requestLocationUpdates(GoogleApiClient client, LocationRequest request, LocationListener listener); + + PendingResult requestLocationUpdates(GoogleApiClient client, LocationRequest request, LocationCallback callback, Looper looper); + + PendingResult requestLocationUpdates(GoogleApiClient client, LocationRequest request, LocationListener listener, Looper looper); + + PendingResult requestLocationUpdates(GoogleApiClient client, LocationRequest request, PendingIntent callbackIntent); PendingResult setMockLocation(GoogleApiClient client, Location mockLocation); + + PendingResult setMockMode(GoogleApiClient client, boolean isMockMode); } diff --git a/play-services-location/src/main/java/com/google/android/gms/location/FusedLocationProviderClient.java b/play-services-location/src/main/java/com/google/android/gms/location/FusedLocationProviderClient.java index a391c720c..2d7bd640f 100644 --- a/play-services-location/src/main/java/com/google/android/gms/location/FusedLocationProviderClient.java +++ b/play-services-location/src/main/java/com/google/android/gms/location/FusedLocationProviderClient.java @@ -1,15 +1,21 @@ /* * 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.android.gms.location; +import android.Manifest; import android.content.Context; import android.location.Location; +import android.os.Looper; import com.google.android.gms.common.api.Api; import com.google.android.gms.common.api.GoogleApi; +import com.google.android.gms.common.api.HasApiKey; import com.google.android.gms.tasks.Task; import com.google.android.gms.tasks.TaskCompletionSource; @@ -18,25 +24,83 @@ import org.microg.gms.common.api.InstantGoogleApiCall; import org.microg.gms.common.api.PendingGoogleApiCall; import org.microg.gms.location.LocationClientImpl; +/** + * The main entry point for interacting with the Fused Location Provider (FLP). In order to obtain an instance of this + * class, see {@link LocationServices}. + *

+ * In order to use most location APIs, clients are required to hold either the + * {@link Manifest.permission#ACCESS_COARSE_LOCATION} permission or the {@link Manifest.permission#ACCESS_FINE_LOCATION}. + * Clients holding only the coarse permission will receive locations that have been obfuscated to hide the device's + * exact location, and only reveal the approximate area of the device. In addition, clients with only the coarse + * permission will receive location updates at a throttled rate. Applications which do not require an exact location to + * work (such as a weather app for instance) are encouraged to use only the coarse permission. From Android 12 onwards, + * the user may force any app to use coarse location, so apps should test carefully their behavior with only the coarse + * location permission to ensure everything works as expected. + *

+ * If clients have only the coarse or fine location permission, they will not receive locations while they are in the + * background. Whether an app is in the background or foreground is normally determined by whether it is currently + * showing any UI to the user. Apps may also use a foreground location service to maintain their foreground status when + * they would normally be in the background. + *

+ * If clients also hold the {@link Manifest.permission#ACCESS_BACKGROUND_LOCATION} permission, they may receive + * locations while in the background even if the above conditions are not met. + *

+ * There are several types of use cases for location. One of the most common is simply obtaining a single location in + * order to determine where the device is now, and continue from there. The + * {@link #getCurrentLocation(CurrentLocationRequest, CancellationToken)} API is designed with exactly this use case in + * mind. On the other hand, if repeated location updates are required, such as when tracking the user's location over + * time, {@link #requestLocationUpdates(LocationRequest, Executor, LocationListener)} or one of its variants is better + * suited. Clients are encourage to familiarize themselves with the full range of APIs available in this class to + * understand which is best suited for their needs. + */ @PublicApi -public class FusedLocationProviderClient extends GoogleApi { +public abstract class FusedLocationProviderClient extends GoogleApi { @PublicApi(exclude = true) public FusedLocationProviderClient(Context context) { super(context, LocationServices.API); } - public Task flushLocations() { - return scheduleTask(new PendingGoogleApiCall() { - @Override - public void execute(LocationClientImpl client, TaskCompletionSource completionSource) { - completionSource.setResult(null); - } - }); - } + /** + * Key used for the Bundle extra in {@link Location} object indicating whether this is a mock location. + * + * @deprecated Use {@link Location#isMock()} on Android S and above, otherwise use {@link LocationCompat#isMock()} + * from the compat libraries instead. + */ + @Deprecated + public static String KEY_MOCK_LOCATION = "mockLocation"; - public Task getLastLocation() { - return scheduleTask((InstantGoogleApiCall) LocationClientImpl::getLastLocation); - } + /** + * Key used for the Bundle extra in {@link Location} object holding a float indicating the estimated vertical + * accuracy of the location, in meters. + * + * @deprecated Use {@link Location#getVerticalAccuracyMeters()} on Android O and above, otherwise use + * {@link LocationCompat#getVerticalAccuracyMeters()} from the compat libraries instead. + */ + @Deprecated + public static String KEY_VERTICAL_ACCURACY = "verticalAccuracy"; + + public abstract Task flushLocations(); + + public abstract Task getLastLocation(); + + /** + * Requests location updates with the given request and results delivered to the given callback on the specified + * {@link Looper}. A previous request for location updates for the same callback will be replaced by this request. + * If the location request has a priority higher than {@link Priority#PRIORITY_PASSIVE}, a wakelock may be held on + * the client's behalf while delivering locations. A wakelock will not be held while delivering availability + * updates. + *

+ * Use {@link #removeLocationUpdates(LocationCallback)} to stop location updates once no longer needed. + *

+ * Depending on the arguments passed in through the {@link LocationRequest}, locations from the past may be + * delivered when the callback is first registered. Clients should ensure they are checking location timestamps + * appropriately if necessary. + *

+ * If the given {@link Looper} is null, the Looper associated with the calling thread will be used instead. + * + * @throws IllegalStateException if looper is null and the calling thread has not called {@link Looper#prepare()} + */ + public abstract Task requestLocationUpdates(LocationRequest request, LocationCallback callback, Looper looper); } diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/Geofence.java b/play-services-location/src/main/java/com/google/android/gms/location/Geofence.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/Geofence.java rename to play-services-location/src/main/java/com/google/android/gms/location/Geofence.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/GeofenceStatusCodes.java b/play-services-location/src/main/java/com/google/android/gms/location/GeofenceStatusCodes.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/GeofenceStatusCodes.java rename to play-services-location/src/main/java/com/google/android/gms/location/GeofenceStatusCodes.java diff --git a/play-services-location/src/main/java/com/google/android/gms/location/GeofencingClient.java b/play-services-location/src/main/java/com/google/android/gms/location/GeofencingClient.java new file mode 100644 index 000000000..52139e0ff --- /dev/null +++ b/play-services-location/src/main/java/com/google/android/gms/location/GeofencingClient.java @@ -0,0 +1,22 @@ +/* + * SPDX-FileCopyrightText: 2022 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.location; + +import android.app.Activity; + +import com.google.android.gms.common.api.Api; +import com.google.android.gms.common.api.HasApiKey; + +/** + * The main entry point for interacting with the geofencing APIs. + * Get an instance of this client via {@link LocationServices#getGeofencingClient(Activity)}. + * All methods are thread safe. + */ +public interface GeofencingClient extends HasApiKey { +} diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/GeofencingEvent.java b/play-services-location/src/main/java/com/google/android/gms/location/GeofencingEvent.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/GeofencingEvent.java rename to play-services-location/src/main/java/com/google/android/gms/location/GeofencingEvent.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/GeofencingRequest.java b/play-services-location/src/main/java/com/google/android/gms/location/GeofencingRequest.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/GeofencingRequest.java rename to play-services-location/src/main/java/com/google/android/gms/location/GeofencingRequest.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/GestureRequest.java b/play-services-location/src/main/java/com/google/android/gms/location/GestureRequest.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/GestureRequest.java rename to play-services-location/src/main/java/com/google/android/gms/location/GestureRequest.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/LocationAvailability.java b/play-services-location/src/main/java/com/google/android/gms/location/LocationAvailability.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/LocationAvailability.java rename to play-services-location/src/main/java/com/google/android/gms/location/LocationAvailability.java diff --git a/play-services-location/src/main/java/com/google/android/gms/location/LocationCallback.java b/play-services-location/src/main/java/com/google/android/gms/location/LocationCallback.java new file mode 100644 index 000000000..12c345001 --- /dev/null +++ b/play-services-location/src/main/java/com/google/android/gms/location/LocationCallback.java @@ -0,0 +1,44 @@ +/* + * SPDX-FileCopyrightText: 2022 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.location; + +import org.microg.gms.common.PublicApi; + +/** + * A callback for receiving notifications from the {@link FusedLocationProviderClient}. + */ +@PublicApi +public abstract class LocationCallback { + /** + * Called when there is a change in the availability of location data. + *

+ * When {@link LocationAvailability#isLocationAvailable()} returns false it generally indicates that further + * invocations of {@link #onLocationResult(LocationResult)} are unlikely until something changes with the device's + * settings or environment. When {@link LocationAvailability#isLocationAvailable()} returns true it generally + * indicates that further invocations of {@link #onLocationResult(LocationResult)} are likely, and fresh locations + * can be expected. + * + * @param availability The latest location availability. + */ + public void onLocationAvailability(LocationAvailability availability) { + + } + + /** + * Called when a new {@link LocationResult} is available. The locations within the location result will generally + * be as fresh as possible given the parameters of the associated {@link LocationRequest} and the state of the + * device, but this does not imply that they will always represent the current location. Clients may wish to + * reference the time associated with each location. + * + * @param result The latest location result. + */ + public void onLocationResult(LocationResult result) { + + } +} diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/LocationRequest.java b/play-services-location/src/main/java/com/google/android/gms/location/LocationRequest.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/LocationRequest.java rename to play-services-location/src/main/java/com/google/android/gms/location/LocationRequest.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/LocationResult.java b/play-services-location/src/main/java/com/google/android/gms/location/LocationResult.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/LocationResult.java rename to play-services-location/src/main/java/com/google/android/gms/location/LocationResult.java diff --git a/play-services-location/src/main/java/com/google/android/gms/location/LocationServices.java b/play-services-location/src/main/java/com/google/android/gms/location/LocationServices.java index f1f10a621..9b6472b24 100644 --- a/play-services-location/src/main/java/com/google/android/gms/location/LocationServices.java +++ b/play-services-location/src/main/java/com/google/android/gms/location/LocationServices.java @@ -1,59 +1,111 @@ /* - * Copyright (C) 2013-2017 microG Project Team - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * SPDX-FileCopyrightText: 2015 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.location; +import android.app.Activity; import android.content.Context; import com.google.android.gms.common.api.Api; -import com.google.android.gms.common.api.GoogleApiClient.Builder; +import com.google.android.gms.common.api.GoogleApiClient; import org.microg.gms.location.FusedLocationProviderApiImpl; +import org.microg.gms.location.FusedLocationProviderClientImpl; import org.microg.gms.location.GeofencingApiImpl; +import org.microg.gms.location.GeofencingClientImpl; import org.microg.gms.location.LocationServicesApiClientBuilder; import org.microg.gms.location.SettingsApiImpl; +import org.microg.gms.location.SettingsClientImpl; /** * The main entry point for location services integration. */ public class LocationServices { /** - * Token to pass to {@link Builder#addApi(Api)} to enable LocationServices. + * Token to pass to {@link GoogleApiClient.Builder#addApi(Api)} to enable LocationServices. + * + * @deprecated Use {@link FusedLocationProviderClient} instead. */ + @Deprecated public static final Api API = new Api(new LocationServicesApiClientBuilder()); /** - * Entry point to the fused location APIs. + * Old entry point to the Fused Location Provider APIs. + * + * @deprecated Use {@link FusedLocationProviderClient} instead. */ @Deprecated public static final FusedLocationProviderApi FusedLocationApi = new FusedLocationProviderApiImpl(); /** - * Entry point to the geofencing APIs. + * Old entry point to the geofencing APIs. + * + * @deprecated Use {@link GeofencingClient} instead. */ @Deprecated public static final GeofencingApi GeofencingApi = new GeofencingApiImpl(); /** - * Entry point to the location settings-enabler dialog APIs. + * Old entry point to the location settings APIs. + * + * @deprecated Use {@link SettingsClient} instead. */ @Deprecated public static final SettingsApi SettingsApi = new SettingsApiImpl(); + /** + * Create a new instance of {@link FusedLocationProviderClient} for use in an {@link Activity}. + * Error resolutions will be automatically launched from the provided Activity, displaying UI when necessary. + */ + public static FusedLocationProviderClient getFusedLocationProviderClient(Activity activity) { + return new FusedLocationProviderClientImpl(activity); + } + + /** + * Create a new instance of {@link FusedLocationProviderClient} for use in a non-activity {@link Context}. + * Error resolutions will be automatically launched from the provided Context, displaying system tray notifications + * when necessary. + */ public static FusedLocationProviderClient getFusedLocationProviderClient(Context context) { - return new FusedLocationProviderClient(context); + return new FusedLocationProviderClientImpl(context); + } + + /** + * Create a new instance of {@link GeofencingClient} for use in an {@link Activity}. + * Error resolutions will be automatically launched from the provided Activity, displaying UI when necessary. + */ + public static GeofencingClient getGeofencingClient(Activity activity) { + return new GeofencingClientImpl(activity); + } + + /** + * Create a new instance of {@link GeofencingClient} for use in a non-activity {@link Context}. + * Error resolutions will be automatically launched from the provided Context, displaying system tray notifications + * when necessary. + */ + public static GeofencingClient getGeofencingClient(Context context) { + return new GeofencingClientImpl(context); + } + + /** + * Create a new instance of {@link SettingsClient} for use in an {@link Activity}. + * Error resolutions will be automatically launched from the provided Activity, displaying UI when necessary. + */ + public static SettingsClient getSettingsClient(Activity activity) { + return new SettingsClientImpl(activity); + } + + /** + * Create a new instance of {@link SettingsClient} for use in a non-activity {@link Context}. + * Error resolutions will be automatically launched from the provided Context, displaying system tray notifications + * when necessary. + */ + public static SettingsClient getSettingsClient(Context context) { + return new SettingsClientImpl(context); } } diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/LocationSettingsConfiguration.java b/play-services-location/src/main/java/com/google/android/gms/location/LocationSettingsConfiguration.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/LocationSettingsConfiguration.java rename to play-services-location/src/main/java/com/google/android/gms/location/LocationSettingsConfiguration.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/LocationSettingsRequest.java b/play-services-location/src/main/java/com/google/android/gms/location/LocationSettingsRequest.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/LocationSettingsRequest.java rename to play-services-location/src/main/java/com/google/android/gms/location/LocationSettingsRequest.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/LocationSettingsResult.java b/play-services-location/src/main/java/com/google/android/gms/location/LocationSettingsResult.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/LocationSettingsResult.java rename to play-services-location/src/main/java/com/google/android/gms/location/LocationSettingsResult.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/LocationSettingsStates.java b/play-services-location/src/main/java/com/google/android/gms/location/LocationSettingsStates.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/LocationSettingsStates.java rename to play-services-location/src/main/java/com/google/android/gms/location/LocationSettingsStates.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/LocationSettingsStatusCodes.java b/play-services-location/src/main/java/com/google/android/gms/location/LocationSettingsStatusCodes.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/LocationSettingsStatusCodes.java rename to play-services-location/src/main/java/com/google/android/gms/location/LocationSettingsStatusCodes.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/LocationStatus.java b/play-services-location/src/main/java/com/google/android/gms/location/LocationStatus.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/LocationStatus.java rename to play-services-location/src/main/java/com/google/android/gms/location/LocationStatus.java diff --git a/play-services-location/src/main/java/com/google/android/gms/location/LocationStatusCodes.java b/play-services-location/src/main/java/com/google/android/gms/location/LocationStatusCodes.java index 4e3f7d541..c3297a391 100644 --- a/play-services-location/src/main/java/com/google/android/gms/location/LocationStatusCodes.java +++ b/play-services-location/src/main/java/com/google/android/gms/location/LocationStatusCodes.java @@ -1,26 +1,41 @@ /* - * Copyright (C) 2017 microG Project Team - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * SPDX-FileCopyrightText: 2017 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.location; +import android.app.PendingIntent; + +/** + * Status codes that can be returned to listeners to indicate the success or failure of an operation. + * @deprecated Use {@link GeofenceStatusCodes} + */ @Deprecated public class LocationStatusCodes { + /** + * The operation was successful. + */ + public static final int SUCCESS = 0; + /** + * An unspecified error occurred; no more specific information is available. The device logs may provide additional + * data. + */ public static final int ERROR = 1; + /** + * Geofence service is not available now. Typically this is because the user turned off location access in + * settings > location access. + */ public static final int GEOFENCE_NOT_AVAILABLE = 1000; + /** + * Your app has registered more than 100 geofences. Remove unused ones before adding new geofences. + */ public static final int GEOFENCE_TOO_MANY_GEOFENCES = 1001; + /** + * You have provided more than 5 different PendingIntents to the {@link GeofencingApi#addGeofences(com.google.android.gms.common.api.GoogleApiClient, GeofencingRequest, PendingIntent)} call. + */ public static final int GEOFENCE_TOO_MANY_PENDING_INTENTS = 1002; - public static final int SUCCESS = 0; } diff --git a/play-services-location/src/main/java/com/google/android/gms/location/SettingsApi.java b/play-services-location/src/main/java/com/google/android/gms/location/SettingsApi.java index b6529f7af..42aa5a794 100644 --- a/play-services-location/src/main/java/com/google/android/gms/location/SettingsApi.java +++ b/play-services-location/src/main/java/com/google/android/gms/location/SettingsApi.java @@ -1,17 +1,9 @@ /* - * Copyright (C) 2017 microG Project Team - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * SPDX-FileCopyrightText: 2017 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.location; diff --git a/play-services-location/src/main/java/com/google/android/gms/location/SettingsClient.java b/play-services-location/src/main/java/com/google/android/gms/location/SettingsClient.java new file mode 100644 index 000000000..07be2580e --- /dev/null +++ b/play-services-location/src/main/java/com/google/android/gms/location/SettingsClient.java @@ -0,0 +1,21 @@ +/* + * SPDX-FileCopyrightText: 2022 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.location; + +import com.google.android.gms.common.api.Api; +import com.google.android.gms.common.api.HasApiKey; + +/** + * The main entry point for interacting with the location settings-enabler APIs. + *

+ * This API makes it easy for an app to ensure that the device's system settings are properly configured for the app's + * location needs. + */ +public interface SettingsClient extends HasApiKey { +} diff --git a/play-services-location/src/main/java/com/google/android/gms/location/SleepClassifyEvent.java b/play-services-location/src/main/java/com/google/android/gms/location/SleepClassifyEvent.java new file mode 100644 index 000000000..4e1d45cbf --- /dev/null +++ b/play-services-location/src/main/java/com/google/android/gms/location/SleepClassifyEvent.java @@ -0,0 +1,77 @@ +/* + * SPDX-FileCopyrightText: 2022 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.location; + +import android.content.Intent; + +import org.microg.safeparcel.AutoSafeParcelable; + +import java.util.List; + +/** + * Represents a sleep classification event including the classification timestamp, the sleep confidence, and the + * supporting data such as device motion and ambient light level. Classification events are reported at a regular + * intervals, such as every 10 minutes. + */ +public class SleepClassifyEvent extends AutoSafeParcelable { + public static final Creator CREATOR = new AutoCreator<>(SleepClassifyEvent.class); + + /** + * Extracts the {@code SleepClassifyEvent} from an {@code Intent}. + * + * @param intent the {@code Intent} to extract from + * @return a list of {@link SleepClassifyEvent}s if the intent has events, or an empty list if the intent doesn't + * contain any events. + */ + public static List extractEvents(Intent intent) { + throw new UnsupportedOperationException(); + } + + /** + * Returns a sleep confidence value between 0 and 100. Higher values indicate that the user is more likely sleeping, + * while lower values indicate that the user is more likely awake. + */ + public int getConfidence() { + throw new UnsupportedOperationException(); + } + + /** + * Returns the brightness of the space around the device, based on the device's ambient light sensor readings. Value + * ranges from 1 to 6, inclusive. Higher values indicate brighter surroundings, while lower values indicate darker + * surroundings. + */ + public int getLight() { + throw new UnsupportedOperationException(); + } + + /** + * Returns the amount of device motion, based on the device's accelerometer readings. Value ranges from 1 to 6, + * inclusive. Higher values indicate more movement of the device. + */ + public int getMotion() { + throw new UnsupportedOperationException(); + } + + /** + * Returns the UNIX epoch time when the event happened, expressed as the number of milliseconds since 1/1/1970 UTC. + */ + public long getTimestampMillis() { + throw new UnsupportedOperationException(); + } + + /** + * Checks whether the {@code Intent} has any {@code SleepClassifyEvent}. + * + * @param intent the {@code Intent} to extract from + * @return true if the Intent has events + */ + public static boolean hasEvents(Intent intent) { + throw new UnsupportedOperationException(); + } +} diff --git a/play-services-location/src/main/java/com/google/android/gms/location/SleepSegmentEvent.java b/play-services-location/src/main/java/com/google/android/gms/location/SleepSegmentEvent.java new file mode 100644 index 000000000..46bdde176 --- /dev/null +++ b/play-services-location/src/main/java/com/google/android/gms/location/SleepSegmentEvent.java @@ -0,0 +1,36 @@ +/* + * SPDX-FileCopyrightText: 2022 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.location; + +import org.microg.safeparcel.AutoSafeParcelable; + +/** + * Represents the result of segmenting sleep after the user is awake. + */ +public class SleepSegmentEvent extends AutoSafeParcelable { + /** + * Successfully detected sleep segment in the past day. + */ + public static final int STATUS_SUCCESSFUL = 0; + /** + * Sleep segment was detected, but there was some missing data near the detected sleep segment. This could happen + * for a variety of reasons, including the following: the user turned off their device, the user delayed logging + * into their device after a system reboot or system upgrade, or an event occurred that paused the detection. + */ + public static final int STATUS_MISSING_DATA = 1; + /** + * Sleep segment is not detected in the past day, or there isn't enough confidence that the user slept during the + * past day. This could happen for a variety of reasons, including the following: too much missing data, the user + * sleeps with the light, the user interacts with their device often, or the user's device doesn't support the + * sensors needed for sleep detection. + */ + public static final int STATUS_NOT_DETECTED = 2; + + public static final Creator CREATOR = new AutoCreator<>(SleepSegmentEvent.class); +} diff --git a/play-services-location/src/main/java/com/google/android/gms/location/SleepSegmentRequest.java b/play-services-location/src/main/java/com/google/android/gms/location/SleepSegmentRequest.java new file mode 100644 index 000000000..d3b3a73b3 --- /dev/null +++ b/play-services-location/src/main/java/com/google/android/gms/location/SleepSegmentRequest.java @@ -0,0 +1,71 @@ +/* + * SPDX-FileCopyrightText: 2022 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.location; + +import org.microg.safeparcel.AutoSafeParcelable; + +/** + * A request object that specifies what data to receive from the Sleep API. Defaults to {@code SEGMENT_AND_CLASSIFY_EVENTS}. + */ +public class SleepSegmentRequest extends AutoSafeParcelable { + /** + * Requests both the {@code SleepSegmentEvent} and the {@code SleepClassifyEvent}. + */ + public static final int SEGMENT_AND_CLASSIFY_EVENTS = 0; + /** + * Requests {@code SleepSegmentEvent} only. + */ + public static final int SEGMENT_EVENTS_ONLY = 1; + /** + * Requests {@code SleepClassifyEvent} only. + */ + public static final int CLASSIFY_EVENTS_ONLY = 2; + + public static final Creator CREATOR = new AutoCreator<>(SleepSegmentRequest.class); + + private int requestedDataType; + + private SleepSegmentRequest() { + + } + + /** + * Constructs a {@link SleepSegmentRequest} indicating what type of data is being requested. + * + * @param requestedDataType The type of data to receive pending intents for; valid values are + * {@link #SEGMENT_AND_CLASSIFY_EVENTS}, {@link #SEGMENT_EVENTS_ONLY}, and {@link #CLASSIFY_EVENTS_ONLY}. + */ + public SleepSegmentRequest(int requestedDataType) { + this.requestedDataType = requestedDataType; + } + + public boolean equals(Object o) { + return o instanceof SleepSegmentRequest && ((SleepSegmentRequest) o).requestedDataType == requestedDataType; + } + + /** + * Creates a default request that registers for both {@code SleepSegmentEvent} and {@code SleepClassifyEvent} data. + */ + public static SleepSegmentRequest getDefaultSleepSegmentRequest() { + return new SleepSegmentRequest(SEGMENT_AND_CLASSIFY_EVENTS); + } + + /** + * Returns the requested data type, which is one of {@link #SEGMENT_AND_CLASSIFY_EVENTS}, {@link #SEGMENT_EVENTS_ONLY}, + * or {@link #CLASSIFY_EVENTS_ONLY}. + */ + public int getRequestedDataType() { + return requestedDataType; + } + + @Override + public int hashCode() { + return requestedDataType; + } +} diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/internal/ClientIdentity.java b/play-services-location/src/main/java/com/google/android/gms/location/internal/ClientIdentity.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/internal/ClientIdentity.java rename to play-services-location/src/main/java/com/google/android/gms/location/internal/ClientIdentity.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/internal/DeviceOrientationRequestInternal.java b/play-services-location/src/main/java/com/google/android/gms/location/internal/DeviceOrientationRequestInternal.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/internal/DeviceOrientationRequestInternal.java rename to play-services-location/src/main/java/com/google/android/gms/location/internal/DeviceOrientationRequestInternal.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/internal/DeviceOrientationRequestUpdateData.java b/play-services-location/src/main/java/com/google/android/gms/location/internal/DeviceOrientationRequestUpdateData.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/internal/DeviceOrientationRequestUpdateData.java rename to play-services-location/src/main/java/com/google/android/gms/location/internal/DeviceOrientationRequestUpdateData.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/internal/FusedLocationProviderResult.java b/play-services-location/src/main/java/com/google/android/gms/location/internal/FusedLocationProviderResult.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/internal/FusedLocationProviderResult.java rename to play-services-location/src/main/java/com/google/android/gms/location/internal/FusedLocationProviderResult.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/internal/LocationRequestInternal.java b/play-services-location/src/main/java/com/google/android/gms/location/internal/LocationRequestInternal.java similarity index 76% rename from play-services-location-api/src/main/java/com/google/android/gms/location/internal/LocationRequestInternal.java rename to play-services-location/src/main/java/com/google/android/gms/location/internal/LocationRequestInternal.java index ee2e09a65..ab745a57e 100644 --- a/play-services-location-api/src/main/java/com/google/android/gms/location/internal/LocationRequestInternal.java +++ b/play-services-location/src/main/java/com/google/android/gms/location/internal/LocationRequestInternal.java @@ -1,17 +1,6 @@ /* - * Copyright (C) 2013-2017 microG Project Team - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 */ package com.google.android.gms.location.internal; @@ -19,7 +8,6 @@ package com.google.android.gms.location.internal; import com.google.android.gms.location.LocationRequest; import org.microg.safeparcel.AutoSafeParcelable; -import org.microg.safeparcel.SafeParceled; import java.util.List; diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/internal/LocationRequestUpdateData.java b/play-services-location/src/main/java/com/google/android/gms/location/internal/LocationRequestUpdateData.java similarity index 70% rename from play-services-location-api/src/main/java/com/google/android/gms/location/internal/LocationRequestUpdateData.java rename to play-services-location/src/main/java/com/google/android/gms/location/internal/LocationRequestUpdateData.java index 6da81cc3f..0d66e32ed 100644 --- a/play-services-location-api/src/main/java/com/google/android/gms/location/internal/LocationRequestUpdateData.java +++ b/play-services-location/src/main/java/com/google/android/gms/location/internal/LocationRequestUpdateData.java @@ -1,17 +1,6 @@ /* - * Copyright (C) 2013-2017 microG Project Team - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 */ package com.google.android.gms.location.internal; @@ -20,7 +9,6 @@ import android.app.PendingIntent; import com.google.android.gms.location.ILocationCallback; import com.google.android.gms.location.ILocationListener; -import com.google.android.gms.location.internal.IFusedLocationProviderCallback; import org.microg.safeparcel.AutoSafeParcelable; import org.microg.safeparcel.SafeParceled; diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/internal/ParcelableGeofence.java b/play-services-location/src/main/java/com/google/android/gms/location/internal/ParcelableGeofence.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/internal/ParcelableGeofence.java rename to play-services-location/src/main/java/com/google/android/gms/location/internal/ParcelableGeofence.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/reporting/OptInRequest.java b/play-services-location/src/main/java/com/google/android/gms/location/reporting/OptInRequest.java similarity index 92% rename from play-services-location-api/src/main/java/com/google/android/gms/location/reporting/OptInRequest.java rename to play-services-location/src/main/java/com/google/android/gms/location/reporting/OptInRequest.java index 5ade88013..44e1dc16c 100644 --- a/play-services-location-api/src/main/java/com/google/android/gms/location/reporting/OptInRequest.java +++ b/play-services-location/src/main/java/com/google/android/gms/location/reporting/OptInRequest.java @@ -8,7 +8,6 @@ package com.google.android.gms.location.reporting; import android.accounts.Account; import org.microg.safeparcel.AutoSafeParcelable; -import org.microg.safeparcel.SafeParceled; public class OptInRequest extends AutoSafeParcelable { @Field(2) diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/reporting/ReportingState.java b/play-services-location/src/main/java/com/google/android/gms/location/reporting/ReportingState.java similarity index 54% rename from play-services-location-api/src/main/java/com/google/android/gms/location/reporting/ReportingState.java rename to play-services-location/src/main/java/com/google/android/gms/location/reporting/ReportingState.java index 98a34d05b..8e1f952cd 100644 --- a/play-services-location-api/src/main/java/com/google/android/gms/location/reporting/ReportingState.java +++ b/play-services-location/src/main/java/com/google/android/gms/location/reporting/ReportingState.java @@ -1,23 +1,11 @@ /* - * Copyright (C) 2013-2017 microG Project Team - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 */ package com.google.android.gms.location.reporting; import org.microg.safeparcel.AutoSafeParcelable; -import org.microg.safeparcel.SafeParceled; public class ReportingState extends AutoSafeParcelable { @Field(1) diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/reporting/SendDataRequest.java b/play-services-location/src/main/java/com/google/android/gms/location/reporting/SendDataRequest.java similarity index 93% rename from play-services-location-api/src/main/java/com/google/android/gms/location/reporting/SendDataRequest.java rename to play-services-location/src/main/java/com/google/android/gms/location/reporting/SendDataRequest.java index f440fa8d1..4e4dee167 100644 --- a/play-services-location-api/src/main/java/com/google/android/gms/location/reporting/SendDataRequest.java +++ b/play-services-location/src/main/java/com/google/android/gms/location/reporting/SendDataRequest.java @@ -5,8 +5,6 @@ package com.google.android.gms.location.reporting; -import android.accounts.Account; - import org.microg.safeparcel.AutoSafeParcelable; public class SendDataRequest extends AutoSafeParcelable { diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/reporting/UlrPrivateModeRequest.java b/play-services-location/src/main/java/com/google/android/gms/location/reporting/UlrPrivateModeRequest.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/reporting/UlrPrivateModeRequest.java rename to play-services-location/src/main/java/com/google/android/gms/location/reporting/UlrPrivateModeRequest.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/reporting/UploadRequest.java b/play-services-location/src/main/java/com/google/android/gms/location/reporting/UploadRequest.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/reporting/UploadRequest.java rename to play-services-location/src/main/java/com/google/android/gms/location/reporting/UploadRequest.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/reporting/UploadRequestResult.java b/play-services-location/src/main/java/com/google/android/gms/location/reporting/UploadRequestResult.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/reporting/UploadRequestResult.java rename to play-services-location/src/main/java/com/google/android/gms/location/reporting/UploadRequestResult.java diff --git a/play-services-location/src/main/java/org/microg/gms/location/FusedLocationProviderApiImpl.java b/play-services-location/src/main/java/org/microg/gms/location/FusedLocationProviderApiImpl.java index df10c6a8e..3ebffee54 100644 --- a/play-services-location/src/main/java/org/microg/gms/location/FusedLocationProviderApiImpl.java +++ b/play-services-location/src/main/java/org/microg/gms/location/FusedLocationProviderApiImpl.java @@ -26,6 +26,8 @@ import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.common.api.PendingResult; import com.google.android.gms.common.api.Status; import com.google.android.gms.location.FusedLocationProviderApi; +import com.google.android.gms.location.LocationAvailability; +import com.google.android.gms.location.LocationCallback; import com.google.android.gms.location.LocationListener; import com.google.android.gms.location.LocationRequest; import com.google.android.gms.location.LocationServices; @@ -36,10 +38,14 @@ import org.microg.gms.common.GmsConnector; public class FusedLocationProviderApiImpl implements FusedLocationProviderApi { private static final String TAG = "GmsFusedApiImpl"; + @Override + public PendingResult flushLocations(GoogleApiClient client) { + return null; + } + @Override public Location getLastLocation(GoogleApiClient client) { try { - Log.d(TAG, "getLastLocation(" + client + ")"); return LocationClientImpl.get(client).getLastLocation(); } catch (RemoteException e) { Log.w(TAG, e); @@ -47,6 +53,16 @@ public class FusedLocationProviderApiImpl implements FusedLocationProviderApi { } } + @Override + public LocationAvailability getLocationAvailability(GoogleApiClient client) { + try { + return LocationClientImpl.get(client).getLocationAvailability(); + } catch (RemoteException e) { + Log.w(TAG, e); + return null; + } + } + @Override public PendingResult requestLocationUpdates(GoogleApiClient client, final LocationRequest request, final LocationListener listener) { @@ -58,6 +74,16 @@ public class FusedLocationProviderApiImpl implements FusedLocationProviderApi { }); } + @Override + public PendingResult requestLocationUpdates(GoogleApiClient client, LocationRequest request, LocationCallback callback, Looper looper) { + return callVoid(client, new Runnable() { + @Override + public void run(LocationClientImpl client) throws RemoteException { + client.requestLocationUpdates(request, callback, looper); + } + }); + } + @Override public PendingResult requestLocationUpdates(GoogleApiClient client, final LocationRequest request, final LocationListener listener, @@ -92,6 +118,16 @@ public class FusedLocationProviderApiImpl implements FusedLocationProviderApi { }); } + @Override + public PendingResult removeLocationUpdates(GoogleApiClient client, LocationCallback callback) { + return callVoid(client, new Runnable() { + @Override + public void run(LocationClientImpl client) throws RemoteException { + client.removeLocationUpdates(callback); + } + }); + } + @Override public PendingResult removeLocationUpdates(GoogleApiClient client, final PendingIntent callbackIntent) { diff --git a/play-services-location/src/main/java/org/microg/gms/location/FusedLocationProviderClientImpl.java b/play-services-location/src/main/java/org/microg/gms/location/FusedLocationProviderClientImpl.java new file mode 100644 index 000000000..c6cdfcbf7 --- /dev/null +++ b/play-services-location/src/main/java/org/microg/gms/location/FusedLocationProviderClientImpl.java @@ -0,0 +1,57 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.microg.gms.location; + +import android.content.Context; +import android.location.Location; +import android.os.Looper; +import android.os.RemoteException; + +import com.google.android.gms.common.api.Api; +import com.google.android.gms.common.api.GoogleApi; +import com.google.android.gms.location.FusedLocationProviderClient; +import com.google.android.gms.location.LocationCallback; +import com.google.android.gms.location.LocationRequest; +import com.google.android.gms.location.LocationServices; +import com.google.android.gms.tasks.Task; +import com.google.android.gms.tasks.TaskCompletionSource; + +import org.microg.gms.common.api.InstantGoogleApiCall; +import org.microg.gms.common.api.PendingGoogleApiCall; + +public class FusedLocationProviderClientImpl extends FusedLocationProviderClient { + public FusedLocationProviderClientImpl(Context context) { + super(context); + } + + public Task flushLocations() { + return scheduleTask(new PendingGoogleApiCall() { + @Override + public void execute(LocationClientImpl client, TaskCompletionSource completionSource) { + completionSource.setResult(null); + } + }); + } + + public Task getLastLocation() { + return scheduleTask((InstantGoogleApiCall) LocationClientImpl::getLastLocation); + } + + @Override + public Task requestLocationUpdates(LocationRequest request, LocationCallback callback, Looper looper) { + return scheduleTask(new PendingGoogleApiCall() { + @Override + public void execute(LocationClientImpl client, TaskCompletionSource completionSource) { + try { + client.requestLocationUpdates(request, callback, looper); + completionSource.setResult(null); + } catch (RemoteException e) { + completionSource.setException(e); + } + } + }); + } +} diff --git a/play-services-location/src/main/java/org/microg/gms/location/GeofencingClientImpl.java b/play-services-location/src/main/java/org/microg/gms/location/GeofencingClientImpl.java new file mode 100644 index 000000000..9ec23067e --- /dev/null +++ b/play-services-location/src/main/java/org/microg/gms/location/GeofencingClientImpl.java @@ -0,0 +1,19 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.microg.gms.location; + +import android.content.Context; + +import com.google.android.gms.common.api.Api; +import com.google.android.gms.common.api.GoogleApi; +import com.google.android.gms.location.GeofencingClient; +import com.google.android.gms.location.LocationServices; + +public class GeofencingClientImpl extends GoogleApi implements GeofencingClient { + public GeofencingClientImpl(Context context) { + super(context, LocationServices.API); + } +} diff --git a/play-services-location/src/main/java/org/microg/gms/location/LocationClientImpl.java b/play-services-location/src/main/java/org/microg/gms/location/LocationClientImpl.java index b2464774f..607911bda 100644 --- a/play-services-location/src/main/java/org/microg/gms/location/LocationClientImpl.java +++ b/play-services-location/src/main/java/org/microg/gms/location/LocationClientImpl.java @@ -19,7 +19,7 @@ package org.microg.gms.location; import android.app.PendingIntent; import android.content.Context; import android.location.Location; -import android.os.Bundle; +import android.os.Handler; import android.os.Looper; import android.os.RemoteException; import android.util.Log; @@ -27,8 +27,11 @@ import android.util.Log; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.location.GeofencingRequest; import com.google.android.gms.location.ILocationListener; +import com.google.android.gms.location.LocationAvailability; +import com.google.android.gms.location.LocationCallback; import com.google.android.gms.location.LocationListener; import com.google.android.gms.location.LocationRequest; +import com.google.android.gms.location.LocationResult; import com.google.android.gms.location.LocationServices; import com.google.android.gms.location.internal.IGeofencerCallbacks; import com.google.android.gms.location.internal.ParcelableGeofence; @@ -37,14 +40,15 @@ import org.microg.gms.common.api.ConnectionCallbacks; import org.microg.gms.common.api.GoogleApiClientImpl; import org.microg.gms.common.api.OnConnectionFailedListener; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; public class LocationClientImpl extends GoogleLocationManagerClient { private static final String TAG = "GmsLocationClientImpl"; - private NativeLocationClientImpl nativeLocation = null; private Map listenerMap = new HashMap(); + private Map callbackMap = new HashMap(); public LocationClientImpl(Context context, ConnectionCallbacks callbacks, @@ -62,120 +66,88 @@ public class LocationClientImpl extends GoogleLocationManagerClient { } public void addGeofences(GeofencingRequest request, PendingIntent pendingIntent, IGeofencerCallbacks callbacks) throws RemoteException { - if (nativeLocation != null) { - nativeLocation.addGeofences(request, pendingIntent, callbacks); - } else { - getServiceInterface().addGeofences(request, pendingIntent, callbacks); - } + getServiceInterface().addGeofences(request, pendingIntent, callbacks); } public void addGeofences(List request, PendingIntent pendingIntent, IGeofencerCallbacks callbacks) throws RemoteException { - if (nativeLocation != null) { - nativeLocation.addGeofences(request, pendingIntent, callbacks); - } else { - getServiceInterface().addGeofencesList(request, pendingIntent, callbacks, getContext().getPackageName()); - } + getServiceInterface().addGeofencesList(request, pendingIntent, callbacks, getContext().getPackageName()); } public void removeGeofences(List geofenceRequestIds, IGeofencerCallbacks callbacks) throws RemoteException { - if (nativeLocation != null) { - nativeLocation.removeGeofences(geofenceRequestIds, callbacks); - } else { - getServiceInterface().removeGeofencesById(geofenceRequestIds.toArray(new String[geofenceRequestIds.size()]), callbacks, getContext().getPackageName()); - } + getServiceInterface().removeGeofencesById(geofenceRequestIds.toArray(new String[geofenceRequestIds.size()]), callbacks, getContext().getPackageName()); } public void removeGeofences(PendingIntent pendingIntent, IGeofencerCallbacks callbacks) throws RemoteException { - if (nativeLocation != null) { - nativeLocation.removeGeofences(pendingIntent, callbacks); - } else { - getServiceInterface().removeGeofencesByIntent(pendingIntent, callbacks, getContext().getPackageName()); - } + getServiceInterface().removeGeofencesByIntent(pendingIntent, callbacks, getContext().getPackageName()); } public Location getLastLocation() throws RemoteException { - Log.d(TAG, "getLastLocation()"); - if (nativeLocation != null) { - return nativeLocation.getLastLocation(); - } else { - return getServiceInterface().getLastLocation(); - } + return getServiceInterface().getLastLocationWithPackage(getContext().getPackageName()); + } + + public LocationAvailability getLocationAvailability() throws RemoteException { + return getServiceInterface().getLocationAvailabilityWithPackage(getContext().getPackageName()); } public void requestLocationUpdates(LocationRequest request, final LocationListener listener) throws RemoteException { - if (nativeLocation != null) { - nativeLocation.requestLocationUpdates(request, listener); - } else { - if (!listenerMap.containsKey(listener)) { - listenerMap.put(listener, new ILocationListener.Stub() { - @Override - public void onLocationChanged(Location location) throws RemoteException { - listener.onLocationChanged(location); - } - }); - } - getServiceInterface().requestLocationUpdatesWithPackage(request, - listenerMap.get(listener), getContext().getPackageName()); + if (!listenerMap.containsKey(listener)) { + listenerMap.put(listener, new ILocationListener.Stub() { + @Override + public void onLocationChanged(Location location) throws RemoteException { + listener.onLocationChanged(location); + } + }); } + getServiceInterface().requestLocationUpdatesWithPackage(request, listenerMap.get(listener), getContext().getPackageName()); } public void requestLocationUpdates(LocationRequest request, PendingIntent pendingIntent) throws RemoteException { - if (nativeLocation != null) { - nativeLocation.requestLocationUpdates(request, pendingIntent); - } else { - getServiceInterface().requestLocationUpdatesWithIntent(request, pendingIntent); + getServiceInterface().requestLocationUpdatesWithIntent(request, pendingIntent); + } + + public void requestLocationUpdates(LocationRequest request, LocationListener listener, Looper looper) throws RemoteException { + if (!listenerMap.containsKey(listener)) { + listenerMap.put(listener, new ILocationListener.Stub() { + @Override + public void onLocationChanged(Location location) throws RemoteException { + (new Handler(looper)).post(() -> listener.onLocationChanged(location)); + } + }); } + getServiceInterface().requestLocationUpdatesWithPackage(request, listenerMap.get(listener), getContext().getPackageName()); } - public void requestLocationUpdates(LocationRequest request, LocationListener listener, - Looper looper) throws RemoteException { - if (nativeLocation != null) { - nativeLocation.requestLocationUpdates(request, listener, looper); + public void requestLocationUpdates(LocationRequest request, LocationCallback callback, Looper looper) throws RemoteException { + if (!callbackMap.containsKey(callback)) { + callbackMap.put(callback, new ILocationListener.Stub() { + @Override + public void onLocationChanged(Location location) throws RemoteException { + (new Handler(looper)).post(() -> callback.onLocationResult(LocationResult.create(Collections.singletonList(location)))); + } + }); } - requestLocationUpdates(request, listener); // TODO + getServiceInterface().requestLocationUpdatesWithPackage(request, callbackMap.get(callback), getContext().getPackageName()); } public void removeLocationUpdates(LocationListener listener) throws RemoteException { - if (nativeLocation != null) { - nativeLocation.removeLocationUpdates(listener); - } else { - getServiceInterface().removeLocationUpdatesWithListener(listenerMap.get(listener)); - } + getServiceInterface().removeLocationUpdatesWithListener(listenerMap.get(listener)); + } + + public void removeLocationUpdates(LocationCallback callback) throws RemoteException { + getServiceInterface().removeLocationUpdatesWithListener(callbackMap.get(callback)); } public void removeLocationUpdates(PendingIntent pendingIntent) throws RemoteException { - if (nativeLocation != null) { - nativeLocation.removeLocationUpdates(pendingIntent); - } else { - getServiceInterface().removeLocationUpdatesWithIntent(pendingIntent); - } + getServiceInterface().removeLocationUpdatesWithIntent(pendingIntent); } public void setMockMode(boolean isMockMode) throws RemoteException { - if (nativeLocation != null) { - nativeLocation.setMockMode(isMockMode); - } else { - getServiceInterface().setMockMode(isMockMode); - } + getServiceInterface().setMockMode(isMockMode); } public void setMockLocation(Location mockLocation) throws RemoteException { - if (nativeLocation != null) { - nativeLocation.setMockLocation(mockLocation); - } else { - getServiceInterface().setMockLocation(mockLocation); - } - } - - @Override - public void handleConnectionFailed() { - // DO NOT call super here, because fails are not really problems :) - nativeLocation = new NativeLocationClientImpl(this); - state = ConnectionState.PSEUDO_CONNECTED; - Bundle bundle = new Bundle(); - bundle.putBoolean("fallback_to_native_active", true); - callbacks.onConnected(bundle); + getServiceInterface().setMockLocation(mockLocation); } } diff --git a/play-services-location/src/main/java/org/microg/gms/location/NativeLocationClientImpl.java b/play-services-location/src/main/java/org/microg/gms/location/NativeLocationClientImpl.java deleted file mode 100644 index 78e0cd506..000000000 --- a/play-services-location/src/main/java/org/microg/gms/location/NativeLocationClientImpl.java +++ /dev/null @@ -1,264 +0,0 @@ -/* - * 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 org.microg.gms.location; - -import android.app.PendingIntent; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.location.Criteria; -import android.location.Location; -import android.location.LocationManager; -import android.os.Bundle; -import android.os.Looper; -import android.os.RemoteException; -import android.os.SystemClock; -import android.util.Log; - -import com.google.android.gms.common.api.CommonStatusCodes; -import com.google.android.gms.location.FusedLocationProviderApi; -import com.google.android.gms.location.Geofence; -import com.google.android.gms.location.GeofenceStatusCodes; -import com.google.android.gms.location.GeofencingEvent; -import com.google.android.gms.location.GeofencingRequest; -import com.google.android.gms.location.LocationListener; -import com.google.android.gms.location.LocationRequest; -import com.google.android.gms.location.internal.IGeofencerCallbacks; -import com.google.android.gms.location.internal.ParcelableGeofence; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static android.location.LocationManager.KEY_LOCATION_CHANGED; -import static android.location.LocationManager.KEY_PROXIMITY_ENTERING; - -@SuppressWarnings("MissingPermission") -public class NativeLocationClientImpl { - private final static String TAG = "GmsToNativeLocClient"; - private final static Criteria DEFAULT_CRITERIA = new Criteria(); - private final static Map pendingCount = new HashMap(); - private final static Map nativePendingMap = new HashMap(); - private static final String EXTRA_PENDING_INTENT = "pending_intent"; - - private final Context context; - private final LocationManager locationManager; - private final Map nativeListenerMap = new HashMap(); - - public NativeLocationClientImpl(LocationClientImpl client) { - context = client.getContext(); - locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); - } - - private static Criteria makeNativeCriteria(LocationRequest request) { - Criteria criteria = new Criteria(); - switch (request.getPriority()) { - case LocationRequest.PRIORITY_HIGH_ACCURACY: - criteria.setAccuracy(Criteria.ACCURACY_FINE); - criteria.setPowerRequirement(Criteria.POWER_HIGH); - break; - case LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY: - default: - criteria.setAccuracy(Criteria.ACCURACY_COARSE); - criteria.setPowerRequirement(Criteria.POWER_MEDIUM); - break; - case LocationRequest.PRIORITY_NO_POWER: - case LocationRequest.PRIORITY_LOW_POWER: - criteria.setAccuracy(Criteria.ACCURACY_COARSE); - criteria.setPowerRequirement(Criteria.POWER_LOW); - } - return criteria; - } - - public void addGeofences(GeofencingRequest geofencingRequest, PendingIntent pendingIntent, IGeofencerCallbacks callbacks) throws RemoteException { - Log.d(TAG, "addGeofences(GeofencingRequest)"); - callbacks.onAddGeofenceResult(GeofenceStatusCodes.GEOFENCE_NOT_AVAILABLE, new String[0]); - } - - public void addGeofences(List geofences, PendingIntent pendingIntent, IGeofencerCallbacks callbacks) throws RemoteException { - Log.d(TAG, "addGeofences(List)"); - Intent i = new Intent(context, NativePendingIntentForwarder.class); - Bundle bundle = new Bundle(); - bundle.putParcelable(EXTRA_PENDING_INTENT, pendingIntent); - i.putExtras(bundle); - nativePendingMap.put(pendingIntent, PendingIntent.getActivity(context, 0, i, 0)); - List requestIds = new ArrayList(); - for (ParcelableGeofence geofence : geofences) { - locationManager.addProximityAlert(geofence.latitude, geofence.longitude, geofence.radius, - geofence.expirationTime - SystemClock.elapsedRealtime(), nativePendingMap.get(pendingIntent)); - requestIds.add(geofence.getRequestId()); - } - callbacks.onAddGeofenceResult(CommonStatusCodes.SUCCESS, requestIds.toArray(new String[requestIds.size()])); - } - - public void removeGeofences(List requestIds, IGeofencerCallbacks callbacks) throws RemoteException { - Log.d(TAG, "removeGeofences(List)"); - callbacks.onRemoveGeofencesByRequestIdsResult(GeofenceStatusCodes.ERROR, requestIds.toArray(new String[requestIds.size()])); - } - - public void removeGeofences(PendingIntent pendingIntent, IGeofencerCallbacks callbacks) throws RemoteException { - Log.d(TAG, "removeGeofences(PendingIntent)"); - locationManager.removeProximityAlert(nativePendingMap.get(pendingIntent)); - nativePendingMap.remove(pendingIntent); - callbacks.onRemoveGeofencesByPendingIntentResult(CommonStatusCodes.SUCCESS, pendingIntent); - } - - public Location getLastLocation() { - Log.d(TAG, "getLastLocation()"); - return locationManager.getLastKnownLocation(locationManager.getBestProvider(DEFAULT_CRITERIA, true)); - } - - public void requestLocationUpdates(LocationRequest request, LocationListener listener) { - requestLocationUpdates(request, listener, Looper.getMainLooper()); - } - - public void requestLocationUpdates(LocationRequest request, PendingIntent pendingIntent) { - Log.d(TAG, "requestLocationUpdates()"); - Intent i = new Intent(context, NativePendingIntentForwarder.class); - Bundle bundle = new Bundle(); - bundle.putParcelable(EXTRA_PENDING_INTENT, pendingIntent); - i.putExtras(bundle); - pendingCount.put(pendingIntent, request.getNumUpdates()); - nativePendingMap.put(pendingIntent, PendingIntent.getActivity(context, 0, i, 0)); - locationManager.requestLocationUpdates(request.getInterval(), request.getSmallestDisplacement(), - makeNativeCriteria(request), nativePendingMap.get(pendingIntent)); - } - - public void requestLocationUpdates(LocationRequest request, LocationListener listener, Looper - looper) { - Log.d(TAG, "requestLocationUpdates()"); - if (nativeListenerMap.containsKey(listener)) { - removeLocationUpdates(listener); - } - nativeListenerMap.put(listener, new NativeListener(listener, request.getNumUpdates())); - locationManager.requestLocationUpdates(request.getInterval(), - request.getSmallestDisplacement(), makeNativeCriteria(request), - nativeListenerMap.get(listener), looper); - } - - public void removeLocationUpdates(LocationListener listener) { - Log.d(TAG, "removeLocationUpdates()"); - locationManager.removeUpdates(nativeListenerMap.get(listener)); - nativeListenerMap.remove(listener); - } - - public void removeLocationUpdates(PendingIntent pendingIntent) { - Log.d(TAG, "removeLocationUpdates()"); - locationManager.removeUpdates(nativePendingMap.get(pendingIntent)); - nativePendingMap.remove(pendingIntent); - pendingCount.remove(pendingIntent); - } - - public void setMockMode(boolean isMockMode) { - Log.d(TAG, "setMockMode()"); - // not yet supported - } - - public void setMockLocation(Location mockLocation) { - Log.d(TAG, "setMockLocation()"); - // not yet supported - } - - public static class NativePendingIntentForwarder extends BroadcastReceiver { - - @Override - public void onReceive(Context context, Intent intent) { - if (intent.hasExtra(KEY_PROXIMITY_ENTERING)) { - PendingIntent pendingIntent = intent.getExtras().getParcelable(EXTRA_PENDING_INTENT); - try { - intent.putExtra(GeofencingEvent.EXTRA_TRANSITION, intent.getBooleanExtra(KEY_PROXIMITY_ENTERING, false) ? Geofence.GEOFENCE_TRANSITION_ENTER : Geofence.GEOFENCE_TRANSITION_EXIT); - pendingIntent.send(context, 0, intent); - } catch (PendingIntent.CanceledException e) { - nativePendingMap.remove(pendingIntent); - } - } else if (intent.hasExtra(KEY_LOCATION_CHANGED)) { - PendingIntent pendingIntent = intent.getExtras().getParcelable(EXTRA_PENDING_INTENT); - try { - intent.putExtra(FusedLocationProviderApi.KEY_LOCATION_CHANGED, - intent.getParcelableExtra(KEY_LOCATION_CHANGED)); - pendingIntent.send(context, 0, intent); - pendingCount.put(pendingIntent, pendingCount.get(pendingIntent) - 1); - if (pendingCount.get(pendingIntent) == 0) { - ((LocationManager) context.getSystemService(Context.LOCATION_SERVICE)) - .removeUpdates(nativePendingMap.get(pendingIntent)); - nativePendingMap.remove(pendingIntent); - pendingCount.remove(pendingIntent); - } - } catch (PendingIntent.CanceledException e) { - ((LocationManager) context.getSystemService(Context.LOCATION_SERVICE)) - .removeUpdates(nativePendingMap.get(pendingIntent)); - nativePendingMap.remove(pendingIntent); - pendingCount.remove(pendingIntent); - } - } - } - } - - public class NativeListener implements android.location.LocationListener { - - private final LocationListener listener; - private int count; - - private NativeListener(LocationListener listener, int count) { - this.listener = listener; - this.count = count; - } - - @Override - public void onLocationChanged(Location location) { - listener.onLocationChanged(location); - count--; - if (count == 0) { - locationManager.removeUpdates(this); - nativeListenerMap.remove(listener); - } - } - - @Override - public void onStatusChanged(String provider, int status, Bundle extras) { - - } - - @Override - public void onProviderEnabled(String provider) { - - } - - @Override - public void onProviderDisabled(String provider) { - - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - NativeListener that = (NativeListener) o; - - if (!listener.equals(that.listener)) return false; - - return true; - } - - @Override - public int hashCode() { - return listener.hashCode(); - } - } -} diff --git a/play-services-location/src/main/java/org/microg/gms/location/SettingsClientImpl.java b/play-services-location/src/main/java/org/microg/gms/location/SettingsClientImpl.java new file mode 100644 index 000000000..5e4a4b7f1 --- /dev/null +++ b/play-services-location/src/main/java/org/microg/gms/location/SettingsClientImpl.java @@ -0,0 +1,20 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.microg.gms.location; + +import android.content.Context; + +import com.google.android.gms.common.api.Api; +import com.google.android.gms.common.api.GoogleApi; +import com.google.android.gms.location.GeofencingClient; +import com.google.android.gms.location.LocationServices; +import com.google.android.gms.location.SettingsClient; + +public class SettingsClientImpl extends GoogleApi implements SettingsClient { + public SettingsClientImpl(Context context) { + super(context, LocationServices.API); + } +} diff --git a/play-services-maps-core-mapbox/build.gradle b/play-services-maps-core-mapbox/build.gradle index 06470fd21..3667c4f51 100644 --- a/play-services-maps-core-mapbox/build.gradle +++ b/play-services-maps-core-mapbox/build.gradle @@ -18,7 +18,7 @@ apply plugin: 'com.android.library' apply plugin: 'kotlin-android' dependencies { - implementation project(':play-services-api') + implementation project(':play-services-maps') implementation project(':play-services-base-core') implementation("com.mapbox.mapboxsdk:mapbox-android-sdk:9.2.1") { exclude group: 'com.mapbox.mapboxsdk', module: 'mapbox-android-accounts' diff --git a/play-services-maps-core-vtm/build.gradle b/play-services-maps-core-vtm/build.gradle index 08c8af922..193fb3db8 100644 --- a/play-services-maps-core-vtm/build.gradle +++ b/play-services-maps-core-vtm/build.gradle @@ -17,7 +17,7 @@ apply plugin: "com.android.library" dependencies { - implementation project(":play-services-api") + implementation project(":play-services-maps") implementation "org.microg:vtm-android:0.9.1-mod" implementation "org.microg:vtm-android:0.9.1-mod:natives-armeabi" diff --git a/play-services-maps/build.gradle b/play-services-maps/build.gradle new file mode 100644 index 000000000..a59d8287a --- /dev/null +++ b/play-services-maps/build.gradle @@ -0,0 +1,35 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +apply plugin: 'com.android.library' +apply plugin: 'maven-publish' +apply plugin: 'signing' + +android { + compileSdkVersion androidCompileSdk + buildToolsVersion "$androidBuildVersionTools" + + defaultConfig { + versionName version + minSdkVersion androidMinSdk + targetSdkVersion androidTargetSdk + } + + compileOptions { + sourceCompatibility = 1.8 + targetCompatibility = 1.8 + } +} + +apply from: '../gradle/publish-android.gradle' + +description = 'microG implementation of play-services-maps' + +dependencies { + // Dependencies from play-services-maps:18.1.0 + api "androidx.fragment:fragment:1.0.0" + api project(":play-services-base") + api project(":play-services-basement") +} diff --git a/play-services-maps/src/main/AndroidManifest.xml b/play-services-maps/src/main/AndroidManifest.xml new file mode 100644 index 000000000..dce4c6500 --- /dev/null +++ b/play-services-maps/src/main/AndroidManifest.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/GoogleMapOptions.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/GoogleMapOptions.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/GoogleMapOptions.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/GoogleMapOptions.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/ICameraUpdateFactoryDelegate.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/ICameraUpdateFactoryDelegate.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/internal/ICameraUpdateFactoryDelegate.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/ICameraUpdateFactoryDelegate.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/ICancelableCallback.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/ICancelableCallback.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/internal/ICancelableCallback.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/ICancelableCallback.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/ICreator.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/ICreator.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/internal/ICreator.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/ICreator.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IGoogleMapDelegate.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IGoogleMapDelegate.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IGoogleMapDelegate.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IGoogleMapDelegate.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IInfoWindowAdapter.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IInfoWindowAdapter.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IInfoWindowAdapter.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IInfoWindowAdapter.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/ILocationSourceDelegate.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/ILocationSourceDelegate.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/internal/ILocationSourceDelegate.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/ILocationSourceDelegate.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IMapFragmentDelegate.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IMapFragmentDelegate.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IMapFragmentDelegate.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IMapFragmentDelegate.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IMapViewDelegate.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IMapViewDelegate.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IMapViewDelegate.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IMapViewDelegate.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraChangeListener.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraChangeListener.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraChangeListener.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraChangeListener.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraIdleListener.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraIdleListener.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraIdleListener.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraIdleListener.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraMoveCanceledListener.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraMoveCanceledListener.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraMoveCanceledListener.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraMoveCanceledListener.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraMoveListener.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraMoveListener.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraMoveListener.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraMoveListener.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraMoveStartedListener.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraMoveStartedListener.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraMoveStartedListener.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnCameraMoveStartedListener.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnInfoWindowClickListener.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnInfoWindowClickListener.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnInfoWindowClickListener.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnInfoWindowClickListener.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMapClickListener.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnMapClickListener.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMapClickListener.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnMapClickListener.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMapLoadedCallback.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnMapLoadedCallback.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMapLoadedCallback.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnMapLoadedCallback.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMapLongClickListener.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnMapLongClickListener.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMapLongClickListener.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnMapLongClickListener.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMapReadyCallback.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnMapReadyCallback.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMapReadyCallback.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnMapReadyCallback.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMarkerClickListener.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnMarkerClickListener.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMarkerClickListener.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnMarkerClickListener.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMarkerDragListener.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnMarkerDragListener.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMarkerDragListener.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnMarkerDragListener.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMyLocationButtonClickListener.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnMyLocationButtonClickListener.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMyLocationButtonClickListener.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnMyLocationButtonClickListener.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMyLocationChangeListener.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnMyLocationChangeListener.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IOnMyLocationChangeListener.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnMyLocationChangeListener.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IProjectionDelegate.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IProjectionDelegate.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IProjectionDelegate.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IProjectionDelegate.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/ISnapshotReadyCallback.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/ISnapshotReadyCallback.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/internal/ISnapshotReadyCallback.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/ISnapshotReadyCallback.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IUiSettingsDelegate.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IUiSettingsDelegate.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/internal/IUiSettingsDelegate.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IUiSettingsDelegate.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/CameraPosition.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/CameraPosition.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/model/CameraPosition.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/model/CameraPosition.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/CircleOptions.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/CircleOptions.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/model/CircleOptions.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/model/CircleOptions.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/GroundOverlayOptions.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/GroundOverlayOptions.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/model/GroundOverlayOptions.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/model/GroundOverlayOptions.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/maps/model/LatLng.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/LatLng.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/maps/model/LatLng.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/model/LatLng.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/maps/model/LatLngBounds.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/LatLngBounds.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/maps/model/LatLngBounds.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/model/LatLngBounds.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/MapStyleOptions.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/MapStyleOptions.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/model/MapStyleOptions.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/model/MapStyleOptions.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/MarkerOptions.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/MarkerOptions.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/model/MarkerOptions.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/model/MarkerOptions.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/PatternItem.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/PatternItem.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/model/PatternItem.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/model/PatternItem.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/PolygonOptions.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/PolygonOptions.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/model/PolygonOptions.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/model/PolygonOptions.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/PolylineOptions.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/PolylineOptions.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/model/PolylineOptions.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/model/PolylineOptions.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/Tile.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/Tile.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/model/Tile.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/model/Tile.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/TileOverlayOptions.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/TileOverlayOptions.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/model/TileOverlayOptions.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/model/TileOverlayOptions.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/VisibleRegion.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/VisibleRegion.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/model/VisibleRegion.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/model/VisibleRegion.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/IBitmapDescriptorFactoryDelegate.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/IBitmapDescriptorFactoryDelegate.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/IBitmapDescriptorFactoryDelegate.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/IBitmapDescriptorFactoryDelegate.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/ICircleDelegate.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/ICircleDelegate.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/ICircleDelegate.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/ICircleDelegate.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/IGroundOverlayDelegate.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/IGroundOverlayDelegate.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/IGroundOverlayDelegate.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/IGroundOverlayDelegate.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/IMarkerDelegate.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/IMarkerDelegate.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/IMarkerDelegate.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/IMarkerDelegate.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/IPolygonDelegate.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/IPolygonDelegate.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/IPolygonDelegate.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/IPolygonDelegate.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/IPolylineDelegate.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/IPolylineDelegate.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/IPolylineDelegate.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/IPolylineDelegate.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/ITileOverlayDelegate.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/ITileOverlayDelegate.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/ITileOverlayDelegate.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/ITileOverlayDelegate.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/ITileProviderDelegate.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/ITileProviderDelegate.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/maps/model/internal/ITileProviderDelegate.aidl rename to play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/ITileProviderDelegate.aidl diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/GoogleMapOptions.java b/play-services-maps/src/main/java/com/google/android/gms/maps/GoogleMapOptions.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/maps/GoogleMapOptions.java rename to play-services-maps/src/main/java/com/google/android/gms/maps/GoogleMapOptions.java diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/StreetViewPanoramaOptions.java b/play-services-maps/src/main/java/com/google/android/gms/maps/StreetViewPanoramaOptions.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/maps/StreetViewPanoramaOptions.java rename to play-services-maps/src/main/java/com/google/android/gms/maps/StreetViewPanoramaOptions.java diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/internal/Point.java b/play-services-maps/src/main/java/com/google/android/gms/maps/internal/Point.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/maps/internal/Point.java rename to play-services-maps/src/main/java/com/google/android/gms/maps/internal/Point.java diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/BitmapDescriptor.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/BitmapDescriptor.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/maps/model/BitmapDescriptor.java rename to play-services-maps/src/main/java/com/google/android/gms/maps/model/BitmapDescriptor.java diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/CameraPosition.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/CameraPosition.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/maps/model/CameraPosition.java rename to play-services-maps/src/main/java/com/google/android/gms/maps/model/CameraPosition.java diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/CircleOptions.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/CircleOptions.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/maps/model/CircleOptions.java rename to play-services-maps/src/main/java/com/google/android/gms/maps/model/CircleOptions.java diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/Dash.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/Dash.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/maps/model/Dash.java rename to play-services-maps/src/main/java/com/google/android/gms/maps/model/Dash.java diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/Dot.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/Dot.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/maps/model/Dot.java rename to play-services-maps/src/main/java/com/google/android/gms/maps/model/Dot.java diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/Gap.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/Gap.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/maps/model/Gap.java rename to play-services-maps/src/main/java/com/google/android/gms/maps/model/Gap.java diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/GroundOverlayOptions.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/GroundOverlayOptions.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/maps/model/GroundOverlayOptions.java rename to play-services-maps/src/main/java/com/google/android/gms/maps/model/GroundOverlayOptions.java diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/JointType.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/JointType.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/maps/model/JointType.java rename to play-services-maps/src/main/java/com/google/android/gms/maps/model/JointType.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/maps/model/LatLng.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/LatLng.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/maps/model/LatLng.java rename to play-services-maps/src/main/java/com/google/android/gms/maps/model/LatLng.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/maps/model/LatLngBounds.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/LatLngBounds.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/maps/model/LatLngBounds.java rename to play-services-maps/src/main/java/com/google/android/gms/maps/model/LatLngBounds.java diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/MapStyleOptions.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/MapStyleOptions.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/maps/model/MapStyleOptions.java rename to play-services-maps/src/main/java/com/google/android/gms/maps/model/MapStyleOptions.java diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/MarkerOptions.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/MarkerOptions.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/maps/model/MarkerOptions.java rename to play-services-maps/src/main/java/com/google/android/gms/maps/model/MarkerOptions.java diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/PatternItem.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/PatternItem.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/maps/model/PatternItem.java rename to play-services-maps/src/main/java/com/google/android/gms/maps/model/PatternItem.java diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/PolygonOptions.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/PolygonOptions.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/maps/model/PolygonOptions.java rename to play-services-maps/src/main/java/com/google/android/gms/maps/model/PolygonOptions.java diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/PolylineOptions.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/PolylineOptions.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/maps/model/PolylineOptions.java rename to play-services-maps/src/main/java/com/google/android/gms/maps/model/PolylineOptions.java diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaCamera.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaCamera.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaCamera.java rename to play-services-maps/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaCamera.java diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaLink.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaLink.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaLink.java rename to play-services-maps/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaLink.java diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaLocation.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaLocation.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaLocation.java rename to play-services-maps/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaLocation.java diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaOrientation.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaOrientation.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaOrientation.java rename to play-services-maps/src/main/java/com/google/android/gms/maps/model/StreetViewPanoramaOrientation.java diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/Tile.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/Tile.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/maps/model/Tile.java rename to play-services-maps/src/main/java/com/google/android/gms/maps/model/Tile.java diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/TileOverlayOptions.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/TileOverlayOptions.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/maps/model/TileOverlayOptions.java rename to play-services-maps/src/main/java/com/google/android/gms/maps/model/TileOverlayOptions.java diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/TileProvider.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/TileProvider.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/maps/model/TileProvider.java rename to play-services-maps/src/main/java/com/google/android/gms/maps/model/TileProvider.java diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/VisibleRegion.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/VisibleRegion.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/maps/model/VisibleRegion.java rename to play-services-maps/src/main/java/com/google/android/gms/maps/model/VisibleRegion.java diff --git a/play-services-api/src/main/java/com/google/android/gms/maps/model/package-info.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/package-info.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/maps/model/package-info.java rename to play-services-maps/src/main/java/com/google/android/gms/maps/model/package-info.java diff --git a/play-services-maps/src/main/java/com/google/android/gms/maps/package-info.java b/play-services-maps/src/main/java/com/google/android/gms/maps/package-info.java new file mode 100644 index 000000000..e569ce14a --- /dev/null +++ b/play-services-maps/src/main/java/com/google/android/gms/maps/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 the Google Maps SDK for Android classes. + */ +package com.google.android.gms.maps; diff --git a/play-services-api/src/main/java/org/microg/gms/maps/MapsConstants.java b/play-services-maps/src/main/java/org/microg/gms/maps/MapsConstants.java similarity index 100% rename from play-services-api/src/main/java/org/microg/gms/maps/MapsConstants.java rename to play-services-maps/src/main/java/org/microg/gms/maps/MapsConstants.java diff --git a/play-services-fido-api/build.gradle b/play-services-measurement-base/build.gradle similarity index 83% rename from play-services-fido-api/build.gradle rename to play-services-measurement-base/build.gradle index b8f659f52..1834ed8a5 100644 --- a/play-services-fido-api/build.gradle +++ b/play-services-measurement-base/build.gradle @@ -25,9 +25,9 @@ android { apply from: '../gradle/publish-android.gradle' -description = 'microG API for play-services-fido' +description = 'microG implementation of play-services-clearcut' dependencies { + // Dependencies from play-services-measurement-base:21.2.0 api project(':play-services-basement') - api project(':play-services-base-api') } diff --git a/play-services-measurement-base/src/main/AndroidManifest.xml b/play-services-measurement-base/src/main/AndroidManifest.xml new file mode 100644 index 000000000..2b5232831 --- /dev/null +++ b/play-services-measurement-base/src/main/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + \ No newline at end of file diff --git a/play-services-api/src/main/aidl/com/google/android/gms/measurement/api/internal/IAppMeasurementDynamiteService.aidl b/play-services-measurement-base/src/main/aidl/com/google/android/gms/measurement/api/internal/IAppMeasurementDynamiteService.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/measurement/api/internal/IAppMeasurementDynamiteService.aidl rename to play-services-measurement-base/src/main/aidl/com/google/android/gms/measurement/api/internal/IAppMeasurementDynamiteService.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/measurement/api/internal/IBundleReceiver.aidl b/play-services-measurement-base/src/main/aidl/com/google/android/gms/measurement/api/internal/IBundleReceiver.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/measurement/api/internal/IBundleReceiver.aidl rename to play-services-measurement-base/src/main/aidl/com/google/android/gms/measurement/api/internal/IBundleReceiver.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/measurement/api/internal/IEventHandlerProxy.aidl b/play-services-measurement-base/src/main/aidl/com/google/android/gms/measurement/api/internal/IEventHandlerProxy.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/measurement/api/internal/IEventHandlerProxy.aidl rename to play-services-measurement-base/src/main/aidl/com/google/android/gms/measurement/api/internal/IEventHandlerProxy.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/measurement/api/internal/IStringProvider.aidl b/play-services-measurement-base/src/main/aidl/com/google/android/gms/measurement/api/internal/IStringProvider.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/measurement/api/internal/IStringProvider.aidl rename to play-services-measurement-base/src/main/aidl/com/google/android/gms/measurement/api/internal/IStringProvider.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/measurement/api/internal/InitializationParams.aidl b/play-services-measurement-base/src/main/aidl/com/google/android/gms/measurement/api/internal/InitializationParams.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/measurement/api/internal/InitializationParams.aidl rename to play-services-measurement-base/src/main/aidl/com/google/android/gms/measurement/api/internal/InitializationParams.aidl diff --git a/play-services-api/src/main/java/com/google/android/gms/measurement/api/internal/InitializationParams.java b/play-services-measurement-base/src/main/java/com/google/android/gms/measurement/api/internal/InitializationParams.java similarity index 100% rename from play-services-api/src/main/java/com/google/android/gms/measurement/api/internal/InitializationParams.java rename to play-services-measurement-base/src/main/java/com/google/android/gms/measurement/api/internal/InitializationParams.java diff --git a/play-services-nearby-api/src/main/AndroidManifest.xml b/play-services-nearby-api/src/main/AndroidManifest.xml deleted file mode 100644 index eef5d60f6..000000000 --- a/play-services-nearby-api/src/main/AndroidManifest.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/play-services-nearby-api/src/main/java/org/microg/gms/nearby/exposurenotification/Constants.java b/play-services-nearby-api/src/main/java/org/microg/gms/nearby/exposurenotification/Constants.java deleted file mode 100644 index 5c40b145c..000000000 --- a/play-services-nearby-api/src/main/java/org/microg/gms/nearby/exposurenotification/Constants.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2020, microG Project Team - * SPDX-License-Identifier: Apache-2.0 - */ - -package org.microg.gms.nearby.exposurenotification; - -import static org.microg.gms.common.Constants.GMS_VERSION_CODE; - -public class Constants { - public static final String ACTION_EXPOSURE_NOTIFICATION_SETTINGS = "com.google.android.gms.settings.EXPOSURE_NOTIFICATION_SETTINGS"; - public static final String ACTION_EXPOSURE_NOT_FOUND = "com.google.android.gms.exposurenotification.ACTION_EXPOSURE_NOT_FOUND"; - public static final String ACTION_EXPOSURE_STATE_UPDATED = "com.google.android.gms.exposurenotification.ACTION_EXPOSURE_STATE_UPDATED"; - public static final String ACTION_PRE_AUTHORIZE_RELEASE_PHONE_UNLOCKED = "com.google.android.gms.exposurenotification.ACTION_PRE_AUTHORIZE_RELEASE_PHONE_UNLOCKED"; - public static final String ACTION_SERVICE_STATE_UPDATED = "com.google.android.gms.exposurenotification.ACTION_SERVICE_STATE_UPDATED"; - public static final String EXTRA_EXPOSURE_SUMMARY = "com.google.android.gms.exposurenotification.EXTRA_EXPOSURE_SUMMARY"; - public static final String EXTRA_SERVICE_STATE = "com.google.android.gms.exposurenotification.EXTRA_SERVICE_STATE"; - public static final String EXTRA_TEMPORARY_EXPOSURE_KEY_LIST = "com.google.android.gms.exposurenotification.EXTRA_TEMPORARY_EXPOSURE_KEY_LIST"; - public static final String EXTRA_TOKEN = "com.google.android.gms.exposurenotification.EXTRA_TOKEN"; - public static final String TOKEN_A = "TYZWQ32170AXEUVCDW7A"; - public static final int DAYS_SINCE_ONSET_OF_SYMPTOMS_UNKNOWN = Integer.MAX_VALUE; - public static final int VERSION = 18; - public static final long VERSION_FULL = ((long)VERSION) * 1000000000L + GMS_VERSION_CODE; -} diff --git a/play-services-nearby-core-proto/build.gradle b/play-services-nearby-core-proto/build.gradle deleted file mode 100644 index c99a4c61d..000000000 --- a/play-services-nearby-core-proto/build.gradle +++ /dev/null @@ -1,33 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2020, microG Project Team - * SPDX-License-Identifier: Apache-2.0 - */ - -apply plugin: 'com.squareup.wire' -apply plugin: 'kotlin' -apply plugin: 'maven-publish' -apply plugin: 'signing' - -dependencies { - implementation "com.squareup.wire:wire-runtime:$wireVersion" -} - -wire { - kotlin {} -} - -sourceSets { - main.java.srcDirs += "$buildDir/generated/source/wire" -} - -compileKotlin { - kotlinOptions.jvmTarget = 1.8 -} - -compileTestKotlin { - kotlinOptions.jvmTarget = 1.8 -} - -apply from: '../gradle/publish-java.gradle' - -description = 'Protocol buffers for microG implementation of play-services-nearby' diff --git a/play-services-nearby-core-ui/build.gradle b/play-services-nearby-core-ui/build.gradle deleted file mode 100644 index b274ec752..000000000 --- a/play-services-nearby-core-ui/build.gradle +++ /dev/null @@ -1,65 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2020, microG Project Team - * SPDX-License-Identifier: Apache-2.0 - */ - -apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' -apply plugin: 'kotlin-kapt' -apply plugin: 'maven-publish' -apply plugin: 'signing' - -dependencies { - implementation project(':play-services-nearby-core') - implementation project(':play-services-base-core-ui') - - // AndroidX UI - implementation "androidx.multidex:multidex:$multidexVersion" - implementation "androidx.appcompat:appcompat:$appcompatVersion" - implementation "androidx.preference:preference-ktx:$preferenceVersion" - - // Navigation - implementation "androidx.navigation:navigation-fragment-ktx:$navigationVersion" - implementation "androidx.navigation:navigation-ui-ktx:$navigationVersion" - - implementation "androidx.lifecycle:lifecycle-service:$lifecycleVersion" - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion" -} - -android { - compileSdkVersion androidCompileSdk - buildToolsVersion "$androidBuildVersionTools" - - defaultConfig { - versionName version - minSdkVersion androidMinSdk - targetSdkVersion androidTargetSdk - } - - buildFeatures { - dataBinding = true - } - - sourceSets { - main { - java.srcDirs = ['src/main/kotlin'] - } - } - - lintOptions { - disable 'MissingTranslation' - } - - compileOptions { - sourceCompatibility = 1.8 - targetCompatibility = 1.8 - } - - kotlinOptions { - jvmTarget = 1.8 - } -} - -apply from: '../gradle/publish-android.gradle' - -description = 'UI for microG service implementation for play-services-nearby' diff --git a/play-services-nearby-core-ui/src/main/AndroidManifest.xml b/play-services-nearby-core-ui/src/main/AndroidManifest.xml deleted file mode 100644 index cb0f3e9bd..000000000 --- a/play-services-nearby-core-ui/src/main/AndroidManifest.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/play-services-nearby-core/src/main/res/values-be/strings.xml b/play-services-nearby-core/src/main/res/values-be/strings.xml deleted file mode 100644 index b177990b9..000000000 --- a/play-services-nearby-core/src/main/res/values-be/strings.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - Паведамленні аб рызыцы інфікавання не актыўныя - Bluetooth павінен быць уключаны, каб прымаць паведамленні аб рызыцы інфікавання. - Доступ да месцазнаходжання абавязковы, каб прымаць паведамленні аб рызыцы інфікавання. - Bluetooth і вызначэнне месцазнаходжання павінны быць уключаны, каб прымаць паведамленні аб рызыцы інфікавання. - Паведамленням аб рызыцы інфікавання для працы патрабуюцца дадатковыя дазволы - diff --git a/play-services-nearby-core/src/main/res/values-de/strings.xml b/play-services-nearby-core/src/main/res/values-de/strings.xml deleted file mode 100644 index 9e5367f79..000000000 --- a/play-services-nearby-core/src/main/res/values-de/strings.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - Exposure Notifications deaktiviert - Bluetooth muss eingeschaltet sein, um Exposure Notifications zu nutzen. - Standortzugriff muss eingeschaltet sein, um Exposure Notifications zu nutzen. - Bluetooth und Standortzugriff müssen eingeschaltet sein, um Exposure Notifications zu nutzen. - diff --git a/play-services-nearby-core/src/main/res/values-es/strings.xml b/play-services-nearby-core/src/main/res/values-es/strings.xml deleted file mode 100644 index efeea3d79..000000000 --- a/play-services-nearby-core/src/main/res/values-es/strings.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - Notificaciones de Exposición inactivas - El Bluetooth debe estar habilitado para recibir Notificaciones de Exposición. - El acceso a la ubicación es necesario para recibir las Notificaciones de Exposición. - El acceso al Bluetooth y a la localización debe estar habilitado para recibir Notificaciones de Exposición. - diff --git a/play-services-nearby-core/src/main/res/values-it/strings.xml b/play-services-nearby-core/src/main/res/values-it/strings.xml deleted file mode 100644 index 4cbdc4237..000000000 --- a/play-services-nearby-core/src/main/res/values-it/strings.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - Notifiche di esposizione al virus non attive - Il Bluetooth dev\'essere attivato per poter ricevere le notifiche di esposizione al virus. - È necessario attivare la geolocalizzazione per poter ricevere le notifiche di esposizione al virus. - È necessario attivare il Bluetooth e la geolocalizzazione per poter ricevere le notifiche di esposizione al virus. - \ No newline at end of file diff --git a/play-services-nearby-core/src/main/res/values-ru/strings.xml b/play-services-nearby-core/src/main/res/values-ru/strings.xml deleted file mode 100644 index 6dc5822ce..000000000 --- a/play-services-nearby-core/src/main/res/values-ru/strings.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - Уведомления о риске инфицирования не активны - Bluetooth должен быть включён, чтобы принимать уведомления о риске инфицирования. - Доступ к местоположению обязателен, чтобы принимать уведомления о риске инфицирования. - Bluetooth и определение местоположения должны быть включены, чтобы принимать уведомления о риске инфицирования - Уведомлениям о риске инфицирования для работы требуются дополнительные разрешения - diff --git a/play-services-nearby-core/src/main/res/values-zh-rCN/strings.xml b/play-services-nearby-core/src/main/res/values-zh-rCN/strings.xml deleted file mode 100644 index c683b93fc..000000000 --- a/play-services-nearby-core/src/main/res/values-zh-rCN/strings.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - 接触史通知未启用 - 需要启用蓝牙以接收接触史通知。 - 需要位置访问权限以接收接触史通知。 - 需要启用蓝牙和位置访问权限以接收接触史通知。 - 接触史通知需要额外权限来运作 - \ No newline at end of file diff --git a/play-services-nearby-core/src/main/res/values/strings.xml b/play-services-nearby-core/src/main/res/values/strings.xml deleted file mode 100644 index 16c274d94..000000000 --- a/play-services-nearby-core/src/main/res/values/strings.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - Exposure Notifications inactive - Bluetooth needs to be enabled to receive Exposure Notifications. - Location access is required to receive Exposure Notifications. - Bluetooth and Location access need to be enabled to receive Exposure Notifications. - Exposure Notifications require additional permissions to work - diff --git a/play-services-nearby/build.gradle b/play-services-nearby/build.gradle index ec6102c7b..dac7eed1b 100644 --- a/play-services-nearby/build.gradle +++ b/play-services-nearby/build.gradle @@ -28,8 +28,6 @@ apply from: '../gradle/publish-android.gradle' description = 'microG implementation of play-services-nearby' dependencies { - api project(':play-services-nearby-api') - // Dependencies from play-services-nearby:18.0.2 api "androidx.collection:collection:1.0.0" api "androidx.core:core:1.0.0" diff --git a/play-services-nearby-core/build.gradle b/play-services-nearby/core/build.gradle similarity index 79% rename from play-services-nearby-core/build.gradle rename to play-services-nearby/core/build.gradle index 1f05b4aeb..52d11a379 100644 --- a/play-services-nearby-core/build.gradle +++ b/play-services-nearby/core/build.gradle @@ -4,19 +4,22 @@ */ apply plugin: 'com.android.library' +apply plugin: 'com.squareup.wire' apply plugin: 'kotlin-android' +apply plugin: 'kotlin-kapt' apply plugin: 'maven-publish' apply plugin: 'signing' dependencies { - api project(':play-services-nearby-api') + api project(':play-services-nearby') implementation project(':play-services-base-core') - implementation project(':play-services-nearby-core-proto') implementation "androidx.annotation:annotation:$annotationVersion" implementation "androidx.lifecycle:lifecycle-service:$lifecycleVersion" implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycleVersion" + implementation "androidx.navigation:navigation-fragment-ktx:$navigationVersion" + implementation "androidx.navigation:navigation-ui-ktx:$navigationVersion" implementation "androidx.preference:preference:$preferenceVersion" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion" @@ -38,6 +41,10 @@ android { targetSdkVersion androidTargetSdk } + buildFeatures { + dataBinding = true + } + sourceSets { main { java.srcDirs = ['src/main/kotlin'] @@ -54,6 +61,10 @@ android { } } -apply from: '../gradle/publish-android.gradle' +wire { + kotlin {} +} + +apply from: '../../gradle/publish-android.gradle' description = 'microG service implementation for play-services-nearby' diff --git a/play-services-nearby-core/src/main/AndroidManifest.xml b/play-services-nearby/core/src/main/AndroidManifest.xml similarity index 71% rename from play-services-nearby-core/src/main/AndroidManifest.xml rename to play-services-nearby/core/src/main/AndroidManifest.xml index ed1c484a0..ac4e8adf9 100644 --- a/play-services-nearby-core/src/main/AndroidManifest.xml +++ b/play-services-nearby/core/src/main/AndroidManifest.xml @@ -56,5 +56,25 @@ android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/preferences_exposure_notifications_exportedfiles" /> + + + + + + + + + + + + diff --git a/play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/AdvertiserService.kt b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/AdvertiserService.kt similarity index 100% rename from play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/AdvertiserService.kt rename to play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/AdvertiserService.kt diff --git a/play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/CleanupService.kt b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/CleanupService.kt similarity index 100% rename from play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/CleanupService.kt rename to play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/CleanupService.kt diff --git a/play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/Constants.kt b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/Constants.kt similarity index 100% rename from play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/Constants.kt rename to play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/Constants.kt diff --git a/play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/Crypto.kt b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/Crypto.kt similarity index 100% rename from play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/Crypto.kt rename to play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/Crypto.kt diff --git a/play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/DeviceInfo.kt b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/DeviceInfo.kt similarity index 100% rename from play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/DeviceInfo.kt rename to play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/DeviceInfo.kt diff --git a/play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposureDatabase.kt b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposureDatabase.kt similarity index 100% rename from play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposureDatabase.kt rename to play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposureDatabase.kt diff --git a/play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposureFileProvider.kt b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposureFileProvider.kt similarity index 100% rename from play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposureFileProvider.kt rename to play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposureFileProvider.kt diff --git a/play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposureNotificationService.kt b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposureNotificationService.kt similarity index 100% rename from play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposureNotificationService.kt rename to play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposureNotificationService.kt diff --git a/play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposureNotificationServiceImpl.kt b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposureNotificationServiceImpl.kt similarity index 98% rename from play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposureNotificationServiceImpl.kt rename to play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposureNotificationServiceImpl.kt index e4ebabaa1..499ecebe5 100644 --- a/play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposureNotificationServiceImpl.kt +++ b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposureNotificationServiceImpl.kt @@ -8,7 +8,9 @@ package org.microg.gms.nearby.exposurenotification import android.app.Activity import android.app.PendingIntent import android.bluetooth.BluetoothAdapter -import android.content.* +import android.content.ComponentName +import android.content.Context +import android.content.Intent import android.location.LocationManager import android.os.* import android.util.Base64 @@ -20,13 +22,18 @@ import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.lifecycleScope import com.google.android.gms.common.api.Status import com.google.android.gms.nearby.exposurenotification.* +import com.google.android.gms.nearby.exposurenotification.ExposureNotificationClient.* import com.google.android.gms.nearby.exposurenotification.ExposureNotificationStatusCodes.* +import com.google.android.gms.nearby.exposurenotification.TemporaryExposureKey.DAYS_SINCE_ONSET_OF_SYMPTOMS_UNKNOWN import com.google.android.gms.nearby.exposurenotification.internal.* -import kotlinx.coroutines.* +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.withContext import org.json.JSONArray import org.json.JSONObject +import org.microg.gms.common.Constants import org.microg.gms.common.PackageUtils -import org.microg.gms.nearby.exposurenotification.Constants.* import org.microg.gms.nearby.exposurenotification.proto.TEKSignatureList import org.microg.gms.nearby.exposurenotification.proto.TemporaryExposureKeyExport import org.microg.gms.nearby.exposurenotification.proto.TemporaryExposureKeyProto @@ -788,5 +795,7 @@ class ExposureNotificationServiceImpl(private val context: Context, private val companion object { private val tempGrantedPermissions: MutableSet> = hashSetOf() + private const val VERSION = 18 + private const val VERSION_FULL = VERSION.toLong() * 1000000000L + Constants.GMS_VERSION_CODE } } diff --git a/play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposurePreferences.kt b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposurePreferences.kt similarity index 100% rename from play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposurePreferences.kt rename to play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ExposurePreferences.kt diff --git a/play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/Extensions.kt b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/Extensions.kt similarity index 100% rename from play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/Extensions.kt rename to play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/Extensions.kt diff --git a/play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/MeasuredExposure.kt b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/MeasuredExposure.kt similarity index 100% rename from play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/MeasuredExposure.kt rename to play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/MeasuredExposure.kt diff --git a/play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/NotifyService.kt b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/NotifyService.kt similarity index 93% rename from play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/NotifyService.kt rename to play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/NotifyService.kt index 857738ced..d05d77706 100644 --- a/play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/NotifyService.kt +++ b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/NotifyService.kt @@ -25,6 +25,7 @@ import androidx.core.app.NotificationManagerCompat import androidx.core.content.ContextCompat import androidx.core.location.LocationManagerCompat import androidx.lifecycle.LifecycleService +import com.google.android.gms.nearby.exposurenotification.ExposureNotificationClient import org.microg.gms.common.ForegroundServiceContext import org.microg.gms.common.ForegroundServiceInfo import org.microg.gms.nearby.core.R @@ -96,9 +97,9 @@ class NotifyService : LifecycleService() { setContentText(text) setStyle(NotificationCompat.BigTextStyle()) try { - val intent = Intent(Constants.ACTION_EXPOSURE_NOTIFICATION_SETTINGS).apply { `package` = packageName } + val intent = Intent(ExposureNotificationClient.ACTION_EXPOSURE_NOTIFICATION_SETTINGS).apply { `package` = packageName } intent.resolveActivity(packageManager) - setContentIntent(PendingIntent.getActivity(this@NotifyService, notificationId, Intent(Constants.ACTION_EXPOSURE_NOTIFICATION_SETTINGS).apply { `package` = packageName }, FLAG_UPDATE_CURRENT or FLAG_IMMUTABLE)) + setContentIntent(PendingIntent.getActivity(this@NotifyService, notificationId, Intent(ExposureNotificationClient.ACTION_EXPOSURE_NOTIFICATION_SETTINGS).apply { `package` = packageName }, FLAG_UPDATE_CURRENT or FLAG_IMMUTABLE)) } catch (e: Exception) { // Ignore } diff --git a/play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ScannerService.kt b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ScannerService.kt similarity index 100% rename from play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ScannerService.kt rename to play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ScannerService.kt diff --git a/play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ServiceInfo.kt b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ServiceInfo.kt similarity index 100% rename from play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ServiceInfo.kt rename to play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ServiceInfo.kt diff --git a/play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ServiceTrigger.kt b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ServiceTrigger.kt similarity index 100% rename from play-services-nearby-core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ServiceTrigger.kt rename to play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ServiceTrigger.kt diff --git a/play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/DotChartPreference.kt b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/DotChartPreference.kt similarity index 89% rename from play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/DotChartPreference.kt rename to play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/DotChartPreference.kt index d46db8366..8f3e6d29d 100644 --- a/play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/DotChartPreference.kt +++ b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/DotChartPreference.kt @@ -1,14 +1,15 @@ /* - * SPDX-FileCopyrightText: 2020, microG Project Team + * SPDX-FileCopyrightText: 2022 microG Project Team * SPDX-License-Identifier: Apache-2.0 */ -package org.microg.gms.nearby.core.ui +package org.microg.gms.nearby.exposurenotification.ui import android.content.Context import android.util.AttributeSet import androidx.preference.Preference import androidx.preference.PreferenceViewHolder +import org.microg.gms.nearby.core.R import org.microg.gms.nearby.exposurenotification.ExposureScanSummary class DotChartPreference : Preference { diff --git a/play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/DotChartView.kt b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/DotChartView.kt similarity index 99% rename from play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/DotChartView.kt rename to play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/DotChartView.kt index ca8f752e5..47aa53445 100644 --- a/play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/DotChartView.kt +++ b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/DotChartView.kt @@ -1,9 +1,9 @@ /* - * SPDX-FileCopyrightText: 2020, microG Project Team + * SPDX-FileCopyrightText: 2022 microG Project Team * SPDX-License-Identifier: Apache-2.0 */ -package org.microg.gms.nearby.core.ui +package org.microg.gms.nearby.exposurenotification.ui import android.annotation.SuppressLint import android.annotation.TargetApi @@ -13,10 +13,10 @@ import android.os.Build import android.text.format.DateFormat import android.text.format.DateUtils import android.util.AttributeSet -import android.util.Log import android.view.MotionEvent import android.view.View import org.microg.gms.nearby.exposurenotification.ExposureScanSummary +import org.microg.gms.nearby.core.R import org.microg.gms.ui.resolveColor import java.text.SimpleDateFormat import java.util.* diff --git a/play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/ExposureNotificationsAppFragment.kt b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/ExposureNotificationsAppFragment.kt similarity index 89% rename from play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/ExposureNotificationsAppFragment.kt rename to play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/ExposureNotificationsAppFragment.kt index c2f1ce702..90d89e18c 100644 --- a/play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/ExposureNotificationsAppFragment.kt +++ b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/ExposureNotificationsAppFragment.kt @@ -1,9 +1,9 @@ /* - * SPDX-FileCopyrightText: 2020, microG Project Team + * SPDX-FileCopyrightText: 2022 microG Project Team * SPDX-License-Identifier: Apache-2.0 */ -package org.microg.gms.nearby.core.ui +package org.microg.gms.nearby.exposurenotification.ui import android.content.Intent import android.net.Uri @@ -15,7 +15,8 @@ import android.view.ViewGroup import androidx.appcompat.content.res.AppCompatResources import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope -import org.microg.gms.nearby.core.ui.databinding.ExposureNotificationsAppFragmentBinding +import org.microg.gms.nearby.core.databinding.ExposureNotificationsAppFragmentBinding +import org.microg.gms.nearby.core.R import org.microg.gms.ui.getApplicationInfoIfExists class ExposureNotificationsAppFragment : Fragment(R.layout.exposure_notifications_app_fragment) { diff --git a/play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/ExposureNotificationsAppPreferencesFragment.kt b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/ExposureNotificationsAppPreferencesFragment.kt similarity index 98% rename from play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/ExposureNotificationsAppPreferencesFragment.kt rename to play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/ExposureNotificationsAppPreferencesFragment.kt index 77d93020c..e9d546892 100644 --- a/play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/ExposureNotificationsAppPreferencesFragment.kt +++ b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/ExposureNotificationsAppPreferencesFragment.kt @@ -1,9 +1,9 @@ /* - * SPDX-FileCopyrightText: 2020, microG Project Team + * SPDX-FileCopyrightText: 2022 microG Project Team * SPDX-License-Identifier: Apache-2.0 */ -package org.microg.gms.nearby.core.ui +package org.microg.gms.nearby.exposurenotification.ui import android.annotation.SuppressLint import android.content.Intent @@ -19,6 +19,7 @@ import androidx.preference.PreferenceFragmentCompat import androidx.preference.PreferenceViewHolder import com.google.android.gms.nearby.exposurenotification.ExposureConfiguration import org.json.JSONObject +import org.microg.gms.nearby.core.R import org.microg.gms.nearby.exposurenotification.ExposureDatabase import org.microg.gms.nearby.exposurenotification.merge diff --git a/play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/ExposureNotificationsConfirmActivity.kt b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/ExposureNotificationsConfirmActivity.kt similarity index 98% rename from play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/ExposureNotificationsConfirmActivity.kt rename to play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/ExposureNotificationsConfirmActivity.kt index 7fa1f5ed5..db6a73751 100644 --- a/play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/ExposureNotificationsConfirmActivity.kt +++ b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/ExposureNotificationsConfirmActivity.kt @@ -1,9 +1,9 @@ /* - * SPDX-FileCopyrightText: 2020, microG Project Team + * SPDX-FileCopyrightText: 2022 microG Project Team * SPDX-License-Identifier: Apache-2.0 */ -package org.microg.gms.nearby.core.ui +package org.microg.gms.nearby.exposurenotification.ui import android.Manifest.permission.* import android.annotation.SuppressLint @@ -25,6 +25,7 @@ import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat.checkSelfPermission import androidx.core.location.LocationManagerCompat import androidx.lifecycle.lifecycleScope +import org.microg.gms.nearby.core.R import org.microg.gms.nearby.exposurenotification.* import org.microg.gms.ui.getApplicationInfoIfExists diff --git a/play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/ExposureNotificationsFragment.kt b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/ExposureNotificationsFragment.kt similarity index 89% rename from play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/ExposureNotificationsFragment.kt rename to play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/ExposureNotificationsFragment.kt index 550ccba29..1e2e44220 100644 --- a/play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/ExposureNotificationsFragment.kt +++ b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/ExposureNotificationsFragment.kt @@ -1,9 +1,9 @@ /* - * SPDX-FileCopyrightText: 2020, microG Project Team + * SPDX-FileCopyrightText: 2022 microG Project Team * SPDX-License-Identifier: Apache-2.0 */ -package org.microg.gms.nearby.core.ui +package org.microg.gms.nearby.exposurenotification.ui import android.os.Bundle import android.view.LayoutInflater @@ -11,8 +11,8 @@ import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope -import org.microg.gms.nearby.core.ui.R -import org.microg.gms.nearby.core.ui.databinding.ExposureNotificationsFragmentBinding +import org.microg.gms.nearby.core.R +import org.microg.gms.nearby.core.databinding.ExposureNotificationsFragmentBinding import org.microg.gms.nearby.exposurenotification.ServiceInfo import org.microg.gms.nearby.exposurenotification.getExposureNotificationsServiceInfo import org.microg.gms.nearby.exposurenotification.setExposureNotificationsServiceConfiguration diff --git a/play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/ExposureNotificationsPreferencesFragment.kt b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/ExposureNotificationsPreferencesFragment.kt similarity index 98% rename from play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/ExposureNotificationsPreferencesFragment.kt rename to play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/ExposureNotificationsPreferencesFragment.kt index 6dbdd74b4..37d9b16d9 100644 --- a/play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/ExposureNotificationsPreferencesFragment.kt +++ b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/ExposureNotificationsPreferencesFragment.kt @@ -1,9 +1,9 @@ /* - * SPDX-FileCopyrightText: 2020, microG Project Team + * SPDX-FileCopyrightText: 2022 microG Project Team * SPDX-License-Identifier: Apache-2.0 */ -package org.microg.gms.nearby.core.ui +package org.microg.gms.nearby.exposurenotification.ui import android.annotation.SuppressLint import android.bluetooth.BluetoothAdapter @@ -23,6 +23,7 @@ import androidx.navigation.fragment.findNavController import androidx.preference.Preference import androidx.preference.PreferenceCategory import androidx.preference.PreferenceFragmentCompat +import org.microg.gms.nearby.core.R import org.microg.gms.nearby.exposurenotification.* import org.microg.gms.ui.AppIconPreference import org.microg.gms.ui.getApplicationInfoIfExists diff --git a/play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/ExposureNotificationsRpisFragment.kt b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/ExposureNotificationsRpisFragment.kt similarity index 96% rename from play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/ExposureNotificationsRpisFragment.kt rename to play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/ExposureNotificationsRpisFragment.kt index d3285e4bf..259b1ba8a 100644 --- a/play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/ExposureNotificationsRpisFragment.kt +++ b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/ExposureNotificationsRpisFragment.kt @@ -1,9 +1,9 @@ /* - * SPDX-FileCopyrightText: 2020, microG Project Team + * SPDX-FileCopyrightText: 2022 microG Project Team * SPDX-License-Identifier: Apache-2.0 */ -package org.microg.gms.nearby.core.ui +package org.microg.gms.nearby.exposurenotification.ui import android.annotation.SuppressLint import android.annotation.TargetApi @@ -16,6 +16,7 @@ import androidx.preference.Preference import androidx.preference.PreferenceCategory import androidx.preference.PreferenceFragmentCompat import androidx.recyclerview.widget.RecyclerView +import org.microg.gms.nearby.core.R import org.microg.gms.nearby.exposurenotification.ExposureDatabase @TargetApi(21) diff --git a/play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/ExposureNotificationsSettingsActivity.kt b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/ExposureNotificationsSettingsActivity.kt similarity index 88% rename from play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/ExposureNotificationsSettingsActivity.kt rename to play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/ExposureNotificationsSettingsActivity.kt index eb5736fc6..d46685c68 100644 --- a/play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/ExposureNotificationsSettingsActivity.kt +++ b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/ExposureNotificationsSettingsActivity.kt @@ -1,8 +1,8 @@ /* - * SPDX-FileCopyrightText: 2020, microG Project Team + * SPDX-FileCopyrightText: 2022 microG Project Team * SPDX-License-Identifier: Apache-2.0 */ -package org.microg.gms.nearby.core.ui +package org.microg.gms.nearby.exposurenotification.ui import android.os.Bundle import androidx.appcompat.app.AppCompatActivity @@ -10,6 +10,7 @@ import androidx.navigation.NavController import androidx.navigation.fragment.NavHostFragment import androidx.navigation.ui.AppBarConfiguration import androidx.navigation.ui.NavigationUI +import org.microg.gms.nearby.core.R class ExposureNotificationsSettingsActivity : AppCompatActivity() { private var appBarConfiguration: AppBarConfiguration? = null diff --git a/play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/Utils.kt b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/Utils.kt similarity index 88% rename from play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/Utils.kt rename to play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/Utils.kt index 6b65eabe0..4cd4dc296 100644 --- a/play-services-nearby-core-ui/src/main/kotlin/org/microg/gms/nearby/core/ui/Utils.kt +++ b/play-services-nearby/core/src/main/kotlin/org/microg/gms/nearby/exposurenotification/ui/Utils.kt @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.microg.gms.nearby.core.ui +package org.microg.gms.nearby.exposurenotification.ui import android.view.View import androidx.annotation.AttrRes diff --git a/play-services-nearby-core-proto/src/main/proto/TemporaryExposureKeyFile.proto b/play-services-nearby/core/src/main/proto/TemporaryExposureKeyFile.proto similarity index 100% rename from play-services-nearby-core-proto/src/main/proto/TemporaryExposureKeyFile.proto rename to play-services-nearby/core/src/main/proto/TemporaryExposureKeyFile.proto diff --git a/play-services-nearby-core-ui/src/main/res/drawable/ic_alert.xml b/play-services-nearby/core/src/main/res/drawable/ic_alert.xml similarity index 100% rename from play-services-nearby-core-ui/src/main/res/drawable/ic_alert.xml rename to play-services-nearby/core/src/main/res/drawable/ic_alert.xml diff --git a/play-services-nearby-core-ui/src/main/res/drawable/ic_bluetooth_off.xml b/play-services-nearby/core/src/main/res/drawable/ic_bluetooth_off.xml similarity index 100% rename from play-services-nearby-core-ui/src/main/res/drawable/ic_bluetooth_off.xml rename to play-services-nearby/core/src/main/res/drawable/ic_bluetooth_off.xml diff --git a/play-services-nearby-core-ui/src/main/res/drawable/ic_location_off.xml b/play-services-nearby/core/src/main/res/drawable/ic_location_off.xml similarity index 100% rename from play-services-nearby-core-ui/src/main/res/drawable/ic_location_off.xml rename to play-services-nearby/core/src/main/res/drawable/ic_location_off.xml diff --git a/play-services-nearby-core-ui/src/main/res/drawable/ic_outline_location_on.xml b/play-services-nearby/core/src/main/res/drawable/ic_outline_location_on.xml similarity index 100% rename from play-services-nearby-core-ui/src/main/res/drawable/ic_outline_location_on.xml rename to play-services-nearby/core/src/main/res/drawable/ic_outline_location_on.xml diff --git a/play-services-nearby-core/src/main/res/drawable/ic_virus_outline.xml b/play-services-nearby/core/src/main/res/drawable/ic_virus_outline.xml similarity index 100% rename from play-services-nearby-core/src/main/res/drawable/ic_virus_outline.xml rename to play-services-nearby/core/src/main/res/drawable/ic_virus_outline.xml diff --git a/play-services-nearby-core-ui/src/main/res/layout/exposure_notifications_app_fragment.xml b/play-services-nearby/core/src/main/res/layout/exposure_notifications_app_fragment.xml similarity index 92% rename from play-services-nearby-core-ui/src/main/res/layout/exposure_notifications_app_fragment.xml rename to play-services-nearby/core/src/main/res/layout/exposure_notifications_app_fragment.xml index d49f4635b..2a71769e6 100644 --- a/play-services-nearby-core-ui/src/main/res/layout/exposure_notifications_app_fragment.xml +++ b/play-services-nearby/core/src/main/res/layout/exposure_notifications_app_fragment.xml @@ -20,7 +20,7 @@ + type="org.microg.gms.nearby.exposurenotification.ui.ExposureNotificationsAppFragmentCallbacks" /> diff --git a/play-services-nearby-core-ui/src/main/res/layout/exposure_notifications_confirm_activity.xml b/play-services-nearby/core/src/main/res/layout/exposure_notifications_confirm_activity.xml similarity index 100% rename from play-services-nearby-core-ui/src/main/res/layout/exposure_notifications_confirm_activity.xml rename to play-services-nearby/core/src/main/res/layout/exposure_notifications_confirm_activity.xml diff --git a/play-services-nearby-core-ui/src/main/res/layout/exposure_notifications_confirm_delete.xml b/play-services-nearby/core/src/main/res/layout/exposure_notifications_confirm_delete.xml similarity index 100% rename from play-services-nearby-core-ui/src/main/res/layout/exposure_notifications_confirm_delete.xml rename to play-services-nearby/core/src/main/res/layout/exposure_notifications_confirm_delete.xml diff --git a/play-services-nearby-core-ui/src/main/res/layout/exposure_notifications_fragment.xml b/play-services-nearby/core/src/main/res/layout/exposure_notifications_fragment.xml similarity index 91% rename from play-services-nearby-core-ui/src/main/res/layout/exposure_notifications_fragment.xml rename to play-services-nearby/core/src/main/res/layout/exposure_notifications_fragment.xml index a92bcc7df..8814ba933 100644 --- a/play-services-nearby-core-ui/src/main/res/layout/exposure_notifications_fragment.xml +++ b/play-services-nearby/core/src/main/res/layout/exposure_notifications_fragment.xml @@ -32,7 +32,7 @@ diff --git a/play-services-nearby-core-ui/src/main/res/layout/exposure_notifications_settings_activity.xml b/play-services-nearby/core/src/main/res/layout/exposure_notifications_settings_activity.xml similarity index 100% rename from play-services-nearby-core-ui/src/main/res/layout/exposure_notifications_settings_activity.xml rename to play-services-nearby/core/src/main/res/layout/exposure_notifications_settings_activity.xml diff --git a/play-services-nearby-core-ui/src/main/res/layout/preference_dot_chart.xml b/play-services-nearby/core/src/main/res/layout/preference_dot_chart.xml similarity index 72% rename from play-services-nearby-core-ui/src/main/res/layout/preference_dot_chart.xml rename to play-services-nearby/core/src/main/res/layout/preference_dot_chart.xml index 574a335e6..7fe165ab9 100644 --- a/play-services-nearby-core-ui/src/main/res/layout/preference_dot_chart.xml +++ b/play-services-nearby/core/src/main/res/layout/preference_dot_chart.xml @@ -4,7 +4,7 @@ ~ SPDX-License-Identifier: Apache-2.0 --> - - + Паведамленні аб рызыцы інфікавання не актыўныя + Bluetooth павінен быць уключаны, каб прымаць паведамленні аб рызыцы інфікавання. + Доступ да месцазнаходжання абавязковы, каб прымаць паведамленні аб рызыцы інфікавання. + Bluetooth і вызначэнне месцазнаходжання павінны быць уключаны, каб прымаць паведамленні аб рызыцы інфікавання. + Паведамленням аб рызыцы інфікавання для працы патрабуюцца дадатковыя дазволы + Паведамленні аб рызыцы інфікавання Каб уключыць паведамленні аб рызыцы інфікавання запусціце любое прыкладанне, якое іх падтрымлівае. Ўключыць Bluetooth diff --git a/play-services-nearby-core-ui/src/main/res/values-de/strings.xml b/play-services-nearby/core/src/main/res/values-de/strings.xml similarity index 93% rename from play-services-nearby-core-ui/src/main/res/values-de/strings.xml rename to play-services-nearby/core/src/main/res/values-de/strings.xml index 838956ea7..bfb37b9c8 100644 --- a/play-services-nearby-core-ui/src/main/res/values-de/strings.xml +++ b/play-services-nearby/core/src/main/res/values-de/strings.xml @@ -1,10 +1,13 @@ - - - + Exposure Notifications deaktiviert + Bluetooth muss eingeschaltet sein, um Exposure Notifications zu nutzen. + Standortzugriff muss eingeschaltet sein, um Exposure Notifications zu nutzen. + Bluetooth und Standortzugriff müssen eingeschaltet sein, um Exposure Notifications zu nutzen. + Exposure Notifications Öffne eine App, die Exposure Notifications unterstützt, um diese zu aktivieren. Bluetooth einschalten diff --git a/play-services-nearby-core-ui/src/main/res/values-es/strings.xml b/play-services-nearby/core/src/main/res/values-es/strings.xml similarity index 91% rename from play-services-nearby-core-ui/src/main/res/values-es/strings.xml rename to play-services-nearby/core/src/main/res/values-es/strings.xml index 0a381f9b7..0fa28c160 100644 --- a/play-services-nearby-core-ui/src/main/res/values-es/strings.xml +++ b/play-services-nearby/core/src/main/res/values-es/strings.xml @@ -1,20 +1,13 @@ - + Notificaciones de Exposición inactivas + El Bluetooth debe estar habilitado para recibir Notificaciones de Exposición. + El acceso a la ubicación es necesario para recibir las Notificaciones de Exposición. + El acceso al Bluetooth y a la localización debe estar habilitado para recibir Notificaciones de Exposición. + Notificaciones de Exposición Para habilitar las Notificaciones de Exposición, abre cualquier aplicación que lo soporte. Habilitar el Bluetooth diff --git a/play-services-nearby-core-ui/src/main/res/values-it/strings.xml b/play-services-nearby/core/src/main/res/values-it/strings.xml similarity index 91% rename from play-services-nearby-core-ui/src/main/res/values-it/strings.xml rename to play-services-nearby/core/src/main/res/values-it/strings.xml index 16a8dacca..e6ce2d878 100644 --- a/play-services-nearby-core-ui/src/main/res/values-it/strings.xml +++ b/play-services-nearby/core/src/main/res/values-it/strings.xml @@ -1,20 +1,13 @@ - + Notifiche di esposizione al virus non attive + Il Bluetooth dev\'essere attivato per poter ricevere le notifiche di esposizione al virus. + È necessario attivare la geolocalizzazione per poter ricevere le notifiche di esposizione al virus. + È necessario attivare il Bluetooth e la geolocalizzazione per poter ricevere le notifiche di esposizione al virus. + Notifiche di esposizione al virus Per abilitare le notifiche di esposizione al virus, apri qualsiasi applicazione che le supporti. Applicazioni che utilizzano le notifiche di esposizione al virus diff --git a/play-services-nearby-core-ui/src/main/res/values-ru/strings.xml b/play-services-nearby/core/src/main/res/values-ru/strings.xml similarity index 90% rename from play-services-nearby-core-ui/src/main/res/values-ru/strings.xml rename to play-services-nearby/core/src/main/res/values-ru/strings.xml index 1af3358bd..84d8f36d4 100644 --- a/play-services-nearby-core-ui/src/main/res/values-ru/strings.xml +++ b/play-services-nearby/core/src/main/res/values-ru/strings.xml @@ -1,20 +1,14 @@ - + Уведомления о риске инфицирования не активны + Bluetooth должен быть включён, чтобы принимать уведомления о риске инфицирования. + Доступ к местоположению обязателен, чтобы принимать уведомления о риске инфицирования. + Bluetooth и определение местоположения должны быть включены, чтобы принимать уведомления о риске инфицирования + Уведомлениям о риске инфицирования для работы требуются дополнительные разрешения + Уведомления о риске инфицирования Чтобы включить уведомления о риске инфицирования запустите любое приложение, которое их поддерживает. Включить Bluetooth diff --git a/play-services-nearby-core-ui/src/main/res/values-zh-rCN/strings.xml b/play-services-nearby/core/src/main/res/values-zh-rCN/strings.xml similarity index 90% rename from play-services-nearby-core-ui/src/main/res/values-zh-rCN/strings.xml rename to play-services-nearby/core/src/main/res/values-zh-rCN/strings.xml index 3ca57c23d..027533f35 100644 --- a/play-services-nearby-core-ui/src/main/res/values-zh-rCN/strings.xml +++ b/play-services-nearby/core/src/main/res/values-zh-rCN/strings.xml @@ -1,5 +1,14 @@ - + + 接触史通知未启用 + 需要启用蓝牙以接收接触史通知。 + 需要位置访问权限以接收接触史通知。 + 需要启用蓝牙和位置访问权限以接收接触史通知。 + 接触史通知需要额外权限来运作 + 接触史通知系统 要启用接触史通知系统,请打开支持该系统的应用。 启用蓝牙 @@ -59,4 +68,4 @@ 已收集 %1$d 个标识符 %1$s,风险评分:%2$d %1$s, %2$s - \ No newline at end of file + diff --git a/play-services-nearby-core-ui/src/main/res/values/strings.xml b/play-services-nearby/core/src/main/res/values/strings.xml similarity index 91% rename from play-services-nearby-core-ui/src/main/res/values/strings.xml rename to play-services-nearby/core/src/main/res/values/strings.xml index 8d66adcf1..bf5ed7b84 100644 --- a/play-services-nearby-core-ui/src/main/res/values/strings.xml +++ b/play-services-nearby/core/src/main/res/values/strings.xml @@ -1,20 +1,14 @@ - + Exposure Notifications inactive + Bluetooth needs to be enabled to receive Exposure Notifications. + Location access is required to receive Exposure Notifications. + Bluetooth and Location access need to be enabled to receive Exposure Notifications. + Exposure Notifications require additional permissions to work + Exposure Notifications To enable Exposure Notifications, open any app supporting it. Enable Bluetooth diff --git a/play-services-nearby-core-ui/src/main/res/xml/preferences_exposure_notifications.xml b/play-services-nearby/core/src/main/res/xml/preferences_exposure_notifications.xml similarity index 100% rename from play-services-nearby-core-ui/src/main/res/xml/preferences_exposure_notifications.xml rename to play-services-nearby/core/src/main/res/xml/preferences_exposure_notifications.xml diff --git a/play-services-nearby-core-ui/src/main/res/xml/preferences_exposure_notifications_app.xml b/play-services-nearby/core/src/main/res/xml/preferences_exposure_notifications_app.xml similarity index 100% rename from play-services-nearby-core-ui/src/main/res/xml/preferences_exposure_notifications_app.xml rename to play-services-nearby/core/src/main/res/xml/preferences_exposure_notifications_app.xml diff --git a/play-services-nearby-core/src/main/res/xml/preferences_exposure_notifications_exportedfiles.xml b/play-services-nearby/core/src/main/res/xml/preferences_exposure_notifications_exportedfiles.xml similarity index 100% rename from play-services-nearby-core/src/main/res/xml/preferences_exposure_notifications_exportedfiles.xml rename to play-services-nearby/core/src/main/res/xml/preferences_exposure_notifications_exportedfiles.xml diff --git a/play-services-nearby-core-ui/src/main/res/xml/preferences_exposure_notifications_rpis.xml b/play-services-nearby/core/src/main/res/xml/preferences_exposure_notifications_rpis.xml similarity index 95% rename from play-services-nearby-core-ui/src/main/res/xml/preferences_exposure_notifications_rpis.xml rename to play-services-nearby/core/src/main/res/xml/preferences_exposure_notifications_rpis.xml index 66658dec4..5359fd868 100644 --- a/play-services-nearby-core-ui/src/main/res/xml/preferences_exposure_notifications_rpis.xml +++ b/play-services-nearby/core/src/main/res/xml/preferences_exposure_notifications_rpis.xml @@ -9,7 +9,7 @@ - diff --git a/play-services-nearby-core/src/test/java/org/microg/gms/nearby/exposurenotification/CryptoTest.java b/play-services-nearby/core/src/test/java/org/microg/gms/nearby/exposurenotification/CryptoTest.java similarity index 100% rename from play-services-nearby-core/src/test/java/org/microg/gms/nearby/exposurenotification/CryptoTest.java rename to play-services-nearby/core/src/test/java/org/microg/gms/nearby/exposurenotification/CryptoTest.java diff --git a/play-services-nearby-core/src/test/java/org/microg/gms/nearby/exposurenotification/TestVectors.java b/play-services-nearby/core/src/test/java/org/microg/gms/nearby/exposurenotification/TestVectors.java similarity index 100% rename from play-services-nearby-core/src/test/java/org/microg/gms/nearby/exposurenotification/TestVectors.java rename to play-services-nearby/core/src/test/java/org/microg/gms/nearby/exposurenotification/TestVectors.java diff --git a/play-services-nearby/src/main/AndroidManifest.xml b/play-services-nearby/src/main/AndroidManifest.xml index ffcbce040..d2588ca0d 100644 --- a/play-services-nearby/src/main/AndroidManifest.xml +++ b/play-services-nearby/src/main/AndroidManifest.xml @@ -1,6 +1,14 @@ - + + + + + diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/DailySummary.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/DailySummary.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/DailySummary.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/DailySummary.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/DiagnosisKeysDataMapping.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/DiagnosisKeysDataMapping.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/DiagnosisKeysDataMapping.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/DiagnosisKeysDataMapping.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/ExposureInformation.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/ExposureInformation.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/ExposureInformation.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/ExposureInformation.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/ExposureSummary.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/ExposureSummary.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/ExposureSummary.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/ExposureSummary.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/ExposureWindow.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/ExposureWindow.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/ExposureWindow.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/ExposureWindow.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/PackageConfiguration.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/PackageConfiguration.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/PackageConfiguration.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/PackageConfiguration.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/TemporaryExposureKey.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/TemporaryExposureKey.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/TemporaryExposureKey.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/TemporaryExposureKey.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetCalibrationConfidenceParams.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetCalibrationConfidenceParams.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetCalibrationConfidenceParams.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetCalibrationConfidenceParams.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetDailySummariesParams.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetDailySummariesParams.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetDailySummariesParams.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetDailySummariesParams.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetDiagnosisKeysDataMappingParams.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetDiagnosisKeysDataMappingParams.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetDiagnosisKeysDataMappingParams.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetDiagnosisKeysDataMappingParams.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetExposureInformationParams.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetExposureInformationParams.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetExposureInformationParams.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetExposureInformationParams.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetExposureSummaryParams.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetExposureSummaryParams.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetExposureSummaryParams.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetExposureSummaryParams.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetExposureWindowsParams.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetExposureWindowsParams.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetExposureWindowsParams.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetExposureWindowsParams.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetPackageConfigurationParams.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetPackageConfigurationParams.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetPackageConfigurationParams.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetPackageConfigurationParams.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetStatusParams.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetStatusParams.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetStatusParams.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetStatusParams.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetTemporaryExposureKeyHistoryParams.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetTemporaryExposureKeyHistoryParams.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetTemporaryExposureKeyHistoryParams.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetTemporaryExposureKeyHistoryParams.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetVersionParams.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetVersionParams.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetVersionParams.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/GetVersionParams.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IBooleanCallback.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IBooleanCallback.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IBooleanCallback.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IBooleanCallback.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IDailySummaryListCallback.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IDailySummaryListCallback.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IDailySummaryListCallback.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IDailySummaryListCallback.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IDiagnosisKeyFileSupplier.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IDiagnosisKeyFileSupplier.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IDiagnosisKeyFileSupplier.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IDiagnosisKeyFileSupplier.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IDiagnosisKeysDataMappingCallback.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IDiagnosisKeysDataMappingCallback.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IDiagnosisKeysDataMappingCallback.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IDiagnosisKeysDataMappingCallback.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IExposureInformationListCallback.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IExposureInformationListCallback.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IExposureInformationListCallback.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IExposureInformationListCallback.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IExposureSummaryCallback.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IExposureSummaryCallback.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IExposureSummaryCallback.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IExposureSummaryCallback.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IExposureWindowListCallback.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IExposureWindowListCallback.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IExposureWindowListCallback.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IExposureWindowListCallback.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IIntCallback.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IIntCallback.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IIntCallback.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IIntCallback.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/ILongCallback.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/ILongCallback.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/ILongCallback.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/ILongCallback.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/INearbyExposureNotificationService.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/INearbyExposureNotificationService.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/INearbyExposureNotificationService.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/INearbyExposureNotificationService.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IPackageConfigurationCallback.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IPackageConfigurationCallback.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IPackageConfigurationCallback.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IPackageConfigurationCallback.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/ITemporaryExposureKeyListCallback.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/ITemporaryExposureKeyListCallback.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/ITemporaryExposureKeyListCallback.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/ITemporaryExposureKeyListCallback.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IsEnabledParams.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IsEnabledParams.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IsEnabledParams.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/IsEnabledParams.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/ProvideDiagnosisKeysParams.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/ProvideDiagnosisKeysParams.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/ProvideDiagnosisKeysParams.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/ProvideDiagnosisKeysParams.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/RequestPreAuthorizedTemporaryExposureKeyHistoryParams.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/RequestPreAuthorizedTemporaryExposureKeyHistoryParams.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/RequestPreAuthorizedTemporaryExposureKeyHistoryParams.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/RequestPreAuthorizedTemporaryExposureKeyHistoryParams.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/RequestPreAuthorizedTemporaryExposureKeyReleaseParams.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/RequestPreAuthorizedTemporaryExposureKeyReleaseParams.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/RequestPreAuthorizedTemporaryExposureKeyReleaseParams.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/RequestPreAuthorizedTemporaryExposureKeyReleaseParams.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/SetDiagnosisKeysDataMappingParams.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/SetDiagnosisKeysDataMappingParams.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/SetDiagnosisKeysDataMappingParams.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/SetDiagnosisKeysDataMappingParams.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/StartParams.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/StartParams.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/StartParams.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/StartParams.aidl diff --git a/play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/StopParams.aidl b/play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/StopParams.aidl similarity index 100% rename from play-services-nearby-api/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/StopParams.aidl rename to play-services-nearby/src/main/aidl/com/google/android/gms/nearby/exposurenotification/internal/StopParams.aidl diff --git a/play-services-nearby-api/src/main/java/com/google/android/gms/nearby/exposurenotification/CalibrationConfidence.java b/play-services-nearby/src/main/java/com/google/android/gms/nearby/exposurenotification/CalibrationConfidence.java similarity index 100% rename from play-services-nearby-api/src/main/java/com/google/android/gms/nearby/exposurenotification/CalibrationConfidence.java rename to play-services-nearby/src/main/java/com/google/android/gms/nearby/exposurenotification/CalibrationConfidence.java diff --git a/play-services-nearby-api/src/main/java/com/google/android/gms/nearby/exposurenotification/DailySummariesConfig.java b/play-services-nearby/src/main/java/com/google/android/gms/nearby/exposurenotification/DailySummariesConfig.java similarity index 100% rename from play-services-nearby-api/src/main/java/com/google/android/gms/nearby/exposurenotification/DailySummariesConfig.java rename to play-services-nearby/src/main/java/com/google/android/gms/nearby/exposurenotification/DailySummariesConfig.java diff --git a/play-services-nearby-api/src/main/java/com/google/android/gms/nearby/exposurenotification/DailySummary.java b/play-services-nearby/src/main/java/com/google/android/gms/nearby/exposurenotification/DailySummary.java similarity index 100% rename from play-services-nearby-api/src/main/java/com/google/android/gms/nearby/exposurenotification/DailySummary.java rename to play-services-nearby/src/main/java/com/google/android/gms/nearby/exposurenotification/DailySummary.java diff --git a/play-services-nearby-api/src/main/java/com/google/android/gms/nearby/exposurenotification/DiagnosisKeyFileProvider.java b/play-services-nearby/src/main/java/com/google/android/gms/nearby/exposurenotification/DiagnosisKeyFileProvider.java similarity index 100% rename from play-services-nearby-api/src/main/java/com/google/android/gms/nearby/exposurenotification/DiagnosisKeyFileProvider.java rename to play-services-nearby/src/main/java/com/google/android/gms/nearby/exposurenotification/DiagnosisKeyFileProvider.java diff --git a/play-services-nearby-api/src/main/java/com/google/android/gms/nearby/exposurenotification/DiagnosisKeysDataMapping.java b/play-services-nearby/src/main/java/com/google/android/gms/nearby/exposurenotification/DiagnosisKeysDataMapping.java similarity index 100% rename from play-services-nearby-api/src/main/java/com/google/android/gms/nearby/exposurenotification/DiagnosisKeysDataMapping.java rename to play-services-nearby/src/main/java/com/google/android/gms/nearby/exposurenotification/DiagnosisKeysDataMapping.java diff --git a/play-services-nearby-api/src/main/java/com/google/android/gms/nearby/exposurenotification/ExposureConfiguration.java b/play-services-nearby/src/main/java/com/google/android/gms/nearby/exposurenotification/ExposureConfiguration.java similarity index 100% rename from play-services-nearby-api/src/main/java/com/google/android/gms/nearby/exposurenotification/ExposureConfiguration.java rename to play-services-nearby/src/main/java/com/google/android/gms/nearby/exposurenotification/ExposureConfiguration.java diff --git a/play-services-nearby-api/src/main/java/com/google/android/gms/nearby/exposurenotification/ExposureInformation.java b/play-services-nearby/src/main/java/com/google/android/gms/nearby/exposurenotification/ExposureInformation.java similarity index 100% rename from play-services-nearby-api/src/main/java/com/google/android/gms/nearby/exposurenotification/ExposureInformation.java rename to play-services-nearby/src/main/java/com/google/android/gms/nearby/exposurenotification/ExposureInformation.java diff --git a/play-services-nearby/src/main/java/com/google/android/gms/nearby/exposurenotification/ExposureNotificationClient.java b/play-services-nearby/src/main/java/com/google/android/gms/nearby/exposurenotification/ExposureNotificationClient.java index 6fa55d946..b703d718d 100644 --- a/play-services-nearby/src/main/java/com/google/android/gms/nearby/exposurenotification/ExposureNotificationClient.java +++ b/play-services-nearby/src/main/java/com/google/android/gms/nearby/exposurenotification/ExposureNotificationClient.java @@ -13,7 +13,6 @@ import com.google.android.gms.common.api.HasApiKey; import com.google.android.gms.tasks.Task; import org.microg.gms.common.PublicApi; -import org.microg.gms.nearby.exposurenotification.Constants; import java.io.File; import java.util.List; @@ -27,28 +26,28 @@ public interface ExposureNotificationClient extends HasApiKey + package="com.google.android.gms.oss.licenses"> + + diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/places/PlaceReport.java b/play-services-places-placereport/src/main/java/com/google/android/gms/location/places/PlaceReport.java similarity index 52% rename from play-services-location-api/src/main/java/com/google/android/gms/location/places/PlaceReport.java rename to play-services-places-placereport/src/main/java/com/google/android/gms/location/places/PlaceReport.java index 5919e6910..b69fb6c26 100644 --- a/play-services-location-api/src/main/java/com/google/android/gms/location/places/PlaceReport.java +++ b/play-services-places-placereport/src/main/java/com/google/android/gms/location/places/PlaceReport.java @@ -1,17 +1,6 @@ /* - * Copyright (C) 2013-2017 microG Project Team - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * SPDX-FileCopyrightText: 2017 microG Project Team + * SPDX-License-Identifier: Apache-2.0 */ package com.google.android.gms.location.places; diff --git a/play-services-places/build.gradle b/play-services-places/build.gradle new file mode 100644 index 000000000..710481466 --- /dev/null +++ b/play-services-places/build.gradle @@ -0,0 +1,38 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +apply plugin: 'com.android.library' +apply plugin: 'maven-publish' +apply plugin: 'signing' + +android { + compileSdkVersion androidCompileSdk + buildToolsVersion "$androidBuildVersionTools" + + defaultConfig { + versionName version + minSdkVersion androidMinSdk + targetSdkVersion androidTargetSdk + } + + compileOptions { + sourceCompatibility = 1.8 + targetCompatibility = 1.8 + } +} + +apply from: '../gradle/publish-android.gradle' + +description = 'microG implementation of play-services-places' + +dependencies { + // Dependencies from play-services-places:17.0.0 + api "androidx.fragment:fragment:1.0.0" + api project(":play-services-base") + api project(":play-services-basement") + api project(":play-services-maps") + //api project(":play-services-places-report") + api project(":play-services-tasks") +} diff --git a/play-services-places/src/main/AndroidManifest.xml b/play-services-places/src/main/AndroidManifest.xml new file mode 100644 index 000000000..5365508a4 --- /dev/null +++ b/play-services-places/src/main/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/places/AutocompleteFilter.aidl b/play-services-places/src/main/aidl/com/google/android/gms/location/places/AutocompleteFilter.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/places/AutocompleteFilter.aidl rename to play-services-places/src/main/aidl/com/google/android/gms/location/places/AutocompleteFilter.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/places/NearbyAlertRequest.aidl b/play-services-places/src/main/aidl/com/google/android/gms/location/places/NearbyAlertRequest.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/places/NearbyAlertRequest.aidl rename to play-services-places/src/main/aidl/com/google/android/gms/location/places/NearbyAlertRequest.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/places/PlaceFilter.aidl b/play-services-places/src/main/aidl/com/google/android/gms/location/places/PlaceFilter.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/places/PlaceFilter.aidl rename to play-services-places/src/main/aidl/com/google/android/gms/location/places/PlaceFilter.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/places/PlaceReport.aidl b/play-services-places/src/main/aidl/com/google/android/gms/location/places/PlaceReport.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/places/PlaceReport.aidl rename to play-services-places/src/main/aidl/com/google/android/gms/location/places/PlaceReport.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/places/PlaceRequest.aidl b/play-services-places/src/main/aidl/com/google/android/gms/location/places/PlaceRequest.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/places/PlaceRequest.aidl rename to play-services-places/src/main/aidl/com/google/android/gms/location/places/PlaceRequest.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/places/UserAddedPlace.aidl b/play-services-places/src/main/aidl/com/google/android/gms/location/places/UserAddedPlace.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/places/UserAddedPlace.aidl rename to play-services-places/src/main/aidl/com/google/android/gms/location/places/UserAddedPlace.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/places/UserDataType.aidl b/play-services-places/src/main/aidl/com/google/android/gms/location/places/UserDataType.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/places/UserDataType.aidl rename to play-services-places/src/main/aidl/com/google/android/gms/location/places/UserDataType.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/location/places/internal/IGooglePlaceDetectionService.aidl b/play-services-places/src/main/aidl/com/google/android/gms/location/places/internal/IGooglePlaceDetectionService.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/location/places/internal/IGooglePlaceDetectionService.aidl rename to play-services-places/src/main/aidl/com/google/android/gms/location/places/internal/IGooglePlaceDetectionService.aidl diff --git a/play-services-api/src/main/aidl/com/google/android/gms/location/places/internal/IGooglePlacesService.aidl b/play-services-places/src/main/aidl/com/google/android/gms/location/places/internal/IGooglePlacesService.aidl similarity index 100% rename from play-services-api/src/main/aidl/com/google/android/gms/location/places/internal/IGooglePlacesService.aidl rename to play-services-places/src/main/aidl/com/google/android/gms/location/places/internal/IGooglePlacesService.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/places/internal/IPlacesCallbacks.aidl b/play-services-places/src/main/aidl/com/google/android/gms/location/places/internal/IPlacesCallbacks.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/places/internal/IPlacesCallbacks.aidl rename to play-services-places/src/main/aidl/com/google/android/gms/location/places/internal/IPlacesCallbacks.aidl diff --git a/play-services-location-api/src/main/aidl/com/google/android/gms/location/places/internal/PlacesParams.aidl b/play-services-places/src/main/aidl/com/google/android/gms/location/places/internal/PlacesParams.aidl similarity index 100% rename from play-services-location-api/src/main/aidl/com/google/android/gms/location/places/internal/PlacesParams.aidl rename to play-services-places/src/main/aidl/com/google/android/gms/location/places/internal/PlacesParams.aidl diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/places/AutocompleteFilter.java b/play-services-places/src/main/java/com/google/android/gms/location/places/AutocompleteFilter.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/places/AutocompleteFilter.java rename to play-services-places/src/main/java/com/google/android/gms/location/places/AutocompleteFilter.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/places/NearbyAlertRequest.java b/play-services-places/src/main/java/com/google/android/gms/location/places/NearbyAlertRequest.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/places/NearbyAlertRequest.java rename to play-services-places/src/main/java/com/google/android/gms/location/places/NearbyAlertRequest.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/places/Place.java b/play-services-places/src/main/java/com/google/android/gms/location/places/Place.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/places/Place.java rename to play-services-places/src/main/java/com/google/android/gms/location/places/Place.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/places/PlaceFilter.java b/play-services-places/src/main/java/com/google/android/gms/location/places/PlaceFilter.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/places/PlaceFilter.java rename to play-services-places/src/main/java/com/google/android/gms/location/places/PlaceFilter.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/places/PlaceRequest.java b/play-services-places/src/main/java/com/google/android/gms/location/places/PlaceRequest.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/places/PlaceRequest.java rename to play-services-places/src/main/java/com/google/android/gms/location/places/PlaceRequest.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/places/UserAddedPlace.java b/play-services-places/src/main/java/com/google/android/gms/location/places/UserAddedPlace.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/places/UserAddedPlace.java rename to play-services-places/src/main/java/com/google/android/gms/location/places/UserAddedPlace.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/places/UserDataType.java b/play-services-places/src/main/java/com/google/android/gms/location/places/UserDataType.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/places/UserDataType.java rename to play-services-places/src/main/java/com/google/android/gms/location/places/UserDataType.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/places/internal/PlaceImpl.java b/play-services-places/src/main/java/com/google/android/gms/location/places/internal/PlaceImpl.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/places/internal/PlaceImpl.java rename to play-services-places/src/main/java/com/google/android/gms/location/places/internal/PlaceImpl.java diff --git a/play-services-location-api/src/main/java/com/google/android/gms/location/places/internal/PlacesParams.java b/play-services-places/src/main/java/com/google/android/gms/location/places/internal/PlacesParams.java similarity index 100% rename from play-services-location-api/src/main/java/com/google/android/gms/location/places/internal/PlacesParams.java rename to play-services-places/src/main/java/com/google/android/gms/location/places/internal/PlacesParams.java diff --git a/play-services-recaptcha/core/build.gradle b/play-services-recaptcha/core/build.gradle new file mode 100644 index 000000000..e69de29bb diff --git a/play-services-recaptcha/core/src/main/kotlin/org/microg/gms/recaptcha/RecaptchaService.kt b/play-services-recaptcha/core/src/main/kotlin/org/microg/gms/recaptcha/RecaptchaService.kt new file mode 100644 index 000000000..e69de29bb diff --git a/play-services-recaptcha/src/main/AndroidManifest.xml b/play-services-recaptcha/src/main/AndroidManifest.xml new file mode 100644 index 000000000..e69de29bb diff --git a/play-services-safetynet-api/build.gradle b/play-services-safetynet-api/build.gradle deleted file mode 100644 index 9a4b197a7..000000000 --- a/play-services-safetynet-api/build.gradle +++ /dev/null @@ -1,35 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021, microG Project Team - * SPDX-License-Identifier: Apache-2.0 - */ - -apply plugin: 'com.android.library' -apply plugin: 'maven-publish' -apply plugin: 'signing' - -android { - compileSdkVersion androidCompileSdk - buildToolsVersion "$androidBuildVersionTools" - - defaultConfig { - versionName version - minSdkVersion androidMinSdk - targetSdkVersion androidTargetSdk - } - - compileOptions { - sourceCompatibility = 1.8 - targetCompatibility = 1.8 - } -} - -apply from: '../gradle/publish-android.gradle' - -description = 'microG API for play-services-safetynet' - -dependencies { - api project(':play-services-basement') - api project(':play-services-base-api') - - implementation "androidx.annotation:annotation:$annotationVersion" -} diff --git a/play-services-safetynet-api/src/main/AndroidManifest.xml b/play-services-safetynet-api/src/main/AndroidManifest.xml deleted file mode 100644 index ebb3d98ab..000000000 --- a/play-services-safetynet-api/src/main/AndroidManifest.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/play-services-safetynet-core-proto/build.gradle b/play-services-safetynet-core-proto/build.gradle deleted file mode 100644 index 402fb24d5..000000000 --- a/play-services-safetynet-core-proto/build.gradle +++ /dev/null @@ -1,35 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 microG Project Team - * SPDX-License-Identifier: Apache-2.0 - */ - -apply plugin: 'com.squareup.wire' -apply plugin: 'kotlin' -apply plugin: 'maven-publish' -apply plugin: 'signing' - -dependencies { - implementation "com.squareup.wire:wire-runtime:$wireVersion" -} - -wire { - kotlin { - javaInterop = true - } -} - -sourceSets { - main.java.srcDirs += "$buildDir/generated/source/wire" -} - -compileKotlin { - kotlinOptions.jvmTarget = 1.8 -} - -compileTestKotlin { - kotlinOptions.jvmTarget = 1.8 -} - -apply from: '../gradle/publish-java.gradle' - -description = 'Protocol buffers for microG implementation of play-services-safetynet' diff --git a/play-services-safetynet-core/src/main/AndroidManifest.xml b/play-services-safetynet-core/src/main/AndroidManifest.xml deleted file mode 100644 index 6941a1544..000000000 --- a/play-services-safetynet-core/src/main/AndroidManifest.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - diff --git a/play-services-safetynet/build.gradle b/play-services-safetynet/build.gradle index 120d2f62b..37838ffa3 100644 --- a/play-services-safetynet/build.gradle +++ b/play-services-safetynet/build.gradle @@ -28,8 +28,6 @@ apply from: '../gradle/publish-android.gradle' description = 'microG implementation of play-services-safetynet' dependencies { - api project(':play-services-safetynet-api') - // Dependencies from play-services-safetynet:18.0.1 api project(':play-services-base') api project(':play-services-basement') diff --git a/play-services-safetynet-core/build.gradle b/play-services-safetynet/core/build.gradle similarity index 83% rename from play-services-safetynet-core/build.gradle rename to play-services-safetynet/core/build.gradle index b96ab704f..f960a07d6 100644 --- a/play-services-safetynet-core/build.gradle +++ b/play-services-safetynet/core/build.gradle @@ -4,30 +4,38 @@ */ apply plugin: 'com.android.library' +apply plugin: 'com.squareup.wire' apply plugin: 'kotlin-android' apply plugin: 'maven-publish' apply plugin: 'signing' dependencies { - api project(':play-services-safetynet-api') + api project(':play-services-safetynet') implementation project(':play-services-base-core') implementation project(':play-services-droidguard') implementation project(':play-services-droidguard-core') - implementation project(':play-services-safetynet-core-proto') implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutineVersion" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutineVersion" + implementation "androidx.appcompat:appcompat:$appcompatVersion" implementation "androidx.core:core-ktx:$coreVersion" implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycleVersion" implementation "androidx.lifecycle:lifecycle-service:$lifecycleVersion" + implementation "androidx.webkit:webkit:$webkitVersion" implementation "com.android.volley:volley:$volleyVersion" implementation "com.squareup.wire:wire-runtime:$wireVersion" } +wire { + kotlin { + javaInterop = true + } +} + android { compileSdkVersion androidCompileSdk buildToolsVersion "$androidBuildVersionTools" @@ -56,6 +64,6 @@ android { } } -apply from: '../gradle/publish-android.gradle' +apply from: '../../gradle/publish-android.gradle' description = 'microG service implementation for play-services-safetynet' diff --git a/play-services-safetynet-core-ui/src/main/AndroidManifest.xml b/play-services-safetynet/core/src/main/AndroidManifest.xml similarity index 74% rename from play-services-safetynet-core-ui/src/main/AndroidManifest.xml rename to play-services-safetynet/core/src/main/AndroidManifest.xml index b12472f94..05c6d34fd 100644 --- a/play-services-safetynet-core-ui/src/main/AndroidManifest.xml +++ b/play-services-safetynet/core/src/main/AndroidManifest.xml @@ -5,9 +5,14 @@ --> + package="org.microg.gms.safetynet.core"> + + + + + - + diff --git a/play-services-safetynet-api/src/main/aidl/com/google/android/gms/safetynet/AttestationData.aidl b/play-services-safetynet/src/main/aidl/com/google/android/gms/safetynet/AttestationData.aidl similarity index 100% rename from play-services-safetynet-api/src/main/aidl/com/google/android/gms/safetynet/AttestationData.aidl rename to play-services-safetynet/src/main/aidl/com/google/android/gms/safetynet/AttestationData.aidl diff --git a/play-services-safetynet-api/src/main/aidl/com/google/android/gms/safetynet/HarmfulAppsData.aidl b/play-services-safetynet/src/main/aidl/com/google/android/gms/safetynet/HarmfulAppsData.aidl similarity index 100% rename from play-services-safetynet-api/src/main/aidl/com/google/android/gms/safetynet/HarmfulAppsData.aidl rename to play-services-safetynet/src/main/aidl/com/google/android/gms/safetynet/HarmfulAppsData.aidl diff --git a/play-services-safetynet-api/src/main/aidl/com/google/android/gms/safetynet/HarmfulAppsInfo.aidl b/play-services-safetynet/src/main/aidl/com/google/android/gms/safetynet/HarmfulAppsInfo.aidl similarity index 100% rename from play-services-safetynet-api/src/main/aidl/com/google/android/gms/safetynet/HarmfulAppsInfo.aidl rename to play-services-safetynet/src/main/aidl/com/google/android/gms/safetynet/HarmfulAppsInfo.aidl diff --git a/play-services-safetynet-api/src/main/aidl/com/google/android/gms/safetynet/RecaptchaResultData.aidl b/play-services-safetynet/src/main/aidl/com/google/android/gms/safetynet/RecaptchaResultData.aidl similarity index 100% rename from play-services-safetynet-api/src/main/aidl/com/google/android/gms/safetynet/RecaptchaResultData.aidl rename to play-services-safetynet/src/main/aidl/com/google/android/gms/safetynet/RecaptchaResultData.aidl diff --git a/play-services-safetynet-api/src/main/aidl/com/google/android/gms/safetynet/RemoveHarmfulAppData.aidl b/play-services-safetynet/src/main/aidl/com/google/android/gms/safetynet/RemoveHarmfulAppData.aidl similarity index 100% rename from play-services-safetynet-api/src/main/aidl/com/google/android/gms/safetynet/RemoveHarmfulAppData.aidl rename to play-services-safetynet/src/main/aidl/com/google/android/gms/safetynet/RemoveHarmfulAppData.aidl diff --git a/play-services-safetynet-api/src/main/aidl/com/google/android/gms/safetynet/SafeBrowsingData.aidl b/play-services-safetynet/src/main/aidl/com/google/android/gms/safetynet/SafeBrowsingData.aidl similarity index 100% rename from play-services-safetynet-api/src/main/aidl/com/google/android/gms/safetynet/SafeBrowsingData.aidl rename to play-services-safetynet/src/main/aidl/com/google/android/gms/safetynet/SafeBrowsingData.aidl diff --git a/play-services-safetynet-api/src/main/aidl/com/google/android/gms/safetynet/internal/ISafetyNetCallbacks.aidl b/play-services-safetynet/src/main/aidl/com/google/android/gms/safetynet/internal/ISafetyNetCallbacks.aidl similarity index 100% rename from play-services-safetynet-api/src/main/aidl/com/google/android/gms/safetynet/internal/ISafetyNetCallbacks.aidl rename to play-services-safetynet/src/main/aidl/com/google/android/gms/safetynet/internal/ISafetyNetCallbacks.aidl diff --git a/play-services-safetynet-api/src/main/aidl/com/google/android/gms/safetynet/internal/ISafetyNetService.aidl b/play-services-safetynet/src/main/aidl/com/google/android/gms/safetynet/internal/ISafetyNetService.aidl similarity index 100% rename from play-services-safetynet-api/src/main/aidl/com/google/android/gms/safetynet/internal/ISafetyNetService.aidl rename to play-services-safetynet/src/main/aidl/com/google/android/gms/safetynet/internal/ISafetyNetService.aidl diff --git a/play-services-safetynet-api/src/main/java/com/google/android/gms/safetynet/AttestationData.java b/play-services-safetynet/src/main/java/com/google/android/gms/safetynet/AttestationData.java similarity index 100% rename from play-services-safetynet-api/src/main/java/com/google/android/gms/safetynet/AttestationData.java rename to play-services-safetynet/src/main/java/com/google/android/gms/safetynet/AttestationData.java diff --git a/play-services-safetynet-api/src/main/java/com/google/android/gms/safetynet/HarmfulAppsData.java b/play-services-safetynet/src/main/java/com/google/android/gms/safetynet/HarmfulAppsData.java similarity index 100% rename from play-services-safetynet-api/src/main/java/com/google/android/gms/safetynet/HarmfulAppsData.java rename to play-services-safetynet/src/main/java/com/google/android/gms/safetynet/HarmfulAppsData.java diff --git a/play-services-safetynet-api/src/main/java/com/google/android/gms/safetynet/HarmfulAppsInfo.java b/play-services-safetynet/src/main/java/com/google/android/gms/safetynet/HarmfulAppsInfo.java similarity index 100% rename from play-services-safetynet-api/src/main/java/com/google/android/gms/safetynet/HarmfulAppsInfo.java rename to play-services-safetynet/src/main/java/com/google/android/gms/safetynet/HarmfulAppsInfo.java diff --git a/play-services-safetynet-api/src/main/java/com/google/android/gms/safetynet/RecaptchaResultData.java b/play-services-safetynet/src/main/java/com/google/android/gms/safetynet/RecaptchaResultData.java similarity index 100% rename from play-services-safetynet-api/src/main/java/com/google/android/gms/safetynet/RecaptchaResultData.java rename to play-services-safetynet/src/main/java/com/google/android/gms/safetynet/RecaptchaResultData.java diff --git a/play-services-safetynet-api/src/main/java/com/google/android/gms/safetynet/RemoveHarmfulAppData.java b/play-services-safetynet/src/main/java/com/google/android/gms/safetynet/RemoveHarmfulAppData.java similarity index 100% rename from play-services-safetynet-api/src/main/java/com/google/android/gms/safetynet/RemoveHarmfulAppData.java rename to play-services-safetynet/src/main/java/com/google/android/gms/safetynet/RemoveHarmfulAppData.java diff --git a/play-services-safetynet-api/src/main/java/com/google/android/gms/safetynet/SafeBrowsingData.java b/play-services-safetynet/src/main/java/com/google/android/gms/safetynet/SafeBrowsingData.java similarity index 100% rename from play-services-safetynet-api/src/main/java/com/google/android/gms/safetynet/SafeBrowsingData.java rename to play-services-safetynet/src/main/java/com/google/android/gms/safetynet/SafeBrowsingData.java diff --git a/play-services-safetynet-api/src/main/java/com/google/android/gms/safetynet/SafetyNetStatusCodes.java b/play-services-safetynet/src/main/java/com/google/android/gms/safetynet/SafetyNetStatusCodes.java similarity index 100% rename from play-services-safetynet-api/src/main/java/com/google/android/gms/safetynet/SafetyNetStatusCodes.java rename to play-services-safetynet/src/main/java/com/google/android/gms/safetynet/SafetyNetStatusCodes.java diff --git a/play-services-safetynet-api/src/main/java/com/google/android/gms/safetynet/VerifyAppsConstants.java b/play-services-safetynet/src/main/java/com/google/android/gms/safetynet/VerifyAppsConstants.java similarity index 100% rename from play-services-safetynet-api/src/main/java/com/google/android/gms/safetynet/VerifyAppsConstants.java rename to play-services-safetynet/src/main/java/com/google/android/gms/safetynet/VerifyAppsConstants.java diff --git a/play-services-tapandpay-api/build.gradle b/play-services-tapandpay/build.gradle similarity index 89% rename from play-services-tapandpay-api/build.gradle rename to play-services-tapandpay/build.gradle index 4be043c19..283be6836 100644 --- a/play-services-tapandpay-api/build.gradle +++ b/play-services-tapandpay/build.gradle @@ -29,8 +29,7 @@ android { description = 'microG API for play-services-tapandpay' dependencies { - api project(':play-services-basement') - api project(':play-services-base-api') + api project(':play-services-base') implementation "androidx.annotation:annotation:$annotationVersion" } diff --git a/play-services-tapandpay-core/build.gradle b/play-services-tapandpay/core/build.gradle similarity index 96% rename from play-services-tapandpay-core/build.gradle rename to play-services-tapandpay/core/build.gradle index 5faa9b60b..9b00ba775 100644 --- a/play-services-tapandpay-core/build.gradle +++ b/play-services-tapandpay/core/build.gradle @@ -9,7 +9,7 @@ apply plugin: 'maven-publish' apply plugin: 'signing' dependencies { - api project(':play-services-tapandpay-api') + api project(':play-services-tapandpay') implementation project(':play-services-base-core') diff --git a/play-services-tapandpay-core/src/main/AndroidManifest.xml b/play-services-tapandpay/core/src/main/AndroidManifest.xml similarity index 100% rename from play-services-tapandpay-core/src/main/AndroidManifest.xml rename to play-services-tapandpay/core/src/main/AndroidManifest.xml diff --git a/play-services-tapandpay-core/src/main/kotlin/org/microg/gms/tapandpay/TapAndPayService.kt b/play-services-tapandpay/core/src/main/kotlin/org/microg/gms/tapandpay/TapAndPayService.kt similarity index 100% rename from play-services-tapandpay-core/src/main/kotlin/org/microg/gms/tapandpay/TapAndPayService.kt rename to play-services-tapandpay/core/src/main/kotlin/org/microg/gms/tapandpay/TapAndPayService.kt diff --git a/play-services-tapandpay-api/src/main/AndroidManifest.xml b/play-services-tapandpay/src/main/AndroidManifest.xml similarity index 100% rename from play-services-tapandpay-api/src/main/AndroidManifest.xml rename to play-services-tapandpay/src/main/AndroidManifest.xml diff --git a/play-services-tapandpay-api/src/main/aidl/com/google/android/gms/tapandpay/firstparty/TokenStatus.aidl b/play-services-tapandpay/src/main/aidl/com/google/android/gms/tapandpay/firstparty/TokenStatus.aidl similarity index 100% rename from play-services-tapandpay-api/src/main/aidl/com/google/android/gms/tapandpay/firstparty/TokenStatus.aidl rename to play-services-tapandpay/src/main/aidl/com/google/android/gms/tapandpay/firstparty/TokenStatus.aidl diff --git a/play-services-tapandpay-api/src/main/aidl/com/google/android/gms/tapandpay/internal/ITapAndPayService.aidl b/play-services-tapandpay/src/main/aidl/com/google/android/gms/tapandpay/internal/ITapAndPayService.aidl similarity index 100% rename from play-services-tapandpay-api/src/main/aidl/com/google/android/gms/tapandpay/internal/ITapAndPayService.aidl rename to play-services-tapandpay/src/main/aidl/com/google/android/gms/tapandpay/internal/ITapAndPayService.aidl diff --git a/play-services-tapandpay-api/src/main/aidl/com/google/android/gms/tapandpay/internal/ITapAndPayServiceCallbacks.aidl b/play-services-tapandpay/src/main/aidl/com/google/android/gms/tapandpay/internal/ITapAndPayServiceCallbacks.aidl similarity index 100% rename from play-services-tapandpay-api/src/main/aidl/com/google/android/gms/tapandpay/internal/ITapAndPayServiceCallbacks.aidl rename to play-services-tapandpay/src/main/aidl/com/google/android/gms/tapandpay/internal/ITapAndPayServiceCallbacks.aidl diff --git a/play-services-tapandpay-api/src/main/aidl/com/google/android/gms/tapandpay/issuer/TokenStatus.aidl b/play-services-tapandpay/src/main/aidl/com/google/android/gms/tapandpay/issuer/TokenStatus.aidl similarity index 100% rename from play-services-tapandpay-api/src/main/aidl/com/google/android/gms/tapandpay/issuer/TokenStatus.aidl rename to play-services-tapandpay/src/main/aidl/com/google/android/gms/tapandpay/issuer/TokenStatus.aidl diff --git a/play-services-tapandpay-api/src/main/java/com/google/android/gms/tapandpay/TapAndPayStatusCodes.java b/play-services-tapandpay/src/main/java/com/google/android/gms/tapandpay/TapAndPayStatusCodes.java similarity index 100% rename from play-services-tapandpay-api/src/main/java/com/google/android/gms/tapandpay/TapAndPayStatusCodes.java rename to play-services-tapandpay/src/main/java/com/google/android/gms/tapandpay/TapAndPayStatusCodes.java diff --git a/play-services-tapandpay-api/src/main/java/com/google/android/gms/tapandpay/firstparty/TokenReference.java b/play-services-tapandpay/src/main/java/com/google/android/gms/tapandpay/firstparty/TokenReference.java similarity index 100% rename from play-services-tapandpay-api/src/main/java/com/google/android/gms/tapandpay/firstparty/TokenReference.java rename to play-services-tapandpay/src/main/java/com/google/android/gms/tapandpay/firstparty/TokenReference.java diff --git a/play-services-tapandpay-api/src/main/java/com/google/android/gms/tapandpay/firstparty/TokenStatus.java b/play-services-tapandpay/src/main/java/com/google/android/gms/tapandpay/firstparty/TokenStatus.java similarity index 100% rename from play-services-tapandpay-api/src/main/java/com/google/android/gms/tapandpay/firstparty/TokenStatus.java rename to play-services-tapandpay/src/main/java/com/google/android/gms/tapandpay/firstparty/TokenStatus.java diff --git a/play-services-tapandpay-api/src/main/java/com/google/android/gms/tapandpay/issuer/TokenStatus.java b/play-services-tapandpay/src/main/java/com/google/android/gms/tapandpay/issuer/TokenStatus.java similarity index 100% rename from play-services-tapandpay-api/src/main/java/com/google/android/gms/tapandpay/issuer/TokenStatus.java rename to play-services-tapandpay/src/main/java/com/google/android/gms/tapandpay/issuer/TokenStatus.java diff --git a/play-services-tasks/build.gradle b/play-services-tasks/build.gradle index 279b8f084..b2c38fd9f 100644 --- a/play-services-tasks/build.gradle +++ b/play-services-tasks/build.gradle @@ -24,6 +24,7 @@ android { } dependencies { + // Dependencies from play-services-tasks:18.0.2 api project(':play-services-basement') } diff --git a/play-services-tasks-ktx/build.gradle b/play-services-tasks/ktx/build.gradle similarity index 95% rename from play-services-tasks-ktx/build.gradle rename to play-services-tasks/ktx/build.gradle index 670f9ea74..71d5a6baf 100644 --- a/play-services-tasks-ktx/build.gradle +++ b/play-services-tasks/ktx/build.gradle @@ -39,6 +39,6 @@ android { } } -apply from: '../gradle/publish-android.gradle' +apply from: '../../gradle/publish-android.gradle' description = 'microG kotlin extensions for play-services-tasks' diff --git a/play-services-tasks-ktx/src/main/AndroidManifest.xml b/play-services-tasks/ktx/src/main/AndroidManifest.xml similarity index 100% rename from play-services-tasks-ktx/src/main/AndroidManifest.xml rename to play-services-tasks/ktx/src/main/AndroidManifest.xml diff --git a/play-services-tasks-ktx/src/main/kotlin/com/google/android/gms/tasks/Tasks.kt b/play-services-tasks/ktx/src/main/kotlin/com/google/android/gms/tasks/Tasks.kt similarity index 100% rename from play-services-tasks-ktx/src/main/kotlin/com/google/android/gms/tasks/Tasks.kt rename to play-services-tasks/ktx/src/main/kotlin/com/google/android/gms/tasks/Tasks.kt diff --git a/play-services-tasks/src/main/AndroidManifest.xml b/play-services-tasks/src/main/AndroidManifest.xml index c7b833fe5..6741aa2c1 100644 --- a/play-services-tasks/src/main/AndroidManifest.xml +++ b/play-services-tasks/src/main/AndroidManifest.xml @@ -4,4 +4,4 @@ ~ SPDX-License-Identifier: Apache-2.0 --> - + diff --git a/play-services-vision-api/build.gradle b/play-services-vision-api/build.gradle deleted file mode 100644 index c25f5f50f..000000000 --- a/play-services-vision-api/build.gradle +++ /dev/null @@ -1,34 +0,0 @@ -/* - * 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 { - compileSdkVersion androidCompileSdk - buildToolsVersion "$androidBuildVersionTools" - - defaultConfig { - versionName version - minSdkVersion androidMinSdk - targetSdkVersion androidTargetSdk - } - - compileOptions { - sourceCompatibility = 1.8 - targetCompatibility = 1.8 - } -} - -apply from: '../gradle/publish-android.gradle' - -description = 'microG API for play-services-vision' - -dependencies { - api project(':play-services-basement') - api project(':play-services-base-api') - api project(':play-services-vision-common-api') -} diff --git a/play-services-vision-api/src/main/AndroidManifest.xml b/play-services-vision-api/src/main/AndroidManifest.xml deleted file mode 100644 index e678c13bb..000000000 --- a/play-services-vision-api/src/main/AndroidManifest.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/play-services-vision-common-api/build.gradle b/play-services-vision-common-api/build.gradle deleted file mode 100644 index 63f5c10e6..000000000 --- a/play-services-vision-common-api/build.gradle +++ /dev/null @@ -1,33 +0,0 @@ -/* - * 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 { - compileSdkVersion androidCompileSdk - buildToolsVersion "$androidBuildVersionTools" - - defaultConfig { - versionName version - minSdkVersion androidMinSdk - targetSdkVersion androidTargetSdk - } - - compileOptions { - sourceCompatibility = 1.8 - targetCompatibility = 1.8 - } -} - -apply from: '../gradle/publish-android.gradle' - -description = 'microG API for play-services-vision-common' - -dependencies { - api project(':play-services-basement') - api project(':play-services-base-api') -} diff --git a/play-services-vision-common-api/src/main/AndroidManifest.xml b/play-services-vision-common-api/src/main/AndroidManifest.xml deleted file mode 100644 index a4c15fef5..000000000 --- a/play-services-vision-common-api/src/main/AndroidManifest.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/play-services-vision-common/build.gradle b/play-services-vision-common/build.gradle index a2ddace25..68a060667 100644 --- a/play-services-vision-common/build.gradle +++ b/play-services-vision-common/build.gradle @@ -28,8 +28,6 @@ apply from: '../gradle/publish-android.gradle' description = 'microG implementation of play-services-vision-common' dependencies { - api project(':play-services-vision-common-api') - // Dependencies from play-services-vision-common:19.1.3 api project(':play-services-base') api project(':play-services-basement') diff --git a/play-services-vision-common/src/main/AndroidManifest.xml b/play-services-vision-common/src/main/AndroidManifest.xml index 597fc93df..00580edff 100644 --- a/play-services-vision-common/src/main/AndroidManifest.xml +++ b/play-services-vision-common/src/main/AndroidManifest.xml @@ -3,4 +3,4 @@ ~ SPDX-FileCopyrightText: 2020, microG Project Team ~ SPDX-License-Identifier: Apache-2.0 --> - + diff --git a/play-services-vision-common-api/src/main/aidl/com/google/android/gms/vision/internal/FrameMetadataParcel.aidl b/play-services-vision-common/src/main/aidl/com/google/android/gms/vision/internal/FrameMetadataParcel.aidl similarity index 100% rename from play-services-vision-common-api/src/main/aidl/com/google/android/gms/vision/internal/FrameMetadataParcel.aidl rename to play-services-vision-common/src/main/aidl/com/google/android/gms/vision/internal/FrameMetadataParcel.aidl diff --git a/play-services-vision-common-api/src/main/java/com/google/android/gms/vision/internal/FrameMetadataParcel.java b/play-services-vision-common/src/main/java/com/google/android/gms/vision/internal/FrameMetadataParcel.java similarity index 100% rename from play-services-vision-common-api/src/main/java/com/google/android/gms/vision/internal/FrameMetadataParcel.java rename to play-services-vision-common/src/main/java/com/google/android/gms/vision/internal/FrameMetadataParcel.java diff --git a/play-services-vision/build.gradle b/play-services-vision/build.gradle index 142d368c1..f9f0ba1f7 100644 --- a/play-services-vision/build.gradle +++ b/play-services-vision/build.gradle @@ -28,8 +28,6 @@ apply from: '../gradle/publish-android.gradle' description = 'microG implementation of play-services-vision' dependencies { - api project(':play-services-vision-api') - // Dependencies from play-services-vision:20.1.3 api project(':play-services-base') api project(':play-services-basement') diff --git a/play-services-vision-core/build.gradle b/play-services-vision/core/build.gradle similarity index 90% rename from play-services-vision-core/build.gradle rename to play-services-vision/core/build.gradle index c9fa01078..db98898c4 100644 --- a/play-services-vision-core/build.gradle +++ b/play-services-vision/core/build.gradle @@ -9,7 +9,7 @@ apply plugin: 'maven-publish' apply plugin: 'signing' dependencies { - api project(':play-services-vision-api') + api project(':play-services-vision') implementation project(':play-services-base-core') implementation "androidx.annotation:annotation:$annotationVersion" @@ -38,6 +38,6 @@ android { } } -apply from: '../gradle/publish-android.gradle' +apply from: '../../gradle/publish-android.gradle' description = 'microG service implementation for play-services-vision' diff --git a/play-services-vision-core/src/main/AndroidManifest.xml b/play-services-vision/core/src/main/AndroidManifest.xml similarity index 100% rename from play-services-vision-core/src/main/AndroidManifest.xml rename to play-services-vision/core/src/main/AndroidManifest.xml diff --git a/play-services-vision-core/src/main/java/com/google/android/gms/dynamite/descriptors/com/google/android/gms/vision/barcode/ModuleDescriptor.java b/play-services-vision/core/src/main/java/com/google/android/gms/dynamite/descriptors/com/google/android/gms/vision/barcode/ModuleDescriptor.java similarity index 100% rename from play-services-vision-core/src/main/java/com/google/android/gms/dynamite/descriptors/com/google/android/gms/vision/barcode/ModuleDescriptor.java rename to play-services-vision/core/src/main/java/com/google/android/gms/dynamite/descriptors/com/google/android/gms/vision/barcode/ModuleDescriptor.java diff --git a/play-services-vision-core/src/main/java/com/google/android/gms/dynamite/descriptors/com/google/android/gms/vision/dynamite/ModuleDescriptor.java b/play-services-vision/core/src/main/java/com/google/android/gms/dynamite/descriptors/com/google/android/gms/vision/dynamite/ModuleDescriptor.java similarity index 100% rename from play-services-vision-core/src/main/java/com/google/android/gms/dynamite/descriptors/com/google/android/gms/vision/dynamite/ModuleDescriptor.java rename to play-services-vision/core/src/main/java/com/google/android/gms/dynamite/descriptors/com/google/android/gms/vision/dynamite/ModuleDescriptor.java diff --git a/play-services-vision-core/src/main/kotlin/com/google/android/gms/vision/barcode/ChimeraNativeBarcodeDetectorCreator.kt b/play-services-vision/core/src/main/kotlin/com/google/android/gms/vision/barcode/ChimeraNativeBarcodeDetectorCreator.kt similarity index 100% rename from play-services-vision-core/src/main/kotlin/com/google/android/gms/vision/barcode/ChimeraNativeBarcodeDetectorCreator.kt rename to play-services-vision/core/src/main/kotlin/com/google/android/gms/vision/barcode/ChimeraNativeBarcodeDetectorCreator.kt diff --git a/play-services-vision-core/src/main/kotlin/com/google/android/gms/vision/client/DynamiteNativeBarcodeDetectorCreator.kt b/play-services-vision/core/src/main/kotlin/com/google/android/gms/vision/client/DynamiteNativeBarcodeDetectorCreator.kt similarity index 100% rename from play-services-vision-core/src/main/kotlin/com/google/android/gms/vision/client/DynamiteNativeBarcodeDetectorCreator.kt rename to play-services-vision/core/src/main/kotlin/com/google/android/gms/vision/client/DynamiteNativeBarcodeDetectorCreator.kt diff --git a/play-services-vision-core/src/main/kotlin/org/microg/gms/vision/barcode/BarcodeDetector.kt b/play-services-vision/core/src/main/kotlin/org/microg/gms/vision/barcode/BarcodeDetector.kt similarity index 100% rename from play-services-vision-core/src/main/kotlin/org/microg/gms/vision/barcode/BarcodeDetector.kt rename to play-services-vision/core/src/main/kotlin/org/microg/gms/vision/barcode/BarcodeDetector.kt diff --git a/play-services-vision-core/src/main/kotlin/org/microg/gms/vision/barcode/DirectLuminanceSource.kt b/play-services-vision/core/src/main/kotlin/org/microg/gms/vision/barcode/DirectLuminanceSource.kt similarity index 100% rename from play-services-vision-core/src/main/kotlin/org/microg/gms/vision/barcode/DirectLuminanceSource.kt rename to play-services-vision/core/src/main/kotlin/org/microg/gms/vision/barcode/DirectLuminanceSource.kt diff --git a/play-services-vision-core/src/main/kotlin/org/microg/gms/vision/barcode/Extensions.kt b/play-services-vision/core/src/main/kotlin/org/microg/gms/vision/barcode/Extensions.kt similarity index 100% rename from play-services-vision-core/src/main/kotlin/org/microg/gms/vision/barcode/Extensions.kt rename to play-services-vision/core/src/main/kotlin/org/microg/gms/vision/barcode/Extensions.kt diff --git a/play-services-vision/src/main/AndroidManifest.xml b/play-services-vision/src/main/AndroidManifest.xml index b6ffe8199..6cd534481 100644 --- a/play-services-vision/src/main/AndroidManifest.xml +++ b/play-services-vision/src/main/AndroidManifest.xml @@ -3,4 +3,4 @@ ~ SPDX-FileCopyrightText: 2020, microG Project Team ~ SPDX-License-Identifier: Apache-2.0 --> - + diff --git a/play-services-vision-api/src/main/aidl/com/google/android/gms/vision/barcode/Barcode.aidl b/play-services-vision/src/main/aidl/com/google/android/gms/vision/barcode/Barcode.aidl similarity index 100% rename from play-services-vision-api/src/main/aidl/com/google/android/gms/vision/barcode/Barcode.aidl rename to play-services-vision/src/main/aidl/com/google/android/gms/vision/barcode/Barcode.aidl diff --git a/play-services-vision-api/src/main/aidl/com/google/android/gms/vision/barcode/internal/client/BarcodeDetectorOptions.aidl b/play-services-vision/src/main/aidl/com/google/android/gms/vision/barcode/internal/client/BarcodeDetectorOptions.aidl similarity index 100% rename from play-services-vision-api/src/main/aidl/com/google/android/gms/vision/barcode/internal/client/BarcodeDetectorOptions.aidl rename to play-services-vision/src/main/aidl/com/google/android/gms/vision/barcode/internal/client/BarcodeDetectorOptions.aidl diff --git a/play-services-vision-api/src/main/aidl/com/google/android/gms/vision/barcode/internal/client/INativeBarcodeDetector.aidl b/play-services-vision/src/main/aidl/com/google/android/gms/vision/barcode/internal/client/INativeBarcodeDetector.aidl similarity index 100% rename from play-services-vision-api/src/main/aidl/com/google/android/gms/vision/barcode/internal/client/INativeBarcodeDetector.aidl rename to play-services-vision/src/main/aidl/com/google/android/gms/vision/barcode/internal/client/INativeBarcodeDetector.aidl diff --git a/play-services-vision-api/src/main/aidl/com/google/android/gms/vision/barcode/internal/client/INativeBarcodeDetectorCreator.aidl b/play-services-vision/src/main/aidl/com/google/android/gms/vision/barcode/internal/client/INativeBarcodeDetectorCreator.aidl similarity index 100% rename from play-services-vision-api/src/main/aidl/com/google/android/gms/vision/barcode/internal/client/INativeBarcodeDetectorCreator.aidl rename to play-services-vision/src/main/aidl/com/google/android/gms/vision/barcode/internal/client/INativeBarcodeDetectorCreator.aidl diff --git a/play-services-vision-api/src/main/java/com/google/android/gms/vision/barcode/Barcode.java b/play-services-vision/src/main/java/com/google/android/gms/vision/barcode/Barcode.java similarity index 100% rename from play-services-vision-api/src/main/java/com/google/android/gms/vision/barcode/Barcode.java rename to play-services-vision/src/main/java/com/google/android/gms/vision/barcode/Barcode.java diff --git a/play-services-vision-api/src/main/java/com/google/android/gms/vision/barcode/internal/client/BarcodeDetectorOptions.java b/play-services-vision/src/main/java/com/google/android/gms/vision/barcode/internal/client/BarcodeDetectorOptions.java similarity index 100% rename from play-services-vision-api/src/main/java/com/google/android/gms/vision/barcode/internal/client/BarcodeDetectorOptions.java rename to play-services-vision/src/main/java/com/google/android/gms/vision/barcode/internal/client/BarcodeDetectorOptions.java diff --git a/play-services-wearable-api/build.gradle b/play-services-wearable-api/build.gradle deleted file mode 100644 index fb66e4c73..000000000 --- a/play-services-wearable-api/build.gradle +++ /dev/null @@ -1,39 +0,0 @@ -/* - * 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 { - compileSdkVersion androidCompileSdk - buildToolsVersion "$androidBuildVersionTools" - - defaultConfig { - versionName version - minSdkVersion androidMinSdk - targetSdkVersion androidTargetSdk - } - - compileOptions { - sourceCompatibility = 1.8 - targetCompatibility = 1.8 - } -} - -dependencies { - api project(':play-services-basement') - - api project(':play-services-base-api') -} diff --git a/play-services-wearable-api/src/main/AndroidManifest.xml b/play-services-wearable-api/src/main/AndroidManifest.xml deleted file mode 100644 index c0cf88697..000000000 --- a/play-services-wearable-api/src/main/AndroidManifest.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - diff --git a/play-services-wearable-proto/build.gradle b/play-services-wearable-proto/build.gradle deleted file mode 100644 index 68f2a91f6..000000000 --- a/play-services-wearable-proto/build.gradle +++ /dev/null @@ -1,29 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2020, microG Project Team - * SPDX-License-Identifier: Apache-2.0 - */ - -apply plugin: 'com.squareup.wire' -apply plugin: 'kotlin' - -dependencies { - implementation "com.squareup.wire:wire-runtime:$wireVersion" -} - -wire { - kotlin { - javaInterop = true - } -} - -sourceSets { - main.java.srcDirs += "$buildDir/generated/source/wire" -} - -compileKotlin { - kotlinOptions.jvmTarget = 1.8 -} - -compileTestKotlin { - kotlinOptions.jvmTarget = 1.8 -} diff --git a/play-services-wearable/build.gradle b/play-services-wearable/build.gradle index da924ef65..06da9176f 100644 --- a/play-services-wearable/build.gradle +++ b/play-services-wearable/build.gradle @@ -4,6 +4,9 @@ */ apply plugin: 'com.android.library' +apply plugin: 'com.squareup.wire' +apply plugin: 'maven-publish' +apply plugin: 'signing' android { compileSdkVersion androidCompileSdk @@ -25,13 +28,21 @@ android { } } +wire { + java { + + } +} + +apply from: '../gradle/publish-android.gradle' + +description = 'microG implementation of play-services-wearable' + dependencies { - api project(':play-services-wearable-api') - api project(':play-services-wearable-proto') implementation "com.squareup.wire:wire-runtime:$wireVersion" // Dependencies from play-services-wearable:17.1.0 - implementation "androidx.core:core:1.0.0" + api "androidx.core:core:1.0.0" api project(':play-services-base') api project(':play-services-basement') api project(':play-services-tasks') diff --git a/play-services-droidguard-core-ui/build.gradle b/play-services-wearable/core/build.gradle similarity index 53% rename from play-services-droidguard-core-ui/build.gradle rename to play-services-wearable/core/build.gradle index 90ad5e300..55aaf4130 100644 --- a/play-services-droidguard-core-ui/build.gradle +++ b/play-services-wearable/core/build.gradle @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2021, microG Project Team + * SPDX-FileCopyrightText: 2022 microG Project Team * SPDX-License-Identifier: Apache-2.0 */ @@ -10,12 +10,12 @@ apply plugin: 'maven-publish' apply plugin: 'signing' dependencies { - implementation project(':play-services-droidguard-core') - implementation project(':play-services-base-core-ui') + implementation project(':play-services-base-core') - implementation "androidx.appcompat:appcompat:$appcompatVersion" - implementation "androidx.preference:preference-ktx:$preferenceVersion" - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion" + implementation project(':play-services-location') + implementation project(':play-services-wearable') + + implementation "org.microg:wearable:$wearableVersion" } android { @@ -28,10 +28,12 @@ android { targetSdkVersion androidTargetSdk } + buildFeatures { + dataBinding = true + } + sourceSets { - main { - java.srcDirs = ['src/main/kotlin'] - } + main.java.srcDirs += 'src/main/kotlin' } lintOptions { @@ -48,6 +50,6 @@ android { } } -apply from: '../gradle/publish-android.gradle' +apply from: '../../gradle/publish-android.gradle' -description = 'UI for microG service implementation for play-services-droidguard' +description = 'microG service implementation for play-services-wearable' diff --git a/play-services-wearable/core/src/main/AndroidManifest.xml b/play-services-wearable/core/src/main/AndroidManifest.xml new file mode 100644 index 000000000..ca285f8d3 --- /dev/null +++ b/play-services-wearable/core/src/main/AndroidManifest.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/play-services-core/src/main/java/org/microg/gms/wearable/CapabilityManager.java b/play-services-wearable/core/src/main/java/org/microg/gms/wearable/CapabilityManager.java similarity index 100% rename from play-services-core/src/main/java/org/microg/gms/wearable/CapabilityManager.java rename to play-services-wearable/core/src/main/java/org/microg/gms/wearable/CapabilityManager.java diff --git a/play-services-core/src/main/java/org/microg/gms/wearable/ClockworkNodePreferences.java b/play-services-wearable/core/src/main/java/org/microg/gms/wearable/ClockworkNodePreferences.java similarity index 100% rename from play-services-core/src/main/java/org/microg/gms/wearable/ClockworkNodePreferences.java rename to play-services-wearable/core/src/main/java/org/microg/gms/wearable/ClockworkNodePreferences.java diff --git a/play-services-core/src/main/java/org/microg/gms/wearable/ConfigurationDatabaseHelper.java b/play-services-wearable/core/src/main/java/org/microg/gms/wearable/ConfigurationDatabaseHelper.java similarity index 100% rename from play-services-core/src/main/java/org/microg/gms/wearable/ConfigurationDatabaseHelper.java rename to play-services-wearable/core/src/main/java/org/microg/gms/wearable/ConfigurationDatabaseHelper.java diff --git a/play-services-core/src/main/java/org/microg/gms/wearable/DataItemInternal.java b/play-services-wearable/core/src/main/java/org/microg/gms/wearable/DataItemInternal.java similarity index 100% rename from play-services-core/src/main/java/org/microg/gms/wearable/DataItemInternal.java rename to play-services-wearable/core/src/main/java/org/microg/gms/wearable/DataItemInternal.java diff --git a/play-services-core/src/main/java/org/microg/gms/wearable/DataItemRecord.java b/play-services-wearable/core/src/main/java/org/microg/gms/wearable/DataItemRecord.java similarity index 100% rename from play-services-core/src/main/java/org/microg/gms/wearable/DataItemRecord.java rename to play-services-wearable/core/src/main/java/org/microg/gms/wearable/DataItemRecord.java diff --git a/play-services-core/src/main/java/org/microg/gms/wearable/MessageHandler.java b/play-services-wearable/core/src/main/java/org/microg/gms/wearable/MessageHandler.java similarity index 94% rename from play-services-core/src/main/java/org/microg/gms/wearable/MessageHandler.java rename to play-services-wearable/core/src/main/java/org/microg/gms/wearable/MessageHandler.java index 5cdb087aa..0f12d92ed 100644 --- a/play-services-core/src/main/java/org/microg/gms/wearable/MessageHandler.java +++ b/play-services-wearable/core/src/main/java/org/microg/gms/wearable/MessageHandler.java @@ -16,6 +16,7 @@ package org.microg.gms.wearable; +import android.content.Context; import android.text.TextUtils; import android.util.Log; @@ -23,8 +24,8 @@ import com.google.android.gms.wearable.Asset; import com.google.android.gms.wearable.ConnectionConfiguration; import com.google.android.gms.wearable.internal.MessageEventParcelable; -import org.microg.gms.checkin.LastCheckinInfo; import org.microg.gms.profile.Build; +import org.microg.gms.settings.SettingsContract; import org.microg.wearable.ServerMessageListener; import org.microg.wearable.proto.AckAsset; import org.microg.wearable.proto.Connect; @@ -47,8 +48,8 @@ public class MessageHandler extends ServerMessageListener { private final String oldConfigNodeId; private String peerNodeId; - public MessageHandler(WearableImpl wearable, ConnectionConfiguration config) { - this(wearable, config, Build.MODEL, config.nodeId, LastCheckinInfo.read(wearable.getContext()).getAndroidId()); + public MessageHandler(Context context, WearableImpl wearable, ConnectionConfiguration config) { + this(wearable, config, Build.MODEL, config.nodeId, SettingsContract.getSettings(context, SettingsContract.CheckIn.INSTANCE.getContentUri(context), new String[]{SettingsContract.CheckIn.ANDROID_ID}, cursor -> cursor.getLong(0))); } private MessageHandler(WearableImpl wearable, ConnectionConfiguration config, String name, String networkId, long androidId) { diff --git a/play-services-core/src/main/java/org/microg/gms/wearable/NodeDatabaseHelper.java b/play-services-wearable/core/src/main/java/org/microg/gms/wearable/NodeDatabaseHelper.java similarity index 100% rename from play-services-core/src/main/java/org/microg/gms/wearable/NodeDatabaseHelper.java rename to play-services-wearable/core/src/main/java/org/microg/gms/wearable/NodeDatabaseHelper.java diff --git a/play-services-core/src/main/java/org/microg/gms/wearable/RpcHelper.java b/play-services-wearable/core/src/main/java/org/microg/gms/wearable/RpcHelper.java similarity index 100% rename from play-services-core/src/main/java/org/microg/gms/wearable/RpcHelper.java rename to play-services-wearable/core/src/main/java/org/microg/gms/wearable/RpcHelper.java diff --git a/play-services-core/src/main/java/org/microg/gms/wearable/WearableImpl.java b/play-services-wearable/core/src/main/java/org/microg/gms/wearable/WearableImpl.java similarity index 99% rename from play-services-core/src/main/java/org/microg/gms/wearable/WearableImpl.java rename to play-services-wearable/core/src/main/java/org/microg/gms/wearable/WearableImpl.java index 22f6f302d..c16840301 100644 --- a/play-services-core/src/main/java/org/microg/gms/wearable/WearableImpl.java +++ b/play-services-wearable/core/src/main/java/org/microg/gms/wearable/WearableImpl.java @@ -507,7 +507,7 @@ public class WearableImpl { configurationsUpdated = true; if (name.equals("server") && sct == null) { Log.d(TAG, "Starting server on :" + WEAR_TCP_PORT); - (sct = SocketConnectionThread.serverListen(WEAR_TCP_PORT, new MessageHandler(this, configDatabase.getConfiguration(name)))).start(); + (sct = SocketConnectionThread.serverListen(WEAR_TCP_PORT, new MessageHandler(context, this, configDatabase.getConfiguration(name)))).start(); } } diff --git a/play-services-core/src/main/java/org/microg/gms/wearable/WearableService.java b/play-services-wearable/core/src/main/java/org/microg/gms/wearable/WearableService.java similarity index 100% rename from play-services-core/src/main/java/org/microg/gms/wearable/WearableService.java rename to play-services-wearable/core/src/main/java/org/microg/gms/wearable/WearableService.java diff --git a/play-services-core/src/main/java/org/microg/gms/wearable/WearableServiceImpl.java b/play-services-wearable/core/src/main/java/org/microg/gms/wearable/WearableServiceImpl.java similarity index 100% rename from play-services-core/src/main/java/org/microg/gms/wearable/WearableServiceImpl.java rename to play-services-wearable/core/src/main/java/org/microg/gms/wearable/WearableServiceImpl.java diff --git a/play-services-core/src/main/java/org/microg/gms/wearable/location/WearableLocationService.java b/play-services-wearable/core/src/main/java/org/microg/gms/wearable/location/WearableLocationService.java similarity index 100% rename from play-services-core/src/main/java/org/microg/gms/wearable/location/WearableLocationService.java rename to play-services-wearable/core/src/main/java/org/microg/gms/wearable/location/WearableLocationService.java diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/Asset.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/Asset.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/Asset.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/Asset.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/ConnectionConfiguration.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/ConnectionConfiguration.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/ConnectionConfiguration.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/ConnectionConfiguration.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/AddListenerRequest.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/AddListenerRequest.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/AddListenerRequest.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/AddListenerRequest.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/AddLocalCapabilityResponse.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/AddLocalCapabilityResponse.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/AddLocalCapabilityResponse.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/AddLocalCapabilityResponse.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/AmsEntityUpdateParcelable.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/AmsEntityUpdateParcelable.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/AmsEntityUpdateParcelable.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/AmsEntityUpdateParcelable.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/AncsNotificationParcelable.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/AncsNotificationParcelable.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/AncsNotificationParcelable.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/AncsNotificationParcelable.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/CapabilityInfoParcelable.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/CapabilityInfoParcelable.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/CapabilityInfoParcelable.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/CapabilityInfoParcelable.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/ChannelEventParcelable.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/ChannelEventParcelable.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/ChannelEventParcelable.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/ChannelEventParcelable.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/ChannelReceiveFileResponse.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/ChannelReceiveFileResponse.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/ChannelReceiveFileResponse.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/ChannelReceiveFileResponse.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/ChannelSendFileResponse.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/ChannelSendFileResponse.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/ChannelSendFileResponse.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/ChannelSendFileResponse.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/CloseChannelResponse.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/CloseChannelResponse.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/CloseChannelResponse.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/CloseChannelResponse.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/DeleteDataItemsResponse.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/DeleteDataItemsResponse.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/DeleteDataItemsResponse.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/DeleteDataItemsResponse.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/GetAllCapabilitiesResponse.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/GetAllCapabilitiesResponse.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/GetAllCapabilitiesResponse.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/GetAllCapabilitiesResponse.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/GetCapabilityResponse.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/GetCapabilityResponse.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/GetCapabilityResponse.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/GetCapabilityResponse.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/GetChannelInputStreamResponse.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/GetChannelInputStreamResponse.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/GetChannelInputStreamResponse.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/GetChannelInputStreamResponse.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/GetChannelOutputStreamResponse.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/GetChannelOutputStreamResponse.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/GetChannelOutputStreamResponse.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/GetChannelOutputStreamResponse.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/GetCloudSyncOptInOutDoneResponse.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/GetCloudSyncOptInOutDoneResponse.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/GetCloudSyncOptInOutDoneResponse.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/GetCloudSyncOptInOutDoneResponse.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/GetCloudSyncOptInStatusResponse.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/GetCloudSyncOptInStatusResponse.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/GetCloudSyncOptInStatusResponse.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/GetCloudSyncOptInStatusResponse.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/GetCloudSyncSettingResponse.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/GetCloudSyncSettingResponse.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/GetCloudSyncSettingResponse.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/GetCloudSyncSettingResponse.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/GetConfigResponse.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/GetConfigResponse.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/GetConfigResponse.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/GetConfigResponse.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/GetConfigsResponse.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/GetConfigsResponse.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/GetConfigsResponse.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/GetConfigsResponse.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/GetConnectedNodesResponse.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/GetConnectedNodesResponse.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/GetConnectedNodesResponse.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/GetConnectedNodesResponse.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/GetDataItemResponse.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/GetDataItemResponse.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/GetDataItemResponse.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/GetDataItemResponse.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/GetFdForAssetResponse.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/GetFdForAssetResponse.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/GetFdForAssetResponse.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/GetFdForAssetResponse.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/GetLocalNodeResponse.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/GetLocalNodeResponse.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/GetLocalNodeResponse.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/GetLocalNodeResponse.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/IChannelStreamCallbacks.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/IChannelStreamCallbacks.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/IChannelStreamCallbacks.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/IChannelStreamCallbacks.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/IWearableCallbacks.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/IWearableCallbacks.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/IWearableCallbacks.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/IWearableCallbacks.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/IWearableListener.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/IWearableListener.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/IWearableListener.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/IWearableListener.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/IWearableService.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/IWearableService.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/IWearableService.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/IWearableService.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/MessageEventParcelable.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/MessageEventParcelable.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/MessageEventParcelable.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/MessageEventParcelable.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/NodeParcelable.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/NodeParcelable.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/NodeParcelable.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/NodeParcelable.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/OpenChannelResponse.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/OpenChannelResponse.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/OpenChannelResponse.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/OpenChannelResponse.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/PutDataRequest.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/PutDataRequest.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/PutDataRequest.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/PutDataRequest.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/PutDataResponse.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/PutDataResponse.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/PutDataResponse.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/PutDataResponse.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/RemoveListenerRequest.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/RemoveListenerRequest.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/RemoveListenerRequest.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/RemoveListenerRequest.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/RemoveLocalCapabilityResponse.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/RemoveLocalCapabilityResponse.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/RemoveLocalCapabilityResponse.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/RemoveLocalCapabilityResponse.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/SendMessageResponse.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/SendMessageResponse.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/SendMessageResponse.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/SendMessageResponse.aidl diff --git a/play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/StorageInfoResponse.aidl b/play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/StorageInfoResponse.aidl similarity index 100% rename from play-services-wearable-api/src/main/aidl/com/google/android/gms/wearable/internal/StorageInfoResponse.aidl rename to play-services-wearable/src/main/aidl/com/google/android/gms/wearable/internal/StorageInfoResponse.aidl diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/AmsEntityUpdate.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/AmsEntityUpdate.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/AmsEntityUpdate.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/AmsEntityUpdate.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/AncsNotification.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/AncsNotification.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/AncsNotification.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/AncsNotification.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/Asset.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/Asset.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/Asset.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/Asset.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/CapabilityInfo.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/CapabilityInfo.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/CapabilityInfo.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/CapabilityInfo.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/ConnectionConfiguration.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/ConnectionConfiguration.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/ConnectionConfiguration.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/ConnectionConfiguration.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/DataItem.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/DataItem.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/DataItem.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/DataItem.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/DataItemAsset.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/DataItemAsset.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/DataItemAsset.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/DataItemAsset.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/MessageEvent.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/MessageEvent.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/MessageEvent.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/MessageEvent.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/Node.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/Node.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/Node.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/Node.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/WearableStatusCodes.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/WearableStatusCodes.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/WearableStatusCodes.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/WearableStatusCodes.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/AddListenerRequest.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/AddListenerRequest.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/AddListenerRequest.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/AddListenerRequest.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/AddLocalCapabilityResponse.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/AddLocalCapabilityResponse.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/AddLocalCapabilityResponse.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/AddLocalCapabilityResponse.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/AmsEntityUpdateParcelable.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/AmsEntityUpdateParcelable.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/AmsEntityUpdateParcelable.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/AmsEntityUpdateParcelable.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/AncsNotificationParcelable.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/AncsNotificationParcelable.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/AncsNotificationParcelable.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/AncsNotificationParcelable.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/CapabilityInfoParcelable.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/CapabilityInfoParcelable.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/CapabilityInfoParcelable.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/CapabilityInfoParcelable.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/ChannelEventParcelable.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/ChannelEventParcelable.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/ChannelEventParcelable.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/ChannelEventParcelable.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/ChannelParcelable.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/ChannelParcelable.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/ChannelParcelable.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/ChannelParcelable.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/ChannelReceiveFileResponse.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/ChannelReceiveFileResponse.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/ChannelReceiveFileResponse.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/ChannelReceiveFileResponse.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/ChannelSendFileResponse.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/ChannelSendFileResponse.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/ChannelSendFileResponse.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/ChannelSendFileResponse.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/CloseChannelResponse.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/CloseChannelResponse.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/CloseChannelResponse.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/CloseChannelResponse.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/DataItemAssetParcelable.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/DataItemAssetParcelable.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/DataItemAssetParcelable.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/DataItemAssetParcelable.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/DataItemParcelable.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/DataItemParcelable.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/DataItemParcelable.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/DataItemParcelable.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/DeleteDataItemsResponse.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/DeleteDataItemsResponse.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/DeleteDataItemsResponse.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/DeleteDataItemsResponse.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/GetAllCapabilitiesResponse.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/GetAllCapabilitiesResponse.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/GetAllCapabilitiesResponse.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/GetAllCapabilitiesResponse.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/GetCapabilityResponse.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/GetCapabilityResponse.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/GetCapabilityResponse.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/GetCapabilityResponse.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/GetChannelInputStreamResponse.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/GetChannelInputStreamResponse.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/GetChannelInputStreamResponse.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/GetChannelInputStreamResponse.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/GetChannelOutputStreamResponse.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/GetChannelOutputStreamResponse.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/GetChannelOutputStreamResponse.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/GetChannelOutputStreamResponse.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/GetCloudSyncOptInOutDoneResponse.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/GetCloudSyncOptInOutDoneResponse.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/GetCloudSyncOptInOutDoneResponse.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/GetCloudSyncOptInOutDoneResponse.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/GetCloudSyncOptInStatusResponse.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/GetCloudSyncOptInStatusResponse.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/GetCloudSyncOptInStatusResponse.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/GetCloudSyncOptInStatusResponse.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/GetCloudSyncSettingResponse.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/GetCloudSyncSettingResponse.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/GetCloudSyncSettingResponse.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/GetCloudSyncSettingResponse.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/GetConfigResponse.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/GetConfigResponse.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/GetConfigResponse.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/GetConfigResponse.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/GetConfigsResponse.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/GetConfigsResponse.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/GetConfigsResponse.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/GetConfigsResponse.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/GetConnectedNodesResponse.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/GetConnectedNodesResponse.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/GetConnectedNodesResponse.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/GetConnectedNodesResponse.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/GetDataItemResponse.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/GetDataItemResponse.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/GetDataItemResponse.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/GetDataItemResponse.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/GetFdForAssetResponse.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/GetFdForAssetResponse.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/GetFdForAssetResponse.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/GetFdForAssetResponse.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/GetLocalNodeResponse.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/GetLocalNodeResponse.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/GetLocalNodeResponse.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/GetLocalNodeResponse.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/MessageEventParcelable.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/MessageEventParcelable.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/MessageEventParcelable.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/MessageEventParcelable.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/NodeParcelable.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/NodeParcelable.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/NodeParcelable.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/NodeParcelable.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/OpenChannelResponse.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/OpenChannelResponse.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/OpenChannelResponse.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/OpenChannelResponse.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/PutDataRequest.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/PutDataRequest.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/PutDataRequest.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/PutDataRequest.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/PutDataResponse.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/PutDataResponse.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/PutDataResponse.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/PutDataResponse.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/RemoveListenerRequest.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/RemoveListenerRequest.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/RemoveListenerRequest.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/RemoveListenerRequest.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/RemoveLocalCapabilityResponse.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/RemoveLocalCapabilityResponse.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/RemoveLocalCapabilityResponse.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/RemoveLocalCapabilityResponse.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/SendMessageResponse.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/SendMessageResponse.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/SendMessageResponse.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/SendMessageResponse.java diff --git a/play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/StorageInfoResponse.java b/play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/StorageInfoResponse.java similarity index 100% rename from play-services-wearable-api/src/main/java/com/google/android/gms/wearable/internal/StorageInfoResponse.java rename to play-services-wearable/src/main/java/com/google/android/gms/wearable/internal/StorageInfoResponse.java diff --git a/play-services-wearable/src/main/java/org/microg/gms/wearable/databundle/DataBundleUtil.java b/play-services-wearable/src/main/java/org/microg/gms/wearable/databundle/DataBundleUtil.java index c8abde9c4..2d8a001ef 100644 --- a/play-services-wearable/src/main/java/org/microg/gms/wearable/databundle/DataBundleUtil.java +++ b/play-services-wearable/src/main/java/org/microg/gms/wearable/databundle/DataBundleUtil.java @@ -588,7 +588,7 @@ public class DataBundleUtil { if (value.type == NULL_TYPE_CODE) { return null; } else if (value.type == type) { - return read(value.value_, assets); + return read(value.value, assets); } else { throw new IllegalArgumentException(); } @@ -639,7 +639,7 @@ public class DataBundleUtil { } DataBundleTypedValue createTyped(T value, List assets) { - return new DataBundleTypedValue.Builder().type(type).value_(create(value, assets)).build(); + return new DataBundleTypedValue.Builder().type(type).value(create(value, assets)).build(); } DataBundleValue loadAndCreate(DataMap dataMap, String key, List assets) { diff --git a/play-services-wearable-proto/src/main/proto/databundle.proto b/play-services-wearable/src/main/proto/databundle.proto similarity index 100% rename from play-services-wearable-proto/src/main/proto/databundle.proto rename to play-services-wearable/src/main/proto/databundle.proto diff --git a/settings.gradle b/settings.gradle index 2d293259f..3eab0ec08 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,79 +1,74 @@ +def sublude(name) { + def projectName = ':' + name.substring(1).replace(':', '-') + include projectName + project(projectName).projectDir = file(name.substring(1).replace(':', '/')) +} + include ':play-services-basement' include ':play-services-tasks' -include ':play-services-appinvite-api' -include ':play-services-base-api' -include ':play-services-cast-api' -include ':play-services-cast-framework-api' -include ':play-services-droidguard-api' -include ':play-services-fido-api' -include ':play-services-gmscompliance-api' -include ':play-services-iid-api' -include ':play-services-location-api' -include ':play-services-nearby-api' -include ':play-services-oss-licenses-api' -include ':play-services-safetynet-api' -include ':play-services-tapandpay-api' -include ':play-services-vision-api' -include ':play-services-vision-common-api' -include ':play-services-wearable-api' - include ':play-services-api' +include ':play-services-appinvite' +include ':play-services-auth' +include ':play-services-auth-base' include ':play-services-base' include ':play-services-cast' +include ':play-services-cast-framework' +include ':play-services-clearcut' +include ':play-services-drive' include ':play-services-droidguard' include ':play-services-fido' include ':play-services-gcm' +include ':play-services-gmscompliance' include ':play-services-iid' include ':play-services-location' +include ':play-services-maps' +include ':play-services-measurement-base' include ':play-services-nearby' include ':play-services-oss-licenses' +include ':play-services-places' +include ':play-services-places-placereport' include ':play-services-safetynet' +include ':play-services-tapandpay' include ':play-services-vision' include ':play-services-vision-common' include ':play-services-wearable' include ':play-services' -include ':firebase-auth-api' +include ':firebase-auth' include ':firebase-dynamic-links-api' // core only include ':play-services-core-proto' -include ':play-services-droidguard-core-proto' -include ':play-services-nearby-core-proto' -include ':play-services-safetynet-core-proto' -include ':play-services-wearable-proto' -include ':play-services-basement-ktx' -include ':play-services-tasks-ktx' +sublude ':play-services-basement:ktx' +sublude ':play-services-tasks:ktx' -include ':play-services-base-core' +sublude ':play-services-base:core' +sublude ':play-services-cast:core' +sublude ':play-services-cast-framework:core' include ':play-services-chimera-core' include ':play-services-conscrypt-provider-core' -include ':play-services-cronet-core' -include ':play-services-droidguard-core' -include ':play-services-fido-core' -include ':play-services-gmscompliance-core' -include ':play-services-location-core' +sublude ':play-services-cronet:core' +sublude ':play-services-droidguard:core' +sublude ':play-services-fido:core' +sublude ':play-services-gmscompliance:core' +sublude ':play-services-location:core' include ':play-services-maps-core-mapbox' include ':play-services-maps-core-vtm' include ':play-services-maps-core-vtm:vtm-microg-theme' -include ':play-services-nearby-core' -include ':play-services-oss-licenses-core' -include ':play-services-safetynet-core' -include ':play-services-tapandpay-core' -include ':play-services-vision-core' - -include ':play-services-base-core-ui' -include ':play-services-droidguard-core-ui' -include ':play-services-nearby-core-ui' -include ':play-services-safetynet-core-ui' +sublude ':play-services-nearby:core' +sublude ':play-services-oss-licenses:core' +sublude ':play-services-safetynet:core' +sublude ':play-services-tapandpay:core' +sublude ':play-services-vision:core' +sublude ':play-services-wearable:core' -include ':firebase-auth-core' +sublude ':firebase-auth:core' include ':play-services-core:microg-ui-tools' // Legacy include ':play-services-core' -- GitLab From b2f7f69fa421ca01d334bb0a1a20a726b3227941 Mon Sep 17 00:00:00 2001 From: Marvin W Date: Fri, 7 Oct 2022 17:10:14 +0200 Subject: [PATCH 02/14] Recaptcha: Initial version --- .../gms/common/api/GoogleApiManager.java | 14 +- .../gms/common/api/PendingGoogleApiCall.java | 2 +- play-services-core/build.gradle | 2 + .../src/main/AndroidManifest.xml | 1 - .../gms/ui/SafetyNetPreferencesFragment.kt | 127 +++++++-- .../org/microg/gms/ui/SafetyNetUtils.kt | 32 ++- .../src/main/res/values/strings.xml | 1 + .../main/res/xml/preferences_safetynet.xml | 5 + play-services-recaptcha/build.gradle | 35 +++ play-services-recaptcha/core/build.gradle | 63 +++++ .../core/src/main/AndroidManifest.xml | 17 ++ .../microg/gms/recaptcha/RecaptchaService.kt | 255 ++++++++++++++++++ .../core/src/main/proto/recaptcha.proto | 29 ++ .../src/main/AndroidManifest.xml | 7 + .../gms/recaptcha/RecaptchaAction.aidl | 3 + .../gms/recaptcha/RecaptchaHandle.aidl | 3 + .../gms/recaptcha/RecaptchaResultData.aidl | 3 + .../gms/recaptcha/internal/ExecuteParams.aidl | 3 + .../recaptcha/internal/ExecuteResults.aidl | 3 + .../recaptcha/internal/ICloseCallback.aidl | 7 + .../recaptcha/internal/IExecuteCallback.aidl | 11 + .../gms/recaptcha/internal/IInitCallback.aidl | 11 + .../recaptcha/internal/IRecaptchaService.aidl | 20 ++ .../gms/recaptcha/internal/InitParams.aidl | 3 + .../gms/recaptcha/internal/InitResults.aidl | 3 + .../gms/recaptcha/HttpStatusException.java | 34 +++ .../android/gms/recaptcha/Recaptcha.java | 42 +++ .../gms/recaptcha/RecaptchaAction.java | 107 ++++++++ .../gms/recaptcha/RecaptchaActionType.java | 45 ++++ .../gms/recaptcha/RecaptchaClient.java | 75 ++++++ .../gms/recaptcha/RecaptchaHandle.java | 61 +++++ .../recaptcha/RecaptchaNetworkException.java | 26 ++ .../recaptcha/RecaptchaOptionalObject.java | 35 +++ .../gms/recaptcha/RecaptchaResultData.java | 35 +++ .../gms/recaptcha/RecaptchaStatusCodes.java | 69 +++++ .../gms/recaptcha/VerificationHandle.java | 58 ++++ .../gms/recaptcha/VerificationResult.java | 43 +++ .../gms/recaptcha/internal/ExecuteParams.java | 35 +++ .../recaptcha/internal/ExecuteResults.java | 17 ++ .../gms/recaptcha/internal/InitParams.java | 29 ++ .../gms/recaptcha/internal/InitResults.java | 17 ++ .../gms/recaptcha/RecaptchaClientImpl.java | 121 +++++++++ .../gms/recaptcha/RecaptchaGmsClient.java | 56 ++++ settings.gradle | 2 + 44 files changed, 1535 insertions(+), 32 deletions(-) create mode 100644 play-services-recaptcha/build.gradle create mode 100644 play-services-recaptcha/core/src/main/AndroidManifest.xml create mode 100644 play-services-recaptcha/core/src/main/proto/recaptcha.proto create mode 100644 play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/RecaptchaAction.aidl create mode 100644 play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/RecaptchaHandle.aidl create mode 100644 play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/RecaptchaResultData.aidl create mode 100644 play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/ExecuteParams.aidl create mode 100644 play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/ExecuteResults.aidl create mode 100644 play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/ICloseCallback.aidl create mode 100644 play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/IExecuteCallback.aidl create mode 100644 play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/IInitCallback.aidl create mode 100644 play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/IRecaptchaService.aidl create mode 100644 play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/InitParams.aidl create mode 100644 play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/InitResults.aidl create mode 100644 play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/HttpStatusException.java create mode 100644 play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/Recaptcha.java create mode 100644 play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaAction.java create mode 100644 play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaActionType.java create mode 100644 play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaClient.java create mode 100644 play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaHandle.java create mode 100644 play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaNetworkException.java create mode 100644 play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaOptionalObject.java create mode 100644 play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaResultData.java create mode 100644 play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaStatusCodes.java create mode 100644 play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/VerificationHandle.java create mode 100644 play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/VerificationResult.java create mode 100644 play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/internal/ExecuteParams.java create mode 100644 play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/internal/ExecuteResults.java create mode 100644 play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/internal/InitParams.java create mode 100644 play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/internal/InitResults.java create mode 100644 play-services-recaptcha/src/main/java/org/microg/gms/recaptcha/RecaptchaClientImpl.java create mode 100644 play-services-recaptcha/src/main/java/org/microg/gms/recaptcha/RecaptchaGmsClient.java diff --git a/play-services-base/src/main/java/org/microg/gms/common/api/GoogleApiManager.java b/play-services-base/src/main/java/org/microg/gms/common/api/GoogleApiManager.java index 8ceae6f05..0f68b7c32 100644 --- a/play-services-base/src/main/java/org/microg/gms/common/api/GoogleApiManager.java +++ b/play-services-base/src/main/java/org/microg/gms/common/api/GoogleApiManager.java @@ -51,7 +51,11 @@ public class GoogleApiManager { boolean connecting = client.isConnecting(); boolean connected = client.isConnected(); if (connected) { - apiCall.execute(client, completionSource); + try { + apiCall.execute(client, completionSource); + } catch (Exception e) { + completionSource.setException(e); + } } else { waitingApiCallMap.get(new ApiInstance(api)).add(new WaitingApiCall((PendingGoogleApiCall) apiCall, completionSource)); if (!connecting) { @@ -63,7 +67,11 @@ public class GoogleApiManager { private synchronized void onInstanceConnected(ApiInstance apiInstance, Bundle connectionHint) { List> waitingApiCalls = waitingApiCallMap.get(apiInstance); for (WaitingApiCall waitingApiCall : waitingApiCalls) { - waitingApiCall.execute(clientMap.get(apiInstance)); + try { + waitingApiCall.execute(clientMap.get(apiInstance)); + } catch (Exception e) { + waitingApiCall.failed(e); + } } waitingApiCalls.clear(); } @@ -120,7 +128,7 @@ public class GoogleApiManager { this.completionSource = completionSource; } - public void execute(ApiClient client) { + public void execute(ApiClient client) throws Exception { apiCall.execute(client, completionSource); } diff --git a/play-services-base/src/main/java/org/microg/gms/common/api/PendingGoogleApiCall.java b/play-services-base/src/main/java/org/microg/gms/common/api/PendingGoogleApiCall.java index 8c92abd78..cffea8328 100644 --- a/play-services-base/src/main/java/org/microg/gms/common/api/PendingGoogleApiCall.java +++ b/play-services-base/src/main/java/org/microg/gms/common/api/PendingGoogleApiCall.java @@ -8,5 +8,5 @@ package org.microg.gms.common.api; import com.google.android.gms.tasks.TaskCompletionSource; public interface PendingGoogleApiCall { - void execute(A client, TaskCompletionSource completionSource); + void execute(A client, TaskCompletionSource completionSource) throws Exception; } diff --git a/play-services-core/build.gradle b/play-services-core/build.gradle index 8eef55346..76920708b 100644 --- a/play-services-core/build.gradle +++ b/play-services-core/build.gradle @@ -31,6 +31,7 @@ dependencies { implementation project(':play-services-location-core') withNearbyImplementation project(':play-services-nearby-core') implementation project(':play-services-oss-licenses-core') + implementation project(':play-services-recaptcha-core') implementation project(':play-services-safetynet-core') implementation project(':play-services-tapandpay-core') implementation project(':play-services-vision-core') @@ -49,6 +50,7 @@ dependencies { implementation project(':play-services-maps') implementation project(':play-services-measurement-base') implementation project(':play-services-places') + implementation project(':play-services-recaptcha') implementation project(':play-services-safetynet') implementation project(':play-services-tasks-ktx') diff --git a/play-services-core/src/main/AndroidManifest.xml b/play-services-core/src/main/AndroidManifest.xml index c4fffeadf..d2c743573 100644 --- a/play-services-core/src/main/AndroidManifest.xml +++ b/play-services-core/src/main/AndroidManifest.xml @@ -804,7 +804,6 @@ - diff --git a/play-services-core/src/main/kotlin/org/microg/gms/ui/SafetyNetPreferencesFragment.kt b/play-services-core/src/main/kotlin/org/microg/gms/ui/SafetyNetPreferencesFragment.kt index e2366ba58..07a539063 100644 --- a/play-services-core/src/main/kotlin/org/microg/gms/ui/SafetyNetPreferencesFragment.kt +++ b/play-services-core/src/main/kotlin/org/microg/gms/ui/SafetyNetPreferencesFragment.kt @@ -9,27 +9,37 @@ import android.annotation.SuppressLint import android.os.Bundle import android.util.Base64 import android.util.Log +import androidx.core.content.ContextCompat import androidx.core.os.bundleOf -import androidx.navigation.fragment.findNavController import androidx.lifecycle.lifecycleScope +import androidx.navigation.fragment.findNavController import androidx.preference.Preference import androidx.preference.PreferenceCategory import androidx.preference.PreferenceFragmentCompat +import com.android.volley.toolbox.JsonObjectRequest +import com.android.volley.toolbox.Volley import com.google.android.gms.R +import com.google.android.gms.recaptcha.Recaptcha +import com.google.android.gms.recaptcha.RecaptchaAction +import com.google.android.gms.recaptcha.RecaptchaActionType import com.google.android.gms.safetynet.SafetyNet import com.google.android.gms.tasks.await import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import org.json.JSONObject import org.microg.gms.safetynet.SafetyNetDatabase -import org.microg.gms.safetynet.SafetyNetRequestType import org.microg.gms.safetynet.SafetyNetRequestType.ATTESTATION import org.microg.gms.safetynet.SafetyNetRequestType.RECAPTCHA +import java.net.URLEncoder +import kotlin.coroutines.resume +import kotlin.coroutines.resumeWithException +import kotlin.coroutines.suspendCoroutine import kotlin.random.Random class SafetyNetPreferencesFragment : PreferenceFragmentCompat() { private lateinit var runAttest: Preference private lateinit var runReCaptcha: Preference + private lateinit var runReCaptchaEnterprise: Preference private lateinit var apps: PreferenceCategory private lateinit var appsAll: Preference private lateinit var appsNone: Preference @@ -42,32 +52,43 @@ class SafetyNetPreferencesFragment : PreferenceFragmentCompat() { override fun onBindPreferences() { runAttest = preferenceScreen.findPreference("pref_safetynet_run_attest") ?: runAttest runReCaptcha = preferenceScreen.findPreference("pref_recaptcha_run_test") ?: runReCaptcha + runReCaptchaEnterprise = + preferenceScreen.findPreference("pref_recaptcha_enterprise_run_test") ?: runReCaptchaEnterprise apps = preferenceScreen.findPreference("prefcat_safetynet_apps") ?: apps appsAll = preferenceScreen.findPreference("pref_safetynet_apps_all") ?: appsAll appsNone = preferenceScreen.findPreference("pref_safetynet_apps_none") ?: appsNone + runAttest.isVisible = SAFETYNET_API_KEY != null + runReCaptcha.isVisible = RECAPTCHA_SITE_KEY != null + runReCaptchaEnterprise.isVisible = RECAPTCHA_ENTERPRISE_SITE_KEY != null + runAttest.setOnPreferenceClickListener { val context = context ?: return@setOnPreferenceClickListener false runAttest.setIcon(R.drawable.ic_circle_pending) runAttest.setSummary(R.string.pref_test_summary_running) lifecycleScope.launchWhenResumed { - val response = SafetyNet.getClient(requireActivity()) - .attest(Random.nextBytes(32), "AIzaSyCcJO6IZiA5Or_AXw3LFdaTCmpnfL4pJ-Q").await() - val (_, payload, _) = try { - response.jwsResult.split(".") + try { + val response = SafetyNet.getClient(requireActivity()) + .attest(Random.nextBytes(32), SAFETYNET_API_KEY).await() + val (_, payload, _) = try { + response.jwsResult.split(".") + } catch (e: Exception) { + listOf(null, null, null) + } + formatSummaryForSafetyNetResult( + context, + payload?.let { Base64.decode(it, Base64.URL_SAFE).decodeToString() }, + response.result.status, + ATTESTATION + ) + .let { (summary, icon) -> + runAttest.summary = summary + runAttest.icon = icon + } } catch (e: Exception) { - listOf(null, null, null) + runAttest.summary = getString(R.string.pref_test_summary_failed, e.message) + runAttest.icon = ContextCompat.getDrawable(context, R.drawable.ic_circle_warn) } - formatSummaryForSafetyNetResult( - context, - payload?.let { Base64.decode(it, Base64.URL_SAFE).decodeToString() }, - response.result.status, - ATTESTATION - ) - .let { (summary, icon) -> - runAttest.summary = summary - runAttest.icon = icon - } updateContent() } true @@ -77,13 +98,66 @@ class SafetyNetPreferencesFragment : PreferenceFragmentCompat() { runReCaptcha.setIcon(R.drawable.ic_circle_pending) runReCaptcha.setSummary(R.string.pref_test_summary_running) lifecycleScope.launchWhenResumed { - val response = SafetyNet.getClient(requireActivity()) - .verifyWithRecaptcha("6Lc4TzgeAAAAAJnW7Jbo6UtQ0xGuTKjHAeyhINuq").await() - formatSummaryForSafetyNetResult(context, response.tokenResult, response.result.status, RECAPTCHA) - .let { (summary, icon) -> - runReCaptcha.summary = summary - runReCaptcha.icon = icon + try { + val response = SafetyNet.getClient(requireActivity()) + .verifyWithRecaptcha(RECAPTCHA_SITE_KEY).await() + val result = if (response.tokenResult != null) { + val queue = Volley.newRequestQueue(context) + val json = + if (RECAPTCHA_SECRET != null) { + suspendCoroutine { continuation -> + queue.add(object : JsonObjectRequest( + Method.POST, + "https://www.google.com/recaptcha/api/siteverify", + null, + { continuation.resume(it) }, + { continuation.resumeWithException(it) } + ) { + override fun getBodyContentType(): String = "application/x-www-form-urlencoded; charset=UTF-8" + override fun getBody(): ByteArray = + "secret=$RECAPTCHA_SECRET&response=${URLEncoder.encode(response.tokenResult, "UTF-8")}".encodeToByteArray() + }) + } + } else { + // Can't properly verify, everything becomes a success + JSONObject(mapOf("success" to true)) + } + Log.d(TAG, "Result: $json") + json.toString() + } else { + null } + formatSummaryForSafetyNetResult(context, result, response.result.status, RECAPTCHA) + .let { (summary, icon) -> + runReCaptcha.summary = summary + runReCaptcha.icon = icon + } + } catch (e: Exception) { + runReCaptcha.summary = getString(R.string.pref_test_summary_failed, e.message) + runReCaptcha.icon = ContextCompat.getDrawable(context, R.drawable.ic_circle_warn) + } + updateContent() + } + true + } + runReCaptchaEnterprise.setOnPreferenceClickListener { + val context = context ?: return@setOnPreferenceClickListener false + runReCaptchaEnterprise.setIcon(R.drawable.ic_circle_pending) + runReCaptchaEnterprise.setSummary(R.string.pref_test_summary_running) + lifecycleScope.launchWhenResumed { + try { + val client = Recaptcha.getClient(requireActivity()) + val handle = client.init(RECAPTCHA_ENTERPRISE_SITE_KEY).await() + val result = + client.execute(handle, RecaptchaAction(RecaptchaActionType(RecaptchaActionType.SIGNUP))).await() + Log.d(TAG, "Recaptcha Token: " + result.tokenResult) + client.close(handle).await() + runReCaptchaEnterprise.summary = getString(R.string.pref_test_summary_warn, "Incomplete Test") + runReCaptchaEnterprise.icon = ContextCompat.getDrawable(context, R.drawable.ic_circle_warn) + } catch (e: Exception) { + runReCaptchaEnterprise.summary = getString(R.string.pref_test_summary_failed, e.message) + runReCaptchaEnterprise.icon = ContextCompat.getDrawable(context, R.drawable.ic_circle_warn) + } updateContent() } true @@ -143,4 +217,11 @@ class SafetyNetPreferencesFragment : PreferenceFragmentCompat() { } } + + companion object { + private val SAFETYNET_API_KEY: String? = "AIzaSyCcJO6IZiA5Or_AXw3LFdaTCmpnfL4pJ-Q" + private val RECAPTCHA_SITE_KEY: String? = "6Lc4TzgeAAAAAJnW7Jbo6UtQ0xGuTKjHAeyhINuq" + private val RECAPTCHA_SECRET: String? = "6Lc4TzgeAAA${"AAAjwSDqU-uG"}_Lcu2f23URMI8fq0I" + private val RECAPTCHA_ENTERPRISE_SITE_KEY: String? = null + } } diff --git a/play-services-core/src/main/kotlin/org/microg/gms/ui/SafetyNetUtils.kt b/play-services-core/src/main/kotlin/org/microg/gms/ui/SafetyNetUtils.kt index 83dfcf2af..413fc01b9 100644 --- a/play-services-core/src/main/kotlin/org/microg/gms/ui/SafetyNetUtils.kt +++ b/play-services-core/src/main/kotlin/org/microg/gms/ui/SafetyNetUtils.kt @@ -12,6 +12,7 @@ import androidx.core.content.ContextCompat import com.google.android.gms.R import com.google.android.gms.common.api.Status import org.json.JSONObject +import org.microg.gms.fido.core.map import org.microg.gms.safetynet.SafetyNetRequestType fun formatSummaryForSafetyNetResult(context: Context, result: String?, status: Status?, type: SafetyNetRequestType): Pair { @@ -60,10 +61,33 @@ fun formatSummaryForSafetyNetResult(context: Context, result: String?, status: S } } SafetyNetRequestType.RECAPTCHA -> { - if (result != null || status?.isSuccess == true) { - return context.getString(R.string.pref_test_summary_passed) to ContextCompat.getDrawable(context, R.drawable.ic_circle_check) - } else { - return context.getString(R.string.pref_test_summary_failed, status?.statusMessage) to ContextCompat.getDrawable(context, R.drawable.ic_circle_error) + if (status?.isSuccess != true) return context.getString(R.string.pref_test_summary_failed, status?.statusMessage) to ContextCompat.getDrawable(context, R.drawable.ic_circle_error) + if (result == null) return context.getString(R.string.pref_test_summary_failed, "No result") to ContextCompat.getDrawable(context, R.drawable.ic_circle_warn) + val (success, errorCodes) = try { + JSONObject(result).let { + it.optBoolean("success", false) to + it.optJSONArray("error-codes")?.map { getString(it) }.orEmpty() + } + } catch (e: Exception) { + Log.w(TAG, e) + true to emptyList() + } + return when { + success && errorCodes.isEmpty() -> { + context.getString(R.string.pref_test_summary_passed) to ContextCompat.getDrawable(context, R.drawable.ic_circle_check) + } + success -> { + context.getString( + R.string.pref_test_summary_warn, + errorCodes.joinToString() + ) to ContextCompat.getDrawable(context, R.drawable.ic_circle_warn) + } + else -> { + context.getString( + R.string.pref_test_summary_failed, + errorCodes.joinToString() + ) to ContextCompat.getDrawable(context, R.drawable.ic_circle_error) + } } } } diff --git a/play-services-core/src/main/res/values/strings.xml b/play-services-core/src/main/res/values/strings.xml index d82c95513..96262fd51 100644 --- a/play-services-core/src/main/res/values/strings.xml +++ b/play-services-core/src/main/res/values/strings.xml @@ -175,6 +175,7 @@ This can take a couple of minutes." Test SafetyNet attestation Test ReCAPTCHA + Test ReCAPTCHA Enterprise Passed all tests Failed: %s Warning: %s diff --git a/play-services-core/src/main/res/xml/preferences_safetynet.xml b/play-services-core/src/main/res/xml/preferences_safetynet.xml index a41140f3a..a82ae8eed 100644 --- a/play-services-core/src/main/res/xml/preferences_safetynet.xml +++ b/play-services-core/src/main/res/xml/preferences_safetynet.xml @@ -44,6 +44,11 @@ android:title="@string/pref_recaptcha_test_title" tools:icon="@drawable/ic_circle_check" tools:summary="@string/pref_test_summary_passed" /> + + + + + + + + + + + + + diff --git a/play-services-recaptcha/core/src/main/kotlin/org/microg/gms/recaptcha/RecaptchaService.kt b/play-services-recaptcha/core/src/main/kotlin/org/microg/gms/recaptcha/RecaptchaService.kt index e69de29bb..a1541dc56 100644 --- a/play-services-recaptcha/core/src/main/kotlin/org/microg/gms/recaptcha/RecaptchaService.kt +++ b/play-services-recaptcha/core/src/main/kotlin/org/microg/gms/recaptcha/RecaptchaService.kt @@ -0,0 +1,255 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ +package org.microg.gms.recaptcha + +import android.content.Context +import android.os.Build +import android.os.LocaleList +import android.os.Parcel +import android.util.Base64 +import android.util.Log +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.lifecycleScope +import com.android.volley.NetworkResponse +import com.android.volley.Request +import com.android.volley.RequestQueue +import com.android.volley.Response +import com.android.volley.VolleyError +import com.android.volley.toolbox.Volley +import com.google.android.gms.common.Feature +import com.google.android.gms.common.api.CommonStatusCodes +import com.google.android.gms.common.api.Status +import com.google.android.gms.common.internal.ConnectionInfo +import org.microg.gms.BaseService +import com.google.android.gms.common.internal.IGmsCallbacks +import com.google.android.gms.common.internal.GetServiceRequest +import com.google.android.gms.recaptcha.RecaptchaAction +import com.google.android.gms.recaptcha.RecaptchaHandle +import com.google.android.gms.recaptcha.RecaptchaResultData +import com.google.android.gms.recaptcha.internal.* +import com.squareup.wire.Message +import com.squareup.wire.ProtoAdapter +import kotlinx.coroutines.CompletableDeferred +import org.microg.gms.common.Constants +import org.microg.gms.common.GmsService +import org.microg.gms.common.PackageUtils +import org.microg.gms.droidguard.core.DroidGuardResultCreator +import org.microg.gms.droidguard.core.VersionUtil +import org.microg.gms.utils.warnOnTransactionIssues +import java.nio.charset.Charset +import java.util.Locale + +private const val TAG = "RecaptchaService" + +class RecaptchaService : BaseService(TAG, GmsService.RECAPTCHA) { + override fun handleServiceRequest(callback: IGmsCallbacks, request: GetServiceRequest, service: GmsService) { + PackageUtils.getAndCheckCallingPackage(this, request.packageName) + callback.onPostInitCompleteWithConnectionInfo( + CommonStatusCodes.SUCCESS, + RecaptchaServiceImpl(this, request.packageName, lifecycle), + ConnectionInfo().apply { + features = arrayOf( + Feature("verify_with_recaptcha_v2_internal", 1), + Feature("init", 3), + Feature("execute", 5), + Feature("close", 2) + ) + } + ) + } +} + +class RecaptchaServiceImpl( + private val context: Context, + private val packageName: String, + private val lifecycle: Lifecycle +) : IRecaptchaService.Stub(), LifecycleOwner { + private val queue = Volley.newRequestQueue(context) + private var lastToken: String? = null + + override fun getLifecycle(): Lifecycle { + return lifecycle + } + + override fun verifyWithRecaptcha(callback: IExecuteCallback, siteKey: String, packageName: String) { + Log.d(TAG, "Not yet implemented: verifyWithRecaptcha($siteKey, $packageName)") + } + + override fun init(callback: IInitCallback, siteKey: String) { + init2(callback, InitParams().also { + it.siteKey = siteKey + it.version = LEGACY_VERSION + }) + } + + override fun execute(callback: IExecuteCallback, handle: RecaptchaHandle, action: RecaptchaAction) { + execute2(callback, ExecuteParams().also { + it.handle = handle + it.action = action + it.version = LEGACY_VERSION + }) + } + + override fun close(callback: ICloseCallback, handle: RecaptchaHandle) { + Log.d(TAG, "close($handle)") + lifecycleScope.launchWhenStarted { + try { + val closed = lastToken != null + lastToken = null + callback.onClosed(Status.SUCCESS, closed) + } catch (e: Exception) { + Log.w(TAG, e) + } + } + } + + suspend fun runInit(siteKey: String, version: String): RecaptchaInitResponse { + val response = ProtobufPostRequest( + "https://www.recaptcha.net/recaptcha/api3/ac", RecaptchaInitRequest( + data_ = RecaptchaInitRequest.Data( + siteKey = siteKey, + packageName = packageName, + version = "${VersionUtil(context).versionCode};${version}" + ) + ), RecaptchaInitResponse.ADAPTER + ).sendAndAwait(queue) + lastToken = response.token + return response + } + + override fun init2(callback: IInitCallback, params: InitParams) { + Log.d(TAG, "init($params)") + lifecycleScope.launchWhenStarted { + try { + val response = runInit(params.siteKey, params.version) + val handle = RecaptchaHandle(params.siteKey, packageName, response.acceptableAdditionalArgs.toList()) + if (params.version == LEGACY_VERSION) { + callback.onHandle(Status.SUCCESS, handle) + } else { + callback.onResults(Status.SUCCESS, InitResults().also { it.handle = handle }) + } + } catch (e: Exception) { + Log.w(TAG, e) + try { + if (params.version == LEGACY_VERSION) { + callback.onHandle(Status.INTERNAL_ERROR, null) + } else { + callback.onResults(Status.INTERNAL_ERROR, InitResults()) + } + } catch (e: Exception) { + // Ignored + } + } + } + + } + + override fun execute2(callback: IExecuteCallback, params: ExecuteParams) { + Log.d(TAG, "execute($params)") + lifecycleScope.launchWhenStarted { + try { + val timestamp = System.currentTimeMillis() + val additionalArgs = mutableMapOf() + val guardMap = mutableMapOf() + for (key in params.action.additionalArgs.keySet()) { + val value = params.action.additionalArgs.getString(key) + ?: throw Exception("Only string values are allowed as an additional arg in RecaptchaAction") + if (key !in params.handle.acceptableAdditionalArgs) + throw Exception("AdditionalArgs key[ \"$key\" ] is not accepted by reCATPCHA server") + additionalArgs.put(key, value) + } + Log.d(TAG, "Additional arguments: $additionalArgs") + val token = lastToken ?: runInit(params.handle.siteKey, params.version).token!! + guardMap["token"] = token + guardMap["action"] = params.action.toString() + guardMap["timestamp_millis"] to timestamp.toString() + guardMap.putAll(additionalArgs) + if (params.action.verificationHistoryToken != null) + guardMap["verification_history_token"] = params.action.verificationHistoryToken + val dg = DroidGuardResultCreator.getResults(context, "recaptcha-android", guardMap) + val response = ProtobufPostRequest( + "https://www.recaptcha.net/recaptcha/api3/ae", RecaptchaExecuteRequest( + token = token, + action = params.action.toString(), + timestamp = timestamp, + dg = dg, + additionalArgs = additionalArgs, + verificationHistoryToken = params.action.verificationHistoryToken + ), RecaptchaExecuteResponse.ADAPTER + ).sendAndAwait(queue) + val data = RecaptchaResultData(response.token) + if (params.version == LEGACY_VERSION) { + callback.onData(Status.SUCCESS, data) + } else { + callback.onResults(Status.SUCCESS, ExecuteResults().also { it.data = data }) + } + } catch (e: Exception) { + Log.w(TAG, e) + try { + if (params.version == LEGACY_VERSION) { + callback.onData(Status.INTERNAL_ERROR, null) + } else { + callback.onResults(Status.INTERNAL_ERROR, ExecuteResults()) + } + } catch (e: Exception) { + // Ignored + } + } + } + + } + + override fun onTransact(code: Int, data: Parcel, reply: Parcel?, flags: Int): Boolean = + warnOnTransactionIssues(code, reply, flags) { + super.onTransact(code, data, reply, flags) + } + + companion object { + const val LEGACY_VERSION = "16.0.0" + } +} + +class ProtobufPostRequest, O>(url: String, private val i: I, private val oAdapter: ProtoAdapter) : + Request(Request.Method.POST, url, null) { + private val deferred = CompletableDeferred() + + override fun getHeaders(): Map { + val headers = HashMap(super.getHeaders()) + headers["Accept-Language"] = if (Build.VERSION.SDK_INT >= 24) LocaleList.getDefault().toLanguageTags() else Locale.getDefault().language + return headers + } + + override fun getBody(): ByteArray = i.encode() + + override fun getBodyContentType(): String = "application/x-protobuf" + + override fun parseNetworkResponse(response: NetworkResponse): Response { + try { + return Response.success(oAdapter.decode(response.data), null) + } catch (e: VolleyError) { + return Response.error(e) + } catch (e: Exception) { + return Response.error(VolleyError()) + } + } + + override fun deliverResponse(response: O) { + Log.d(TAG, "Got response: $response") + deferred.complete(response) + } + + override fun deliverError(error: VolleyError) { + deferred.completeExceptionally(error) + } + + suspend fun await(): O = deferred.await() + + suspend fun sendAndAwait(queue: RequestQueue): O { + Log.d(TAG, "Sending request: $i") + queue.add(this) + return await() + } +} diff --git a/play-services-recaptcha/core/src/main/proto/recaptcha.proto b/play-services-recaptcha/core/src/main/proto/recaptcha.proto new file mode 100644 index 000000000..9735e33c0 --- /dev/null +++ b/play-services-recaptcha/core/src/main/proto/recaptcha.proto @@ -0,0 +1,29 @@ +option java_package = "org.microg.gms.recaptcha"; + +message RecaptchaInitRequest { + message Data { + optional string siteKey = 1; + optional string packageName = 2; + optional string version = 3; + } + optional Data data = 2; +} + +message RecaptchaInitResponse { + optional string token = 1; + repeated string acceptableAdditionalArgs = 3; +} + +message RecaptchaExecuteRequest { + optional string token = 1; + optional string action = 2; + optional uint64 timestamp = 3; + optional string dg = 4; + map additionalArgs = 5; + optional string verificationHistoryToken = 6; +// map unknown = 7; +} + +message RecaptchaExecuteResponse { + optional string token = 1; +} diff --git a/play-services-recaptcha/src/main/AndroidManifest.xml b/play-services-recaptcha/src/main/AndroidManifest.xml index e69de29bb..7dbf92a59 100644 --- a/play-services-recaptcha/src/main/AndroidManifest.xml +++ b/play-services-recaptcha/src/main/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/RecaptchaAction.aidl b/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/RecaptchaAction.aidl new file mode 100644 index 000000000..f4fc775b9 --- /dev/null +++ b/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/RecaptchaAction.aidl @@ -0,0 +1,3 @@ +package com.google.android.gms.recaptcha; + +parcelable RecaptchaAction; diff --git a/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/RecaptchaHandle.aidl b/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/RecaptchaHandle.aidl new file mode 100644 index 000000000..3bc5eda15 --- /dev/null +++ b/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/RecaptchaHandle.aidl @@ -0,0 +1,3 @@ +package com.google.android.gms.recaptcha; + +parcelable RecaptchaHandle; diff --git a/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/RecaptchaResultData.aidl b/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/RecaptchaResultData.aidl new file mode 100644 index 000000000..f7197dc35 --- /dev/null +++ b/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/RecaptchaResultData.aidl @@ -0,0 +1,3 @@ +package com.google.android.gms.recaptcha; + +parcelable RecaptchaResultData; diff --git a/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/ExecuteParams.aidl b/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/ExecuteParams.aidl new file mode 100644 index 000000000..14c96fdfd --- /dev/null +++ b/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/ExecuteParams.aidl @@ -0,0 +1,3 @@ +package com.google.android.gms.recaptcha.internal; + +parcelable ExecuteParams; diff --git a/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/ExecuteResults.aidl b/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/ExecuteResults.aidl new file mode 100644 index 000000000..640f543dd --- /dev/null +++ b/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/ExecuteResults.aidl @@ -0,0 +1,3 @@ +package com.google.android.gms.recaptcha.internal; + +parcelable ExecuteResults; diff --git a/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/ICloseCallback.aidl b/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/ICloseCallback.aidl new file mode 100644 index 000000000..0f691cfba --- /dev/null +++ b/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/ICloseCallback.aidl @@ -0,0 +1,7 @@ +package com.google.android.gms.recaptcha.internal; + +import com.google.android.gms.common.api.Status; + +interface ICloseCallback { + oneway void onClosed(in Status status, boolean closed) = 0; +} diff --git a/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/IExecuteCallback.aidl b/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/IExecuteCallback.aidl new file mode 100644 index 000000000..9f94c3279 --- /dev/null +++ b/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/IExecuteCallback.aidl @@ -0,0 +1,11 @@ +package com.google.android.gms.recaptcha.internal; + +import com.google.android.gms.common.api.Status; + +import com.google.android.gms.recaptcha.RecaptchaResultData; +import com.google.android.gms.recaptcha.internal.ExecuteResults; + +interface IExecuteCallback { + oneway void onData(in Status status, in RecaptchaResultData data) = 0; + oneway void onResults(in Status status, in ExecuteResults results) = 1; +} diff --git a/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/IInitCallback.aidl b/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/IInitCallback.aidl new file mode 100644 index 000000000..936974f63 --- /dev/null +++ b/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/IInitCallback.aidl @@ -0,0 +1,11 @@ +package com.google.android.gms.recaptcha.internal; + +import com.google.android.gms.common.api.Status; + +import com.google.android.gms.recaptcha.RecaptchaHandle; +import com.google.android.gms.recaptcha.internal.InitResults; + +interface IInitCallback { + oneway void onHandle(in Status status, in RecaptchaHandle handle) = 0; + oneway void onResults(in Status status, in InitResults results) = 1; +} diff --git a/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/IRecaptchaService.aidl b/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/IRecaptchaService.aidl new file mode 100644 index 000000000..b87196c0b --- /dev/null +++ b/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/IRecaptchaService.aidl @@ -0,0 +1,20 @@ +package com.google.android.gms.recaptcha.internal; + +import com.google.android.gms.recaptcha.RecaptchaAction; +import com.google.android.gms.recaptcha.RecaptchaHandle; + +import com.google.android.gms.recaptcha.internal.ExecuteParams; +import com.google.android.gms.recaptcha.internal.InitParams; + +import com.google.android.gms.recaptcha.internal.ICloseCallback; +import com.google.android.gms.recaptcha.internal.IExecuteCallback; +import com.google.android.gms.recaptcha.internal.IInitCallback; + +interface IRecaptchaService { + void verifyWithRecaptcha(IExecuteCallback callback, String siteKey, String packageName) = 0; + void init(IInitCallback callback, String siteKey) = 1; + void execute(IExecuteCallback callback, in RecaptchaHandle handle, in RecaptchaAction action) = 2; + void close(ICloseCallback callback, in RecaptchaHandle handle) = 3; + void init2(IInitCallback callback, in InitParams params) = 4; + void execute2(IExecuteCallback callback, in ExecuteParams params) = 5; +} diff --git a/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/InitParams.aidl b/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/InitParams.aidl new file mode 100644 index 000000000..d2cea973d --- /dev/null +++ b/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/InitParams.aidl @@ -0,0 +1,3 @@ +package com.google.android.gms.recaptcha.internal; + +parcelable InitParams; diff --git a/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/InitResults.aidl b/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/InitResults.aidl new file mode 100644 index 000000000..083a8edce --- /dev/null +++ b/play-services-recaptcha/src/main/aidl/com/google/android/gms/recaptcha/internal/InitResults.aidl @@ -0,0 +1,3 @@ +package com.google.android.gms.recaptcha.internal; + +parcelable InitResults; diff --git a/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/HttpStatusException.java b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/HttpStatusException.java new file mode 100644 index 000000000..7c3541324 --- /dev/null +++ b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/HttpStatusException.java @@ -0,0 +1,34 @@ +/* + * SPDX-FileCopyrightText: 2022 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.recaptcha; + +/** + * Exception thrown when the server returns a non-200 response code. + */ +public class HttpStatusException extends Exception { + private int errorHttpStatus; + + /** + * Constructs a {@link HttpStatusException} with the specified detail message and error code. + * + * @param msg The detail message (which is saved for later retrieval by the {@link #getMessage()} method) + * @param errorHttpStatus The status code of the failed HTTP request. + */ + public HttpStatusException(String msg, int errorHttpStatus) { + super(msg); + this.errorHttpStatus = errorHttpStatus; + } + + /** + * Returns the status code of a failed HTTP request. + */ + public int getHttpErrorStatus() { + return errorHttpStatus; + } +} diff --git a/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/Recaptcha.java b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/Recaptcha.java new file mode 100644 index 000000000..d6c1e7363 --- /dev/null +++ b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/Recaptcha.java @@ -0,0 +1,42 @@ +/* + * SPDX-FileCopyrightText: 2022 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.recaptcha; + +import android.app.Activity; +import android.content.Context; + +import org.microg.gms.recaptcha.RecaptchaClientImpl; + +/** + * The reCAPTCHA API provides access to Google Cloud services that help you protect your app from spam and other + * abusive actions. + *

+ * To instantiate a reCAPTCHA mobile client, call {@link #getClient(Context)} or {@link #getClient(Activity)}. + */ +public class Recaptcha { + + /** + * Returns a {@link RecaptchaClient} that is used to access all APIs that are called when the app has a foreground + * {@link Activity}. + *

+ * Use this method over {@link #getClient(Context)} to improve performance if you plan to make multiple API calls + * from your application's foreground {@link Activity}. + */ + public static RecaptchaClient getClient(Activity activity) { + return new RecaptchaClientImpl(activity); + } + + /** + * Returns a {@link RecaptchaClient} that is used to access all APIs that are called without access to a foreground + * {@link Activity}. + */ + public static RecaptchaClient getClient(Context context) { + return new RecaptchaClientImpl(context); + } +} diff --git a/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaAction.java b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaAction.java new file mode 100644 index 000000000..e23fe93dd --- /dev/null +++ b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaAction.java @@ -0,0 +1,107 @@ +/* + * SPDX-FileCopyrightText: 2022 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.recaptcha; + +import android.os.Bundle; + +import androidx.annotation.NonNull; + +import org.microg.safeparcel.AutoSafeParcelable; + +/** + * Actions (e.g., login) intended to be protected by reCAPTCHA. An instance of this object should be passed to + * {@link RecaptchaClient#execute(RecaptchaHandle, RecaptchaAction)}. + */ +public class RecaptchaAction extends AutoSafeParcelable { + @Field(1) + private RecaptchaActionType action; + @Field(2) + private String customAction; + @Field(3) + private Bundle additionalArgs; + @Field(4) + private String verificationHistoryToken; + + private RecaptchaAction() { + } + + /** + * Creates a {@link RecaptchaAction} instance with a predefined reCAPTCHA action. + */ + public RecaptchaAction(RecaptchaActionType action) { + this(action, Bundle.EMPTY); + } + + /** + * Creates a {@link RecaptchaAction} instance with a predefined reCAPTCHA action and additional arguments. + */ + public RecaptchaAction(RecaptchaActionType action, Bundle additionalArgs) { + this.action = action; + this.additionalArgs = additionalArgs; + } + + /** + * Creates a {@link RecaptchaAction} instance with a custom action String. + */ + public RecaptchaAction(String customAction) { + this(customAction, Bundle.EMPTY); + } + + /** + * Creates a {@link RecaptchaAction} instance with a custom action in the form of a String and additional arguments. + */ + public RecaptchaAction(String customAction, Bundle additionalArgs) { + this.action = new RecaptchaActionType(RecaptchaActionType.OTHER); + this.customAction = customAction; + this.additionalArgs = additionalArgs; + } + + /** + * Gets {@code RecaptchaActionType}. + */ + public RecaptchaActionType getAction() { + return action; + } + + /** + * Gets the additional arg map specified by this action. + */ + public Bundle getAdditionalArgs() { + return additionalArgs; + } + + /** + * Gets custom action that user inputs. + */ + public String getCustomAction() { + return customAction; + } + + /** + * Gets the verification history token specified by this action. + */ + public String getVerificationHistoryToken() { + return verificationHistoryToken; + } + + /** + * Gets the String value of {@code RecaptchaAction}. + */ + @NonNull + @Override + public String toString() { + if (RecaptchaActionType.OTHER.equals(action.name) && customAction != null) { + return customAction; + } else { + return action.name; + } + } + + public static final Creator CREATOR = new AutoCreator<>(RecaptchaAction.class); +} diff --git a/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaActionType.java b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaActionType.java new file mode 100644 index 000000000..2a04cc792 --- /dev/null +++ b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaActionType.java @@ -0,0 +1,45 @@ +/* + * SPDX-FileCopyrightText: 2022 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.recaptcha; + +import org.microg.safeparcel.AutoSafeParcelable; + +/** + * Collection of predefined actions used by RecaptchaHandle. + */ +public class RecaptchaActionType extends AutoSafeParcelable { + @Field(1) + String name; + + private RecaptchaActionType() {} + + public RecaptchaActionType(String action) { + this.name = action; + } + + public static final Creator CREATOR = new AutoCreator<>(RecaptchaActionType.class); + + /** + * User interaction that needs to be verified while the user is performing the workflow you would like to protect. + */ + public @interface Action {} + + /** + * Indicates that the protected action is a login workflow. + */ + public static final String LOGIN = "login"; + /** + * When a custom action is specified, reCAPTCHA uses this value automatically. + */ + public static final String OTHER = "other"; + /** + * Indicates that the protected action is a signup workflow. + */ + public static final String SIGNUP = "signup"; +} diff --git a/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaClient.java b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaClient.java new file mode 100644 index 000000000..d7cb17817 --- /dev/null +++ b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaClient.java @@ -0,0 +1,75 @@ +/* + * SPDX-FileCopyrightText: 2022 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.recaptcha; + +import com.google.android.gms.common.api.Status; +import com.google.android.gms.tasks.Task; + +/** + * The main entry point for interacting with the reCAPTCHA API. + */ +public interface RecaptchaClient { + /** + * Sends a challenge to an account in order to verify the identity of the user. + *

+ * This method can be optionally called if you decide to perform a two factor authentication check on an account. + * + * @param recaptchaHandle RecaptchaHandle initialized through {@link #init(String)}. + * @param challengeRequestToken The challenge request token obtained through CreateAssessment(). + * @return A VerificationHandle that can be used with {@link #verifyAccount(String, VerificationHandle)} calls. A + * handle is usually valid for a specific time after creation. If an expired handle is returned, meaning the + * operation was aborted, {@link VerificationHandle#getOperationAbortedToken()} will return a token that can be + * used with the reCAPTCHA Enterprise API CreateAssessment() to get more details. + */ + Task challengeAccount(RecaptchaHandle recaptchaHandle, String challengeRequestToken); + + /** + * Closes the initialized RecaptchaHandle. + *

+ * Closes the handle if you will not be using it again to save resources. + * + * @param handle RecaptchaHandle initialized through {@link #init(String)}. + * @return true if the handle got closed successfully for the first time, false if there wasn't anything to close + * (e.g., the handle was already previously closed). + */ + Task close(RecaptchaHandle handle); + + /** + * Returns a score indicating how likely the action was triggered by a real user. A score close to 0 indicates a likely bot, and a score close to 1 indicates a likely human. + *

+ * This method should be called every time there is an action to be protected. + * + * @param handle {@link RecaptchaHandle} initialized through {@link #init(String)}. + * @param action User interaction that needs to be protected. + */ + Task execute(RecaptchaHandle handle, RecaptchaAction action); + + /** + * Prepares and initializes a RecaptchaHandle. + * + * @param siteKey A site key registered for this app + */ + Task init(String siteKey); + + /** + * Verifies a PIN against a verification handle obtained through a + * {@link #challengeAccount(RecaptchaHandle, String)} call. + *

+ * The method should be called to verify a PIN submitted by the user. The returned {@link VerificationResult} will + * contain a Status and either a {@link VerificationHandle} or a new reCAPTCHA token. + * + * @param pin The fixed-length numerical PIN entered by the user. If a PIN with unexpected length or + * non numerical characters is entered, a + * {@link RecaptchaStatusCodes#RECAPTCHA_2FA_INVALID_PIN} error will be returned. + * @param verificationHandle A verification handle containing information required to preform the verification + * operation. + * @return A {@link VerificationResult} containing a {@link Status} indicating the status of the of the verification. + */ + Task verifyAccount(String pin, VerificationHandle verificationHandle); +} diff --git a/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaHandle.java b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaHandle.java new file mode 100644 index 000000000..e7ef32e2e --- /dev/null +++ b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaHandle.java @@ -0,0 +1,61 @@ +/* + * SPDX-FileCopyrightText: 2022 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.recaptcha; + +import org.microg.gms.common.PublicApi; +import org.microg.safeparcel.AutoSafeParcelable; + +import java.util.Collections; +import java.util.List; + +/** + * Information pertaining to reCAPTCHA handle, which is used to identify the initialized reCAPTCHA service. + */ +public class RecaptchaHandle extends AutoSafeParcelable { + @Field(1) + private String siteKey; + @Field(2) + private String clientPackageName; + @Field(3) + private List acceptableAdditionalArgs; + + @PublicApi(exclude = true) + private RecaptchaHandle() { + } + + @PublicApi(exclude = true) + public RecaptchaHandle(String siteKey, String clientPackageName, List acceptableAdditionalArgs) { + this.siteKey = siteKey; + this.clientPackageName = clientPackageName; + this.acceptableAdditionalArgs = acceptableAdditionalArgs; + } + + /** + * Returns a list of strings indicating the additional argument keys that reCAPTCHA server accepts. + */ + public List getAcceptableAdditionalArgs() { + return Collections.unmodifiableList(acceptableAdditionalArgs); + } + + /** + * Returns the package name of the app that calls reCAPTCHA API. + */ + public String getClientPackageName() { + return clientPackageName; + } + + /** + * Returns the reCAPTCHA Site Key you registered to help protect your application. + */ + public String getSiteKey() { + return siteKey; + } + + public static final Creator CREATOR = new AutoCreator<>(RecaptchaHandle.class); +} diff --git a/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaNetworkException.java b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaNetworkException.java new file mode 100644 index 000000000..90c348824 --- /dev/null +++ b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaNetworkException.java @@ -0,0 +1,26 @@ +/* + * SPDX-FileCopyrightText: 2022 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.recaptcha; + +import java.io.IOException; + +/** + * Exception thrown when the mobile client fails to connect to the reCAPTCHA server. + */ +public class RecaptchaNetworkException extends Exception { + /** + * Constructs a {@link RecaptchaNetworkException} with the specified detail message and {@link IOException}. + * + * @param msg The detail message (which is saved for later retrieval by the {@link #getMessage()} method) + * @param e The root {@link IOException} that causes the {@link RecaptchaNetworkException}. + */ + public RecaptchaNetworkException(String msg, IOException e) { + super(msg, e); + } +} diff --git a/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaOptionalObject.java b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaOptionalObject.java new file mode 100644 index 000000000..678d0d572 --- /dev/null +++ b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaOptionalObject.java @@ -0,0 +1,35 @@ +/* + * SPDX-FileCopyrightText: 2022 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.recaptcha; + +/** + * Class for wrapping an optional object (i.e., an immutable object that may contain a non-null reference to another + * object) to be used in {@link VerificationResult}. + */ +public class RecaptchaOptionalObject { + private T object; + + private RecaptchaOptionalObject(T object) { + this.object = object; + } + + /** + * Returns a {@link RecaptchaOptionalObject} wrapping the specified object, which can be {@code null}. + */ + public static RecaptchaOptionalObject ofNullable(T object) { + return new RecaptchaOptionalObject<>(object); + } + + /** + * Returns the wrapped object. + */ + public T orNull() { + return object; + } +} diff --git a/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaResultData.java b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaResultData.java new file mode 100644 index 000000000..a635d8422 --- /dev/null +++ b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaResultData.java @@ -0,0 +1,35 @@ +/* + * SPDX-FileCopyrightText: 2022 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.recaptcha; + +import org.microg.safeparcel.AutoSafeParcelable; + +/** + * Information pertaining to reCAPTCHA result data. + */ +public class RecaptchaResultData extends AutoSafeParcelable { + @Field(1) + private String tokenResult; + + private RecaptchaResultData() { + } + + public RecaptchaResultData(String token) { + this.tokenResult = token; + } + + /** + * Returns a reCAPTCHA token. + */ + public String getTokenResult() { + return tokenResult; + } + + public static final Creator CREATOR = new AutoCreator<>(RecaptchaResultData.class); +} diff --git a/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaStatusCodes.java b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaStatusCodes.java new file mode 100644 index 000000000..5f5de1cac --- /dev/null +++ b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/RecaptchaStatusCodes.java @@ -0,0 +1,69 @@ +/* + * SPDX-FileCopyrightText: 2022 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.recaptcha; + +import com.google.android.gms.common.api.CommonStatusCodes; + +/** + * Status codes for the reCAPTCHA API. + */ +public final class RecaptchaStatusCodes extends CommonStatusCodes { + /** + * reCAPTCHA feature is disabled. + *

+ * Please check if you update Google Play Services on your phone to get our latest reCAPTCHA module code that + * matches to the API versions you used in the SDK in your app. + */ + public static final int RECAPTCHA_FEATURE_OFF = 36004; + /** + * An internal error occurred during two factor authentication calls. + *

+ * Please try again in a bit. + */ + public static final int RECAPTCHA_2FA_UNKNOWN = 36005; + /** + * The challenge account request token has expired. + *

+ * Please obtain another request token from the reCAPTCHA Enterprise server. + */ + public static final int RECAPTCHA_2FA_CHALLENGE_EXPIRED = 36006; + /** + * The challenge account request token is invalid. + *

+ * Please verify that you are using the correct token obtained from the reCAPTCHA Enterprise server. + */ + public static final int RECAPTCHA_2FA_INVALID_REQUEST_TOKEN = 36007; + /** + * The verification PIN has invalid format. + *

+ * Please verify that the input PIN is of the right length and only contain numerical characters. + */ + public static final int RECAPTCHA_2FA_INVALID_PIN = 36008; + /** + * The verification PIN does not match the PIN sent to the challenged account. + *

+ * Please try again using a new {@link VerificationHandle}. + */ + public static final int RECAPTCHA_2FA_PIN_MISMATCH = 36009; + /** + * All allowed verification attempts are exhausted. + *

+ * Please restart the verification workflow by calling + * {@link RecaptchaClient#execute(RecaptchaHandle, RecaptchaAction)} again to fetch a new reCAPTCHA token, for + * retrieving a new challenge token via reCAPTCHA Enterprise API CreateAssessment(), then calling + * {@link RecaptchaClient#challengeAccount(RecaptchaHandle, String)}. + */ + public static final int RECAPTCHA_2FA_ATTEMPTS_EXHAUSTED = 36010; + /** + * The operation was aborted. + *

+ * Please use the abortion token with the reCAPTCHA Enterprise server to obtain more information. + */ + public static final int RECAPTCHA_2FA_ABORTED = 36014; +} diff --git a/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/VerificationHandle.java b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/VerificationHandle.java new file mode 100644 index 000000000..3b3dc0300 --- /dev/null +++ b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/VerificationHandle.java @@ -0,0 +1,58 @@ +/* + * SPDX-FileCopyrightText: 2022 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.recaptcha; + +import org.microg.safeparcel.SafeParcelable; + +/** + * Stores the information required to verify an account. + *

+ * This object is only valid for a specific time after creation and it holds all the information needed to validate a + * PIN using {@link RecaptchaClient#verifyAccount(String, VerificationHandle)}. If an expired handle is returned by + * {@link RecaptchaClient#challengeAccount(RecaptchaHandle, String)}, then {@link #getOperationAbortedToken()} will + * return a token that can be used with the reCAPTCHA Enterprise API CreateAssessment() to get more details. + */ +public abstract class VerificationHandle implements SafeParcelable { + /** + * Returns the length of the PIN code. + */ + public abstract int getCodeLength(); + + /** + * Returns a reCAPTCHA token in the case {@link RecaptchaClient#challengeAccount(RecaptchaHandle, String)} + * operation was aborted and an expired {@link VerificationHandle} was returned, otherwise this returns an empty + * string. This can be used with the reCAPTCHA Enterprise API CreateAssessment() to retrieve more details. + */ + public abstract String getOperationAbortedToken(); + + /** + * Returns the site public key you registered for using reCAPTCHA. + */ + public abstract String getSiteKey(); + + /** + * Returns the validity duration of the object since its creation in minutes. + */ + public abstract long getTimeoutMinutes(); + + /** + * Returns an encrypted version of the internal verification token that will be used in + * {@link RecaptchaClient#verifyAccount(String, VerificationHandle)} call. + */ + public abstract String getVerificationToken(); + + /** + * Returns a boolean indicating if the {@link VerificationHandle} is valid for + * {@link RecaptchaClient#verifyAccount(String, VerificationHandle)} API calls. An invalid handle will cause + * {@link RecaptchaClient#verifyAccount(String, VerificationHandle)} calls to fail immediately. + */ + public boolean isValid() { + throw new UnsupportedOperationException("Not yet implemented"); + } +} diff --git a/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/VerificationResult.java b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/VerificationResult.java new file mode 100644 index 000000000..09caa7300 --- /dev/null +++ b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/VerificationResult.java @@ -0,0 +1,43 @@ +/* + * SPDX-FileCopyrightText: 2022 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.recaptcha; + +import com.google.android.gms.common.api.CommonStatusCodes; +import com.google.android.gms.common.api.Status; + +/** + * Immmutable object to hold the result of a verification operation. + */ +public abstract class VerificationResult { + /** + * Returns a status to provide more info on the result of the verification operation. + * + * @return {@link CommonStatusCodes#SUCCESS} or {@link RecaptchaStatusCodes#RECAPTCHA_2FA_ABORTED} status if the + * verification operation succeeded, and non-success status (e.g. + * {@link RecaptchaStatusCodes#RECAPTCHA_2FA_PIN_MISMATCH}) if the verification failed with more attempts + * available, i.e. user entered wrong pin. + */ + public abstract Status getVerificationStatus(); + + /** + * Returns an optional containing the reCAPTCHA token if the verification operation was successful or aborted. + * + * @return the reCAPTCHA token if {@code getVerificationStatus().equals(CommonStatusCodes.SUCCESS)} or + * {@code getVerificationStatus().equals RecaptchaStatusCodes.RECAPTCHA_2FA_ABORTED)}, otherwise an empty + * {@link RecaptchaOptionalObject}. + */ + public abstract RecaptchaOptionalObject recaptchaToken(); + + /** + * Returns an optional containing a verification handle if the verification operation failed and the client is allowed to retry. + * + * @return a verification handle on a failure status, otherwise an empty {@link RecaptchaOptionalObject}. + */ + public abstract RecaptchaOptionalObject verificationHandle(); +} diff --git a/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/internal/ExecuteParams.java b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/internal/ExecuteParams.java new file mode 100644 index 000000000..ed2ac06dc --- /dev/null +++ b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/internal/ExecuteParams.java @@ -0,0 +1,35 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.recaptcha.internal; + +import androidx.annotation.NonNull; + +import com.google.android.gms.recaptcha.RecaptchaAction; +import com.google.android.gms.recaptcha.RecaptchaHandle; + +import org.microg.gms.utils.ToStringHelper; +import org.microg.safeparcel.AutoSafeParcelable; + +public class ExecuteParams extends AutoSafeParcelable { + @Field(1) + public RecaptchaHandle handle; + @Field(2) + public RecaptchaAction action; + @Field(3) + public String version; + + @NonNull + @Override + public String toString() { + return ToStringHelper.name("ExecuteParams") + .field("handle", handle) + .field("action", action) + .field("version", version) + .end(); + } + + public static final Creator CREATOR = new AutoCreator<>(ExecuteParams.class); +} diff --git a/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/internal/ExecuteResults.java b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/internal/ExecuteResults.java new file mode 100644 index 000000000..0a40bb905 --- /dev/null +++ b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/internal/ExecuteResults.java @@ -0,0 +1,17 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.recaptcha.internal; + +import com.google.android.gms.recaptcha.RecaptchaResultData; + +import org.microg.safeparcel.AutoSafeParcelable; + +public class ExecuteResults extends AutoSafeParcelable { + @Field(1) + public RecaptchaResultData data; + + public static final Creator CREATOR = new AutoCreator<>(ExecuteResults.class); +} diff --git a/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/internal/InitParams.java b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/internal/InitParams.java new file mode 100644 index 000000000..b69cba49b --- /dev/null +++ b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/internal/InitParams.java @@ -0,0 +1,29 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.recaptcha.internal; + +import androidx.annotation.NonNull; + +import org.microg.gms.utils.ToStringHelper; +import org.microg.safeparcel.AutoSafeParcelable; + +public class InitParams extends AutoSafeParcelable { + @Field(1) + public String siteKey; + @Field(2) + public String version; + + @NonNull + @Override + public String toString() { + return ToStringHelper.name("InitParams") + .field("siteKey", siteKey) + .field("version", version) + .end(); + } + + public static final Creator CREATOR = new AutoCreator<>(InitParams.class); +} diff --git a/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/internal/InitResults.java b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/internal/InitResults.java new file mode 100644 index 000000000..5c9b6c13d --- /dev/null +++ b/play-services-recaptcha/src/main/java/com/google/android/gms/recaptcha/internal/InitResults.java @@ -0,0 +1,17 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.recaptcha.internal; + +import com.google.android.gms.recaptcha.RecaptchaHandle; + +import org.microg.safeparcel.AutoSafeParcelable; + +public class InitResults extends AutoSafeParcelable { + @Field(1) + public RecaptchaHandle handle; + + public static final Creator CREATOR = new AutoCreator<>(InitResults.class); +} diff --git a/play-services-recaptcha/src/main/java/org/microg/gms/recaptcha/RecaptchaClientImpl.java b/play-services-recaptcha/src/main/java/org/microg/gms/recaptcha/RecaptchaClientImpl.java new file mode 100644 index 000000000..07435b178 --- /dev/null +++ b/play-services-recaptcha/src/main/java/org/microg/gms/recaptcha/RecaptchaClientImpl.java @@ -0,0 +1,121 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.microg.gms.recaptcha; + +import android.content.Context; +import android.os.RemoteException; + +import com.google.android.gms.common.api.Api; +import com.google.android.gms.common.api.GoogleApi; +import com.google.android.gms.common.api.Status; +import com.google.android.gms.recaptcha.Recaptcha; +import com.google.android.gms.recaptcha.RecaptchaAction; +import com.google.android.gms.recaptcha.RecaptchaClient; +import com.google.android.gms.recaptcha.RecaptchaHandle; +import com.google.android.gms.recaptcha.RecaptchaResultData; +import com.google.android.gms.recaptcha.VerificationHandle; +import com.google.android.gms.recaptcha.VerificationResult; +import com.google.android.gms.recaptcha.internal.ExecuteParams; +import com.google.android.gms.recaptcha.internal.ExecuteResults; +import com.google.android.gms.recaptcha.internal.ICloseCallback; +import com.google.android.gms.recaptcha.internal.IExecuteCallback; +import com.google.android.gms.recaptcha.internal.IInitCallback; +import com.google.android.gms.recaptcha.internal.InitParams; +import com.google.android.gms.recaptcha.internal.InitResults; +import com.google.android.gms.tasks.Task; +import com.google.android.gms.tasks.Tasks; + +import org.microg.gms.common.api.PendingGoogleApiCall; +import org.microg.gms.tasks.TaskImpl; + +public class RecaptchaClientImpl extends GoogleApi implements RecaptchaClient { + public RecaptchaClientImpl(Context context) { + super(context, new Api<>((options, c, looper, clientSettings, callbacks, connectionFailedListener) -> new RecaptchaGmsClient(c, callbacks, connectionFailedListener))); + } + + @Override + public Task challengeAccount(RecaptchaHandle recaptchaHandle, String challengeRequestToken) { + return Tasks.forException(new UnsupportedOperationException()); + } + + @Override + public Task close(RecaptchaHandle handle) { + return scheduleTask((PendingGoogleApiCall) (client, completionSource) -> { + client.close(new ICloseCallback.Stub() { + @Override + public void onClosed(Status status, boolean closed) throws RemoteException { + if (status.isSuccess()) { + completionSource.trySetResult(closed); + } else { + completionSource.trySetException(new RuntimeException(status.getStatusMessage())); + } + } + }, handle); + }); + } + + @Override + public Task execute(RecaptchaHandle handle, RecaptchaAction action) { + return scheduleTask((PendingGoogleApiCall) (client, completionSource) -> { + ExecuteParams params = new ExecuteParams(); + params.handle = handle; + params.action = action; + params.version = "17.0.1"; + client.execute(new IExecuteCallback.Stub() { + @Override + public void onData(Status status, RecaptchaResultData data) throws RemoteException { + if (status.isSuccess()) { + completionSource.trySetResult(data); + } else { + completionSource.trySetException(new RuntimeException(status.getStatusMessage())); + } + } + + @Override + public void onResults(Status status, ExecuteResults results) throws RemoteException { + if (status.isSuccess()) { + completionSource.trySetResult(results.data); + } else { + completionSource.trySetException(new RuntimeException(status.getStatusMessage())); + } + } + }, params); + }); + } + + @Override + public Task init(String siteKey) { + return scheduleTask((PendingGoogleApiCall) (client, completionSource) -> { + InitParams params = new InitParams(); + params.siteKey = siteKey; + params.version = "17.0.1"; + client.init(new IInitCallback.Stub() { + @Override + public void onHandle(Status status, RecaptchaHandle handle) throws RemoteException { + if (status.isSuccess()) { + completionSource.trySetResult(handle); + } else { + completionSource.trySetException(new RuntimeException(status.getStatusMessage())); + } + } + + @Override + public void onResults(Status status, InitResults results) throws RemoteException { + if (status.isSuccess()) { + completionSource.trySetResult(results.handle); + } else { + completionSource.trySetException(new RuntimeException(status.getStatusMessage())); + } + } + }, params); + }); + } + + @Override + public Task verifyAccount(String pin, VerificationHandle verificationHandle) { + return Tasks.forException(new UnsupportedOperationException()); + } +} diff --git a/play-services-recaptcha/src/main/java/org/microg/gms/recaptcha/RecaptchaGmsClient.java b/play-services-recaptcha/src/main/java/org/microg/gms/recaptcha/RecaptchaGmsClient.java new file mode 100644 index 000000000..da8e09e70 --- /dev/null +++ b/play-services-recaptcha/src/main/java/org/microg/gms/recaptcha/RecaptchaGmsClient.java @@ -0,0 +1,56 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.microg.gms.recaptcha; + +import android.content.Context; +import android.os.IBinder; +import android.os.RemoteException; + +import org.microg.gms.common.GmsClient; +import org.microg.gms.common.GmsService; +import org.microg.gms.common.api.ConnectionCallbacks; +import org.microg.gms.common.api.OnConnectionFailedListener; + +import com.google.android.gms.recaptcha.RecaptchaAction; +import com.google.android.gms.recaptcha.RecaptchaHandle; +import com.google.android.gms.recaptcha.internal.ExecuteParams; +import com.google.android.gms.recaptcha.internal.ICloseCallback; +import com.google.android.gms.recaptcha.internal.IExecuteCallback; +import com.google.android.gms.recaptcha.internal.IInitCallback; +import com.google.android.gms.recaptcha.internal.IRecaptchaService; +import com.google.android.gms.recaptcha.internal.InitParams; + +public class RecaptchaGmsClient extends GmsClient { + public RecaptchaGmsClient(Context context, ConnectionCallbacks callbacks, OnConnectionFailedListener connectionFailedListener) { + super(context, callbacks, connectionFailedListener, GmsService.RECAPTCHA.ACTION); + serviceId = GmsService.RECAPTCHA.SERVICE_ID; + } + + public void init(IInitCallback callback, String siteKey) throws RemoteException { + getServiceInterface().init(callback, siteKey); + } + + public void init(IInitCallback callback, InitParams params) throws RemoteException { + getServiceInterface().init2(callback, params); + } + + public void execute(IExecuteCallback callback, RecaptchaHandle handle, RecaptchaAction action) throws RemoteException { + getServiceInterface().execute(callback, handle, action); + } + + public void execute(IExecuteCallback callback, ExecuteParams params) throws RemoteException { + getServiceInterface().execute2(callback, params); + } + + public void close(ICloseCallback callback, RecaptchaHandle handle) throws RemoteException { + getServiceInterface().close(callback, handle); + } + + @Override + protected IRecaptchaService interfaceFromBinder(IBinder binder) { + return IRecaptchaService.Stub.asInterface(binder); + } +} diff --git a/settings.gradle b/settings.gradle index 3eab0ec08..a5c6da78a 100644 --- a/settings.gradle +++ b/settings.gradle @@ -30,6 +30,7 @@ include ':play-services-nearby' include ':play-services-oss-licenses' include ':play-services-places' include ':play-services-places-placereport' +include ':play-services-recaptcha' include ':play-services-safetynet' include ':play-services-tapandpay' include ':play-services-vision' @@ -64,6 +65,7 @@ include ':play-services-maps-core-vtm:vtm-microg-theme' sublude ':play-services-nearby:core' sublude ':play-services-oss-licenses:core' sublude ':play-services-safetynet:core' +sublude ':play-services-recaptcha:core' sublude ':play-services-tapandpay:core' sublude ':play-services-vision:core' sublude ':play-services-wearable:core' -- GitLab From 24b0bfa998a23ace0851e5181cf5f3c13db28b5c Mon Sep 17 00:00:00 2001 From: Marvin W Date: Sat, 24 Dec 2022 21:02:19 +0100 Subject: [PATCH 03/14] Maps: Add a few missing parts --- ...iCall.java => ReturningGoogleApiCall.java} | 0 .../org/microg/gms/maps/mapbox/GoogleMap.kt | 43 ++++++++++---- .../microg/gms/maps/mapbox/model/Polygon.kt | 5 +- .../microg/gms/maps/mapbox/model/Polyline.kt | 33 ++++++++++- .../gms/maps/mapbox/utils/MapContext.kt | 4 +- .../gms/maps/vtm/markup/PolygonImpl.java | 5 ++ .../gms/maps/vtm/markup/PolylineImpl.java | 43 ++++++++++++++ .../gms/maps/internal/IGoogleMapDelegate.aidl | 7 ++- .../internal/ILocationSourceDelegate.aidl | 4 ++ .../IOnIndoorStateChangeListener.aidl | 6 ++ .../internal/IOnLocationChangeListener.aidl | 7 +++ .../google/android/gms/maps/model/Cap.aidl | 3 + .../android/gms/maps/model/StyleSpan.aidl | 3 + .../internal/IIndoorBuildingDelegate.aidl | 10 ++++ .../model/internal/IIndoorLevelDelegate.aidl | 9 +++ .../maps/model/internal/IPolygonDelegate.aidl | 1 + .../model/internal/IPolylineDelegate.aidl | 49 ++++++++++----- .../google/android/gms/maps/model/Cap.java | 21 +++++++ .../android/gms/maps/model/PatternItem.java | 24 +++++++- .../gms/maps/model/PolylineOptions.java | 59 ++++++++++++------- .../android/gms/maps/model/StampStyle.java | 18 ++++++ .../android/gms/maps/model/StrokeStyle.java | 23 ++++++++ .../android/gms/maps/model/StyleSpan.java | 25 ++++++++ 23 files changed, 346 insertions(+), 56 deletions(-) rename play-services-base/src/main/java/org/microg/gms/common/api/{InstantGoogleApiCall.java => ReturningGoogleApiCall.java} (100%) create mode 100644 play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnIndoorStateChangeListener.aidl create mode 100644 play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnLocationChangeListener.aidl create mode 100644 play-services-maps/src/main/aidl/com/google/android/gms/maps/model/Cap.aidl create mode 100644 play-services-maps/src/main/aidl/com/google/android/gms/maps/model/StyleSpan.aidl create mode 100644 play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/IIndoorBuildingDelegate.aidl create mode 100644 play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/IIndoorLevelDelegate.aidl create mode 100644 play-services-maps/src/main/java/com/google/android/gms/maps/model/Cap.java create mode 100644 play-services-maps/src/main/java/com/google/android/gms/maps/model/StampStyle.java create mode 100644 play-services-maps/src/main/java/com/google/android/gms/maps/model/StrokeStyle.java create mode 100644 play-services-maps/src/main/java/com/google/android/gms/maps/model/StyleSpan.java diff --git a/play-services-base/src/main/java/org/microg/gms/common/api/InstantGoogleApiCall.java b/play-services-base/src/main/java/org/microg/gms/common/api/ReturningGoogleApiCall.java similarity index 100% rename from play-services-base/src/main/java/org/microg/gms/common/api/InstantGoogleApiCall.java rename to play-services-base/src/main/java/org/microg/gms/common/api/ReturningGoogleApiCall.java diff --git a/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/GoogleMap.kt b/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/GoogleMap.kt index eb8653a88..94ac1044b 100644 --- a/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/GoogleMap.kt +++ b/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/GoogleMap.kt @@ -30,6 +30,7 @@ import android.widget.FrameLayout import android.widget.RelativeLayout import androidx.collection.LongSparseArray import com.google.android.gms.dynamic.IObjectWrapper +import com.google.android.gms.dynamic.ObjectWrapper import com.google.android.gms.maps.GoogleMapOptions import com.google.android.gms.maps.internal.* import com.google.android.gms.maps.model.* @@ -51,6 +52,9 @@ import com.mapbox.mapboxsdk.plugins.annotation.* import com.mapbox.mapboxsdk.plugins.annotation.Annotation import com.mapbox.mapboxsdk.style.layers.Property.LINE_CAP_ROUND import com.google.android.gms.dynamic.unwrap +import com.mapbox.android.core.location.LocationEngineCallback +import com.mapbox.android.core.location.LocationEngineRequest +import com.mapbox.android.core.location.LocationEngineResult import org.microg.gms.maps.MapsConstants.* import org.microg.gms.maps.mapbox.model.* import org.microg.gms.maps.mapbox.utils.MapContext @@ -95,6 +99,19 @@ class GoogleMapImpl(private val context: Context, var options: GoogleMapOptions) private var mapLongClickListener: IOnMapLongClickListener? = null private var markerClickListener: IOnMarkerClickListener? = null private var markerDragListener: IOnMarkerDragListener? = null + private var myLocationChangeListener: IOnMyLocationChangeListener? = null + + private val locationEngineCallback = object : LocationEngineCallback { + override fun onSuccess(result: LocationEngineResult?) { + result?.lastLocation?.let { location -> + Log.d(TAG, "myLocationChanged: $location") + myLocationChangeListener?.onMyLocationChanged(ObjectWrapper.wrap(location)) + } + } + override fun onFailure(e: Exception) { + Log.w(TAG, e) + } + } var lineManager: LineManager? = null val pendingLines = mutableSetOf() @@ -130,6 +147,7 @@ class GoogleMapImpl(private val context: Context, var options: GoogleMapOptions) val fakeWatermark = View(mapContext) + fakeWatermark.tag = "GoogleWatermark" fakeWatermark.layoutParams = object : RelativeLayout.LayoutParams(0, 0) { @SuppressLint("RtlHardcoded") override fun addRule(verb: Int, subject: Int) { @@ -401,6 +419,15 @@ class GoogleMapImpl(private val context: Context, var options: GoogleMapOptions) try { if (locationComponent.isLocationComponentActivated) { locationComponent.isLocationComponentEnabled = myLocation + if (myLocation) { + locationComponent.locationEngine?.requestLocationUpdates( + locationComponent.locationEngineRequest, + locationEngineCallback, + null + ) + } else { + locationComponent.locationEngine?.removeLocationUpdates(locationEngineCallback) + } } } catch (e: SecurityException) { Log.w(TAG, e) @@ -411,8 +438,9 @@ class GoogleMapImpl(private val context: Context, var options: GoogleMapOptions) } override fun getMyLocation(): Location? { - Log.d(TAG, "unimplemented Method: getMyLocation") - return null + synchronized(mapLock) { + return map?.locationComponent?.lastKnownLocation + } } override fun setLocationSource(locationSource: ILocationSourceDelegate?) { @@ -470,8 +498,7 @@ class GoogleMapImpl(private val context: Context, var options: GoogleMapOptions) } override fun setOnMyLocationChangeListener(listener: IOnMyLocationChangeListener?) { - Log.d(TAG, "unimplemented Method: setOnMyLocationChangeListener") - + myLocationChangeListener = listener } override fun setOnMyLocationButtonClickListener(listener: IOnMyLocationButtonClickListener?) { @@ -715,13 +742,9 @@ class GoogleMapImpl(private val context: Context, var options: GoogleMapOptions) renderMode = RenderMode.COMPASS } + setMyLocationEnabled(locationEnabled) + synchronized(mapLock) { - try { - map.locationComponent.isLocationComponentEnabled = locationEnabled - } catch (e: SecurityException) { - Log.w(TAG, e) - locationEnabled = false - } loaded = true if (loadedCallback != null) { Log.d(TAG, "Invoking callback delayed, as map is loaded") diff --git a/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/model/Polygon.kt b/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/model/Polygon.kt index c0de5468e..2c10af4a7 100644 --- a/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/model/Polygon.kt +++ b/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/model/Polygon.kt @@ -8,6 +8,7 @@ package org.microg.gms.maps.mapbox.model import android.os.Parcel import android.util.Log import com.google.android.gms.dynamic.IObjectWrapper +import com.google.android.gms.dynamic.ObjectWrapper import com.google.android.gms.maps.model.LatLng import com.google.android.gms.maps.model.PatternItem import com.google.android.gms.maps.model.PolygonOptions @@ -143,6 +144,8 @@ class PolygonImpl(private val map: GoogleMapImpl, private val id: String, option clickable = click } + override fun isClickable(): Boolean = clickable + override fun setStrokeJointType(type: Int) { strokeJointType = type } @@ -159,7 +162,7 @@ class PolygonImpl(private val map: GoogleMapImpl, private val id: String, option tag = obj } - override fun getTag(): IObjectWrapper? = tag + override fun getTag(): IObjectWrapper = tag ?: ObjectWrapper.wrap(null) override fun hashCode(): Int { return id.hashCode() diff --git a/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/model/Polyline.kt b/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/model/Polyline.kt index f9a8f91b9..15751f906 100644 --- a/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/model/Polyline.kt +++ b/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/model/Polyline.kt @@ -18,7 +18,10 @@ package org.microg.gms.maps.mapbox.model import android.os.Parcel import android.util.Log +import com.google.android.gms.dynamic.IObjectWrapper +import com.google.android.gms.dynamic.ObjectWrapper import com.google.android.gms.maps.model.LatLng +import com.google.android.gms.maps.model.PatternItem import com.google.android.gms.maps.model.internal.IPolylineDelegate import com.mapbox.mapboxsdk.plugins.annotation.Line import com.mapbox.mapboxsdk.plugins.annotation.LineOptions @@ -30,8 +33,12 @@ import com.google.android.gms.maps.model.PolylineOptions as GmsLineOptions class PolylineImpl(private val map: GoogleMapImpl, private val id: String, options: GmsLineOptions) : IPolylineDelegate.Stub(), Markup { private var points = ArrayList(options.points) private var width = options.width + private var jointType = options.jointType + private var pattern = ArrayList(options.pattern.orEmpty()) private var color = options.color private var visible: Boolean = options.isVisible + private var clickable: Boolean = options.isClickable + private var tag: IObjectWrapper? = null override var annotation: Line? = null override var removed: Boolean = false @@ -103,6 +110,30 @@ class PolylineImpl(private val map: GoogleMapImpl, private val id: String, optio override fun hashCodeRemote(): Int = hashCode() + override fun setClickable(clickable: Boolean) { + this.clickable = clickable + } + + override fun isClickable(): Boolean = clickable + + override fun setJointType(jointType: Int) { + this.jointType = jointType + } + + override fun getJointType(): Int = jointType + + override fun setPattern(pattern: MutableList?) { + this.pattern = ArrayList(pattern.orEmpty()) + } + + override fun getPattern(): MutableList = pattern + + override fun setTag(tag: IObjectWrapper?) { + this.tag = tag + } + + override fun getTag(): IObjectWrapper = tag ?: ObjectWrapper.wrap(null) + override fun hashCode(): Int { return id.hashCode() } @@ -128,4 +159,4 @@ class PolylineImpl(private val map: GoogleMapImpl, private val id: String, optio companion object { private val TAG = "GmsMapPolyline" } -} \ No newline at end of file +} diff --git a/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/utils/MapContext.kt b/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/utils/MapContext.kt index 2b00202a4..a8ce14125 100644 --- a/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/utils/MapContext.kt +++ b/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/utils/MapContext.kt @@ -24,7 +24,7 @@ import android.view.LayoutInflater import org.microg.gms.common.Constants import java.io.File -class MapContext(private val context: Context) : ContextWrapper(context.createPackageContext(Constants.GMS_PACKAGE_NAME, Context.CONTEXT_INCLUDE_CODE and Context.CONTEXT_IGNORE_SECURITY)) { +class MapContext(private val context: Context) : ContextWrapper(context.createPackageContext(Constants.GMS_PACKAGE_NAME, Context.CONTEXT_INCLUDE_CODE or Context.CONTEXT_IGNORE_SECURITY)) { private var layoutInflater: LayoutInflater? = null private val appContext: Context get() = context.applicationContext ?: context @@ -77,4 +77,4 @@ class MapContext(private val context: Context) : ContextWrapper(context.createPa companion object { val TAG = "GmsMapContext" } -} \ No newline at end of file +} diff --git a/play-services-maps-core-vtm/src/main/java/org/microg/gms/maps/vtm/markup/PolygonImpl.java b/play-services-maps-core-vtm/src/main/java/org/microg/gms/maps/vtm/markup/PolygonImpl.java index cb1a55f53..23bcfc83c 100644 --- a/play-services-maps-core-vtm/src/main/java/org/microg/gms/maps/vtm/markup/PolygonImpl.java +++ b/play-services-maps-core-vtm/src/main/java/org/microg/gms/maps/vtm/markup/PolygonImpl.java @@ -205,6 +205,11 @@ public class PolygonImpl extends IPolygonDelegate.Stub implements DrawableMarkup } + @Override + public boolean isClickable() throws RemoteException { + return false; + } + @Override public void setStrokeJointType(int type) throws RemoteException { diff --git a/play-services-maps-core-vtm/src/main/java/org/microg/gms/maps/vtm/markup/PolylineImpl.java b/play-services-maps-core-vtm/src/main/java/org/microg/gms/maps/vtm/markup/PolylineImpl.java index b2ff4c2f3..7e098596e 100644 --- a/play-services-maps-core-vtm/src/main/java/org/microg/gms/maps/vtm/markup/PolylineImpl.java +++ b/play-services-maps-core-vtm/src/main/java/org/microg/gms/maps/vtm/markup/PolylineImpl.java @@ -19,7 +19,9 @@ package org.microg.gms.maps.vtm.markup; import android.os.RemoteException; import android.util.Log; +import com.google.android.gms.dynamic.IObjectWrapper; import com.google.android.gms.maps.model.LatLng; +import com.google.android.gms.maps.model.PatternItem; import com.google.android.gms.maps.model.PolylineOptions; import com.google.android.gms.maps.model.internal.IPolylineDelegate; @@ -157,6 +159,47 @@ public class PolylineImpl extends IPolylineDelegate.Stub implements DrawableMark return id.hashCode(); } + // Not implemented + @Override + public void setClickable(boolean clickable) throws RemoteException { + + } + + @Override + public boolean isClickable() throws RemoteException { + return false; + } + + @Override + public void setJointType(int jointType) throws RemoteException { + + } + + @Override + public int getJointType() throws RemoteException { + return 0; + } + + @Override + public void setPattern(List pattern) throws RemoteException { + + } + + @Override + public List getPattern() throws RemoteException { + return null; + } + + @Override + public void setTag(IObjectWrapper tag) throws RemoteException { + + } + + @Override + public IObjectWrapper getTag() throws RemoteException { + return null; + } + @Override public Drawable getDrawable(Map map) { if (!isVisible() || removed) return null; diff --git a/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IGoogleMapDelegate.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IGoogleMapDelegate.aidl index af44f1c50..0e4434451 100644 --- a/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IGoogleMapDelegate.aidl +++ b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IGoogleMapDelegate.aidl @@ -31,11 +31,12 @@ import com.google.android.gms.maps.model.MapStyleOptions; import com.google.android.gms.maps.model.PolygonOptions; import com.google.android.gms.maps.model.PolylineOptions; import com.google.android.gms.maps.model.TileOverlayOptions; -import com.google.android.gms.maps.model.internal.IPolylineDelegate; -import com.google.android.gms.maps.model.internal.IPolygonDelegate; -import com.google.android.gms.maps.model.internal.IMarkerDelegate; import com.google.android.gms.maps.model.internal.ICircleDelegate; import com.google.android.gms.maps.model.internal.IGroundOverlayDelegate; +import com.google.android.gms.maps.model.internal.IIndoorBuildingDelegate; +import com.google.android.gms.maps.model.internal.IMarkerDelegate; +import com.google.android.gms.maps.model.internal.IPolygonDelegate; +import com.google.android.gms.maps.model.internal.IPolylineDelegate; import com.google.android.gms.maps.model.internal.ITileOverlayDelegate; interface IGoogleMapDelegate { diff --git a/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/ILocationSourceDelegate.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/ILocationSourceDelegate.aidl index 203ec69f1..3f1ed56fb 100644 --- a/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/ILocationSourceDelegate.aidl +++ b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/ILocationSourceDelegate.aidl @@ -1,4 +1,8 @@ package com.google.android.gms.maps.internal; +import com.google.android.gms.maps.internal.IOnLocationChangeListener; + interface ILocationSourceDelegate { + void activate(IOnLocationChangeListener listener) = 0; + void deactivate() = 1; } diff --git a/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnIndoorStateChangeListener.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnIndoorStateChangeListener.aidl new file mode 100644 index 000000000..c224c58e2 --- /dev/null +++ b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnIndoorStateChangeListener.aidl @@ -0,0 +1,6 @@ +package com.google.android.gms.maps.internal; + +interface IOnIndoorStateChangeListener { + void onIndoorBuildingFocused() = 0; + void onIndoorLevelActivated() = 1; +} diff --git a/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnLocationChangeListener.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnLocationChangeListener.aidl new file mode 100644 index 000000000..7d3897dcf --- /dev/null +++ b/play-services-maps/src/main/aidl/com/google/android/gms/maps/internal/IOnLocationChangeListener.aidl @@ -0,0 +1,7 @@ +package com.google.android.gms.maps.internal; + +import android.location.Location; + +interface IOnLocationChangeListener { + void onLocationChanged(in Location location) = 1; +} diff --git a/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/Cap.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/Cap.aidl new file mode 100644 index 000000000..802366f61 --- /dev/null +++ b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/Cap.aidl @@ -0,0 +1,3 @@ +package com.google.android.gms.maps.model; + +parcelable Cap; diff --git a/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/StyleSpan.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/StyleSpan.aidl new file mode 100644 index 000000000..3dd85466b --- /dev/null +++ b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/StyleSpan.aidl @@ -0,0 +1,3 @@ +package com.google.android.gms.maps.model; + +parcelable StyleSpan; diff --git a/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/IIndoorBuildingDelegate.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/IIndoorBuildingDelegate.aidl new file mode 100644 index 000000000..3ec555d78 --- /dev/null +++ b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/IIndoorBuildingDelegate.aidl @@ -0,0 +1,10 @@ +package com.google.android.gms.maps.model.internal; + +interface IIndoorBuildingDelegate { + int getActiveLevelIndex() = 0; + int getDefaultLevelIndex() = 1; + List getLevels() = 2; // IIndoorLevelDelegate's + boolean isUnderground() = 3; + boolean equalsRemote(IIndoorBuildingDelegate other) = 4; + int hashCodeRemote() = 5; +} diff --git a/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/IIndoorLevelDelegate.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/IIndoorLevelDelegate.aidl new file mode 100644 index 000000000..8c48348e0 --- /dev/null +++ b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/IIndoorLevelDelegate.aidl @@ -0,0 +1,9 @@ +package com.google.android.gms.maps.model.internal; + +interface IIndoorLevelDelegate { + String getName() = 0; + String getShortName() = 1; + void activate() = 2; + boolean equalsRemote(IIndoorLevelDelegate other) = 3; + int hashCodeRemote() = 4; +} diff --git a/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/IPolygonDelegate.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/IPolygonDelegate.aidl index 79292fc7a..ef1d273ab 100644 --- a/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/IPolygonDelegate.aidl +++ b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/IPolygonDelegate.aidl @@ -31,6 +31,7 @@ interface IPolygonDelegate { boolean equalsRemote(IPolygonDelegate other) = 18; int hashCodeRemote() = 19; void setClickable(boolean click) = 20; + boolean isClickable() = 21; void setStrokeJointType(int type) = 22; int getStrokeJointType() = 23; void setStrokePattern(in List items) = 24; diff --git a/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/IPolylineDelegate.aidl b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/IPolylineDelegate.aidl index ebbb336bf..0e957b2ca 100644 --- a/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/IPolylineDelegate.aidl +++ b/play-services-maps/src/main/aidl/com/google/android/gms/maps/model/internal/IPolylineDelegate.aidl @@ -1,22 +1,39 @@ package com.google.android.gms.maps.model.internal; +import com.google.android.gms.dynamic.IObjectWrapper; import com.google.android.gms.maps.model.LatLng; +import com.google.android.gms.maps.model.PatternItem; +import com.google.android.gms.maps.model.StyleSpan; interface IPolylineDelegate { - void remove(); - String getId(); - void setPoints(in List points); - List getPoints(); - void setWidth(float width); - float getWidth(); - void setColor(int color); - int getColor(); - void setZIndex(float zIndex); - float getZIndex(); - void setVisible(boolean visible); - boolean isVisible(); - void setGeodesic(boolean geod); - boolean isGeodesic(); - boolean equalsRemote(IPolylineDelegate other); - int hashCodeRemote(); + void remove() = 0; + String getId() = 1; + void setPoints(in List points) = 2; + List getPoints() = 3; + void setWidth(float width) = 4; + float getWidth() = 5; + void setColor(int color) = 6; + int getColor() = 7; + void setZIndex(float zIndex) = 8; + float getZIndex() = 9; + void setVisible(boolean visible) = 10; + boolean isVisible() = 11; + void setGeodesic(boolean geod) = 12; + boolean isGeodesic() = 13; + boolean equalsRemote(IPolylineDelegate other) = 14; + int hashCodeRemote() = 15; + void setClickable(boolean clickable) = 16; + boolean isClickable() = 17; + //void setStartCap(Cap startCap) = 18; + //Cap getStartCap() = 19; + //void setEndCap(Cap endCap) = 20; + //Cap getEndCap() = 21; + void setJointType(int jointType) = 22; + int getJointType() = 23; + void setPattern(in List pattern) = 24; + List getPattern() = 25; + void setTag(IObjectWrapper tag) = 26; + IObjectWrapper getTag() = 27; + //void setSpans(in List spans) = 28; + //List getSpans() = 29 } diff --git a/play-services-maps/src/main/java/com/google/android/gms/maps/model/Cap.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/Cap.java new file mode 100644 index 000000000..d5d38d1f7 --- /dev/null +++ b/play-services-maps/src/main/java/com/google/android/gms/maps/model/Cap.java @@ -0,0 +1,21 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.maps.model; + +import android.os.IBinder; + +import org.microg.safeparcel.AutoSafeParcelable; + +public class Cap extends AutoSafeParcelable { + @Field(2) + private int type; + @Field(3) + private IBinder bitmap; + private BitmapDescriptor bitmapDescriptor; + @Field(4) + private float bitmapRefWidth; + public static final Creator CREATOR = new AutoCreator<>(Cap.class); +} diff --git a/play-services-maps/src/main/java/com/google/android/gms/maps/model/PatternItem.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/PatternItem.java index c964cb86c..6f8e3f7ab 100644 --- a/play-services-maps/src/main/java/com/google/android/gms/maps/model/PatternItem.java +++ b/play-services-maps/src/main/java/com/google/android/gms/maps/model/PatternItem.java @@ -8,6 +8,8 @@ package com.google.android.gms.maps.model; +import android.os.Parcel; + import org.microg.gms.common.PublicApi; import org.microg.safeparcel.AutoSafeParcelable; @@ -19,7 +21,10 @@ public class PatternItem extends AutoSafeParcelable { @Field(2) private int type; @Field(3) - private Float length; + private float length; + + private PatternItem() { + } @PublicApi(exclude = true) PatternItem(int type, Float length) { @@ -32,5 +37,20 @@ public class PatternItem extends AutoSafeParcelable { return "[PatternItem: type=" + type + " length=" + length + "]"; } - public static final Creator CREATOR = new AutoCreator<>(PatternItem.class); + public static final Creator CREATOR = new AutoCreator(PatternItem.class) { + @Override + public PatternItem createFromParcel(Parcel parcel) { + PatternItem item = super.createFromParcel(parcel); + switch (item.type) { + case 0: + return new Dash(item.length); + case 1: + return new Dot(); + case 2: + return new Gap(item.length); + default: + return item; + } + } + }; } diff --git a/play-services-maps/src/main/java/com/google/android/gms/maps/model/PolylineOptions.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/PolylineOptions.java index d9a9dc5b4..5e2cda9b1 100644 --- a/play-services-maps/src/main/java/com/google/android/gms/maps/model/PolylineOptions.java +++ b/play-services-maps/src/main/java/com/google/android/gms/maps/model/PolylineOptions.java @@ -1,17 +1,6 @@ /* - * Copyright (C) 2013-2017 microG Project Team - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * SPDX-FileCopyrightText: 2015 microG Project Team + * SPDX-License-Identifier: Apache-2.0 */ package com.google.android.gms.maps.model; @@ -20,7 +9,6 @@ import android.graphics.Color; import org.microg.gms.common.PublicApi; import org.microg.safeparcel.AutoSafeParcelable; -import org.microg.safeparcel.SafeParceled; import java.util.ArrayList; import java.util.List; @@ -31,20 +19,32 @@ import java.util.List; */ @PublicApi public class PolylineOptions extends AutoSafeParcelable { - @SafeParceled(1) + @Field(1) private int versionCode = 1; - @SafeParceled(value = 2, subClass = LatLng.class) + @Field(value = 2, subClass = LatLng.class) private List points = new ArrayList(); - @SafeParceled(3) + @Field(3) private float width = 10; - @SafeParceled(4) + @Field(4) private int color = Color.BLACK; - @SafeParceled(5) + @Field(5) private float zIndex = 0; - @SafeParceled(6) + @Field(6) private boolean visible = true; - @SafeParceled(7) + @Field(7) private boolean geodesic = false; + @Field(8) + private boolean clickable = false; + @Field(9) + private Cap startCap; + @Field(10) + private Cap endCap; + @Field(11) + private int jointType = JointType.DEFAULT; + @Field(value = 12, subClass = PatternItem.class) + private List pattern = null; + @Field(value = 13, subClass = StyleSpan.class) + private List spans = null; public PolylineOptions() { } @@ -68,6 +68,11 @@ public class PolylineOptions extends AutoSafeParcelable { return this; } + public PolylineOptions clickable(boolean clickable) { + this.clickable = clickable; + return this; + } + public PolylineOptions color(int color) { this.color = color; return this; @@ -82,6 +87,14 @@ public class PolylineOptions extends AutoSafeParcelable { return color; } + public int getJointType() { + return jointType; + } + + public List getPattern() { + return pattern; + } + public List getPoints() { return points; } @@ -102,6 +115,10 @@ public class PolylineOptions extends AutoSafeParcelable { return visible; } + public boolean isClickable() { + return clickable; + } + public PolylineOptions visible(boolean visible) { this.visible = visible; return this; diff --git a/play-services-maps/src/main/java/com/google/android/gms/maps/model/StampStyle.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/StampStyle.java new file mode 100644 index 000000000..a0cf3aaff --- /dev/null +++ b/play-services-maps/src/main/java/com/google/android/gms/maps/model/StampStyle.java @@ -0,0 +1,18 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.maps.model; + +import android.os.IBinder; + +import org.microg.safeparcel.AutoSafeParcelable; + +public class StampStyle extends AutoSafeParcelable { + @Field(2) + private IBinder stamp; + private BitmapDescriptor stampDescriptor; + + public static final Creator CREATOR = new AutoCreator<>(StampStyle.class); +} diff --git a/play-services-maps/src/main/java/com/google/android/gms/maps/model/StrokeStyle.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/StrokeStyle.java new file mode 100644 index 000000000..edc91583a --- /dev/null +++ b/play-services-maps/src/main/java/com/google/android/gms/maps/model/StrokeStyle.java @@ -0,0 +1,23 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.maps.model; + +import org.microg.safeparcel.AutoSafeParcelable; + +public class StrokeStyle extends AutoSafeParcelable { + @Field(2) + private float width; + @Field(3) + private int color; + @Field(4) + private int toColor; + @Field(5) + private boolean isVisible; + @Field(6) + private StampStyle stamp; + + public static final Creator CREATOR = new AutoCreator<>(StrokeStyle.class); +} diff --git a/play-services-maps/src/main/java/com/google/android/gms/maps/model/StyleSpan.java b/play-services-maps/src/main/java/com/google/android/gms/maps/model/StyleSpan.java new file mode 100644 index 000000000..19e210141 --- /dev/null +++ b/play-services-maps/src/main/java/com/google/android/gms/maps/model/StyleSpan.java @@ -0,0 +1,25 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.maps.model; + +import org.microg.safeparcel.AutoSafeParcelable; + +public class StyleSpan extends AutoSafeParcelable { + @Field(2) + private StrokeStyle style; + @Field(3) + private double segments; + + public double getSegments() { + return segments; + } + + public StrokeStyle getStyle() { + return style; + } + + public static final Creator CREATOR = new AutoCreator<>(StyleSpan.class); +} -- GitLab From 33279a136c0291cf12fd8324c80cc2ad32173a04 Mon Sep 17 00:00:00 2001 From: Marvin W Date: Sat, 24 Dec 2022 21:04:36 +0100 Subject: [PATCH 04/14] Add Wallet to known packages --- .../core/src/main/java/org/microg/gms/common/PackageUtils.java | 1 + .../main/java/org/microg/gms/auth/AccountContentProvider.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/play-services-base/core/src/main/java/org/microg/gms/common/PackageUtils.java b/play-services-base/core/src/main/java/org/microg/gms/common/PackageUtils.java index f80377f7a..cf611404c 100644 --- a/play-services-base/core/src/main/java/org/microg/gms/common/PackageUtils.java +++ b/play-services-base/core/src/main/java/org/microg/gms/common/PackageUtils.java @@ -73,6 +73,7 @@ public class PackageUtils { KNOWN_GOOGLE_PACKAGES.put("com.google.android.projection.gearhead", "9ca91f9e704d630ef67a23f52bf1577a92b9ca5d"); KNOWN_GOOGLE_PACKAGES.put("com.google.stadia.android", "133aad3b3d3b580e286573c37f20549f9d3d1cce"); KNOWN_GOOGLE_PACKAGES.put("com.google.android.apps.kids.familylink", "88652b8464743e5ce80da0d4b890d13f9b1873df"); + KNOWN_GOOGLE_PACKAGES.put("com.google.android.apps.walletnfcrel", "82759e2db43f9ccbafce313bc674f35748fabd7a"); } public static boolean isGooglePackage(Context context, String packageName) { diff --git a/play-services-core/src/main/java/org/microg/gms/auth/AccountContentProvider.java b/play-services-core/src/main/java/org/microg/gms/auth/AccountContentProvider.java index bba39ab53..57581a00e 100644 --- a/play-services-core/src/main/java/org/microg/gms/auth/AccountContentProvider.java +++ b/play-services-core/src/main/java/org/microg/gms/auth/AccountContentProvider.java @@ -95,7 +95,7 @@ public class AccountContentProvider extends ContentProvider { result.putParcelableArray(PROVIDER_EXTRA_ACCOUNTS, accounts); Log.d(TAG, "get_accounts returns: " + Arrays.toString(accounts)); return result; - } else if (PROVIDER_METHOD_CLEAR_PASSWORD.equals(method)) { + } else if (PROVIDER_METHOD_CLEAR_PASSWORD.equals(method) && PackageUtils.callerHasExtendedAccess(getContext())) { Account a = extras.getParcelable(PROVIDER_EXTRA_CLEAR_PASSWORD); AccountManager.get(getContext()).clearPassword(a); return null; -- GitLab From adf96aca1b0a44d1d63e31b25e70b9f334d47163 Mon Sep 17 00:00:00 2001 From: Marvin W Date: Sat, 24 Dec 2022 21:13:26 +0100 Subject: [PATCH 05/14] Location: Add some missing details --- .../gms/common/internal/ClientIdentity.java | 39 + .../common/api/ReturningGoogleApiCall.java | 2 +- .../org/microg/gms/utils/WorkSourceUtil.java | 63 ++ play-services-location/build.gradle | 6 + .../gms/location/GoogleLocationManager.java | 14 +- .../GoogleLocationManagerServiceImpl.java | 11 +- .../gms/location/LocationRequestHelper.java | 20 +- .../gms/location/RealLocationProvider.java | 6 +- .../gms/location/UnifiedLocationProvider.kt | 2 +- .../IGoogleLocationManagerService.aidl | 3 +- .../location/FusedLocationProviderClient.java | 102 +- .../android/gms/location/Granularity.java | 43 + .../android/gms/location/LocationRequest.java | 962 ++++++++++++------ .../android/gms/location/LocationResult.java | 101 +- .../google/android/gms/location/Priority.java | 49 + .../gms/location/ThrottleBehavior.java | 22 + .../gms/location/internal/ClientIdentity.java | 23 - .../DeviceOrientationRequestInternal.java | 1 + .../internal/LocationRequestInternal.java | 59 +- .../FusedLocationProviderClientImpl.java | 68 +- .../microg/gms/location/GranularityUtil.java | 42 + .../gms/location/LocationClientImpl.java | 15 +- .../org/microg/gms/location/PriorityUtil.java | 46 + .../gms/location/ThrottleBehaviorUtil.java | 43 + .../location/WearableLocationService.java | 2 +- 25 files changed, 1327 insertions(+), 417 deletions(-) create mode 100644 play-services-base/src/main/java/com/google/android/gms/common/internal/ClientIdentity.java create mode 100644 play-services-basement/src/main/java/org/microg/gms/utils/WorkSourceUtil.java create mode 100644 play-services-location/src/main/java/com/google/android/gms/location/Granularity.java create mode 100644 play-services-location/src/main/java/com/google/android/gms/location/Priority.java create mode 100644 play-services-location/src/main/java/com/google/android/gms/location/ThrottleBehavior.java delete mode 100644 play-services-location/src/main/java/com/google/android/gms/location/internal/ClientIdentity.java create mode 100644 play-services-location/src/main/java/org/microg/gms/location/GranularityUtil.java create mode 100644 play-services-location/src/main/java/org/microg/gms/location/PriorityUtil.java create mode 100644 play-services-location/src/main/java/org/microg/gms/location/ThrottleBehaviorUtil.java diff --git a/play-services-base/src/main/java/com/google/android/gms/common/internal/ClientIdentity.java b/play-services-base/src/main/java/com/google/android/gms/common/internal/ClientIdentity.java new file mode 100644 index 000000000..68e2df66e --- /dev/null +++ b/play-services-base/src/main/java/com/google/android/gms/common/internal/ClientIdentity.java @@ -0,0 +1,39 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.common.internal; + +import androidx.annotation.NonNull; +import org.microg.safeparcel.AutoSafeParcelable; + +import java.util.Objects; + +public class ClientIdentity extends AutoSafeParcelable { + @Field(1) + public int uid; + @Field(2) + public String packageName; + + @Override + public int hashCode() { + return uid; + } + + @NonNull + @Override + public String toString() { + return uid + ":" + packageName; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ClientIdentity that = (ClientIdentity) o; + return uid == that.uid && Objects.equals(packageName, that.packageName); + } + + public static final Creator CREATOR = new AutoCreator(ClientIdentity.class); +} diff --git a/play-services-base/src/main/java/org/microg/gms/common/api/ReturningGoogleApiCall.java b/play-services-base/src/main/java/org/microg/gms/common/api/ReturningGoogleApiCall.java index 5e813d8ba..601f3576f 100644 --- a/play-services-base/src/main/java/org/microg/gms/common/api/ReturningGoogleApiCall.java +++ b/play-services-base/src/main/java/org/microg/gms/common/api/ReturningGoogleApiCall.java @@ -7,7 +7,7 @@ package org.microg.gms.common.api; import com.google.android.gms.tasks.TaskCompletionSource; -public interface InstantGoogleApiCall extends PendingGoogleApiCall { +public interface ReturningGoogleApiCall extends PendingGoogleApiCall { R execute(A client) throws Exception; @Override diff --git a/play-services-basement/src/main/java/org/microg/gms/utils/WorkSourceUtil.java b/play-services-basement/src/main/java/org/microg/gms/utils/WorkSourceUtil.java new file mode 100644 index 000000000..78689b5a5 --- /dev/null +++ b/play-services-basement/src/main/java/org/microg/gms/utils/WorkSourceUtil.java @@ -0,0 +1,63 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.microg.gms.utils; + +import android.os.Build; +import android.os.WorkSource; +import android.util.Log; + +import java.lang.reflect.Method; + +import static android.os.Build.VERSION.SDK_INT; + +public class WorkSourceUtil { + private static final String TAG = "WorkSourceUtil"; + + private static Method getMethod(String name, Class... parameterTypes) throws Exception { + Method method = WorkSource.class.getMethod(name, parameterTypes); + method.setAccessible(true); + return method; + } + + private static T invokeMethod(WorkSource workSource, Method method, Object... args) throws Exception { + return (T) method.invoke(workSource, args); + } + + private static T invokeMethod(WorkSource workSource, String name, Object... args) throws Exception { + return invokeMethod(workSource, getMethod(name), args); + } + + public static void add(WorkSource workSource, int uid, String packageName) { + try { + invokeMethod(workSource, getMethod("add", Integer.TYPE, String.class), uid, packageName); + } catch (Exception e) { + try { + invokeMethod(workSource, getMethod("add", Integer.TYPE), uid); + } catch (Exception ex) { + // Ignore + } + } + } + + public static int size(WorkSource workSource) { + try { + return invokeMethod(workSource, "size"); + } catch (Exception e) { + return 0; + } + } + + public static boolean isEmpty(WorkSource workSource) { + if (SDK_INT >= 28) { + try { + return invokeMethod(workSource, "isEmpty"); + } catch (Exception e) { + // Ignore and fall-through to size() + } + } + return size(workSource) == 0; + } +} diff --git a/play-services-location/build.gradle b/play-services-location/build.gradle index 3e8d6b8f9..9647c82e3 100644 --- a/play-services-location/build.gradle +++ b/play-services-location/build.gradle @@ -4,6 +4,8 @@ */ apply plugin: 'com.android.library' +apply plugin: 'maven-publish' +apply plugin: 'signing' android { compileSdkVersion androidCompileSdk @@ -21,6 +23,10 @@ android { } } +apply from: '../gradle/publish-android.gradle' + +description = 'microG implementation of play-services-location' + dependencies { // Dependencies from play-services-location:21.0.1 api project(':play-services-base') diff --git a/play-services-location/core/src/main/java/org/microg/gms/location/GoogleLocationManager.java b/play-services-location/core/src/main/java/org/microg/gms/location/GoogleLocationManager.java index 2e3f68f18..7b665958f 100644 --- a/play-services-location/core/src/main/java/org/microg/gms/location/GoogleLocationManager.java +++ b/play-services-location/core/src/main/java/org/microg/gms/location/GoogleLocationManager.java @@ -44,8 +44,8 @@ import static android.Manifest.permission.ACCESS_COARSE_LOCATION; import static android.Manifest.permission.ACCESS_FINE_LOCATION; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.location.LocationManager.GPS_PROVIDER; -import static com.google.android.gms.location.LocationRequest.PRIORITY_HIGH_ACCURACY; -import static com.google.android.gms.location.LocationRequest.PRIORITY_NO_POWER; +import static com.google.android.gms.location.Priority.PRIORITY_HIGH_ACCURACY; +import static com.google.android.gms.location.Priority.PRIORITY_PASSIVE; import androidx.lifecycle.Lifecycle; @@ -159,7 +159,7 @@ public class GoogleLocationManager implements LocationChangeListener { } else { Log.w(TAG, "Not providing high accuracy location: missing permission"); } - if (networkProvider != null && request.hasCoarsePermission() && request.locationRequest.getPriority() != PRIORITY_NO_POWER) { + if (networkProvider != null && request.hasCoarsePermission() && request.locationRequest.getPriority() != PRIORITY_PASSIVE) { Log.d(TAG, "Registering request with low accuracy location provider"); networkProvider.addRequest(request); } else if (networkProvider != null && old != null) { @@ -168,7 +168,13 @@ public class GoogleLocationManager implements LocationChangeListener { } else { Log.w(TAG, "Not providing low accuracy location: missing permission"); } - handler.postDelayed(this::onLocationChanged, request.locationRequest.getFastestInterval()); + Location lastLocation = getLocation(request.hasFinePermission(), request.hasCoarsePermission()); + if (lastLocation != null && lastLocation.getTime() > System.currentTimeMillis() - request.locationRequest.getMaxUpdateAgeMillis()) { + Log.d(TAG, "Reporting previous location as it's newer than " + request.locationRequest.getMaxUpdateAgeMillis() + "ms"); + request.report(lastLocation); + } else { + Log.d(TAG, "Not reporting previous location as it's older than " + request.locationRequest.getMaxUpdateAgeMillis() + "ms"); + } } public void requestLocationUpdates(LocationRequest request, ILocationListener listener, String packageName) { diff --git a/play-services-location/core/src/main/java/org/microg/gms/location/GoogleLocationManagerServiceImpl.java b/play-services-location/core/src/main/java/org/microg/gms/location/GoogleLocationManagerServiceImpl.java index 4187bbbd9..bb21811f8 100644 --- a/play-services-location/core/src/main/java/org/microg/gms/location/GoogleLocationManagerServiceImpl.java +++ b/play-services-location/core/src/main/java/org/microg/gms/location/GoogleLocationManagerServiceImpl.java @@ -43,6 +43,7 @@ import com.google.android.gms.location.LocationSettingsRequest; import com.google.android.gms.location.LocationSettingsResult; import com.google.android.gms.location.LocationSettingsStates; import com.google.android.gms.location.internal.DeviceOrientationRequestUpdateData; +import com.google.android.gms.location.internal.IFusedLocationProviderCallback; import com.google.android.gms.location.internal.IGeofencerCallbacks; import com.google.android.gms.location.internal.IGoogleLocationManagerService; import com.google.android.gms.location.internal.ISettingsCallbacks; @@ -157,6 +158,12 @@ public class GoogleLocationManagerServiceImpl extends IGoogleLocationManagerServ return getLocationManager().getLastLocation(PackageUtils.getCallingPackage(context)); } + @Override + public void flushLocations(IFusedLocationProviderCallback callback) throws RemoteException { + Log.d(TAG, "flushLocations"); + //getLocationManager().flushLocations(); + } + @Override public void requestLocationUpdatesWithListener(LocationRequest request, final ILocationListener listener) throws RemoteException { @@ -355,14 +362,14 @@ public class GoogleLocationManagerServiceImpl extends IGoogleLocationManagerServ public void requestLocationUpdatesInternalWithListener(LocationRequestInternal request, ILocationListener listener) throws RemoteException { Log.d(TAG, "requestLocationUpdatesInternalWithListener: " + request); - getLocationManager().requestLocationUpdates(request.request, listener, PackageUtils.getCallingPackage(context)); + getLocationManager().requestLocationUpdates(request.getRequest(), listener, PackageUtils.getCallingPackage(context)); } @Override public void requestLocationUpdatesInternalWithIntent(LocationRequestInternal request, PendingIntent callbackIntent) throws RemoteException { Log.d(TAG, "requestLocationUpdatesInternalWithIntent: " + request); - getLocationManager().requestLocationUpdates(request.request, callbackIntent, PackageUtils.packageFromPendingIntent(callbackIntent)); + getLocationManager().requestLocationUpdates(request.getRequest(), callbackIntent, PackageUtils.packageFromPendingIntent(callbackIntent)); } @Override diff --git a/play-services-location/core/src/main/java/org/microg/gms/location/LocationRequestHelper.java b/play-services-location/core/src/main/java/org/microg/gms/location/LocationRequestHelper.java index aa8d21608..52119defc 100644 --- a/play-services-location/core/src/main/java/org/microg/gms/location/LocationRequestHelper.java +++ b/play-services-location/core/src/main/java/org/microg/gms/location/LocationRequestHelper.java @@ -55,6 +55,7 @@ public class LocationRequestHelper { public PendingIntent pendingIntent; public ILocationCallback callback; public String id = UUID.randomUUID().toString(); + public final long start; private Location lastReport; private int numReports = 0; @@ -64,6 +65,7 @@ public class LocationRequestHelper { this.locationRequest = locationRequest; this.packageName = packageName; this.uid = uid; + this.start = SystemClock.elapsedRealtime(); this.initialHasFinePermission = context.getPackageManager().checkPermission(ACCESS_FINE_LOCATION, packageName) == PackageManager.PERMISSION_GRANTED; this.initialHasCoarsePermission = context.getPackageManager().checkPermission(ACCESS_COARSE_LOCATION, packageName) == PackageManager.PERMISSION_GRANTED; @@ -82,7 +84,7 @@ public class LocationRequestHelper { } public LocationRequestHelper(Context context, String packageName, int uid, LocationRequestUpdateData data) { - this(context, data.request.request, packageName, uid); + this(context, data.request.getRequest(), packageName, uid); this.listener = data.listener; this.pendingIntent = data.pendingIntent; this.callback = data.callback; @@ -90,7 +92,7 @@ public class LocationRequestHelper { public boolean isActive() { if (!hasCoarsePermission()) return false; - if (locationRequest.getExpirationTime() < SystemClock.elapsedRealtime()) return false; + if (locationRequest.getExpirationTime() < SystemClock.elapsedRealtime() || locationRequest.getDurationMillis() < (SystemClock.elapsedRealtime() - start)) return false; if (listener != null) { try { return listener.asBinder().isBinderAlive(); @@ -127,10 +129,10 @@ public class LocationRequestHelper { if (location.equals(lastReport)) { return true; } - if (location.getTime() - lastReport.getTime() < locationRequest.getFastestInterval()) { + if (location.getTime() - lastReport.getTime() < locationRequest.getMinUpdateIntervalMillis()) { return true; } - if (location.distanceTo(lastReport) < locationRequest.getSmallestDisplacement()) { + if (location.distanceTo(lastReport) < locationRequest.getMinUpdateDistanceMeters()) { return true; } } @@ -157,9 +159,11 @@ public class LocationRequestHelper { } catch (RemoteException e) { return false; } + } else { + return false; } numReports++; - return numReports < locationRequest.getNumUpdates(); + return numReports < locationRequest.getMaxUpdates(); } @Override @@ -251,7 +255,11 @@ public class LocationRequestHelper { } public void dump(PrintWriter writer) { - writer.println(" " + id + " package=" + packageName); + String type = "unknown"; + if (listener != null) type = "listener"; + if (pendingIntent != null) type = "pending intent"; + if (callback != null) type = "callback"; + writer.println(" " + id + " package=" + packageName + " type=" + type); writer.println(" request: " + locationRequest); writer.println(" last location: " + lastReport); } diff --git a/play-services-location/core/src/main/java/org/microg/gms/location/RealLocationProvider.java b/play-services-location/core/src/main/java/org/microg/gms/location/RealLocationProvider.java index c9111b9a6..d66c3a62c 100644 --- a/play-services-location/core/src/main/java/org/microg/gms/location/RealLocationProvider.java +++ b/play-services-location/core/src/main/java/org/microg/gms/location/RealLocationProvider.java @@ -126,10 +126,10 @@ public class RealLocationProvider { float minDistance = Float.MAX_VALUE; StringBuilder sb = new StringBuilder(); for (LocationRequestHelper request : requests) { - minTime = Math.min(request.locationRequest.getInterval(), minTime); - minDistance = Math.min(request.locationRequest.getSmallestDisplacement(), minDistance); + minTime = Math.min(request.locationRequest.getIntervalMillis(), minTime); + minDistance = Math.min(request.locationRequest.getMinUpdateDistanceMeters(), minDistance); if (sb.length() != 0) sb.append(", "); - sb.append(request.packageName).append(":").append(request.locationRequest.getInterval()).append("ms"); + sb.append(request.packageName).append(":").append(request.locationRequest.getIntervalMillis()).append("ms"); } if (minTime > MIN_GPS_TIME && name.equals("gps")) { Log.d(TAG, name + ": ignoring request as " + minTime + "ms (" + sb + "), is less than " + MIN_GPS_TIME); diff --git a/play-services-location/core/src/main/java/org/microg/gms/location/UnifiedLocationProvider.kt b/play-services-location/core/src/main/java/org/microg/gms/location/UnifiedLocationProvider.kt index 2edda75cd..5d9f0b5d0 100644 --- a/play-services-location/core/src/main/java/org/microg/gms/location/UnifiedLocationProvider.kt +++ b/play-services-location/core/src/main/java/org/microg/gms/location/UnifiedLocationProvider.kt @@ -114,7 +114,7 @@ class UnifiedLocationProvider(private val context: Context, private val changeLi client.cancelLocationRequestById(id) } for (request in requests.filter { it.id !in activeRequestIds }) { - client.updateLocationRequest(LocationRequest(listener, request.locationRequest.interval, request.locationRequest.numUpdates, request.id), Bundle().apply { + client.updateLocationRequest(LocationRequest(listener, request.locationRequest.intervalMillis, request.locationRequest.maxUpdates, request.id), Bundle().apply { putString("packageName", request.packageName) putString("source", "GoogleLocationManager") }) diff --git a/play-services-location/src/main/aidl/com/google/android/gms/location/internal/IGoogleLocationManagerService.aidl b/play-services-location/src/main/aidl/com/google/android/gms/location/internal/IGoogleLocationManagerService.aidl index 6211d27d4..6df446c78 100644 --- a/play-services-location/src/main/aidl/com/google/android/gms/location/internal/IGoogleLocationManagerService.aidl +++ b/play-services-location/src/main/aidl/com/google/android/gms/location/internal/IGoogleLocationManagerService.aidl @@ -9,6 +9,7 @@ import com.google.android.gms.common.api.internal.IStatusCallback; //import com.google.android.gms.location.places.AutocompleteFilter; //import com.google.android.gms.location.places.internal.IPlacesCallbacks; import com.google.android.gms.location.internal.DeviceOrientationRequestUpdateData; +import com.google.android.gms.location.internal.IFusedLocationProviderCallback; import com.google.android.gms.location.internal.ISettingsCallbacks; import com.google.android.gms.location.internal.LocationRequestInternal; import com.google.android.gms.location.internal.LocationRequestUpdateData; @@ -59,7 +60,7 @@ interface IGoogleLocationManagerService { void removeLocationUpdatesWithListener(ILocationListener listener) = 9; void removeLocationUpdatesWithIntent(in PendingIntent callbackIntent) = 10; void updateLocationRequest(in LocationRequestUpdateData locationRequestUpdateData) = 58; -// void flushLocations(IFusedLocationProviderCallback callback) = 66; + void flushLocations(IFusedLocationProviderCallback callback) = 66; void setMockMode(boolean mockMode) = 11; void setMockLocation(in Location mockLocation) = 12; diff --git a/play-services-location/src/main/java/com/google/android/gms/location/FusedLocationProviderClient.java b/play-services-location/src/main/java/com/google/android/gms/location/FusedLocationProviderClient.java index 2d7bd640f..bfecc386b 100644 --- a/play-services-location/src/main/java/com/google/android/gms/location/FusedLocationProviderClient.java +++ b/play-services-location/src/main/java/com/google/android/gms/location/FusedLocationProviderClient.java @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2020, microG Project Team + * 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. @@ -9,20 +9,19 @@ package com.google.android.gms.location; import android.Manifest; +import android.app.PendingIntent; import android.content.Context; +import android.content.Intent; import android.location.Location; import android.os.Looper; import com.google.android.gms.common.api.Api; import com.google.android.gms.common.api.GoogleApi; -import com.google.android.gms.common.api.HasApiKey; import com.google.android.gms.tasks.Task; -import com.google.android.gms.tasks.TaskCompletionSource; import org.microg.gms.common.PublicApi; -import org.microg.gms.common.api.InstantGoogleApiCall; -import org.microg.gms.common.api.PendingGoogleApiCall; -import org.microg.gms.location.LocationClientImpl; + +import java.util.concurrent.Executor; /** * The main entry point for interacting with the Fused Location Provider (FLP). In order to obtain an instance of this @@ -56,7 +55,7 @@ import org.microg.gms.location.LocationClientImpl; @PublicApi public abstract class FusedLocationProviderClient extends GoogleApi { @PublicApi(exclude = true) - public FusedLocationProviderClient(Context context) { + protected FusedLocationProviderClient(Context context) { super(context, LocationServices.API); } @@ -79,10 +78,74 @@ public abstract class FusedLocationProviderClient extends GoogleApi + * When the returned {@link Task} is complete, then you can assume that any pending batched locations have already been + * delivered. + */ public abstract Task flushLocations(); + /** + * Returns the most recent historical location currently available. Will return null if no historical location is available. The + * historical location may be of an arbitrary age, so clients should check how old the location is to see if it suits their + * purposes. + */ public abstract Task getLastLocation(); + /** + * Removes all location updates for the given listener. + */ + public abstract Task removeLocationUpdates(LocationListener listener); + + /** + * Removes all location updates for the given callback. + */ + public abstract Task removeLocationUpdates(LocationCallback callback); + + /** + * Removes all location updates for the given pending intent. + */ + public abstract Task removeLocationUpdates(PendingIntent pendingIntent); + + /** + * Requests location updates with the given request and results delivered to the given listener on the specified {@link Looper}. A + * previous request for location updates for the same listener will be replaced by this request. If the location request has a + * priority higher than {@link Priority#PRIORITY_PASSIVE}, a wakelock may be held on the client's behalf while delivering locations. + *

+ * Use {@link #removeLocationUpdates(LocationListener)} to stop location updates once no longer needed. + *

+ * Depending on the arguments passed in through the {@link LocationRequest}, locations from the past may be delivered when + * the listener is first registered. Clients should ensure they are checking location timestamps appropriately if necessary. + *

+ * If the given Looper is null, the Looper associated with the calling thread will be used instead. + * + * @throws IllegalStateException if {@code looper} is null and the calling thread has not called {@link Looper#prepare()} + */ + public abstract Task requestLocationUpdates(LocationRequest request, LocationListener listener, Looper looper); + + /** + * Requests location updates with the given request and results delivered to the given callback on the specified {@link Executor}. + * A previous request for location updates for the same callback will be replaced by this request. If the location request has + * a priority higher than {@link Priority#PRIORITY_PASSIVE}, a wakelock may be held on the client's behalf while delivering + * locations. A wakelock will not be held while delivering availability updates. + *

+ * Use {@link #removeLocationUpdates(LocationCallback)} to stop location updates once no longer needed. + *

+ * Depending on the arguments passed in through the {@link LocationRequest}, locations from the past may be delivered when + * the callback is first registered. Clients should ensure they are checking location timestamps appropriately if necessary. + */ + public abstract Task requestLocationUpdates(LocationRequest request, Executor executor, LocationCallback callback); + + /** + * Requests location updates with the given request and results delivered to the given listener on the specified {@link Executor}. + * + * @see #requestLocationUpdates(LocationRequest, LocationListener, Looper) + */ + public abstract Task requestLocationUpdates(LocationRequest request, Executor executor, LocationListener listener); + /** * Requests location updates with the given request and results delivered to the given callback on the specified * {@link Looper}. A previous request for location updates for the same callback will be replaced by this request. @@ -102,5 +165,28 @@ public abstract class FusedLocationProviderClient extends GoogleApi requestLocationUpdates(LocationRequest request, LocationCallback callback, Looper looper); - + /** + * Requests location updates with the given request and results delivered via the specified {@link PendingIntent}. A previous + * request for location updates for the same pending intent will be replaced by this request. If the location request has a + * priority higher than {@link Priority#PRIORITY_PASSIVE}, a wakelock may be held on the client's behalf while delivering + * locations. A wakelock will not be held while delivering availability updates. + *

+ * Location updates should be extracted from the received {@link Intent} via {@link LocationResult#hasResult(Intent)} and + * {@link LocationResult#extractResult(Intent)}. Availability updates should be extracted from the {@link Intent} via + * {@link LocationAvailability#hasLocationAvailability(Intent)} and + * {@link LocationAvailability#extractLocationAvailability(Intent)}. + *

+ * This method is suited for receiving location updates in the background, even when the receiving app may have been + * killed by the system. Using a {@link PendingIntent} allows the target component to be started and receive location updates. + * For foreground use cases prefer to listen for location updates via a listener or callback instead of a pending intent. + *

+ * {@link PendingIntent} location requests are automatically removed when the client application is reset (for example, when the + * client application is upgraded, restarted, removed, or force-quit), or if the pending intent is canceled. + *

+ * Use {@link #removeLocationUpdates(PendingIntent)} to stop location updates once no longer needed. + *

+ * Depending on the arguments passed in through the {@link LocationRequest}, locations from the past may be delivered when + * the callback is first registered. Clients should ensure they are checking location timestamps appropriately if necessary. + */ + public abstract Task requestLocationUpdates(LocationRequest request, PendingIntent pendingIntent); } diff --git a/play-services-location/src/main/java/com/google/android/gms/location/Granularity.java b/play-services-location/src/main/java/com/google/android/gms/location/Granularity.java new file mode 100644 index 000000000..a45ca52ff --- /dev/null +++ b/play-services-location/src/main/java/com/google/android/gms/location/Granularity.java @@ -0,0 +1,43 @@ +/* + * 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.location; + +import android.Manifest; +import androidx.annotation.IntDef; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Location granularity levels to be used with APIs within FusedLocationProviderClient. + */ +@Target({ElementType.TYPE_USE}) +@Retention(RetentionPolicy.SOURCE) +@IntDef({Granularity.GRANULARITY_PERMISSION_LEVEL, Granularity.GRANULARITY_COARSE, Granularity.GRANULARITY_FINE}) +public @interface Granularity { + /** + * The desired location granularity should correspond to the client permission level. The client will be delivered fine + * locations while it has the {@link Manifest.permission#ACCESS_FINE_LOCATION} permission, coarse locations while it has + * only the {@link Manifest.permission#ACCESS_COARSE_LOCATION} permission, and no location if it lacks either. + */ + int GRANULARITY_PERMISSION_LEVEL = 0; + /** + * The desired location granularity is always coarse, regardless of the client permission level. The client will be delivered + * coarse locations while it has the {@link Manifest.permission#ACCESS_FINE_LOCATION} or + * {@link Manifest.permission#ACCESS_COARSE_LOCATION} permission, and no location if it lacks either. + */ + int GRANULARITY_COARSE = 1; + /** + * The desired location granularity is always fine, regardless of the client permission level. The client will be delivered fine + * locations while it has the {@link Manifest.permission#ACCESS_FINE_LOCATION}, and no location if it lacks that permission. + */ + int GRANULARITY_FINE = 2; +} diff --git a/play-services-location/src/main/java/com/google/android/gms/location/LocationRequest.java b/play-services-location/src/main/java/com/google/android/gms/location/LocationRequest.java index c418116eb..c9805162c 100644 --- a/play-services-location/src/main/java/com/google/android/gms/location/LocationRequest.java +++ b/play-services-location/src/main/java/com/google/android/gms/location/LocationRequest.java @@ -1,26 +1,30 @@ /* - * Copyright (C) 2013-2017 microG Project Team - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * SPDX-FileCopyrightText: 2015 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.location; +import android.Manifest; import android.os.SystemClock; +import android.os.WorkSource; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.RequiresPermission; +import com.google.android.gms.common.internal.ClientIdentity; +import org.microg.gms.common.PublicApi; +import org.microg.gms.location.GranularityUtil; +import org.microg.gms.location.PriorityUtil; +import org.microg.gms.location.ThrottleBehaviorUtil; +import org.microg.gms.utils.WorkSourceUtil; import org.microg.safeparcel.AutoSafeParcelable; import java.util.Arrays; +import java.util.Objects; /** * A data object that contains quality of service parameters for requests to the @@ -73,455 +77,775 @@ import java.util.Arrays; public class LocationRequest extends AutoSafeParcelable { /** - * Used with {@link #setPriority(int)} to request "block" level accuracy. - *

- * Block level accuracy is considered to be about 100 meter accuracy. Using a coarse accuracy - * such as this often consumes less power. + * @deprecated Use {@link Priority#PRIORITY_BALANCED_POWER_ACCURACY} instead. */ + @Deprecated public static final int PRIORITY_BALANCED_POWER_ACCURACY = 102; /** - * Used with {@link #setPriority(int)} to request the most accurate locations available. - *

- * This will return the finest location available. + * @deprecated Use {@link Priority#PRIORITY_HIGH_ACCURACY} instead. */ + @Deprecated public static final int PRIORITY_HIGH_ACCURACY = 100; /** - * Used with {@link #setPriority(int)} to request "city" level accuracy. - *

- * City level accuracy is considered to be about 10km accuracy. Using a coarse accuracy such as - * this often consumes less power. + * @deprecated Use {@link Priority#PRIORITY_LOW_POWER} instead. */ + @Deprecated public static final int PRIORITY_LOW_POWER = 104; /** - * Used with {@link #setPriority(int)} to request the best accuracy possible with zero - * additional power consumption. - *

- * No locations will be returned unless a different client has requested location updates in - * which case this request will act as a passive listener to those locations. + * @deprecated Use {@link Priority#PRIORITY_PASSIVE} instead. */ + @Deprecated public static final int PRIORITY_NO_POWER = 105; @Field(1000) private int versionCode = 1; @Field(1) + @Priority private int priority; @Field(2) - private long interval; + private long intervalMillis; @Field(3) - private long fastestInterval; + private long minUpdateIntervalMillis; @Field(4) + @Deprecated private boolean explicitFastestInterval; @Field(5) + @Deprecated private long expirationTime; @Field(6) - private int numUpdates; + private int maxUpdates; @Field(7) - private float smallestDisplacement; + private float minUpdateDistanceMeters; @Field(8) - private long maxWaitTime; + private long maxUpdateDelayMillis; @Field(9) private boolean waitForAccurateLocation; - + @Field(10) + private long durationMillis; + @Field(11) + private long maxUpdateAgeMillis; + @Field(12) + @Granularity + private int granularity; + @Field(13) + @ThrottleBehavior + private int throttleBehavior; + @Field(14) + @Nullable + private String moduleId; + @Field(15) + private boolean bypass; + @Field(16) + @NonNull + private WorkSource workSource; + @Field(17) + @Nullable + private ClientIdentity impersonation; + + @Deprecated public LocationRequest() { - this.priority = PRIORITY_BALANCED_POWER_ACCURACY; - this.interval = 3600000; - this.fastestInterval = 600000; + this.priority = Priority.PRIORITY_BALANCED_POWER_ACCURACY; + this.intervalMillis = 3600000; + this.minUpdateIntervalMillis = 600000; + this.maxUpdateDelayMillis = 0; + this.durationMillis = Long.MAX_VALUE; + this.maxUpdates = Integer.MAX_VALUE; + this.minUpdateDistanceMeters = 0; + this.waitForAccurateLocation = false; + this.maxUpdateAgeMillis = -1; + this.granularity = Granularity.GRANULARITY_PERMISSION_LEVEL; + this.throttleBehavior = ThrottleBehavior.THROTTLE_BACKGROUND; + this.bypass = false; + this.workSource = new WorkSource(); + + // deprecated this.explicitFastestInterval = false; this.expirationTime = Long.MAX_VALUE; - this.numUpdates = Integer.MAX_VALUE; - this.smallestDisplacement = 0; - this.maxWaitTime = 0; } /** - * Create a location request with default parameters. - *

- * Default parameters are for a block accuracy, slowly updated location. It can then be - * adjusted as required by the applications before passing to the FusedLocationProviderApi. - * - * @return a new location request + * @deprecated Use {@link LocationRequest.Builder} instead. May be removed in a future release. */ + @Deprecated public static LocationRequest create() { return new LocationRequest(); } + @Override + public boolean equals(Object o) { + if (!(o instanceof LocationRequest)) return false; + LocationRequest other = (LocationRequest) o; + + if (this.priority != other.priority) return false; + if (this.intervalMillis != other.intervalMillis && !isPassive()) return false; + if (this.minUpdateIntervalMillis != other.minUpdateIntervalMillis) return false; + if (isBatched() != other.isBatched()) return false; + if (this.maxUpdateDelayMillis != other.maxUpdateDelayMillis && isBatched()) return false; + if (this.durationMillis != other.durationMillis) return false; + if (this.maxUpdates != other.maxUpdates) return false; + if (this.minUpdateDistanceMeters != other.minUpdateDistanceMeters) return false; + if (this.waitForAccurateLocation != other.waitForAccurateLocation) return false; + if (this.granularity != other.granularity) return false; + if (this.throttleBehavior != other.throttleBehavior) return false; + if (this.workSource.equals(other.workSource)) return false; + if (!Objects.equals(this.moduleId, other.moduleId)) return false; + if (!Objects.equals(this.impersonation, other.impersonation)) return false; + + return true; + } + /** - * Get the request expiration time, in milliseconds since boot. - *

- * This value can be compared to {@link SystemClock#elapsedRealtime()} to determine - * the time until expiration. - * - * @return expiration time of request, in milliseconds since boot including suspend + * The duration of this request. A location request will not receive any locations after it has expired, and will be removed + * shortly thereafter. A value of {@link Long#MAX_VALUE} implies an infinite duration. */ + public long getDurationMillis() { + return durationMillis; + } + + /** + * @deprecated Use {@link #getDurationMillis()} instead. Using this method will return the duration added to the current elapsed realtime, which + * may give unexpected results. May be removed in a future release. + */ + @Deprecated public long getExpirationTime() { return expirationTime; } /** - * Get the fastest interval of this request, in milliseconds. - *

- * The system will never provide location updates faster than the minimum of - * {@link #getFastestInterval()} and {@link #getInterval()}. - * - * @return fastest interval in milliseconds, exact + * @deprecated Use {@link #getMinUpdateIntervalMillis()} instead. May be removed in a future release. */ + @Deprecated public long getFastestInterval() { - return fastestInterval; + return minUpdateIntervalMillis; } /** - * Get the desired interval of this request, in milliseconds. - * - * @return desired interval in milliseconds, inexact + * The {@link Granularity} of locations returned for this request. This controls whether fine or coarse locations may be returned. */ + @Granularity + public int getGranularity() { + return granularity; + } + + @Nullable + @PublicApi(exclude = true) + public ClientIdentity getImpersonation() { + return impersonation; + } + + /** + * @deprecated Use {@link #getIntervalMillis()} instead. May be removed in a future release. + */ + @Deprecated public long getInterval() { - return interval; + return intervalMillis; + } + + /** + * The desired interval of location updates. Location updates may arrive faster than this interval (but no faster than + * specified by {@link #getMinUpdateIntervalMillis()}) or slower than this interval (if the request is being throttled for + * example). + */ + public long getIntervalMillis() { + return intervalMillis; + } + + /** + * The maximum age of an initial historical location delivered for this request. A value of 0 indicates that no initial historical + * location will be delivered, only freshly derived locations. A value {@link Long#MAX_VALUE} represents an effectively unbounded + * maximum age. + */ + public long getMaxUpdateAgeMillis() { + return maxUpdateAgeMillis; + } + + /** + * The longest a location update may be delayed. This parameter controls location batching behavior. If this is set to a value + * at least 2x larger than the interval specified by {@link #getIntervalMillis()}, then a device may (but is not required to) save + * power by delivering locations in batches. If clients do not require immediate delivery, consider setting this value as high + * as is reasonable to allow for additional power savings. + *

+ * For example, if a request is made with a 2s interval and a 10s maximum update delay, this implies that the device may + * choose to deliver batches of 5 locations every 10s (where each location should represent a point in time ~2s after the + * previous). + *

+ * Support for batching may vary by device type, so simply allowing batching via this parameter does not imply a client will + * receive batched results on all devices. + *

+ * {@link FusedLocationProviderClient#flushLocations()} may be used to flush locations that have been batched, but not + * delivered yet. + */ + public long getMaxUpdateDelayMillis() { + return maxUpdateDelayMillis; + } + + /** + * The maximum number of updates delivered to this request. A location request will not receive any locations after the + * maximum number of updates has been reached, and will be removed shortly thereafter. A value of {@link Integer#MAX_VALUE} + * implies an unlimited number of updates. + */ + public int getMaxUpdates() { + return maxUpdates; } /** - * Gets the maximum wait time in milliseconds for location updates. If the wait time is smaller than the interval - * requested with {@link #setInterval(long)}, then the interval will be used instead. - * - * @return maximum wait time in milliseconds, inexact - * @see #setMaxWaitTime(long) + * @deprecated Use {@link #getMaxUpdateDelayMillis()} instead. May be removed in a future release. */ + @Deprecated public long getMaxWaitTime() { - return maxWaitTime; + return maxUpdateDelayMillis; } /** - * Get the number of updates requested. - *

- * By default this is {@link java.lang.Integer#MAX_VALUE}, which indicates that locations are - * updated until the request is explicitly removed. - * - * @return number of updates + * The minimum distance required between consecutive location updates. If a derived location update is not at least the + * specified distance away from the previous location update delivered to the client, it will not be delivered. This may also + * allow additional power savings under some circumstances. */ + public float getMinUpdateDistanceMeters() { + return minUpdateDistanceMeters; + } + + /** + * The fastest allowed interval of location updates. Location updates may arrive faster than the desired interval + * ({@link #getIntervalMillis()}), but will never arrive faster than specified here. FLP APIs make some allowance for jitter with + * the minimum update interval, so clients need not worry about location updates that arrive a couple milliseconds too early + * being rejected. + */ + public long getMinUpdateIntervalMillis() { + return minUpdateIntervalMillis; + } + + @PublicApi(exclude = true) + @Nullable + public String getModuleId() { + return moduleId; + } + + /** + * @deprecated Use {@link #getMaxUpdates()} instead. May be removed in a future release. + */ + @Deprecated public int getNumUpdates() { - return numUpdates; + return maxUpdates; } /** - * Get the quality of the request. - * - * @return an accuracy constant + * The {@link Priority} of the location request. */ + @Priority public int getPriority() { return priority; } /** - * Get the minimum displacement between location updates in meters - *

- * By default this is 0. - * - * @return minimum displacement between location updates in meters + * @deprecated Use {@link #getMinUpdateDistanceMeters()} instead. */ + @Deprecated public float getSmallestDisplacement() { - return smallestDisplacement; + return minUpdateDistanceMeters; } - @Override - public boolean equals(Object o) { - if (this == o) - return true; - if (o == null || getClass() != o.getClass()) - return false; - - LocationRequest that = (LocationRequest) o; - - if (expirationTime != that.expirationTime) - return false; - if (explicitFastestInterval != that.explicitFastestInterval) - return false; - if (fastestInterval != that.fastestInterval) - return false; - if (interval != that.interval) - return false; - if (maxWaitTime != that.maxWaitTime) - return false; - if (numUpdates != that.numUpdates) - return false; - if (priority != that.priority) - return false; - if (Float.compare(that.smallestDisplacement, smallestDisplacement) != 0) - return false; + @PublicApi(exclude = true) + @ThrottleBehavior + public int getThrottleBehavior() { + return throttleBehavior; + } - return true; + @PublicApi(exclude = true) + public WorkSource getWorkSource() { + return workSource; } @Override public int hashCode() { - return Arrays.hashCode( - new Object[]{priority, interval, fastestInterval, explicitFastestInterval, - explicitFastestInterval, numUpdates, smallestDisplacement, maxWaitTime - }); + return Arrays.hashCode(new Object[]{priority, intervalMillis, minUpdateIntervalMillis, workSource}); + } + + /** + * True if this request allows batching (i.e. {@link #getMaxUpdateDelayMillis()} is at least 2x {@link #getIntervalMillis()}). + */ + public boolean isBatched() { + return maxUpdateDelayMillis > 0 && maxUpdateDelayMillis > intervalMillis * 2; + } + + @PublicApi(exclude = true) + public boolean isBypass() { + return bypass; } /** - * Returns whether or not the fastest interval was explicitly specified for the location request. - * - * @return True if the fastest interval was explicitly set for the location request; false otherwise + * @deprecated Do not use. May be removed in a future release. */ + @Deprecated public boolean isFastestIntervalExplicitlySet() { - return explicitFastestInterval; + return true; + } + + /** + * True if the priority is {@link Priority#PRIORITY_PASSIVE}. + */ + public boolean isPassive() { + return priority == Priority.PRIORITY_PASSIVE; } /** - * Returns whether the location services will wait a few seconds initially for accurate locations, if accurate - * locations cannot be computed on the device for {@link #PRIORITY_HIGH_ACCURACY} requests. + * If this request is {@link Priority#PRIORITY_HIGH_ACCURACY}, this will delay delivery of initial low accuracy locations for a + * small amount of time in case a high accuracy location can be delivered instead. */ public boolean isWaitForAccurateLocation() { return waitForAccurateLocation; } /** - * Set the duration of this request, in milliseconds. - *

- * The duration begins immediately (and not when the request is passed to the location client), - * so call this method again if the request is re-used at a later time. - *

- * The location client will automatically stop updates after the request expires. - *

- * The duration includes suspend time. Values less than 0 are allowed, but indicate that the - * request has already expired. - * - * @param millis duration of request in milliseconds - * @return the same object, so that setters can be chained + * @deprecated Use {@link LocationRequest.Builder#setDurationMillis(long)} instead. May be removed in a future release. */ - public LocationRequest setExpirationDuration(long millis) { - expirationTime = SystemClock.elapsedRealtime() + millis; + @Deprecated + @NonNull + public LocationRequest setExpirationDuration(long durationMillis) { + if (durationMillis <= 0) throw new IllegalArgumentException("durationMillis must be greater than 0"); + this.durationMillis = durationMillis; return this; } /** - * Set the request expiration time, in millisecond since boot. - *

- * This expiration time uses the same time base as {@link SystemClock#elapsedRealtime()}. - *

- * The location client will automatically stop updates after the request expires. - *

- * The duration includes suspend time. Values before {@link SystemClock#elapsedRealtime()} are - * allowed, but indicate that the request has already expired. - * - * @param millis expiration time of request, in milliseconds since boot including suspend - * @return the same object, so that setters can be chained + * @deprecated Use {@link LocationRequest.Builder#setDurationMillis(long)} instead. Using this method will express the expiration time in + * terms of duration, which may give unexpected results. May be removed in a future release. */ - public LocationRequest setExpirationTime(long millis) { - expirationTime = millis; + @Deprecated + @NonNull + public LocationRequest setExpirationTime(long elapsedRealtime) { + this.durationMillis = Math.max(1, elapsedRealtime - SystemClock.elapsedRealtime()); return this; } /** - * Explicitly set the fastest interval for location updates, in milliseconds. - *

- * This controls the fastest rate at which your application will receive location updates, - * which might be faster than {@link #setInterval(long)} in some situations (for example, if - * other applications are triggering location updates). - *

- * This allows your application to passively acquire locations at a rate faster than it - * actively acquires locations, saving power. - *

- * Unlike {@link #setInterval(long)}, this parameter is exact. Your application will never - * receive updates faster than this value. - *

- * If you don't call this method, a fastest interval will be selected for you. It will be a - * value faster than your active interval ({@link #setInterval(long)}). - *

- * An interval of 0 is allowed, but not recommended, since location updates may be extremely - * fast on future implementations. - *

- * If {@link #setFastestInterval(long)} is set slower than {@link #setInterval(long)}, then - * your effective fastest interval is {@link #setInterval(long)}. - * - * @param millis fastest interval for updates in milliseconds, exact - * @return the same object, so that setters can be chained - * @throws IllegalArgumentException if the interval is less than zero - */ - public LocationRequest setFastestInterval(long millis) throws IllegalArgumentException { - if (millis < 0) - throw new IllegalArgumentException("interval must not be negative"); - fastestInterval = millis; - explicitFastestInterval = true; + * @deprecated Use {@link LocationRequest.Builder#setMinUpdateIntervalMillis(long)} instead. May be removed in a future release. + */ + @Deprecated + @NonNull + public LocationRequest setFastestInterval(long fastestIntervalMillis) throws IllegalArgumentException { + if (fastestIntervalMillis < 0) throw new IllegalArgumentException("illegal fastest interval: " + fastestIntervalMillis); + this.minUpdateIntervalMillis = fastestIntervalMillis; + explicitFastestInterval = true; // FIXME: Remove return this; } /** - * Set the desired interval for active location updates, in milliseconds. - *

- * The location client will actively try to obtain location updates for your application at - * this interval, so it has a direct influence on the amount of power used by your application. - * Choose your interval wisely. - *

- * This interval is inexact. You may not receive updates at all (if no location sources are - * available), or you may receive them slower than requested. You may also receive them faster - * than requested (if other applications are requesting location at a faster interval). The - * fastest rate that that you will receive updates can be controlled with - * {@link #setFastestInterval(long)}. By default this fastest rate is 6x the interval frequency. - *

- * Applications with only the coarse location permission may have their interval silently - * throttled. - *

- * An interval of 0 is allowed, but not recommended, since location updates may be extremely - * fast on future implementations. - *

- * {@link #setPriority(int)} and {@link #setInterval(long)} are the most important parameters - * on a location request. - * - * @param millis desired interval in millisecond, inexact - * @return the same object, so that setters can be chained - * @throws IllegalArgumentException if the interval is less than zero - */ - public LocationRequest setInterval(long millis) throws IllegalArgumentException { - if (millis < 0) - throw new IllegalArgumentException("interval must not be negative"); - interval = millis; + * @deprecated Use {@link LocationRequest.Builder#setIntervalMillis(long)} instead. May be removed in a future release. + */ + @Deprecated + @NonNull + public LocationRequest setInterval(long intervalMillis) throws IllegalArgumentException { + if (intervalMillis < 0) throw new IllegalArgumentException("intervalMillis must be greater than or equal to 0"); + if (this.minUpdateIntervalMillis == this.intervalMillis / 6) { + this.minUpdateIntervalMillis = intervalMillis / 6; + } + if (this.maxUpdateAgeMillis == this.intervalMillis) { + this.maxUpdateAgeMillis = intervalMillis; + } + this.intervalMillis = intervalMillis; return this; } /** - * Sets the maximum wait time in milliseconds for location updates. - *

- * If you pass a value at least 2x larger than the interval specified with {@link #setInterval(long)}, then - * location delivery may be delayed and multiple locations can be delivered at once. Locations are determined at - * the {@link #setInterval(long)} rate, but can be delivered in batch after the interval you set in this method. - * This can consume less battery and give more accurate locations, depending on the device's hardware capabilities. - * You should set this value to be as large as possible for your needs if you don't need immediate location - * delivery. - * - * @param millis desired maximum wait time in millisecond, inexact - * @return the same object, so that setters can be chained - * @throws IllegalArgumentException if the interval is less than zero - */ - public LocationRequest setMaxWaitTime(long millis) throws IllegalArgumentException { - if (millis < 0) - throw new IllegalArgumentException("interval must not be negative"); - maxWaitTime = millis; + * @deprecated Use {@link LocationRequest.Builder#setMaxUpdateDelayMillis(long)} instead. May be removed in a future release. + */ + @Deprecated + @NonNull + public LocationRequest setMaxWaitTime(long maxWaitTimeMillis) throws IllegalArgumentException { + if (maxWaitTimeMillis < 0) throw new IllegalArgumentException("illegal max wait time: " + maxWaitTimeMillis); + maxUpdateDelayMillis = maxWaitTimeMillis; return this; } /** - * Set the number of location updates. - *

- * By default locations are continuously updated until the request is explicitly removed, - * however you can optionally request a set number of updates. For example, if your application - * only needs a single fresh location, then call this method with a value of 1 before passing - * the request to the location client. - *

- * When using this option care must be taken to either explicitly remove the request when no - * longer needed or to set an expiration with ({@link #setExpirationDuration(long)} or - * {@link #setExpirationTime(long)}. Otherwise in some cases if a location can't be computed, - * this request could stay active indefinitely consuming power. - * - * @param numUpdates the number of location updates requested - * @return the same object, so that setters can be chained - * @throws IllegalArgumentException if numUpdates is 0 or less - */ - public LocationRequest setNumUpdates(int numUpdates) throws IllegalArgumentException { - if (numUpdates <= 0) - throw new IllegalArgumentException("numUpdates must not be 0 or negative"); - this.numUpdates = numUpdates; + * @deprecated Use {@link LocationRequest.Builder#setMaxUpdates(int)} instead. May be removed in a future release. + */ + @Deprecated + @NonNull + public LocationRequest setNumUpdates(int maxUpdates) throws IllegalArgumentException { + if (maxUpdates <= 0) throw new IllegalArgumentException("invalid numUpdates: " + maxUpdates); + this.maxUpdates = maxUpdates; return this; } /** - * Set the priority of the request. - *

- * Use with a priority constant such as {@link #PRIORITY_HIGH_ACCURACY}. No other values are - * accepted. - *

- * The priority of the request is a strong hint to the LocationClient for which location - * sources to use. For example, {@link #PRIORITY_HIGH_ACCURACY} is more likely to use GPS, and - * {@link #PRIORITY_BALANCED_POWER_ACCURACY} is more likely to use WIFI & Cell tower - * positioning, but it also depends on many other factors (such as which sources are available) - * and is implementation dependent. - *

- * {@link #setPriority(int)} and {@link #setInterval(long)} are the most important parameters - * on a location request. - * - * @param priority an accuracy or power constant - * @return the same object, so that setters can be chained - * @throws IllegalArgumentException if the quality constant is not valid - */ - public LocationRequest setPriority(int priority) { - switch (priority) { - default: - throw new IllegalArgumentException("priority is not a known constant"); - case PRIORITY_BALANCED_POWER_ACCURACY: - case PRIORITY_HIGH_ACCURACY: - case PRIORITY_LOW_POWER: - case PRIORITY_NO_POWER: - this.priority = priority; - } + * @deprecated Use {@link LocationRequest.Builder#setPriority(int)} instead. May be removed in a future release. + */ + @Deprecated + @NonNull + public LocationRequest setPriority(@Priority int priority) { + PriorityUtil.checkValidPriority(priority); + this.priority = priority; return this; } /** - * Set the minimum displacement between location updates in meters - *

- * By default this is 0. - * - * @param smallestDisplacementMeters the smallest displacement in meters the user must move - * between location updates. - * @return the same object, so that setters can be chained - * @throws IllegalArgumentException if smallestDisplacementMeters is negative + * @deprecated Use {@link LocationRequest.Builder#setMinUpdateDistanceMeters(float)} instead. May be removed in a future release. */ + @Deprecated + @NonNull public LocationRequest setSmallestDisplacement(float smallestDisplacementMeters) { - if (smallestDisplacementMeters < 0) - throw new IllegalArgumentException("smallestDisplacementMeters must not be negative"); - this.smallestDisplacement = smallestDisplacementMeters; + if (smallestDisplacementMeters < 0) throw new IllegalArgumentException("invalid displacement: " + smallestDisplacementMeters); + this.minUpdateDistanceMeters = smallestDisplacementMeters; return this; } /** - * Sets whether the client wants the locations services to wait a few seconds for accurate locations initially, - * when accurate locations could not be computed on the device immediately after {@link #PRIORITY_HIGH_ACCURACY} - * request is made. By default the location services will wait for accurate locations. - *

- * Note that this only applies to clients with {@link #PRIORITY_HIGH_ACCURACY} requests. - *

- * Also note this only applies to the initial locations computed right after the location request is added. The - * following inaccurate locations may still be delivered to the clients without delay. + * @deprecated Use {@link LocationRequest.Builder#setWaitForAccurateLocation(boolean)} instead. May be removed in a future release. */ + @Deprecated + @NonNull public LocationRequest setWaitForAccurateLocation(boolean waitForAccurateLocation) { this.waitForAccurateLocation = waitForAccurateLocation; return this; } - private static String priorityToString(int priority) { - switch (priority) { - case PRIORITY_HIGH_ACCURACY: - return "PRIORITY_HIGH_ACCURACY"; - case PRIORITY_BALANCED_POWER_ACCURACY: - return "PRIORITY_BALANCED_POWER_ACCURACY"; - case PRIORITY_LOW_POWER: - return "PRIORITY_LOW_POWER"; - case PRIORITY_NO_POWER: - return "PRIORITY_NO_POWER"; - default: - return "???"; - } - } - @Override + @NonNull public String toString() { StringBuilder sb = new StringBuilder(); sb.append("Request["); - sb.append(priorityToString(priority)); - if (priority != PRIORITY_NO_POWER) - sb.append(" requested=").append(interval).append("ms"); - sb.append(" fastest=").append(fastestInterval).append("ms"); - if (maxWaitTime > interval) - sb.append(" maxWait=").append(maxWaitTime).append("ms"); - if (smallestDisplacement > 0) - sb.append(" smallestDisplacement=").append(smallestDisplacement).append("m"); - if (expirationTime != Long.MAX_VALUE) - sb.append(" expireIn=").append(expirationTime - SystemClock.elapsedRealtime()).append("ms"); - if (numUpdates != Integer.MAX_VALUE) - sb.append(" num=").append(numUpdates); + if (isPassive()) { + sb.append(PriorityUtil.priorityToString(priority)); + } else { + sb.append("@"); + sb.append(intervalMillis).append("ms"); + if (isBatched()) { + sb.append("/"); + sb.append(maxUpdateDelayMillis).append("ms"); + } + sb.append(" ").append(PriorityUtil.priorityToString(priority)); + } + if (isPassive() || minUpdateIntervalMillis != intervalMillis) + sb.append(", minUpdateInterval=").append(minUpdateIntervalMillis).append("ms"); + if (minUpdateDistanceMeters > 0) + sb.append(", minUpdateDistance=").append(minUpdateDistanceMeters).append("m"); + if (!isPassive() ? maxUpdateAgeMillis != intervalMillis : maxUpdateAgeMillis != Long.MAX_VALUE) + sb.append(", maxUpdateAge=").append(maxUpdateAgeMillis).append("ms"); + if (durationMillis != Long.MAX_VALUE) + sb.append(", duration=").append(durationMillis).append("ms"); + if (maxUpdates != Integer.MAX_VALUE) + sb.append(", maxUpdates").append(maxUpdates); + if (throttleBehavior != 0) + sb.append(", ").append(ThrottleBehaviorUtil.throttleBehaviorToString(throttleBehavior)); + if (granularity != 0) + sb.append(", ").append(GranularityUtil.granularityToString(granularity)); + if (waitForAccurateLocation) + sb.append(", waitForAccurateLocation"); + if (bypass) + sb.append(", bypass"); + if (moduleId != null) + sb.append(", moduleId=").append(moduleId); + if (!WorkSourceUtil.isEmpty(workSource)) + sb.append(", ").append(workSource); + if (impersonation != null) + sb.append(", impersonation=").append(impersonation); sb.append("]"); return sb.toString(); } + /** + * Builder for {@link LocationRequest}. + */ + public static final class Builder { + /** + * Represents a maximum update age that is the same as the interval. + */ + public static final long IMPLICIT_MAX_UPDATE_AGE = -1; + /** + * Represents a minimum update interval that is the same as the interval. + */ + public static final long IMPLICIT_MIN_UPDATE_INTERVAL = -1; + + @Priority + private int priority; + private long intervalMillis; + private long minUpdateIntervalMillis; + private long maxUpdateDelayMillis; + private long durationMillis; + private int maxUpdates; + private float minUpdateDistanceMeters; + private boolean waitForAccurateLocation; + private long maxUpdateAgeMillis; + @Granularity + private int granularity; + @ThrottleBehavior + private int throttleBehavior; + @Nullable + private String moduleId; + private boolean bypass; + @Nullable + private WorkSource workSource; + @Nullable + private ClientIdentity impersonation; + + /** + * Constructs a Builder with the given interval, and default values for all other fields. + */ + public Builder(long intervalMillis) { + this(Priority.PRIORITY_BALANCED_POWER_ACCURACY, intervalMillis); + } + + /** + * Constructs a Builder with the given priority and interval, and default values for all other fields. + */ + public Builder(@Priority int priority, long intervalMillis) { + if (intervalMillis < 0) throw new IllegalArgumentException("intervalMillis must be greater than or equal to 0"); + PriorityUtil.checkValidPriority(priority); + this.priority = priority; + this.intervalMillis = intervalMillis; + this.minUpdateIntervalMillis = IMPLICIT_MIN_UPDATE_INTERVAL; + this.maxUpdateDelayMillis = 0; + this.durationMillis = Long.MAX_VALUE; + this.maxUpdates = Integer.MAX_VALUE; + this.minUpdateDistanceMeters = 0; + this.waitForAccurateLocation = true; + this.maxUpdateAgeMillis = IMPLICIT_MAX_UPDATE_AGE; + this.granularity = Granularity.GRANULARITY_PERMISSION_LEVEL; + this.throttleBehavior = ThrottleBehavior.THROTTLE_BACKGROUND; + this.moduleId = null; + this.bypass = false; + this.workSource = null; + this.impersonation = null; + } + + /** + * Constructs a Builder with values copied from the given {@link LocationRequest}. + */ + public Builder(LocationRequest request) { + this.priority = request.getPriority(); + this.intervalMillis = request.getIntervalMillis(); + this.minUpdateIntervalMillis = request.getMinUpdateIntervalMillis(); + this.maxUpdateDelayMillis = request.getMaxUpdateDelayMillis(); + this.durationMillis = request.getDurationMillis(); + this.maxUpdates = request.getMaxUpdates(); + this.minUpdateDistanceMeters = request.getMinUpdateDistanceMeters(); + this.waitForAccurateLocation = request.isWaitForAccurateLocation(); + this.maxUpdateAgeMillis = request.getMaxUpdateAgeMillis(); + this.granularity = request.getGranularity(); + this.throttleBehavior = request.getThrottleBehavior(); + this.moduleId = request.getModuleId(); + this.bypass = request.isBypass(); + this.workSource = request.getWorkSource(); + this.impersonation = request.getImpersonation(); + } + + /** + * Builds a new {@link LocationRequest}. + */ + @NonNull + public LocationRequest build() { + LocationRequest request = new LocationRequest(); + request.priority = priority; + request.intervalMillis = intervalMillis; + if (minUpdateIntervalMillis == IMPLICIT_MIN_UPDATE_INTERVAL) { + request.minUpdateIntervalMillis = intervalMillis; + } else { + request.minUpdateIntervalMillis = priority == Priority.PRIORITY_PASSIVE ? minUpdateIntervalMillis : Math.min(intervalMillis, minUpdateIntervalMillis); + } + request.maxUpdateDelayMillis = Math.max(maxUpdateDelayMillis, intervalMillis); + request.durationMillis = durationMillis; + request.maxUpdates = maxUpdates; + request.minUpdateDistanceMeters = minUpdateDistanceMeters; + request.waitForAccurateLocation = waitForAccurateLocation; + request.maxUpdateAgeMillis = maxUpdateAgeMillis != IMPLICIT_MAX_UPDATE_AGE ? maxUpdateAgeMillis : intervalMillis; + request.granularity = granularity; + request.throttleBehavior = throttleBehavior; + request.moduleId = moduleId; + request.bypass = bypass; + request.workSource = workSource; + request.impersonation = impersonation; + return request; + } + + @NonNull + @PublicApi(exclude = true) + @RequiresPermission(anyOf = {"android.permission.WRITE_SECURE_SETTINGS", "android.permission.LOCATION_BYPASS"}) + public Builder setBypass(boolean bypass) { + this.bypass = bypass; + return this; + } + + /** + * Sets the duration of this request. A location request will not receive any locations after it has expired, and will be + * removed shortly thereafter. A value of {@link Long#MAX_VALUE} implies an infinite duration. + *

+ * The default value is {@link Long#MAX_VALUE}. + */ + @NonNull + public Builder setDurationMillis(long durationMillis) { + if (durationMillis <= 0) throw new IllegalArgumentException("intervalMillis must be greater than 0"); + this.durationMillis = durationMillis; + return this; + } + + /** + * Sets the {@link Granularity} of locations returned for this request. This controls whether fine or coarse locations may be + * returned. + *

+ * The default value is {@link Granularity#GRANULARITY_PERMISSION_LEVEL}. + */ + @NonNull + public Builder setGranularity(@Granularity int granularity) { + GranularityUtil.checkValidGranularity(granularity); + this.granularity = granularity; + return this; + } + + /** + * Sets the desired interval of location updates. Location updates may arrive faster than this interval (but no faster than + * specified by {@link #setMinUpdateIntervalMillis(long)}) or slower than this interval (if the request is being throttled for + * example). + */ + @NonNull + public Builder setIntervalMillis(long intervalMillis) { + if (intervalMillis < 0) throw new IllegalArgumentException("intervalMillis must be greater than or equal to 0"); + this.intervalMillis = intervalMillis; + return this; + } + + /** + * Sets the maximum age of an initial historical location delivered for this request. A value of 0 indicates that no initial + * historical location will be delivered, only freshly derived locations. A value {@link Long#MAX_VALUE} represents an effectively + * unbounded maximum age. + *

+ * This may be set to the special value {@link #IMPLICIT_MAX_UPDATE_AGE} in which case the maximum update age will always be + * the same as the interval. + *

+ * The default value is {@link #IMPLICIT_MAX_UPDATE_AGE}. + */ + @NonNull + public Builder setMaxUpdateAgeMillis(long maxUpdateAgeMillis) { + if (maxUpdateAgeMillis < 0 && maxUpdateAgeMillis != IMPLICIT_MAX_UPDATE_AGE) + throw new IllegalArgumentException("maxUpdateAgeMillis must be greater than or equal to 0, or IMPLICIT_MAX_UPDATE_AGE"); + this.maxUpdateAgeMillis = maxUpdateAgeMillis; + return this; + } + + /** + * Sets the longest a location update may be delayed. This parameter controls location batching behavior. If this is set to a + * value at least 2x larger than the interval specified by {@link #setIntervalMillis(long)}, then a device may (but is not required + * to) save power by delivering locations in batches. If clients do not require immediate delivery, consider setting this value + * as high as is reasonable to allow for additional power savings. When the {@link LocationRequest} is built, the maximum + * update delay will be set to the max of the provided maximum update delay and the interval. This normalizes requests + * without batching to have the maximum update delay equal to the interval. + *

+ * For example, if a request is made with a 2s interval and a 10s maximum update delay, this implies that the device may + * choose to deliver batches of 5 locations every 10s (where each location in a batch represents a point in time ~2s after + * the previous). + *

+ * Support for batching may vary by device hardware, so simply allowing batching via this parameter does not imply a client + * will receive batched results on all devices. + *

+ * {@link FusedLocationProviderClient#flushLocations()} may be used to flush locations that have been batched, but not + * delivered yet. + *

+ * The default value is 0. + */ + @NonNull + public Builder setMaxUpdateDelayMillis(long maxUpdateDelayMillis) { + if (maxUpdateDelayMillis < 0) throw new IllegalArgumentException("maxUpdateDelayMillis must be greater than or equal to 0"); + this.maxUpdateDelayMillis = maxUpdateDelayMillis; + return this; + } + + /** + * Sets the maximum number of updates delivered to this request. A location request will not receive any locations after the + * maximum number of updates has been reached, and will be removed shortly thereafter. A value of {@link Integer#MAX_VALUE} + * implies an unlimited number of updates. + *

+ * The default value is {@link Integer#MAX_VALUE}. + */ + @NonNull + public Builder setMaxUpdates(int maxUpdates) { + if (maxUpdates <= 0) throw new IllegalArgumentException("maxUpdates must be greater than 0"); + this.maxUpdates = maxUpdates; + return this; + } + + /** + * Sets the minimum distance required between consecutive location updates. If a derived location update is not at least + * the specified distance away from the previous location update delivered to the client, it will not be delivered. This may + * also allow additional power savings under some circumstances. + *

+ * The default value is 0. + */ + @NonNull + public Builder setMinUpdateDistanceMeters(float minUpdateDistanceMeters) { + if (minUpdateDistanceMeters < 0) throw new IllegalArgumentException("minUpdateDistanceMeters must be greater than or equal to 0"); + this.minUpdateDistanceMeters = minUpdateDistanceMeters; + return this; + } + + /** + * Sets the fastest allowed interval of location updates. Location updates may arrive faster than the desired interval + * ({@link #setIntervalMillis(long)}), but will never arrive faster than specified here. + *

+ * This may be set to the special value {@link #IMPLICIT_MIN_UPDATE_INTERVAL} in which case the minimum update interval will + * be the same as the interval. {@link FusedLocationProviderClient} APIs make some allowance for jitter with the minimum + * update interval, so clients need not worry about location updates that arrive a couple milliseconds too early being + * rejected. + *

+ * The default value is {@link #IMPLICIT_MIN_UPDATE_INTERVAL}. + */ + @NonNull + public Builder setMinUpdateIntervalMillis(long minUpdateIntervalMillis) { + if (minUpdateIntervalMillis < 0 && minUpdateIntervalMillis != IMPLICIT_MIN_UPDATE_INTERVAL) + throw new IllegalArgumentException("minUpdateIntervalMillis must be greater than or equal to 0, or IMPLICIT_MIN_UPDATE_INTERVAL"); + this.minUpdateIntervalMillis = minUpdateIntervalMillis; + return this; + } + + @NonNull + @Deprecated + @PublicApi(exclude = true) + public Builder setModuleId(@Nullable String moduleId) { + this.moduleId = moduleId; + return this; + } + + /** + * Sets the {@link Priority} of the location request. + *

+ * The default value is {@link Priority#PRIORITY_BALANCED_POWER_ACCURACY}. + */ + @NonNull + public Builder setPriority(@Priority int priority) { + PriorityUtil.checkValidPriority(priority); + this.priority = priority; + return this; + } + + @NonNull + @PublicApi(exclude = true) + public Builder setThrottleBehavior(@ThrottleBehavior int throttleBehavior) { + ThrottleBehaviorUtil.checkValidThrottleBehavior(throttleBehavior); + this.throttleBehavior = throttleBehavior; + return this; + } + + /** + * If set to true and this request is {@link Priority#PRIORITY_HIGH_ACCURACY}, this will delay delivery of initial low accuracy + * locations for a small amount of time in case a high accuracy location can be delivered instead. + *

+ * The default value is true. + */ + @NonNull + public Builder setWaitForAccurateLocation(boolean waitForAccurateLocation) { + this.waitForAccurateLocation = waitForAccurateLocation; + return this; + } + + @NonNull + @PublicApi(exclude = true) + @RequiresPermission(Manifest.permission.UPDATE_DEVICE_STATS) + public Builder setWorkSource(@Nullable WorkSource workSource) { + this.workSource = workSource; + return this; + } + } + + public static final Creator CREATOR = new AutoCreator(LocationRequest.class); } diff --git a/play-services-location/src/main/java/com/google/android/gms/location/LocationResult.java b/play-services-location/src/main/java/com/google/android/gms/location/LocationResult.java index d09109fe5..92922eec3 100644 --- a/play-services-location/src/main/java/com/google/android/gms/location/LocationResult.java +++ b/play-services-location/src/main/java/com/google/android/gms/location/LocationResult.java @@ -1,23 +1,15 @@ /* - * Copyright (C) 2013-2017 microG Project Team - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * SPDX-FileCopyrightText: 2015 microG Project Team + * SPDX-License-Identifier: Apache-2.0 */ package com.google.android.gms.location; +import android.content.Intent; import android.location.Location; +import androidx.annotation.NonNull; + import org.microg.gms.common.PublicApi; import org.microg.safeparcel.AutoSafeParcelable; import org.microg.safeparcel.SafeParceled; @@ -26,20 +18,99 @@ import java.util.List; @PublicApi public class LocationResult extends AutoSafeParcelable { + @PublicApi(exclude = true) + public static final String EXTRA_LOCATION_RESULT = "com.google.android.gms.location.EXTRA_LOCATION_RESULT"; - @SafeParceled(1000) + @Field(1000) private int versionCode = 2; - @SafeParceled(value = 1, subClass = Location.class) + @Field(value = 1, subClass = Location.class) public final List locations; private LocationResult(List locations) { this.locations = locations; } + /** + * Creates a {@link LocationResult} for the given locations. + */ public static LocationResult create(List locations) { return new LocationResult(locations); } + /** + * Extracts the {@link LocationResult} from an Intent. + *

+ * This is a utility function which extracts the {@link LocationResult} from the extras of an Intent that was sent + * from the fused location provider. + * + * @return a {@link LocationResult}, or {@code null} if the Intent doesn't contain a result. + */ + public static LocationResult extractResult(Intent intent) { + if (!hasResult(intent)) return null; + return intent.getExtras().getParcelable(EXTRA_LOCATION_RESULT); + } + + /** + * Returns true if an Intent contains a {@link LocationResult}. + *

+ * This is a utility function that can be called from inside an intent receiver to make sure the received intent is + * from the fused location provider. + * + * @return true if the intent contains a {@link LocationResult}, false otherwise. + */ + public static boolean hasResult(Intent intent) { + if (intent == null) return false; + return intent.hasExtra(EXTRA_LOCATION_RESULT); + } + + /** + * Returns the most recent location available in this result, or null if no locations are available. + */ + public Location getLastLocation() { + if (locations.isEmpty()) return null; + return locations.get(locations.size() - 1); + } + + /** + * Returns locations computed, ordered from oldest to newest. + *

+ * No duplicate locations will be returned to any given listener (i.e. locations will not overlap in time between + * subsequent calls to a listener). + */ + @NonNull + public List getLocations() { + return locations; + } + + @Override + public String toString() { + return "LocationResult[locations: " + locations + "]"; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (!(obj instanceof LocationResult)) return false; + + LocationResult that = (LocationResult) obj; + if (that.locations.size() != locations.size()) return false; + for (int i = 0; i < that.locations.size(); i++) { + if (that.locations.get(i).getTime() != locations.get(i).getTime()) return false; + } + + return true; + } + + @Override + public int hashCode() { + int result = 17; + for (Location location : locations) { + long time = location.getTime(); + result = (result * 31) + ((int) (time ^ (time >>> 32))); + } + return result; + } + public static final Creator CREATOR = new AutoCreator(LocationResult.class); } diff --git a/play-services-location/src/main/java/com/google/android/gms/location/Priority.java b/play-services-location/src/main/java/com/google/android/gms/location/Priority.java new file mode 100644 index 000000000..10d5ab888 --- /dev/null +++ b/play-services-location/src/main/java/com/google/android/gms/location/Priority.java @@ -0,0 +1,49 @@ +/* + * 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.location; + +import androidx.annotation.IntDef; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Location power vs accuracy priority levels to be used with APIs within {@link FusedLocationProviderClient}. + *

+ * Priority values have been intentionally chosen to match the framework QUALITY constants, and the values are specified + * such that higher priorities should always have lower values and vice versa. + */ +@Target({ElementType.TYPE_USE}) +@Retention(RetentionPolicy.SOURCE) +@IntDef({Priority.PRIORITY_HIGH_ACCURACY, Priority.PRIORITY_BALANCED_POWER_ACCURACY, Priority.PRIORITY_LOW_POWER, Priority.PRIORITY_PASSIVE}) +public @interface Priority { + /** + * Requests a tradeoff that favors highly accurate locations at the possible expense of additional power usage. + */ + int PRIORITY_HIGH_ACCURACY = 100; + + /** + * Requests a tradeoff that is balanced between location accuracy and power usage. + */ + int PRIORITY_BALANCED_POWER_ACCURACY = 102; + + /** + * Requests a tradeoff that favors low power usage at the possible expense of location accuracy. + */ + int PRIORITY_LOW_POWER = 104; + + /** + * Ensures that no extra power will be used to derive locations. This enforces that the request will act as a passive listener + * that will only receive "free" locations calculated on behalf of other clients, and no locations will be calculated on behalf of + * only this request. + */ + int PRIORITY_PASSIVE = 105; +} diff --git a/play-services-location/src/main/java/com/google/android/gms/location/ThrottleBehavior.java b/play-services-location/src/main/java/com/google/android/gms/location/ThrottleBehavior.java new file mode 100644 index 000000000..d1dc300d7 --- /dev/null +++ b/play-services-location/src/main/java/com/google/android/gms/location/ThrottleBehavior.java @@ -0,0 +1,22 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.location; + +import androidx.annotation.IntDef; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target({ElementType.TYPE_USE}) +@Retention(RetentionPolicy.SOURCE) +@IntDef({ThrottleBehavior.THROTTLE_BACKGROUND, ThrottleBehavior.THROTTLE_ALWAYS, ThrottleBehavior.THROTTLE_NEVER}) +public @interface ThrottleBehavior { + int THROTTLE_BACKGROUND = 0; + int THROTTLE_ALWAYS = 1; + int THROTTLE_NEVER = 2; +} diff --git a/play-services-location/src/main/java/com/google/android/gms/location/internal/ClientIdentity.java b/play-services-location/src/main/java/com/google/android/gms/location/internal/ClientIdentity.java deleted file mode 100644 index a92c6516a..000000000 --- a/play-services-location/src/main/java/com/google/android/gms/location/internal/ClientIdentity.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * 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.location.internal; - -import org.microg.safeparcel.AutoSafeParcelable; - -public class ClientIdentity extends AutoSafeParcelable { - public static final Creator CREATOR = new AutoCreator(ClientIdentity.class); -} diff --git a/play-services-location/src/main/java/com/google/android/gms/location/internal/DeviceOrientationRequestInternal.java b/play-services-location/src/main/java/com/google/android/gms/location/internal/DeviceOrientationRequestInternal.java index 5b66feaa8..03aeb5db2 100644 --- a/play-services-location/src/main/java/com/google/android/gms/location/internal/DeviceOrientationRequestInternal.java +++ b/play-services-location/src/main/java/com/google/android/gms/location/internal/DeviceOrientationRequestInternal.java @@ -5,6 +5,7 @@ package com.google.android.gms.location.internal; +import com.google.android.gms.common.internal.ClientIdentity; import com.google.android.gms.location.DeviceOrientationRequest; import org.microg.safeparcel.AutoSafeParcelable; diff --git a/play-services-location/src/main/java/com/google/android/gms/location/internal/LocationRequestInternal.java b/play-services-location/src/main/java/com/google/android/gms/location/internal/LocationRequestInternal.java index ab745a57e..a50a038dc 100644 --- a/play-services-location/src/main/java/com/google/android/gms/location/internal/LocationRequestInternal.java +++ b/play-services-location/src/main/java/com/google/android/gms/location/internal/LocationRequestInternal.java @@ -5,8 +5,14 @@ package com.google.android.gms.location.internal; +import android.annotation.SuppressLint; +import android.os.WorkSource; +import com.google.android.gms.common.internal.ClientIdentity; +import com.google.android.gms.location.Granularity; import com.google.android.gms.location.LocationRequest; +import com.google.android.gms.location.ThrottleBehavior; +import org.microg.gms.utils.WorkSourceUtil; import org.microg.safeparcel.AutoSafeParcelable; import java.util.List; @@ -19,42 +25,58 @@ public class LocationRequestInternal extends AutoSafeParcelable { @Field(1) public LocationRequest request; - @Field(2) @Deprecated + @Field(2) + @Deprecated public boolean requestNlpDebugInfo; - @Field(3) @Deprecated + @Field(3) + @Deprecated public boolean restorePendingIntentListeners; - @Field(4) @Deprecated + @Field(4) + @Deprecated public boolean triggerUpdate; @Field(value = 5, subClass = ClientIdentity.class) + @Deprecated public List clients; @Field(6) + @Deprecated public String tag; @Field(7) + @Deprecated public boolean hideFromAppOps; @Field(8) + @Deprecated public boolean forceCoarseLocation; @Field(9) + @Deprecated public boolean exemptFromThrottle; @Field(10) + @Deprecated public String moduleId; @Field(11) - public boolean locationSettingsIgnored; + @Deprecated + public boolean bypass; @Field(12) - public boolean inaccurateLocationsDelayed; + @Deprecated + public boolean waitForAccurateLocation; @Field(13) + @Deprecated public String contextAttributeTag; + @Field(14) + @Deprecated + public long maxUpdateAgeMillis = Long.MAX_VALUE; + @Override public String toString() { return "LocationRequestInternal{" + @@ -68,11 +90,34 @@ public class LocationRequestInternal extends AutoSafeParcelable { ", forceCoarseLocation=" + forceCoarseLocation + ", exemptFromThrottle=" + exemptFromThrottle + ", moduleId=" + moduleId + - ", locationSettingsIgnored=" + locationSettingsIgnored + - ", inaccurateLocationsDelayed=" + inaccurateLocationsDelayed + + ", locationSettingsIgnored=" + bypass + + ", inaccurateLocationsDelayed=" + waitForAccurateLocation + ", contextAttributeTag=" + contextAttributeTag + '}'; } + @SuppressLint("MissingPermission") + public LocationRequest getRequest() { + LocationRequest.Builder builder = new LocationRequest.Builder(this.request); + if (clients != null) { + if (clients.isEmpty()) { + builder.setWorkSource(null); + } else { + WorkSource workSource = new WorkSource(); + for (ClientIdentity client : clients) { + WorkSourceUtil.add(workSource, client.uid, client.packageName); + } + } + } + if (forceCoarseLocation) builder.setGranularity(Granularity.GRANULARITY_COARSE); + if (exemptFromThrottle) builder.setThrottleBehavior(ThrottleBehavior.THROTTLE_NEVER); + if (moduleId != null) builder.setModuleId(moduleId); + else if (contextAttributeTag != null) builder.setModuleId(contextAttributeTag); + if (bypass) builder.setBypass(true); + if (waitForAccurateLocation) builder.setWaitForAccurateLocation(true); + if (maxUpdateAgeMillis != Long.MAX_VALUE) builder.setMaxUpdateAgeMillis(maxUpdateAgeMillis); + return builder.build(); + } + public static final Creator CREATOR = new AutoCreator(LocationRequestInternal.class); } diff --git a/play-services-location/src/main/java/org/microg/gms/location/FusedLocationProviderClientImpl.java b/play-services-location/src/main/java/org/microg/gms/location/FusedLocationProviderClientImpl.java index c6cdfcbf7..2ae7a1d0f 100644 --- a/play-services-location/src/main/java/org/microg/gms/location/FusedLocationProviderClientImpl.java +++ b/play-services-location/src/main/java/org/microg/gms/location/FusedLocationProviderClientImpl.java @@ -5,22 +5,22 @@ package org.microg.gms.location; +import android.app.PendingIntent; import android.content.Context; import android.location.Location; import android.os.Looper; -import android.os.RemoteException; -import com.google.android.gms.common.api.Api; -import com.google.android.gms.common.api.GoogleApi; import com.google.android.gms.location.FusedLocationProviderClient; import com.google.android.gms.location.LocationCallback; +import com.google.android.gms.location.LocationListener; import com.google.android.gms.location.LocationRequest; -import com.google.android.gms.location.LocationServices; import com.google.android.gms.tasks.Task; -import com.google.android.gms.tasks.TaskCompletionSource; -import org.microg.gms.common.api.InstantGoogleApiCall; +import org.microg.gms.common.api.ReturningGoogleApiCall; import org.microg.gms.common.api.PendingGoogleApiCall; +import org.microg.gms.common.api.VoidReturningGoogleApiCall; + +import java.util.concurrent.Executor; public class FusedLocationProviderClientImpl extends FusedLocationProviderClient { public FusedLocationProviderClientImpl(Context context) { @@ -28,30 +28,50 @@ public class FusedLocationProviderClientImpl extends FusedLocationProviderClient } public Task flushLocations() { - return scheduleTask(new PendingGoogleApiCall() { - @Override - public void execute(LocationClientImpl client, TaskCompletionSource completionSource) { - completionSource.setResult(null); - } - }); + return scheduleTask((ReturningGoogleApiCall) (client) -> null); } public Task getLastLocation() { - return scheduleTask((InstantGoogleApiCall) LocationClientImpl::getLastLocation); + return scheduleTask((ReturningGoogleApiCall) LocationClientImpl::getLastLocation); + } + + @Override + public Task removeLocationUpdates(LocationListener listener) { + return scheduleTask((VoidReturningGoogleApiCall) (client) -> client.removeLocationUpdates(listener)); + } + + @Override + public Task removeLocationUpdates(PendingIntent pendingIntent) { + return scheduleTask((VoidReturningGoogleApiCall) (client) -> client.removeLocationUpdates(pendingIntent)); + } + + @Override + public Task requestLocationUpdates(LocationRequest request, LocationListener listener, Looper looper) { + return scheduleTask((VoidReturningGoogleApiCall) (client) -> client.requestLocationUpdates(request, listener, looper)); + } + + @Override + public Task requestLocationUpdates(LocationRequest request, Executor executor, LocationCallback callback) { + return scheduleTask((VoidReturningGoogleApiCall) (client) -> client.requestLocationUpdates(request, executor, callback)); + } + + @Override + public Task requestLocationUpdates(LocationRequest request, Executor executor, LocationListener listener) { + return scheduleTask((VoidReturningGoogleApiCall) (client) -> client.requestLocationUpdates(request, executor, listener)); } @Override public Task requestLocationUpdates(LocationRequest request, LocationCallback callback, Looper looper) { - return scheduleTask(new PendingGoogleApiCall() { - @Override - public void execute(LocationClientImpl client, TaskCompletionSource completionSource) { - try { - client.requestLocationUpdates(request, callback, looper); - completionSource.setResult(null); - } catch (RemoteException e) { - completionSource.setException(e); - } - } - }); + return scheduleTask((VoidReturningGoogleApiCall) (client) -> client.requestLocationUpdates(request, callback, looper)); + } + + @Override + public Task requestLocationUpdates(LocationRequest request, PendingIntent pendingIntent) { + return scheduleTask((VoidReturningGoogleApiCall) (client) -> client.requestLocationUpdates(request, pendingIntent)); + } + + @Override + public Task removeLocationUpdates(LocationCallback callback) { + return scheduleTask((VoidReturningGoogleApiCall) (client) -> client.removeLocationUpdates(callback)); } } diff --git a/play-services-location/src/main/java/org/microg/gms/location/GranularityUtil.java b/play-services-location/src/main/java/org/microg/gms/location/GranularityUtil.java new file mode 100644 index 000000000..cb008ecc4 --- /dev/null +++ b/play-services-location/src/main/java/org/microg/gms/location/GranularityUtil.java @@ -0,0 +1,42 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.microg.gms.location; + +import com.google.android.gms.location.Granularity; +import com.google.android.gms.location.Priority; + +public class GranularityUtil { + public static boolean isValidGranularity(int granularity) { + switch (granularity) { + default: + return false; + case Granularity.GRANULARITY_PERMISSION_LEVEL: + case Granularity.GRANULARITY_COARSE: + case Granularity.GRANULARITY_FINE: + return true; + } + } + + public static int checkValidGranularity(int granularity) { + if (!isValidGranularity(granularity)) { + throw new IllegalArgumentException("granularity " + granularity + " must be a Granularity.GRANULARITY_* constant"); + } + return granularity; + } + + public static String granularityToString(int granularity) { + switch (granularity) { + case Granularity.GRANULARITY_PERMISSION_LEVEL: + return "GRANULARITY_PERMISSION_LEVEL"; + case Granularity.GRANULARITY_COARSE: + return "GRANULARITY_COARSE"; + case Granularity.GRANULARITY_FINE: + return "GRANULARITY_FINE"; + default: + throw new IllegalArgumentException(); + } + } +} diff --git a/play-services-location/src/main/java/org/microg/gms/location/LocationClientImpl.java b/play-services-location/src/main/java/org/microg/gms/location/LocationClientImpl.java index 607911bda..d63cf8a66 100644 --- a/play-services-location/src/main/java/org/microg/gms/location/LocationClientImpl.java +++ b/play-services-location/src/main/java/org/microg/gms/location/LocationClientImpl.java @@ -44,6 +44,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.Executor; public class LocationClientImpl extends GoogleLocationManagerClient { private static final String TAG = "GmsLocationClientImpl"; @@ -108,11 +109,16 @@ public class LocationClientImpl extends GoogleLocationManagerClient { } public void requestLocationUpdates(LocationRequest request, LocationListener listener, Looper looper) throws RemoteException { + final Handler handler = new Handler(looper); + requestLocationUpdates(request, handler::post, listener); + } + + public void requestLocationUpdates(LocationRequest request, Executor executor, LocationListener listener) throws RemoteException { if (!listenerMap.containsKey(listener)) { listenerMap.put(listener, new ILocationListener.Stub() { @Override public void onLocationChanged(Location location) throws RemoteException { - (new Handler(looper)).post(() -> listener.onLocationChanged(location)); + executor.execute(() -> listener.onLocationChanged(location)); } }); } @@ -120,11 +126,16 @@ public class LocationClientImpl extends GoogleLocationManagerClient { } public void requestLocationUpdates(LocationRequest request, LocationCallback callback, Looper looper) throws RemoteException { + final Handler handler = new Handler(looper); + requestLocationUpdates(request, handler::post, callback); + } + + public void requestLocationUpdates(LocationRequest request, Executor executor, LocationCallback callback) throws RemoteException { if (!callbackMap.containsKey(callback)) { callbackMap.put(callback, new ILocationListener.Stub() { @Override public void onLocationChanged(Location location) throws RemoteException { - (new Handler(looper)).post(() -> callback.onLocationResult(LocationResult.create(Collections.singletonList(location)))); + executor.execute(() -> callback.onLocationResult(LocationResult.create(Collections.singletonList(location)))); } }); } diff --git a/play-services-location/src/main/java/org/microg/gms/location/PriorityUtil.java b/play-services-location/src/main/java/org/microg/gms/location/PriorityUtil.java new file mode 100644 index 000000000..1ad10b248 --- /dev/null +++ b/play-services-location/src/main/java/org/microg/gms/location/PriorityUtil.java @@ -0,0 +1,46 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.microg.gms.location; + +import androidx.annotation.NonNull; +import com.google.android.gms.location.Priority; + +public class PriorityUtil { + public static boolean isValidPriority(@Priority int priority) { + switch (priority) { + default: + return false; + case Priority.PRIORITY_HIGH_ACCURACY: + case Priority.PRIORITY_BALANCED_POWER_ACCURACY: + case Priority.PRIORITY_LOW_POWER: + case Priority.PRIORITY_PASSIVE: + return true; + } + } + + public static int checkValidPriority(@Priority int priority) { + if (!isValidPriority(priority)) { + throw new IllegalArgumentException("priority " + priority + " must be a Priority.PRIORITY_* constant"); + } + return priority; + } + + @NonNull + public static String priorityToString(@Priority int priority) { + switch (priority) { + case Priority.PRIORITY_HIGH_ACCURACY: + return "HIGH_ACCURACY"; + case Priority.PRIORITY_BALANCED_POWER_ACCURACY: + return "BALANCED_POWER_ACCURACY"; + case Priority.PRIORITY_LOW_POWER: + return "LOW_POWER"; + case Priority.PRIORITY_PASSIVE: + return "PASSIVE"; + default: + throw new IllegalArgumentException(); + } + } +} diff --git a/play-services-location/src/main/java/org/microg/gms/location/ThrottleBehaviorUtil.java b/play-services-location/src/main/java/org/microg/gms/location/ThrottleBehaviorUtil.java new file mode 100644 index 000000000..dc9f53109 --- /dev/null +++ b/play-services-location/src/main/java/org/microg/gms/location/ThrottleBehaviorUtil.java @@ -0,0 +1,43 @@ +/* + * SPDX-FileCopyrightText: 2023 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.microg.gms.location; + +import androidx.annotation.NonNull; +import com.google.android.gms.location.ThrottleBehavior; + +public class ThrottleBehaviorUtil { + public static boolean isValidThrottleBehavior(@ThrottleBehavior int throttleBehavior) { + switch (throttleBehavior) { + default: + return false; + case ThrottleBehavior.THROTTLE_BACKGROUND: + case ThrottleBehavior.THROTTLE_ALWAYS: + case ThrottleBehavior.THROTTLE_NEVER: + return true; + } + } + + public static int checkValidThrottleBehavior(@ThrottleBehavior int throttleBehavior) { + if (!isValidThrottleBehavior(throttleBehavior)) { + throw new IllegalArgumentException("throttle behavior " + throttleBehavior + " must be a ThrottleBehavior.THROTTLE_* constant"); + } + return throttleBehavior; + } + + @NonNull + public static String throttleBehaviorToString(@ThrottleBehavior int throttleBehavior) { + switch (throttleBehavior) { + case ThrottleBehavior.THROTTLE_BACKGROUND: + return "THROTTLE_BACKGROUND"; + case ThrottleBehavior.THROTTLE_ALWAYS: + return "THROTTLE_ALWAYS"; + case ThrottleBehavior.THROTTLE_NEVER: + return "THROTTLE_NEVER"; + default: + throw new IllegalArgumentException(); + } + } +} diff --git a/play-services-wearable/core/src/main/java/org/microg/gms/wearable/location/WearableLocationService.java b/play-services-wearable/core/src/main/java/org/microg/gms/wearable/location/WearableLocationService.java index 2757f0db3..263f84363 100644 --- a/play-services-wearable/core/src/main/java/org/microg/gms/wearable/location/WearableLocationService.java +++ b/play-services-wearable/core/src/main/java/org/microg/gms/wearable/location/WearableLocationService.java @@ -21,7 +21,7 @@ import android.util.Log; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.location.LocationRequest; -import com.google.android.gms.location.internal.ClientIdentity; +import com.google.android.gms.common.internal.ClientIdentity; import com.google.android.gms.location.internal.LocationRequestInternal; import com.google.android.gms.wearable.DataMap; import com.google.android.gms.wearable.MessageEvent; -- GitLab From 96a9a90ed2fbba4d16dbdb4a39edee983d0304cc Mon Sep 17 00:00:00 2001 From: Marvin W Date: Sun, 25 Dec 2022 18:01:30 +0100 Subject: [PATCH 06/14] Fido: Fix creating a priviliged API client --- .../src/main/java/com/google/android/gms/fido/Fido.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/play-services-fido/src/main/java/com/google/android/gms/fido/Fido.java b/play-services-fido/src/main/java/com/google/android/gms/fido/Fido.java index b8ab33dd4..d89e99b22 100644 --- a/play-services-fido/src/main/java/com/google/android/gms/fido/Fido.java +++ b/play-services-fido/src/main/java/com/google/android/gms/fido/Fido.java @@ -82,14 +82,14 @@ public class Fido { * Creates a new instance of {@link Fido2PrivilegedApiClient} for use in a non-activity {@link Context}. */ public static Fido2PrivilegedApiClient getFido2PrivilegedApiClient(Context context) { - throw new UnsupportedOperationException(); + return new Fido2PrivilegedApiClient(context); } /** * Creates a new instance of {@link Fido2PrivilegedApiClient} for use in an {@link Activity}. */ public static Fido2PrivilegedApiClient getFido2PrivilegedApiClient(Activity activity) { - throw new UnsupportedOperationException(); + return new Fido2PrivilegedApiClient(activity); } /** -- GitLab From b47541858ce42eb037a396dc5fd0e47039c19e81 Mon Sep 17 00:00:00 2001 From: Marvin W Date: Mon, 26 Dec 2022 21:19:20 +0100 Subject: [PATCH 07/14] Cast: Add some more details for cast-framework --- .../android/gms/dynamite/DynamiteModule.java | 51 +++++ .../src/main/AndroidManifest.xml | 41 ++-- .../cast/framework/IReconnectionService.aidl | 5 +- .../gms/cast/framework/CastButtonFactory.java | 9 + .../gms/cast/framework/CastContext.java | 191 +++++++++++++++++ .../gms/cast/framework/CastOptions.java | 6 + .../gms/cast/framework/CastSession.java | 9 + .../gms/cast/framework/DiscoveryManager.java | 30 +++ .../framework/ModuleUnavailableException.java | 18 ++ .../gms/cast/framework/OptionsProvider.java | 40 ++++ .../cast/framework/ReconnectionService.java | 68 ++++++ .../android/gms/cast/framework/Session.java | 9 + .../gms/cast/framework/SessionManager.java | 72 +++++++ .../gms/cast/framework/SessionProvider.java | 67 ++++++ .../framework/media/MediaIntentReceiver.java | 198 ++++++++++++++++++ .../media/MediaNotificationService.java | 19 ++ .../microg/gms/cast/CastDynamiteModule.java | 47 +++++ .../microg/gms/cast/CastSessionProvider.java | 31 +++ .../microg/gms/cast/ISessionProviderImpl.java | 41 ++++ .../src/main/AndroidManifest.xml | 2 +- 20 files changed, 938 insertions(+), 16 deletions(-) create mode 100644 play-services-basement/src/main/java/com/google/android/gms/dynamite/DynamiteModule.java create mode 100644 play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/CastButtonFactory.java create mode 100644 play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/CastContext.java create mode 100644 play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/CastSession.java create mode 100644 play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/DiscoveryManager.java create mode 100644 play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/ModuleUnavailableException.java create mode 100644 play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/OptionsProvider.java create mode 100644 play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/ReconnectionService.java create mode 100644 play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/Session.java create mode 100644 play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/SessionManager.java create mode 100644 play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/SessionProvider.java create mode 100644 play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/media/MediaIntentReceiver.java create mode 100644 play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/media/MediaNotificationService.java create mode 100644 play-services-cast-framework/src/main/java/org/microg/gms/cast/CastDynamiteModule.java create mode 100644 play-services-cast-framework/src/main/java/org/microg/gms/cast/CastSessionProvider.java create mode 100644 play-services-cast-framework/src/main/java/org/microg/gms/cast/ISessionProviderImpl.java diff --git a/play-services-basement/src/main/java/com/google/android/gms/dynamite/DynamiteModule.java b/play-services-basement/src/main/java/com/google/android/gms/dynamite/DynamiteModule.java new file mode 100644 index 000000000..3d61f6640 --- /dev/null +++ b/play-services-basement/src/main/java/com/google/android/gms/dynamite/DynamiteModule.java @@ -0,0 +1,51 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.dynamite; + +import android.content.Context; +import android.os.IBinder; +import androidx.annotation.NonNull; + +public class DynamiteModule { + @NonNull + public static final VersionPolicy PREFER_REMOTE = null; + @NonNull + public static final VersionPolicy PREFER_LOCAL = null; + + public interface VersionPolicy { + + } + + public static class LoadingException extends Exception { + public LoadingException(String message) { + super(message); + } + + public LoadingException(String message, Throwable cause) { + super(message, cause); + } + } + + private Context remoteContext; + + private DynamiteModule(Context remoteContext) { + this.remoteContext = remoteContext; + } + + @NonNull + public static DynamiteModule load(@NonNull Context context, @NonNull VersionPolicy policy, @NonNull String moduleId) throws LoadingException { + throw new LoadingException("Not yet supported"); + } + + @NonNull + public IBinder instantiate(@NonNull String className) throws LoadingException { + try { + return (IBinder) this.remoteContext.getClassLoader().loadClass(className).newInstance(); + } catch (ClassNotFoundException | IllegalAccessException | InstantiationException | RuntimeException e) { + throw new LoadingException("Failed to instantiate module class: " + className, e); + } + } +} diff --git a/play-services-cast-framework/src/main/AndroidManifest.xml b/play-services-cast-framework/src/main/AndroidManifest.xml index b0c67262e..e6bdc8052 100644 --- a/play-services-cast-framework/src/main/AndroidManifest.xml +++ b/play-services-cast-framework/src/main/AndroidManifest.xml @@ -1,18 +1,31 @@ - + + + + + + + + + + + + + + + + + diff --git a/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/IReconnectionService.aidl b/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/IReconnectionService.aidl index 33f19574c..13fdb788f 100644 --- a/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/IReconnectionService.aidl +++ b/play-services-cast-framework/src/main/aidl/com/google/android/gms/cast/framework/IReconnectionService.aidl @@ -1,5 +1,8 @@ package com.google.android.gms.cast.framework; interface IReconnectionService { - + void onCreate() = 0; + int onStartCommand(in Intent intent, int flags, int startId) = 1; + IBinder onBind(in Intent intent) = 2; + void onDestroy() = 3; } \ No newline at end of file diff --git a/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/CastButtonFactory.java b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/CastButtonFactory.java new file mode 100644 index 000000000..372ac6967 --- /dev/null +++ b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/CastButtonFactory.java @@ -0,0 +1,9 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.cast.framework; + +public class CastButtonFactory { +} diff --git a/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/CastContext.java b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/CastContext.java new file mode 100644 index 000000000..1f6b497f4 --- /dev/null +++ b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/CastContext.java @@ -0,0 +1,191 @@ +/* + * SPDX-FileCopyrightText: 2022 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.cast.framework; + +import android.app.Activity; +import android.content.Context; +import android.content.pm.PackageManager; +import android.os.Bundle; +import android.os.IBinder; +import android.os.RemoteException; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import com.google.android.gms.cast.framework.internal.IMediaRouter; +import com.google.android.gms.tasks.Task; +import com.google.android.gms.tasks.Tasks; +import org.microg.gms.cast.CastDynamiteModule; +import org.microg.gms.cast.CastSessionProvider; +import org.microg.gms.common.PublicApi; + +import java.lang.reflect.InvocationTargetException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.Executor; + +public class CastContext { + /** + * The metadata key to specify the fully qualified name of the {@link OptionsProvider} implementation in the + * {@code AndroidManifest.xml}. + */ + public static final String OPTIONS_PROVIDER_CLASS_NAME_KEY = "com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"; + + /** + * Returns the shared instance of {@link CastContext}. This method must be called after {@link CastContext} is initialized through + * {@link #getSharedInstance(Context, Executor)}. Otherwise, this method will return {@code null}. + * + * @throws IllegalStateException If this method is not called on the main thread. + */ + public static CastContext getSharedInstance() { + return sharedInstance; + } + + /** + * Returns a shared instance of {@link CastContext}. The shared instance will be initialized on the first time this method is called. + * + * @param context An application {@link Context}. If this is not an application {@link Context}, {@link Context#getApplicationContext()} will be called on + * the given context, to retrieve it. + * @throws IllegalStateException If any of the following: + *

    + *
  • This method is not called on the main thread.
  • + *
  • + * The fully qualified name of the {@link OptionsProvider} implementation is not specified as a metadata in the + * {@code AndroidManifest.xml} with key {@link #OPTIONS_PROVIDER_CLASS_NAME_KEY}. + *
  • + *
  • {@code optionsProviderClass} or its nullary constructor is not accessible.
  • + *
  • Instantiation of {@link OptionsProvider} fails for some other reason.
  • + *
+ * @deprecated Use {@link #getSharedInstance(Context, Executor)} instead to handle the exception when Cast SDK fails to load the internal + * Cast module. + */ + @Deprecated + public static CastContext getSharedInstance(Context context) { + if (sharedInstance == null) { + Context appContext = context.getApplicationContext(); + OptionsProvider optionsProvider = getOptionsProvider(appContext); + CastOptions castOptions = optionsProvider.getCastOptions(appContext); + try { + sharedInstance = new CastContext(appContext, castOptions, optionsProvider.getAdditionalSessionProviders(appContext)); + } catch (ModuleUnavailableException e) { + throw new RuntimeException(e); + } + } + return sharedInstance; + } + + /** + * Returns an asynchronous Task API call on the shared instance of {@link CastContext}. The shared instance will be initialized + * on the first time this method is called. + *

+ * Note that {@link #getSharedInstance(Context, Executor)} should be called in the {@link Activity#onCreate(Bundle)} method + * of the activities that might display a Cast button. The Cast SDK provides {@link CastButtonFactory} to set up a Cast button. + *

+ * Note that {@link ModuleUnavailableException} could be thrown when the SDK fails to load the internal Cast module. The + * caller will get the exception from {@link Task#getException()} when the task completes. + * + * @param context An application {@link Context}. If this is not an application {@link Context}, {@link Context#getApplicationContext()} will be called on + * the given context, to retrieve it. + * @param executor An {@link Executor} to load the internal Cast module. + * @throws IllegalStateException If any of the following: + *

    + *
  • This method is not called on the main thread.
  • + *
  • + * The fully qualified name of the {@link OptionsProvider} implementation is not specified as a metadata in the + * {@code AndroidManifest.xml} with key {@link #OPTIONS_PROVIDER_CLASS_NAME_KEY}. + *
  • + *
  • {@code optionsProviderClass} or its nullary constructor is not accessible.
  • + *
  • Instantiation of {@link OptionsProvider} fails for some other reason.
  • + *
+ */ + public static Task getSharedInstance(Context context, Executor executor) { + if (sharedInstance != null) { + return Tasks.forResult(sharedInstance); + } + Context appContext = context.getApplicationContext(); + OptionsProvider optionsProvider = getOptionsProvider(appContext); + CastOptions castOptions = optionsProvider.getCastOptions(appContext); + return Tasks.call(executor, () -> { + sharedInstance = new CastContext(appContext, castOptions, optionsProvider.getAdditionalSessionProviders(appContext)); + return sharedInstance; + }); + } + + /** + * Returns the {@link SessionManager}, never returns {@code null}. + * + * @throws IllegalStateException If this method is not called on the main thread. + */ + @NonNull + public SessionManager getSessionManager() { + return sessionManager; + } + + private static volatile CastContext sharedInstance; + private Context appContext; + private CastOptions castOptions; + private IMediaRouter mediaRouter; + private List additionalSessionProviders; + private CastSessionProvider castSessionProvider; + private ICastContext delegate; + private SessionManager sessionManager; + private DiscoveryManager discoveryManager; + + private CastContext(Context appContext, CastOptions castOptions, @Nullable List additionalSessionProviders) throws ModuleUnavailableException { + this.appContext = appContext; + this.castOptions = castOptions; + this.mediaRouter = null; // TODO + this.additionalSessionProviders = additionalSessionProviders; + this.castSessionProvider = new CastSessionProvider(appContext, castOptions); + try { + this.delegate = CastDynamiteModule.newCastContext(appContext, castOptions, mediaRouter, getSessionProviderMap()); + this.sessionManager = new SessionManager(appContext, delegate.getSessionManagerImpl()); + this.discoveryManager = new DiscoveryManager(appContext, delegate.getDiscoveryManagerImpl()); + } catch (RemoteException e) { + throw new IllegalStateException("Failed to call dynamite module", e); + } + } + + private Map getSessionProviderMap() { + Map map = new HashMap<>(); + if (castSessionProvider != null) { + map.put(castSessionProvider.getCategory(), castSessionProvider.asBinder()); + } + List list = this.additionalSessionProviders; + if (list != null) { + for (SessionProvider sessionProvider : list) { + if (sessionProvider == null) throw new IllegalArgumentException("Additional SessionProvider must not be null."); + if (sessionProvider.getCategory() == null || sessionProvider.getCategory().isEmpty()) + throw new IllegalArgumentException("Category for SessionProvider must not be null or empty string."); + if (map.containsKey(sessionProvider.getCategory())) + throw new IllegalArgumentException("SessionProvider for category " + sessionProvider.getCategory() + " already added"); + map.put(sessionProvider.getCategory(), sessionProvider.asBinder()); + } + } + return map; + } + + private static OptionsProvider getOptionsProvider(Context context) { + try { + Bundle metaData = context.getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA).metaData; + String optionsProviderClassName = metaData.getString(OPTIONS_PROVIDER_CLASS_NAME_KEY); + if (optionsProviderClassName != null) { + return Class.forName(optionsProviderClassName).asSubclass(OptionsProvider.class).getDeclaredConstructor().newInstance(); + } + throw new IllegalStateException("The fully qualified name of the implementation of OptionsProvider must be provided as a metadata in the AndroidManifest.xml with key com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME."); + } catch (PackageManager.NameNotFoundException | ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InstantiationException | + InvocationTargetException | NullPointerException e) { + throw new IllegalStateException("Failed to initialize CastContext.", e); + } + } + + @NonNull + DiscoveryManager getDiscoveryManager() { + return discoveryManager; + } +} diff --git a/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/CastOptions.java b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/CastOptions.java index 75dd08501..ffe3bc0d1 100644 --- a/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/CastOptions.java +++ b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/CastOptions.java @@ -16,6 +16,7 @@ package com.google.android.gms.cast.framework; +import androidx.annotation.NonNull; import org.microg.safeparcel.AutoSafeParcelable; import org.microg.safeparcel.SafeParceled; @@ -53,5 +54,10 @@ public class CastOptions extends AutoSafeParcelable { return this.launchOptions; } + @NonNull + public List getSupportedNamespaces() { + return supportedNamespaces; + } + public static Creator CREATOR = new AutoCreator(CastOptions.class); } diff --git a/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/CastSession.java b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/CastSession.java new file mode 100644 index 000000000..0542221ad --- /dev/null +++ b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/CastSession.java @@ -0,0 +1,9 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.cast.framework; + +public class CastSession extends Session{ +} diff --git a/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/DiscoveryManager.java b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/DiscoveryManager.java new file mode 100644 index 000000000..346e86ba1 --- /dev/null +++ b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/DiscoveryManager.java @@ -0,0 +1,30 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.cast.framework; + +import android.content.Context; +import android.os.RemoteException; +import com.google.android.gms.cast.framework.IDiscoveryManager; +import com.google.android.gms.cast.framework.ISessionManager; +import com.google.android.gms.dynamic.IObjectWrapper; + +class DiscoveryManager { + private Context context; + private IDiscoveryManager delegate; + + public DiscoveryManager(Context context, IDiscoveryManager delegate) { + this.context = context; + this.delegate = delegate; + } + + public IObjectWrapper getWrappedThis() { + try { + return delegate.getWrappedThis(); + } catch (RemoteException e) { + return null; + } + } +} diff --git a/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/ModuleUnavailableException.java b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/ModuleUnavailableException.java new file mode 100644 index 000000000..2abac8ca7 --- /dev/null +++ b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/ModuleUnavailableException.java @@ -0,0 +1,18 @@ +/* + * SPDX-FileCopyrightText: 2022 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.cast.framework; + +/** + * An exception thrown when the internal Cast module fails to load. + */ +public class ModuleUnavailableException extends Exception { + public ModuleUnavailableException(Throwable cause) { + super(cause); + } +} diff --git a/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/OptionsProvider.java b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/OptionsProvider.java new file mode 100644 index 000000000..6c253fe6b --- /dev/null +++ b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/OptionsProvider.java @@ -0,0 +1,40 @@ +/* + * SPDX-FileCopyrightText: 2022 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.cast.framework; + +import android.content.Context; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import java.util.List; + +/** + * Developers should implement this interface to provide options needed to create and initialize {@link CastContext}. The + * implementation class must have a constructor without argument. The SDK will call that constructor to instantiate a new + * instance. + */ +public interface OptionsProvider { + /** + * Provides a list of custom {@link SessionProvider} instances for non-Cast devices. This is optional. + * + * @param appContext The application {@link Context}. + * @return the list of {@link SessionProvider} instances, may be {@code null}. + */ + @Nullable + List getAdditionalSessionProviders(@NonNull Context appContext); + + /** + * Provides {@link CastOptions}, which affects discovery and session management of a Cast device. + * + * @param appContext The application {@link Context}. + * @return the {@link CastOptions}, must not be {@code null}. + */ + @NonNull + CastOptions getCastOptions(@NonNull Context appContext); +} diff --git a/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/ReconnectionService.java b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/ReconnectionService.java new file mode 100644 index 000000000..b5045b2c8 --- /dev/null +++ b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/ReconnectionService.java @@ -0,0 +1,68 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.cast.framework; + +import android.app.Service; +import android.content.Intent; +import android.os.IBinder; +import android.os.RemoteException; +import androidx.annotation.Nullable; +import org.microg.gms.cast.CastDynamiteModule; + +public class ReconnectionService extends Service { + private IReconnectionService delegate; + + @Override + public void onCreate() { + CastContext castContext = CastContext.getSharedInstance(this); + delegate = CastDynamiteModule.newReconnectionService(this, castContext.getSessionManager().getWrappedThis(), castContext.getDiscoveryManager().getWrappedThis()); + if (delegate != null) { + try { + delegate.onCreate(); + } catch (RemoteException e) { + // Ignore + } + } + super.onCreate(); + } + + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + if (delegate != null) { + try { + delegate.onStartCommand(intent, flags, startId); + } catch (RemoteException e) { + // Ignore + } + } + return super.onStartCommand(intent, flags, startId); + } + + @Nullable + @Override + public IBinder onBind(Intent intent) { + if (delegate != null) { + try { + return delegate.onBind(intent); + } catch (RemoteException e) { + // Ignore + } + } + return null; + } + + @Override + public void onDestroy() { + if (delegate != null) { + try { + delegate.onDestroy(); + } catch (RemoteException e) { + // Ignore + } + } + super.onDestroy(); + } +} diff --git a/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/Session.java b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/Session.java new file mode 100644 index 000000000..ac8471aaa --- /dev/null +++ b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/Session.java @@ -0,0 +1,9 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.cast.framework; + +public class Session { +} diff --git a/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/SessionManager.java b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/SessionManager.java new file mode 100644 index 000000000..f3cdea90b --- /dev/null +++ b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/SessionManager.java @@ -0,0 +1,72 @@ +/* + * SPDX-FileCopyrightText: 2022 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.cast.framework; + +import android.content.Context; +import android.os.RemoteException; +import com.google.android.gms.dynamic.IObjectWrapper; +import com.google.android.gms.dynamic.ObjectWrapper; + +public class SessionManager { + private Context context; + private ISessionManager delegate; + + SessionManager(Context context, ISessionManager delegate) { + this.context = context; + this.delegate = delegate; + } + + /** + * Ends the current session. + * + * @param stopCasting Should the receiver application be stopped when ending the current Session. + * @throws IllegalStateException If this method is not called on the main thread. + */ + public void endCurrentSession(boolean stopCasting) { + try { + delegate.endCurrentSession(true, stopCasting); + } catch (RemoteException e) { + // Ignore + } + } + + /** + * Returns the current session if it is an instance of {@link CastSession}, otherwise returns {@code null}. + * + * @throws IllegalStateException If this method is not called on the main thread. + */ + public CastSession getCurrentCastSession() { + Session currentSession = getCurrentSession(); + if (currentSession instanceof CastSession) { + return (CastSession) currentSession; + } + return null; + } + + /** + * Returns the currently active session. Returns {@code null} if no session is active. + * + * @throws IllegalStateException If this method is not called on the main thread. + */ + public Session getCurrentSession() { + try { + return ObjectWrapper.unwrapTyped(delegate.getWrappedCurrentSession(), Session.class); + } catch (RemoteException e) { + return null; + } + } + + IObjectWrapper getWrappedThis() { + try { + return delegate.getWrappedThis(); + } catch (RemoteException e) { + return null; + } + } +} diff --git a/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/SessionProvider.java b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/SessionProvider.java new file mode 100644 index 000000000..cc4c0f426 --- /dev/null +++ b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/SessionProvider.java @@ -0,0 +1,67 @@ +/* + * SPDX-FileCopyrightText: 2022 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.cast.framework; + +import android.content.Context; +import android.os.IBinder; +import org.microg.gms.cast.ISessionProviderImpl; + +/** + * An abstract base class for performing session construction. The SDK uses a subclass of {@link SessionProvider} to + * construct {@link CastSession} internally. If your app wants to support other types of {@link Session} then you should subclass this + * class. Subclasses must implement {@link #createSession(String)} and {@link #isSessionRecoverable()}, which will be called by + * the Cast SDK during the lifecycle of the session. All methods must be called from the main thread. + */ +public abstract class SessionProvider { + private Context context; + private String category; + private ISessionProvider bindable = new ISessionProviderImpl(this); + + /** + * Constructs a {@link SessionProvider} with a category string. The category uniquely identifies a {@link Session} created by this + * provider. + * + * @param applicationContext The application Context of the calling app. + * @param category The category string used to create {@link Session}. + */ + protected SessionProvider(Context applicationContext, String category) { + this.context = applicationContext; + this.category = category; + } + + /** + * Constructs a new {@link Session}. This method is called by the SDK to create a new session. + */ + public abstract Session createSession(String sessionId); + + /** + * Returns the category string for this {@link SessionProvider}. + */ + public final String getCategory() { + return category; + } + + /** + * Returns the application {@link Context} used to construct this instance. + */ + public final Context getContext() { + return context; + } + + /** + * Returns {@code true} if a previously constructed session can be resumed. Subclasses should check any persisted information + * about the previous session, such as a session ID, and return true only if it is possible to resume that session. This + * method is called by the SDK when it tries to resume a previously saved session. + */ + public abstract boolean isSessionRecoverable(); + + public IBinder asBinder() { + return bindable.asBinder(); + } +} diff --git a/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/media/MediaIntentReceiver.java b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/media/MediaIntentReceiver.java new file mode 100644 index 000000000..83d4e1282 --- /dev/null +++ b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/media/MediaIntentReceiver.java @@ -0,0 +1,198 @@ +/* + * SPDX-FileCopyrightText: 2022 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.cast.framework.media; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.view.KeyEvent; +import com.google.android.gms.cast.framework.CastContext; +import com.google.android.gms.cast.framework.CastSession; +import com.google.android.gms.cast.framework.Session; +import com.google.android.gms.cast.framework.SessionManager; + +public class MediaIntentReceiver extends BroadcastReceiver { + /** + * The action for ending the current session and disconnecting from the receiver app. + */ + public static final String ACTION_DISCONNECT = "com.google.android.gms.cast.framework.action.DISCONNECT"; + /** + * The action for forwarding the current item. When building an Intent with this action, use {@link #EXTRA_SKIP_STEP_MS} to set the + * time to forward in milliseconds. + */ + public static final String ACTION_FORWARD = "com.google.android.gms.cast.framework.action.FORWARD"; + /** + * The action for rewinding the current item. When building an Intent with this action, use {@link #EXTRA_SKIP_STEP_MS} to set the + * time to rewind in milliseconds. + */ + public static final String ACTION_REWIND = "com.google.android.gms.cast.framework.action.REWIND"; + /** + * The action for skipping to the next item in the queue. + */ + public static final String ACTION_SKIP_NEXT = "com.google.android.gms.cast.framework.action.SKIP_NEXT"; + /** + * The action for skipping to the previous item in the queue. + */ + public static final String ACTION_SKIP_PREV = "com.google.android.gms.cast.framework.action.SKIP_PREV"; + /** + * The action for ending the current session and stopping the receiver app. + */ + public static final String ACTION_STOP_CASTING = "com.google.android.gms.cast.framework.action.STOP_CASTING"; + /** + * The action for toggling remote media playback. + */ + public static final String ACTION_TOGGLE_PLAYBACK = "com.google.android.gms.cast.framework.action.TOGGLE_PLAYBACK"; + /** + * The extra key for specifying how much the currently playing item should be forwarded or rewinded to handle + * {@link #ACTION_FORWARD} and {@link #ACTION_REWIND}. + */ + public static final String EXTRA_SKIP_STEP_MS = "googlecast-extra_skip_step_ms"; + + @Override + public void onReceive(Context context, Intent intent) { + SessionManager sessionManager = CastContext.getSharedInstance(context).getSessionManager(); + Session currentSession = sessionManager.getCurrentSession(); + if (intent.getAction() != null && currentSession != null) { + switch (intent.getAction()) { + case ACTION_TOGGLE_PLAYBACK: + onReceiveActionTogglePlayback(currentSession); + break; + case ACTION_SKIP_NEXT: + onReceiveActionSkipNext(currentSession); + break; + case ACTION_SKIP_PREV: + onReceiveActionSkipPrev(currentSession); + break; + case ACTION_FORWARD: + onReceiveActionForward(currentSession, intent.getLongExtra(EXTRA_SKIP_STEP_MS, 0)); + break; + case ACTION_REWIND: + onReceiveActionRewind(currentSession, intent.getLongExtra(EXTRA_SKIP_STEP_MS, 0)); + break; + case ACTION_STOP_CASTING: + sessionManager.endCurrentSession(true); + break; + case ACTION_DISCONNECT: + sessionManager.endCurrentSession(false); + break; + case Intent.ACTION_MEDIA_BUTTON: + onReceiveActionMediaButton(currentSession, intent); + break; + default: + onReceiveOtherAction(context, intent.getAction(), intent); + break; + } + } + } + + /** + * Called when {@link #ACTION_FORWARD} is received. The default implementation forwards the current playing item by + * {@code forwardStepMs} if {@code currentSession} is a {@link CastSession}. Subclasses can override this method to change the behavior + * or handle other type of {@link Session}. Subclasses should call through to super to let the SDK handle the action if + * {@code currentSession} is a {@link CastSession} + * + * @param currentSession The current {@link Session}. + * @param forwardStepMs Time to forward in milliseconds. + */ + protected void onReceiveActionForward(Session currentSession, long forwardStepMs) { + if (!(currentSession instanceof CastSession)) return; + // TODO Seek forwardStepMs + } + + /** + * Called when {@link Intent#ACTION_MEDIA_BUTTON} is received. The default implementation toggles playback state if + * {@code currentSession} is a {@link CastSession}. Subclasses can override this method to change the behavior or handle other type + * of {@link Session}. Subclasses should call through to super to let the SDK handle the action if {@code currentSession} is a + * {@link CastSession} + * + * @param currentSession The current {@link Session}. + * @param intent The Intent of this action. + */ + protected void onReceiveActionMediaButton(Session currentSession, Intent intent) { + if (!(currentSession instanceof CastSession)) return; + if (intent.hasExtra(Intent.EXTRA_KEY_EVENT)) { + KeyEvent keyEvent = intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT); + if (keyEvent.getAction() == KeyEvent.ACTION_DOWN && keyEvent.getKeyCode() == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE) { + // TODO Toggle Playback + } + } + } + + /** + * Called when {@link #ACTION_REWIND} is received. The default implementation forwards the current playing item by + * {@code rewindStepMs} if {@code currentSession} is a {@link CastSession}. Subclasses can override this method to change the behavior or + * handle other type of {@link Session}. Subclasses should call through to super to let the SDK handle the action if + * {@code currentSession} is a {@link CastSession} + * + * @param currentSession The current {@link Session}. + * @param rewindStepMs Time to rewind in milliseconds. + */ + protected void onReceiveActionRewind(Session currentSession, long rewindStepMs) { + if (!(currentSession instanceof CastSession)) return; + // TODO Seek -rewindStepMs + } + + /** + * Called when {@link #ACTION_SKIP_NEXT} is received. The default implementation plays the next item in the queue if + * {@code currentSession} is a {@link CastSession} and there is a next item. Subclasses can override this method to change the + * behavior or handle other type of {@link Session}. Subclasses should call through to super to let the SDK handle the action if + * {@code currentSession} is a {@link CastSession} + * + * @param currentSession The current {@link Session}. + */ + protected void onReceiveActionSkipNext(Session currentSession) { + if (!(currentSession instanceof CastSession)) return; + // TODO Queue next + } + + /** + * Called when {@link #ACTION_SKIP_PREV} is received. The default implementation plays the previous item in the queue if + * {@code currentSession} is a {@link CastSession} and there is a previous item. Subclasses can override this method to change the + * behavior or handle other type of {@link Session}. Subclasses should call through to super to let the SDK handle the action if + * {@code currentSession} is a {@link CastSession} + * + * @param currentSession The current {@link Session}. + */ + protected void onReceiveActionSkipPrev(Session currentSession) { + if (!(currentSession instanceof CastSession)) return; + // TODO Queue prev + } + + /** + * Called when {@link #ACTION_TOGGLE_PLAYBACK} is received. The default implementation toggles playback state if + * {@code currentSession} is a {@link CastSession}. Subclasses can override this method to change the + * behavior or handle other type of {@link Session}. Subclasses should call through to super to let the SDK handle the action if + * {@code currentSession} is a {@link CastSession} + * + * @param currentSession The current {@link Session}. + */ + protected void onReceiveActionTogglePlayback(Session currentSession) { + if (!(currentSession instanceof CastSession)) return; + // TODO Toggle Playback + } + + /** + * @deprecated Override {@link #onReceiveOtherAction(Context, String, Intent)} instead. + */ + @Deprecated + protected void onReceiveOtherAction(String action, Intent intent) { + onReceiveOtherAction(null, action, intent); + } + + /** + * Called when other type of actions are received. The default implementation does nothing. + * + * @param context The Context in which the receiver is running. + * @param action The action. + * @param intent The Intent of this action. + */ + protected void onReceiveOtherAction(Context context, String action, Intent intent) { + + } +} diff --git a/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/media/MediaNotificationService.java b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/media/MediaNotificationService.java new file mode 100644 index 000000000..5683b4301 --- /dev/null +++ b/play-services-cast-framework/src/main/java/com/google/android/gms/cast/framework/media/MediaNotificationService.java @@ -0,0 +1,19 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.cast.framework.media; + +import android.app.Service; +import android.content.Intent; +import android.os.IBinder; +import androidx.annotation.Nullable; + +public class MediaNotificationService extends Service { + @Nullable + @Override + public IBinder onBind(Intent intent) { + return null; + } +} diff --git a/play-services-cast-framework/src/main/java/org/microg/gms/cast/CastDynamiteModule.java b/play-services-cast-framework/src/main/java/org/microg/gms/cast/CastDynamiteModule.java new file mode 100644 index 000000000..1a4e73087 --- /dev/null +++ b/play-services-cast-framework/src/main/java/org/microg/gms/cast/CastDynamiteModule.java @@ -0,0 +1,47 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.microg.gms.cast; + +import android.app.Service; +import android.content.Context; +import android.os.IBinder; +import android.os.RemoteException; +import androidx.annotation.NonNull; +import com.google.android.gms.cast.framework.CastOptions; +import com.google.android.gms.cast.framework.ICastContext; +import com.google.android.gms.cast.framework.IReconnectionService; +import com.google.android.gms.cast.framework.ModuleUnavailableException; +import com.google.android.gms.cast.framework.internal.ICastDynamiteModule; +import com.google.android.gms.cast.framework.internal.IMediaRouter; +import com.google.android.gms.dynamic.IObjectWrapper; +import com.google.android.gms.dynamic.ObjectWrapper; +import com.google.android.gms.dynamite.DynamiteModule; + +import java.util.Map; + +public class CastDynamiteModule { + public static ICastContext newCastContext(Context context, CastOptions castOptions, IMediaRouter mediaRouter, Map sessionProviderMap) throws ModuleUnavailableException, RemoteException { + return getInterface(context).newCastContextImpl(ObjectWrapper.wrap(context), castOptions, mediaRouter, sessionProviderMap); + } + + public static IReconnectionService newReconnectionService(Service service, IObjectWrapper sessionManager, IObjectWrapper discoveryManager) { + try { + return getInterface(service.getApplicationContext()).newReconnectionServiceImpl(ObjectWrapper.wrap(service), sessionManager, discoveryManager); + } catch (RemoteException | ModuleUnavailableException e) { + return null; + } + } + + @NonNull + private static ICastDynamiteModule getInterface(Context context) throws ModuleUnavailableException { + try { + IBinder binder = DynamiteModule.load(context, DynamiteModule.PREFER_REMOTE, "com.google.android.gms.cast.framework.dynamite").instantiate("com.google.android.gms.cast.framework.internal.CastDynamiteModuleImpl"); + return ICastDynamiteModule.Stub.asInterface(binder); + } catch (DynamiteModule.LoadingException e) { + throw new ModuleUnavailableException(e); + } + } +} diff --git a/play-services-cast-framework/src/main/java/org/microg/gms/cast/CastSessionProvider.java b/play-services-cast-framework/src/main/java/org/microg/gms/cast/CastSessionProvider.java new file mode 100644 index 000000000..7222f9fad --- /dev/null +++ b/play-services-cast-framework/src/main/java/org/microg/gms/cast/CastSessionProvider.java @@ -0,0 +1,31 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.microg.gms.cast; + +import android.content.Context; +import com.google.android.gms.cast.CastMediaControlIntent; +import com.google.android.gms.cast.framework.CastOptions; +import com.google.android.gms.cast.framework.Session; +import com.google.android.gms.cast.framework.SessionProvider; + +public class CastSessionProvider extends SessionProvider { + private CastOptions castOptions; + + public CastSessionProvider(Context applicationContext, CastOptions castOptions) { + super(applicationContext, castOptions.getSupportedNamespaces().isEmpty() ? CastMediaControlIntent.categoryForCast(castOptions.getReceiverApplicationId()) : CastMediaControlIntent.categoryForCast(castOptions.getReceiverApplicationId(), castOptions.getSupportedNamespaces())); + this.castOptions = castOptions; + } + + @Override + public Session createSession(String sessionId) { + return null; + } + + @Override + public boolean isSessionRecoverable() { + return false; + } +} diff --git a/play-services-cast-framework/src/main/java/org/microg/gms/cast/ISessionProviderImpl.java b/play-services-cast-framework/src/main/java/org/microg/gms/cast/ISessionProviderImpl.java new file mode 100644 index 000000000..c9997fe5e --- /dev/null +++ b/play-services-cast-framework/src/main/java/org/microg/gms/cast/ISessionProviderImpl.java @@ -0,0 +1,41 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.microg.gms.cast; + +import android.os.RemoteException; +import com.google.android.gms.cast.framework.ISessionProvider; +import com.google.android.gms.cast.framework.SessionProvider; +import com.google.android.gms.dynamic.IObjectWrapper; +import com.google.android.gms.dynamic.ObjectWrapper; +import org.microg.gms.common.Constants; + +public class ISessionProviderImpl extends ISessionProvider.Stub { + private SessionProvider delegate; + + public ISessionProviderImpl(SessionProvider delegate) { + this.delegate = delegate; + } + + @Override + public IObjectWrapper getSession(String sessionId) throws RemoteException { + return ObjectWrapper.wrap(delegate.createSession(sessionId)); + } + + @Override + public boolean isSessionRecoverable() throws RemoteException { + return delegate.isSessionRecoverable(); + } + + @Override + public String getCategory() throws RemoteException { + return delegate.getCategory(); + } + + @Override + public int getSupportedVersion() throws RemoteException { + return Constants.GMS_VERSION_CODE; + } +} diff --git a/play-services-cast/src/main/AndroidManifest.xml b/play-services-cast/src/main/AndroidManifest.xml index 7e14f3940..a30534639 100644 --- a/play-services-cast/src/main/AndroidManifest.xml +++ b/play-services-cast/src/main/AndroidManifest.xml @@ -15,4 +15,4 @@ ~ limitations under the License. --> - + -- GitLab From 42ab8b0aa6c742cdb0f575bcbe1fa23d47254b96 Mon Sep 17 00:00:00 2001 From: Marvin W Date: Tue, 27 Dec 2022 19:31:48 +0100 Subject: [PATCH 08/14] Nearby: Add WakeUpService --- .../exposurenotification/WakeUpService.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 play-services-nearby/src/main/java/com/google/android/gms/nearby/exposurenotification/WakeUpService.java diff --git a/play-services-nearby/src/main/java/com/google/android/gms/nearby/exposurenotification/WakeUpService.java b/play-services-nearby/src/main/java/com/google/android/gms/nearby/exposurenotification/WakeUpService.java new file mode 100644 index 000000000..44ff537aa --- /dev/null +++ b/play-services-nearby/src/main/java/com/google/android/gms/nearby/exposurenotification/WakeUpService.java @@ -0,0 +1,21 @@ +/* + * SPDX-FileCopyrightText: 2022 microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.nearby.exposurenotification; + +import android.app.Service; +import android.content.Intent; +import android.os.Handler; +import android.os.IBinder; +import android.os.Messenger; +import androidx.annotation.Nullable; + +public class WakeUpService extends Service { + @Nullable + @Override + public IBinder onBind(Intent intent) { + return new Messenger(new Handler()).getBinder(); + } +} -- GitLab From 9936ba43287821859b94bd934856656a0198f874 Mon Sep 17 00:00:00 2001 From: Marvin W Date: Thu, 5 Jan 2023 10:35:14 +0100 Subject: [PATCH 09/14] Fix CI build --- build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle b/build.gradle index e5e04f906..2be090324 100644 --- a/build.gradle +++ b/build.gradle @@ -106,6 +106,7 @@ subprojects { if (project.plugins.hasPlugin('com.android.base')) { dependencies { compileOnly "org.microg:safe-parcel:$safeParcelVersion" + testCompileOnly "org.microg:safe-parcel:$safeParcelVersion" } } } -- GitLab From b31072290a8bef20feeeba12ef31d9e29a22b63f Mon Sep 17 00:00:00 2001 From: HZ is not Chatty <99131470+hustler-not-chatty@users.noreply.github.com> Date: Thu, 5 Jan 2023 18:25:29 +0800 Subject: [PATCH 10/14] Specify targetPackage for intents from Authenticator Preferences (#1849) --- .../src/main/res/xml/preferences_auth.xml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/play-services-core/src/main/res/xml/preferences_auth.xml b/play-services-core/src/main/res/xml/preferences_auth.xml index f3d707b1c..d4c0871c4 100644 --- a/play-services-core/src/main/res/xml/preferences_auth.xml +++ b/play-services-core/src/main/res/xml/preferences_auth.xml @@ -18,16 +18,22 @@ - + - + - + -- GitLab From 7549192156869bda8beb8cc0ea9331933faf3284 Mon Sep 17 00:00:00 2001 From: Fs00 Date: Sun, 1 Jan 2023 17:51:06 +0100 Subject: [PATCH 11/14] Remove unused code/strings --- .../microg/gms/ui/SafetyNetSummaryAdapter.kt | 125 ------------------ .../src/main/res/values-be/strings.xml | 2 - .../src/main/res/values-ru/strings.xml | 2 - .../src/main/res/values/strings.xml | 2 - 4 files changed, 131 deletions(-) delete mode 100644 play-services-core/src/main/kotlin/org/microg/gms/ui/SafetyNetSummaryAdapter.kt diff --git a/play-services-core/src/main/kotlin/org/microg/gms/ui/SafetyNetSummaryAdapter.kt b/play-services-core/src/main/kotlin/org/microg/gms/ui/SafetyNetSummaryAdapter.kt deleted file mode 100644 index 06fe2043f..000000000 --- a/play-services-core/src/main/kotlin/org/microg/gms/ui/SafetyNetSummaryAdapter.kt +++ /dev/null @@ -1,125 +0,0 @@ -package org.microg.gms.ui - -import android.graphics.Color -import android.text.format.DateUtils -import org.microg.gms.safetynet.SafetyNetSummary -import org.microg.gms.ui.SafetyNetSummaryAdapter.SafetyNetSummaryViewHolder -import android.view.ViewGroup -import android.view.LayoutInflater -import android.view.View -import android.widget.ImageView -import android.widget.TextView -import android.widget.Toast -import androidx.recyclerview.widget.DiffUtil -import androidx.recyclerview.widget.ListAdapter -import androidx.recyclerview.widget.RecyclerView -import com.google.android.gms.R -import org.json.JSONException -import org.json.JSONObject -import org.microg.gms.safetynet.SafetyNetRequestType - -class SafetyNetSummaryAdapter( - private val recentRequests: List, - var clickHandler: (SafetyNetSummary) -> Unit -) : ListAdapter(DiffCallback) { - - init { - submitList(recentRequests) - } - - companion object DiffCallback : DiffUtil.ItemCallback() { - override fun areItemsTheSame(oldItem: SafetyNetSummary, newItem: SafetyNetSummary): Boolean { - return oldItem.id==newItem.id - } - - override fun areContentsTheSame(oldItem: SafetyNetSummary, newItem: SafetyNetSummary): Boolean { - return oldItem==newItem - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SafetyNetSummaryViewHolder { - val view: View = LayoutInflater.from(parent.context) - .inflate(R.layout.safety_net_recent_card, parent, false) - return SafetyNetSummaryViewHolder(view) - } - - - - private fun getResponseStatus(summary: SafetyNetSummary) : Pair { - if (summary.responseStatus == null) return Pair(null, "Not completed yet") - - if (summary.requestType == SafetyNetRequestType.ATTESTATION) { - if (!summary.responseStatus!!.isSuccess) return Pair(Color.RED, "Failed") - - val (basicIntegrity, ctsProfileMatch) = try { - JSONObject(summary.responseData!!).let { - Pair( - it.optBoolean("basicIntegrity", false), - it.optBoolean("ctsProfileMatch", false) - ) - } - } catch (e: JSONException) { - return Pair(Color.RED, "Invalid JSON") - } - - return when { - basicIntegrity && ctsProfileMatch -> { - Pair(Color.GREEN, "Integrity and CTS passed") - } - basicIntegrity -> { - Pair(Color.RED, "CTS failed") - } - else -> { - Pair(Color.RED, "Integrity failed") - } - } - - - } else { - return if (summary.responseStatus!!.isSuccess) { - Pair(Color.GREEN, "Success") - } else { - Pair(Color.RED, summary.responseStatus!!.statusMessage) - } - } - } - - override fun onBindViewHolder(holder: SafetyNetSummaryViewHolder, position: Int) { - val summary = getItem(position) - val context = holder.packageName.context - val pm = context.packageManager - - val appInfo = pm.getApplicationInfoIfExists(summary.packageName) - if(appInfo==null){ - return Toast.makeText(context, "Application not installed", Toast.LENGTH_SHORT).show() - } - - holder.appIcon.setImageDrawable(pm.getApplicationInfoIfExists(summary.packageName)?.loadIcon(pm)) - - holder.requestType.text = summary.requestType.name - holder.date.text = DateUtils.getRelativeDateTimeString(context, summary.timestamp, DateUtils.MINUTE_IN_MILLIS, DateUtils.WEEK_IN_MILLIS, DateUtils.FORMAT_SHOW_TIME) - - - holder.packageName.text = summary.packageName - - getResponseStatus(summary).let { - it.first?.let{ color -> holder.infoMsg.setTextColor(color) } - holder.infoMsg.text = it.second - } - - holder.itemView.setOnClickListener { clickHandler(summary) } - } - - fun clearList() { - submitList(emptyList()) - notifyDataSetChanged() - } - - class SafetyNetSummaryViewHolder(view: View) : RecyclerView.ViewHolder(view) { - val appIcon: ImageView = view.findViewById(R.id.snet_recent_appicon) - val requestType: TextView = view.findViewById(R.id.snet_recent_type) - val date: TextView = view.findViewById(R.id.snet_recent_date) - val packageName: TextView = view.findViewById(R.id.snet_recent_package) - val infoMsg: TextView = view.findViewById(R.id.snet_recent_infomsg) - } -} diff --git a/play-services-core/src/main/res/values-be/strings.xml b/play-services-core/src/main/res/values-be/strings.xml index 7379679ed..f97fad282 100644 --- a/play-services-core/src/main/res/values-be/strings.xml +++ b/play-services-core/src/main/res/values-be/strings.xml @@ -181,8 +181,6 @@ Выкананне… Рэжым работы Прыкладанні якія выкарыстоўваюць SafetyNet - Нядаўнія запыты SafetyNet - Нядаўнія запыты SafetyNet адсутнічаюць! Ачысціць нядаўнія запыты Апошняе выкарыстанне: %1$s diff --git a/play-services-core/src/main/res/values-ru/strings.xml b/play-services-core/src/main/res/values-ru/strings.xml index 178d6d28a..ba37042dd 100644 --- a/play-services-core/src/main/res/values-ru/strings.xml +++ b/play-services-core/src/main/res/values-ru/strings.xml @@ -181,8 +181,6 @@ Выполнение… Режим работы Приложения использующие SafetyNet - Недавние запросы SafetyNet - Недавние запросы SafetyNet отсутствуют! Очистить недавние запросы Последнее использование: %1$s diff --git a/play-services-core/src/main/res/values/strings.xml b/play-services-core/src/main/res/values/strings.xml index 96262fd51..32d692e1f 100644 --- a/play-services-core/src/main/res/values/strings.xml +++ b/play-services-core/src/main/res/values/strings.xml @@ -182,8 +182,6 @@ This can take a couple of minutes." Running… Operation mode Apps using SafetyNet - SafetyNet Recent Requests - No recent SafetyNet requests ! Clear recent requests Last use: %1$s -- GitLab From 52f3b8ba58bccc83f1b59b8a3a0d748e14298f2c Mon Sep 17 00:00:00 2001 From: Fs00 Date: Sun, 1 Jan 2023 18:22:56 +0100 Subject: [PATCH 12/14] Make more strings translatable --- ...NetRecentAttestationPreferencesFragment.kt | 30 ++++++++----------- ...tyNetRecentRecaptchaPreferencesFragment.kt | 10 +++---- .../org/microg/gms/ui/SafetyNetUtils.kt | 12 ++++++-- .../src/main/res/values/strings.xml | 9 ++++++ .../res/xml/preferences_safetynet_app.xml | 2 +- 5 files changed, 36 insertions(+), 27 deletions(-) diff --git a/play-services-core/src/main/kotlin/org/microg/gms/ui/SafetyNetRecentAttestationPreferencesFragment.kt b/play-services-core/src/main/kotlin/org/microg/gms/ui/SafetyNetRecentAttestationPreferencesFragment.kt index 22e0aac38..248abe5e0 100644 --- a/play-services-core/src/main/kotlin/org/microg/gms/ui/SafetyNetRecentAttestationPreferencesFragment.kt +++ b/play-services-core/src/main/kotlin/org/microg/gms/ui/SafetyNetRecentAttestationPreferencesFragment.kt @@ -49,9 +49,10 @@ class SafetyNetRecentAttestationPreferencesFragment : PreferenceFragmentCompat() } } - if(snetSummary.responseStatus==null){ - status.summary = "Not completed yet" - }else if(snetSummary.responseStatus!!.isSuccess) { + val snetResponseStatus = snetSummary.responseStatus + if (snetResponseStatus == null) { + status.summary = getString(R.string.pref_safetynet_test_not_completed) + } else if (snetResponseStatus.isSuccess) { try { val json = JSONObject(snetSummary.responseData!!) evalType.summary = json.getString("evaluationType") @@ -60,24 +61,17 @@ class SafetyNetRecentAttestationPreferencesFragment : PreferenceFragmentCompat() val basicIntegrity = json.getBoolean("basicIntegrity") val ctsProfileMatch = json.getBoolean("ctsProfileMatch") - status.summary = when{ - basicIntegrity && ctsProfileMatch -> { - "Integrity and CTS passed" - } - basicIntegrity -> { - "CTS failed" - } - else -> { - "Integrity failed" - } + status.summary = when { + basicIntegrity && ctsProfileMatch -> getString(R.string.pref_safetynet_test_integrity_cts_passed) + basicIntegrity -> getString(R.string.pref_safetynet_test_cts_failed) + else -> getString(R.string.pref_safetynet_test_integrity_failed) } - } catch (e: JSONException) { e.printStackTrace() - status.summary = "Invalid JSON" + status.summary = getString(R.string.pref_safetynet_test_invalid_json) } - }else{ - status.summary = snetSummary.responseStatus!!.statusMessage + } else { + status.summary = snetResponseStatus.statusMessage } copyResult.setOnPreferenceClickListener { @@ -85,7 +79,7 @@ class SafetyNetRecentAttestationPreferencesFragment : PreferenceFragmentCompat() val clip = ClipData.newPlainText("JSON JWS data", snetSummary.responseData) clipboard.setPrimaryClip(clip) - Toast.makeText(context, "Copied to clipboard !", Toast.LENGTH_SHORT).show() + Toast.makeText(context, R.string.pref_safetynet_recent_copied, Toast.LENGTH_SHORT).show() true } diff --git a/play-services-core/src/main/kotlin/org/microg/gms/ui/SafetyNetRecentRecaptchaPreferencesFragment.kt b/play-services-core/src/main/kotlin/org/microg/gms/ui/SafetyNetRecentRecaptchaPreferencesFragment.kt index 01d19e182..755a7abbe 100644 --- a/play-services-core/src/main/kotlin/org/microg/gms/ui/SafetyNetRecentRecaptchaPreferencesFragment.kt +++ b/play-services-core/src/main/kotlin/org/microg/gms/ui/SafetyNetRecentRecaptchaPreferencesFragment.kt @@ -30,13 +30,13 @@ class SafetyNetRecentRecaptchaPreferencesFragment : PreferenceFragmentCompat() { time.summary = DateUtils.getRelativeDateTimeString(context, snetSummary.timestamp, DateUtils.MINUTE_IN_MILLIS, DateUtils.WEEK_IN_MILLIS, DateUtils.FORMAT_SHOW_TIME) - if(snetSummary.responseStatus==null){ - status.summary = "Not completed yet" - }else{ - status.summary = snetSummary.responseStatus!!.statusMessage + val snetResponseStatus = snetSummary.responseStatus + if (snetResponseStatus == null) { + status.summary = getString(R.string.pref_safetynet_test_not_completed) + } else { + status.summary = snetResponseStatus.statusMessage token.summary = snetSummary.responseData } - } } \ No newline at end of file diff --git a/play-services-core/src/main/kotlin/org/microg/gms/ui/SafetyNetUtils.kt b/play-services-core/src/main/kotlin/org/microg/gms/ui/SafetyNetUtils.kt index 413fc01b9..7f3f195ad 100644 --- a/play-services-core/src/main/kotlin/org/microg/gms/ui/SafetyNetUtils.kt +++ b/play-services-core/src/main/kotlin/org/microg/gms/ui/SafetyNetUtils.kt @@ -18,8 +18,14 @@ import org.microg.gms.safetynet.SafetyNetRequestType fun formatSummaryForSafetyNetResult(context: Context, result: String?, status: Status?, type: SafetyNetRequestType): Pair { when (type) { SafetyNetRequestType.ATTESTATION -> { - if (status?.isSuccess != true) return context.getString(R.string.pref_test_summary_failed, status?.statusMessage) to ContextCompat.getDrawable(context, R.drawable.ic_circle_error) - if (result == null) return context.getString(R.string.pref_test_summary_failed, "No result") to ContextCompat.getDrawable(context, R.drawable.ic_circle_warn) + if (status?.isSuccess != true) { + return context.getString(R.string.pref_test_summary_failed, status?.statusMessage) to + ContextCompat.getDrawable(context, R.drawable.ic_circle_error) + } + if (result == null) { + return context.getString(R.string.pref_test_summary_failed, context.getString(R.string.pref_safetynet_test_no_result)) to + ContextCompat.getDrawable(context, R.drawable.ic_circle_warn) + } val (basicIntegrity, ctsProfileMatch, advice) = try { JSONObject(result).let { Triple( @@ -32,7 +38,7 @@ fun formatSummaryForSafetyNetResult(context: Context, result: String?, status: S Log.w(TAG, e) return context.getString( R.string.pref_test_summary_failed, - "Invalid JSON" + context.getString(R.string.pref_safetynet_test_invalid_json) ) to ContextCompat.getDrawable(context, R.drawable.ic_circle_error) } val adviceText = if (advice == "") "" else "\n" + advice.split(",").map { diff --git a/play-services-core/src/main/res/values/strings.xml b/play-services-core/src/main/res/values/strings.xml index 32d692e1f..e03ebdf48 100644 --- a/play-services-core/src/main/res/values/strings.xml +++ b/play-services-core/src/main/res/values/strings.xml @@ -195,6 +195,8 @@ This can take a couple of minutes."
Import device profile from file Select profile Device profile + + Recent uses Copy JSON JWS data Advice Evaluation type @@ -206,5 +208,12 @@ This can take a couple of minutes."
Request type Basic data Token + Copied to clipboard! + Integrity and CTS passed + CTS failed + Integrity failed + Not completed yet + No result + Invalid JSON diff --git a/play-services-core/src/main/res/xml/preferences_safetynet_app.xml b/play-services-core/src/main/res/xml/preferences_safetynet_app.xml index ff56400d3..70116ae5e 100644 --- a/play-services-core/src/main/res/xml/preferences_safetynet_app.xml +++ b/play-services-core/src/main/res/xml/preferences_safetynet_app.xml @@ -8,7 +8,7 @@ xmlns:tools="http://schemas.android.com/tools"> + android:title="@string/pref_safetynet_recent_uses"> Date: Thu, 5 Jan 2023 11:34:36 +0100 Subject: [PATCH 13/14] Workaround context crashes, fixes #1653 (#1819) --- .../microg/gms/ui/PushNotificationPreferencesFragment.kt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/play-services-core/src/main/kotlin/org/microg/gms/ui/PushNotificationPreferencesFragment.kt b/play-services-core/src/main/kotlin/org/microg/gms/ui/PushNotificationPreferencesFragment.kt index 48ba377be..ee558e166 100644 --- a/play-services-core/src/main/kotlin/org/microg/gms/ui/PushNotificationPreferencesFragment.kt +++ b/play-services-core/src/main/kotlin/org/microg/gms/ui/PushNotificationPreferencesFragment.kt @@ -67,13 +67,14 @@ class PushNotificationPreferencesFragment : PreferenceFragmentCompat() { private fun updateStatus() { handler.postDelayed(updateRunnable, UPDATE_INTERVAL) + val appContext = requireContext().applicationContext lifecycleScope.launchWhenStarted { - val statusInfo = getGcmServiceInfo(requireContext()) - pushStatusCategory.isVisible = statusInfo.configuration.enabled + val statusInfo = getGcmServiceInfo(appContext) + pushStatusCategory.isVisible = statusInfo != null && statusInfo.configuration.enabled pushStatus.summary = if (statusInfo != null && statusInfo.connected) { - getString(R.string.gcm_network_state_connected, DateUtils.getRelativeTimeSpanString(statusInfo.startTimestamp, System.currentTimeMillis(), 0)) + appContext.getString(R.string.gcm_network_state_connected, DateUtils.getRelativeTimeSpanString(statusInfo.startTimestamp, System.currentTimeMillis(), 0)) } else { - getString(R.string.gcm_network_state_disconnected) + appContext.getString(R.string.gcm_network_state_disconnected) } } } -- GitLab From 2f51d618f8f03eb9e509c9e6ce004189230d0c5b Mon Sep 17 00:00:00 2001 From: HZ is not Chatty <99131470+hustler-not-chatty@users.noreply.github.com> Date: Fri, 6 Jan 2023 00:24:04 +0800 Subject: [PATCH 14/14] Updates to Simplified Chinese translations (#1848) --- .../src/main/res/values-zh-rCN/strings.xml | 39 +++++++++++++++---- .../src/main/res/values-zh-rCN/strings.xml | 14 +++---- 2 files changed, 38 insertions(+), 15 deletions(-) diff --git a/play-services-core/src/main/res/values-zh-rCN/strings.xml b/play-services-core/src/main/res/values-zh-rCN/strings.xml index cd0d4e969..9b013ce32 100644 --- a/play-services-core/src/main/res/values-zh-rCN/strings.xml +++ b/play-services-core/src/main/res/values-zh-rCN/strings.xml @@ -2,12 +2,12 @@ 登录 - 正在建立到 Google 服务器的连接以供您登录。 + "正在建立到 Google 服务器的连接以供您登录。 -这需要几秒钟时间。 - 您未连接到互联网。 +这需要几秒钟时间。" + "您未连接到互联网。 -这可能是暂时性的问题,或者是您的 Android 设备不能使用数据服务。请在连接到移动网络或 Wi-Fi 网络后重试。 +这可能是暂时性的问题,或者是您的 Android 设备不能使用数据服务。请在连接到移动网络或 Wi-Fi 网络后重试。" 抱歉… 允许 拒绝 @@ -68,7 +68,7 @@ Google 账号管理员 "您设备上的某个应用正尝试登录一个 Google 账号。 -若是您有意为之,点击登录以连接到 Google 的登录页面;否则点击取消以返回到弹出此页面的应用。" +若这是您有意而为,点击登录以连接到 Google 的登录页面;否则点击取消以返回到弹出此页面的应用。"
"您的设备正在与 Google 联系以将您的信息存入账号。 这可能需要几分钟。" @@ -142,10 +142,10 @@ 自定义:%s 自动:%s 系统:%s - "测试 SafetyNet 认证 " - Google SafetyNet 是一套设备认证系统,旨在确认设备具有适当安全性,并与 Android CTS 兼容。某些应用会出于安全考虑或是防篡改目的而使用 SafetyNet。 + "测试 SafetyNet 认证" + "Google SafetyNet 是一套设备认证系统,旨在确认设备具有适当安全性,并与 Android CTS 兼容。某些应用会出于安全考虑或是防篡改目的而使用 SafetyNet。 -microG GmsCore 内置一套自由的 SafetyNet 实现,但是官方服务器要求 SafetyNet 请求使用其专有的 DroidGuard 系统签名。 +microG GmsCore 内置一套自由的 SafetyNet 实现,但是官方服务器要求 SafetyNet 请求使用其专有的 DroidGuard 系统签名。" Google 服务 额外使用 Google 服务 @@ -161,4 +161,27 @@ microG GmsCore 内置一套自由的 SafetyNet 实现,但是官方服务器要 从文件导入自定义的设备配置信息 选择配置信息 设备配置信息 + 使用 SafetyNet 的应用 + 清除近期的 SafetyNet 请求 + 最近使用于%1$s + 评估类型 + 响应状态 + 响应数据 + 请求数据 + 十六进制 Nonce + 请求时间 + 请求类型 + 基础数据 + 令牌 + 复制 JSON JWS 数据 + 建议 + 尚未完成 + 无结果 + 无效 JSON + 未通过 CTS 测试 + 进行 reCAPTCHA Enterprise 测试 + 已复制到剪贴板 + 已通过完整性和 CTS 测试 + 未通过完整性测试 + 最近使用 diff --git a/play-services-nearby/core/src/main/res/values-zh-rCN/strings.xml b/play-services-nearby/core/src/main/res/values-zh-rCN/strings.xml index 027533f35..c6902676b 100644 --- a/play-services-nearby/core/src/main/res/values-zh-rCN/strings.xml +++ b/play-services-nearby/core/src/main/res/values-zh-rCN/strings.xml @@ -17,7 +17,7 @@ 很抱歉,您的设备与接触史通知系统仅部分兼容。您可以收到接触风险通知,但无法向他人发出通知。 使用接触史通知系统的应用 已收集的标识符 - 一小时内已收集 %1$d 个标识符 + 最近一小时已收集 %1$d 个标识符 当前已广播的标识符 已报告接触史 最后更新于:%1$s @@ -44,11 +44,11 @@ 其他设备拥有者被确诊为阳性时,他们的标识将被共享。您的设备将检查是否曾收集到已知确诊患者的标识,并据此计算您的感染风险。" "接触史通知 API 允许应用在您曾经与新冠肺炎阳性确诊患者接触时通知您。 -与接触相关的日期、时长和信号强度将被共享给相应的应用。 +接触的发生日期、时长和信号强度将被共享给相应的应用。 导出已收集的标识符以供其他应用进一步分析。 关闭接触史通知? - 近距离暴露 - 远距离暴露 + 近距离接触 + 远距离接触 %1$s 需要额外权限。 授予权限 需要打开蓝牙。 @@ -56,14 +56,14 @@ 马上就好!请在下一屏幕中选择“一律允许”以授予后台位置访问权限,然后返回。 %1$s 共享您的标识符? 共享 - 关闭暴露史通知后,您将无法在最近接触过确诊对象时获得通知。 - 点击以向暴露史通知授予权限。 + 关闭接触史通知后,您将无法在最近接触过确诊对象时获得通知。 + 点击以向接触史通知授予权限。 您最近 14 天的标识符将被用来帮助向您附近的人通知您的潜在接触史。不会向他人共享您的个人身份和检测结果。 "您的设备需要蓝牙以安全地收集并与附近的其他设备共享标识符。 %1$s 可以在您曾与新冠肺炎阳性确诊患者接触时通知您。 -接触时的日期、时长和与信号强度将被共享给相应的应用。" +接触的发生日期、时长和与信号强度将被共享给相应的应用。" 每小时 %1$s 个标识符 已收集 %1$d 个标识符 %1$s,风险评分:%2$d -- GitLab