From 19af72d14ace6b7ce7ef590e87547628f6471a43 Mon Sep 17 00:00:00 2001 From: Oizaro <75915943+Oizaro@users.noreply.github.com> Date: Sun, 27 Jun 2021 21:53:47 +0200 Subject: [PATCH] Update to latest upstream --- .gitignore | 6 ++- build.gradle | 1 + .../api/credentials/CredentialRequest.java | 2 + play-services-core/build.gradle | 3 +- .../src/main/AndroidManifest.xml | 9 +++- .../chimera/container/DynamiteContext.java | 27 ++++++---- .../{ui => auth}/CredentialPickerActivity.kt | 2 +- .../org/microg/gms/auth/CredentialsService.kt | 53 +++++++++++++++++++ play-services-cronet-core/build.gradle | 34 ++++++++++++ .../src/main/AndroidManifest.xml | 11 ++++ .../gms/cronet_dynamite/ModuleDescriptor.java | 37 +++++++++++++ settings.gradle | 2 + 12 files changed, 171 insertions(+), 16 deletions(-) rename play-services-core/src/main/kotlin/org/microg/gms/{ui => auth}/CredentialPickerActivity.kt (98%) create mode 100644 play-services-core/src/main/kotlin/org/microg/gms/auth/CredentialsService.kt create mode 100644 play-services-cronet-core/build.gradle create mode 100644 play-services-cronet-core/src/main/AndroidManifest.xml create mode 100644 play-services-cronet-core/src/main/java/com/google/android/gms/dynamite/descriptors/com/google/android/gms/cronet_dynamite/ModuleDescriptor.java diff --git a/.gitignore b/.gitignore index 6932dd10..ec5fff5e 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,8 @@ build/ user.gradle local.properties .directory -play-services-core/release \ No newline at end of file +play-services-core/release + +.settings +.classpath +.project \ No newline at end of file diff --git a/build.gradle b/build.gradle index 6b3fc1e3..ab8b41f9 100644 --- a/build.gradle +++ b/build.gradle @@ -4,6 +4,7 @@ */ buildscript { + ext.cronetVersion = '91.0.4472.120' ext.safeParcelVersion = '1.7.0' ext.kotlinVersion = '1.4.32' diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/CredentialRequest.java b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/CredentialRequest.java index 35340b01..d5cbf928 100644 --- a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/CredentialRequest.java +++ b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/CredentialRequest.java @@ -32,6 +32,8 @@ public class CredentialRequest extends AutoSafeParcelable { @Field(4) private CredentialPickerConfig credentialHintPickerConfig; + private CredentialRequest() { } + public CredentialRequest(boolean passwordLoginSupported, String[] accountTypes, CredentialPickerConfig credentialPickerConfig, CredentialPickerConfig credentialHintPickerConfig) { this.passwordLoginSupported = passwordLoginSupported; this.accountTypes = accountTypes; diff --git a/play-services-core/build.gradle b/play-services-core/build.gradle index fe05de71..1e6f0b93 100644 --- a/play-services-core/build.gradle +++ b/play-services-core/build.gradle @@ -26,6 +26,7 @@ dependencies { // 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" + implementation project(':play-services-cronet-core') implementation project(':play-services-core-proto') implementation project(':play-services-core:microg-ui-tools') // deprecated implementation project(':play-services-api') @@ -62,7 +63,7 @@ android { targetSdkVersion androidTargetSdk ndk { - abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64" + abiFilters "armeabi-v7a", "arm64-v8a", "x86" } } diff --git a/play-services-core/src/main/AndroidManifest.xml b/play-services-core/src/main/AndroidManifest.xml index 95cbc125..1447b73a 100644 --- a/play-services-core/src/main/AndroidManifest.xml +++ b/play-services-core/src/main/AndroidManifest.xml @@ -277,7 +277,7 @@ android:exported="true" /> @@ -285,6 +285,12 @@ + + + + + + @@ -470,7 +476,6 @@ - diff --git a/play-services-core/src/main/java/com/google/android/gms/chimera/container/DynamiteContext.java b/play-services-core/src/main/java/com/google/android/gms/chimera/container/DynamiteContext.java index 7f104fbe..8484447b 100644 --- a/play-services-core/src/main/java/com/google/android/gms/chimera/container/DynamiteContext.java +++ b/play-services-core/src/main/java/com/google/android/gms/chimera/container/DynamiteContext.java @@ -28,6 +28,8 @@ public class DynamiteContext extends ContextWrapper { private Context gmsContext; private DynamiteContext appContext; + private ClassLoader classLoader; + public DynamiteContext(DynamiteModuleInfo moduleInfo, Context base, Context gmsContext, DynamiteContext appContext) { super(base); this.moduleInfo = moduleInfo; @@ -38,19 +40,22 @@ public class DynamiteContext extends ContextWrapper { @Override public ClassLoader getClassLoader() { - StringBuilder nativeLoaderDirs = new StringBuilder(gmsContext.getApplicationInfo().nativeLibraryDir); - if (Build.VERSION.SDK_INT >= 23 && Process.is64Bit()) { - for (String abi : Build.SUPPORTED_64_BIT_ABIS) { - nativeLoaderDirs.append(File.pathSeparator).append(gmsContext.getApplicationInfo().sourceDir).append("!/lib/").append(abi); + if (classLoader == null) { + StringBuilder nativeLoaderDirs = new StringBuilder(gmsContext.getApplicationInfo().nativeLibraryDir); + if (Build.VERSION.SDK_INT >= 23 && Process.is64Bit()) { + for (String abi : Build.SUPPORTED_64_BIT_ABIS) { + nativeLoaderDirs.append(File.pathSeparator).append(gmsContext.getApplicationInfo().sourceDir).append("!/lib/").append(abi); + } + } else if (Build.VERSION.SDK_INT >= 21) { + for (String abi : Build.SUPPORTED_32_BIT_ABIS) { + nativeLoaderDirs.append(File.pathSeparator).append(gmsContext.getApplicationInfo().sourceDir).append("!/lib/").append(abi); + } + } else { + nativeLoaderDirs.append(File.pathSeparator).append(gmsContext.getApplicationInfo().sourceDir).append("!/lib/").append(Build.CPU_ABI); } - } else if (Build.VERSION.SDK_INT >= 21) { - for (String abi : Build.SUPPORTED_32_BIT_ABIS) { - nativeLoaderDirs.append(File.pathSeparator).append(gmsContext.getApplicationInfo().sourceDir).append("!/lib/").append(abi); - } - } else { - nativeLoaderDirs.append(File.pathSeparator).append(gmsContext.getApplicationInfo().sourceDir).append("!/lib/").append(Build.CPU_ABI); + classLoader = new PathClassLoader(gmsContext.getApplicationInfo().sourceDir, nativeLoaderDirs.toString(), new FilteredClassLoader(originalContext.getClassLoader(), moduleInfo.getMergedClasses(), moduleInfo.getMergedPackages())); } - return new PathClassLoader(gmsContext.getApplicationInfo().sourceDir, nativeLoaderDirs.toString(), new FilteredClassLoader(originalContext.getClassLoader(), moduleInfo.getMergedClasses(), moduleInfo.getMergedPackages())); + return classLoader; } @Override diff --git a/play-services-core/src/main/kotlin/org/microg/gms/ui/CredentialPickerActivity.kt b/play-services-core/src/main/kotlin/org/microg/gms/auth/CredentialPickerActivity.kt similarity index 98% rename from play-services-core/src/main/kotlin/org/microg/gms/ui/CredentialPickerActivity.kt rename to play-services-core/src/main/kotlin/org/microg/gms/auth/CredentialPickerActivity.kt index 1209a900..ee7d332f 100644 --- a/play-services-core/src/main/kotlin/org/microg/gms/ui/CredentialPickerActivity.kt +++ b/play-services-core/src/main/kotlin/org/microg/gms/auth/CredentialPickerActivity.kt @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -package org.microg.gms.ui +package org.microg.gms.auth import android.app.Activity import android.os.Bundle diff --git a/play-services-core/src/main/kotlin/org/microg/gms/auth/CredentialsService.kt b/play-services-core/src/main/kotlin/org/microg/gms/auth/CredentialsService.kt new file mode 100644 index 00000000..e50c5e9e --- /dev/null +++ b/play-services-core/src/main/kotlin/org/microg/gms/auth/CredentialsService.kt @@ -0,0 +1,53 @@ +/* + * SPDX-FileCopyrightText: 2021, microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.microg.gms.auth + +import android.os.Bundle +import android.util.Log +import com.google.android.gms.auth.api.credentials.CredentialRequest +import com.google.android.gms.auth.api.credentials.internal.* +import com.google.android.gms.common.api.CommonStatusCodes +import com.google.android.gms.common.api.Status +import com.google.android.gms.common.internal.GetServiceRequest +import com.google.android.gms.common.internal.IGmsCallbacks +import org.microg.gms.BaseService +import org.microg.gms.common.GmsService + +const val TAG = "GmsCredentials" + +class CredentialsService : BaseService(TAG, GmsService.CREDENTIALS) { + override fun handleServiceRequest(callback: IGmsCallbacks, request: GetServiceRequest, service: GmsService) { + callback.onPostInitComplete(CommonStatusCodes.SUCCESS, CredentialsServiceImpl(), Bundle()) + } +} + +class CredentialsServiceImpl : ICredentialsService.Stub() { + override fun request(callbacks: ICredentialsCallbacks, request: CredentialRequest) { + Log.d(TAG, "request($request)") + callbacks.onStatus(Status.CANCELED) + } + + override fun save(callbacks: ICredentialsCallbacks, request: SaveRequest) { + Log.d(TAG, "save($request)") + callbacks.onStatus(Status.CANCELED) + } + + override fun delete(callbacks: ICredentialsCallbacks, request: DeleteRequest) { + Log.d(TAG, "delete($request)") + callbacks.onStatus(Status.CANCELED) + } + + override fun disableAutoSignIn(callbacks: ICredentialsCallbacks) { + Log.d(TAG, "disableAutoSignIn()") + callbacks.onStatus(Status.SUCCESS) + } + + override fun generatePassword(callbacks: ICredentialsCallbacks, request: GeneratePasswordRequest) { + Log.d(TAG, "generatePassword($request)") + callbacks.onStatus(Status.SUCCESS) + } + +} \ No newline at end of file diff --git a/play-services-cronet-core/build.gradle b/play-services-cronet-core/build.gradle new file mode 100644 index 00000000..9c0b280b --- /dev/null +++ b/play-services-cronet-core/build.gradle @@ -0,0 +1,34 @@ +/* + * SPDX-FileCopyrightText: 2021, microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +apply plugin: 'com.android.library' +apply plugin: 'maven-publish' +apply plugin: 'signing' + +dependencies { + implementation("org.microg:cronet-api:$cronetVersion") + implementation("org.microg:cronet-common:$cronetVersion") + implementation("org.microg:cronet-native:$cronetVersion") +} + +android { + compileSdkVersion androidCompileSdk + buildToolsVersion "$androidBuildVersionTools" + + defaultConfig { + versionName version + minSdkVersion androidMinSdk + targetSdkVersion androidTargetSdk + } + + lintOptions { + disable 'MissingTranslation' + } + + compileOptions { + sourceCompatibility = 1.8 + targetCompatibility = 1.8 + } +} diff --git a/play-services-cronet-core/src/main/AndroidManifest.xml b/play-services-cronet-core/src/main/AndroidManifest.xml new file mode 100644 index 00000000..93245ce8 --- /dev/null +++ b/play-services-cronet-core/src/main/AndroidManifest.xml @@ -0,0 +1,11 @@ + + + + + + + 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 new file mode 100644 index 00000000..c46af5c9 --- /dev/null +++ b/play-services-cronet-core/src/main/java/com/google/android/gms/dynamite/descriptors/com/google/android/gms/cronet_dynamite/ModuleDescriptor.java @@ -0,0 +1,37 @@ +/* + * SPDX-FileCopyrightText: 2021, microG Project Team + * SPDX-License-Identifier: Apache-2.0 + */ + +package com.google.android.gms.dynamite.descriptors.com.google.android.gms.cronet_dynamite; + +import java.util.Arrays; +import java.util.List; + +public class ModuleDescriptor { + public static final String MODULE_ID = "com.google.android.gms.cronet_dynamite"; + public static final int MODULE_VERSION = 2; + public static final List MERGED_CLASSES = Arrays.asList( + "org.chromium.net.ApiVersion", + "org.chromium.net.BidirectionalStream", + "org.chromium.net.CallbackException", + "org.chromium.net.CronetEngine", + "org.chromium.net.CronetException", + "org.chromium.net.CronetProvider", + "org.chromium.net.ExperimentalBidirectionalStream", + "org.chromium.net.ExperimentalCronetEngine", + "org.chromium.net.ExperimentalUrlRequest", + "org.chromium.net.ICronetEngineBuilder", + "org.chromium.net.InlineExecutionProhibitedException", + "org.chromium.net.NetworkException", + "org.chromium.net.NetworkQualityRttListener", + "org.chromium.net.NetworkQualityThroughputListener", + "org.chromium.net.QuicException", + "org.chromium.net.RequestFinishedInfo", + "org.chromium.net.UploadDataProvider", + "org.chromium.net.UploadDataProviders", + "org.chromium.net.UploadDataSink", + "org.chromium.net.UrlRequest", + "org.chromium.net.UrlResponseInfo" + ); +} diff --git a/settings.gradle b/settings.gradle index cd6649aa..9ce0de99 100644 --- a/settings.gradle +++ b/settings.gradle @@ -12,6 +12,8 @@ include ':play-services-api' include ':play-services-core-proto' +include ':play-services-cronet-core' + include ':play-services-core:microg-ui-tools' // Legacy include ':play-services-core'