From: csagan5 <32685696+csagan5@users.noreply.github.com> Date: Sun, 3 Nov 2019 08:22:29 +0100 Subject: Remove SMS integration License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../browser/language/AppLocaleUtils.java | 42 ----------------- .../content/browser/sms/SmsProviderGms.java | 25 +--------- .../browser/sms/SmsUserConsentReceiver.java | 47 ++----------------- .../browser/sms/SmsVerificationReceiver.java | 43 ++++------------- .../content/browser/sms/Wrappers.java | 27 +---------- 5 files changed, 15 insertions(+), 169 deletions(-) diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLocaleUtils.java b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLocaleUtils.java --- a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLocaleUtils.java +++ b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLocaleUtils.java @@ -117,48 +117,6 @@ public class AppLocaleUtils { return Locale.forLanguageTag("en-US"); } - /** - * Download the language split. If successful set the application language shared preference. - * If set to null the system language will be used. - * @param languageName String BCP-47 code of language to download. - */ - public static void setAppLanguagePref(String languageName) { - setAppLanguagePref(languageName, success -> {}); - } - - /** - * Download the language split using the provided listener for callbacks. If successful set the - * application language shared preference. If called from an APK build where no bundle needs to - * be downloaded the listener's on complete function is immediately called. If languageName is - * null the system language will be used. - * @param languageName String BCP-47 code of language to download. - * @param listener LanguageSplitInstaller.InstallListener to use for callbacks. - */ - public static void setAppLanguagePref( - String languageName, LanguageSplitInstaller.InstallListener listener) { - // Wrap the install listener so that on success the app override preference is set. - LanguageSplitInstaller.InstallListener wrappedListener = (success) -> { - if (success) { - if (shouldUseSystemManagedLocale()) { - setSystemManagedAppLanguage(languageName); - } else { - SharedPreferencesManager.getInstance().writeString( - ChromePreferenceKeys.APPLICATION_OVERRIDE_LANGUAGE, languageName); - } - } - listener.onComplete(success); - }; - - // If this is not a bundle build or the default system language is being used the language - // split should not be installed. Instead indicate that the listener completed successfully - // since the language resources will already be present. - if (!BundleUtils.isBundle() || isFollowSystemLanguage(languageName)) { - wrappedListener.onComplete(true); - } else { - LanguageSplitInstaller.getInstance().installLanguage(languageName, wrappedListener); - } - } - /** * Sets the {@link LocaleManager} App language to |languageName|. * TODO(crbug.com/1333981) Move to Android T. diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/SmsProviderGms.java b/content/public/android/java/src/org/chromium/content/browser/sms/SmsProviderGms.java --- a/content/public/android/java/src/org/chromium/content/browser/sms/SmsProviderGms.java +++ b/content/public/android/java/src/org/chromium/content/browser/sms/SmsProviderGms.java @@ -6,9 +6,6 @@ package org.chromium.content.browser.sms; import androidx.annotation.VisibleForTesting; -import com.google.android.gms.common.ConnectionResult; -import com.google.android.gms.common.GoogleApiAvailability; - import org.chromium.base.ContextUtils; import org.chromium.base.Log; import org.chromium.base.ResettersForTesting; @@ -44,17 +41,11 @@ public class SmsProviderGms { @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) public SmsProviderGms(long smsProviderGmsAndroid, @GmsBackend int backend, - boolean isVerificationBackendAvailable) { + boolean ignored) { mSmsProviderGmsAndroid = smsProviderGmsAndroid; mBackend = backend; mContext = new Wrappers.WebOTPServiceContext(ContextUtils.getApplicationContext(), this); - // Creates an mVerificationReceiver regardless of the backend to support requests from - // remote devices. - if (isVerificationBackendAvailable) { - mVerificationReceiver = new SmsVerificationReceiver(this, mContext); - } - if (mBackend == GmsBackend.AUTO || mBackend == GmsBackend.USER_CONSENT) { mUserConsentReceiver = new SmsUserConsentReceiver(this, mContext); } @@ -86,12 +77,7 @@ public class SmsProviderGms { @CalledByNative private static SmsProviderGms create(long smsProviderGmsAndroid, @GmsBackend int backend) { Log.d(TAG, "Creating SmsProviderGms"); - boolean isVerificationBackendAvailable = - GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable( - ContextUtils.getApplicationContext(), - MIN_GMS_VERSION_NUMBER_WITH_CODE_BROWSER_BACKEND) - == ConnectionResult.SUCCESS; - return new SmsProviderGms(smsProviderGmsAndroid, backend, isVerificationBackendAvailable); + return new SmsProviderGms(smsProviderGmsAndroid, backend, false); } @CalledByNative @@ -180,13 +166,6 @@ public class SmsProviderGms { } public Wrappers.SmsRetrieverClientWrapper getClient() { - if (mClient != null) { - return mClient; - } - mClient = new Wrappers.SmsRetrieverClientWrapper( - mUserConsentReceiver != null ? mUserConsentReceiver.createClient() : null, - mVerificationReceiver != null ? mVerificationReceiver.createClient() : null); - return mClient; } diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/SmsUserConsentReceiver.java b/content/public/android/java/src/org/chromium/content/browser/sms/SmsUserConsentReceiver.java --- a/content/public/android/java/src/org/chromium/content/browser/sms/SmsUserConsentReceiver.java +++ b/content/public/android/java/src/org/chromium/content/browser/sms/SmsUserConsentReceiver.java @@ -10,13 +10,6 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import com.google.android.gms.auth.api.phone.SmsRetriever; -import com.google.android.gms.auth.api.phone.SmsRetrieverClient; -import com.google.android.gms.common.api.CommonStatusCodes; -import com.google.android.gms.common.api.Status; -import com.google.android.gms.tasks.OnFailureListener; -import com.google.android.gms.tasks.Task; - import org.chromium.base.ContextUtils; import org.chromium.base.Log; import org.chromium.ui.base.WindowAndroid; @@ -35,30 +28,12 @@ public class SmsUserConsentReceiver extends BroadcastReceiver { mDestroyed = false; mProvider = provider; mContext = context; - - // A broadcast receiver is registered upon the creation of this class - // which happens when the SMS Retriever API is used for the first time - // since chrome last restarted (which, on android, happens frequently). - // The broadcast receiver is fairly lightweight (e.g. it responds - // quickly without much computation). - // If this broadcast receiver becomes more heavyweight, we should make - // this registration expire after the SMS message is received. - if (DEBUG) Log.d(TAG, "Registering intent filters."); - IntentFilter filter = new IntentFilter(); - filter.addAction(SmsRetriever.SMS_RETRIEVED_ACTION); - ContextUtils.registerExportedBroadcastReceiver( - mContext, this, filter, SmsRetriever.SEND_PERMISSION); - } - - public SmsRetrieverClient createClient() { - return SmsRetriever.getClient(mContext); } public void destroy() { if (mDestroyed) return; if (DEBUG) Log.d(TAG, "Destroying SmsUserConsentReceiver."); mDestroyed = true; - mContext.unregisterReceiver(this); } @Override @@ -69,7 +44,7 @@ public class SmsUserConsentReceiver extends BroadcastReceiver { return; } - if (!SmsRetriever.SMS_RETRIEVED_ACTION.equals(intent.getAction())) { + /*if (!SmsRetriever.SMS_RETRIEVED_ACTION.equals(intent.getAction())) { return; } @@ -103,28 +78,14 @@ public class SmsUserConsentReceiver extends BroadcastReceiver { if (DEBUG) Log.d(TAG, "Timeout"); mProvider.onTimeout(); break; - } + } */ } void onConsentResult(int resultCode, Intent data) { - if (resultCode == Activity.RESULT_OK) { - String message = data.getStringExtra(SmsRetriever.EXTRA_SMS_MESSAGE); - mProvider.onReceive(message, GmsBackend.USER_CONSENT); - } else if (resultCode == Activity.RESULT_CANCELED) { - if (DEBUG) Log.d(TAG, "Activity result cancelled."); - mProvider.onCancel(); - } + if (DEBUG) Log.d(TAG, "Activity result discarded."); } public void listen(WindowAndroid windowAndroid) { - Task task = mProvider.getClient().startSmsUserConsent(null); - - task.addOnFailureListener(new OnFailureListener() { - @Override - public void onFailure(Exception e) { - Log.e(TAG, "Task failed to start", e); - } - }); - if (DEBUG) Log.d(TAG, "Installed task"); + if (DEBUG) Log.d(TAG, "Ignored task"); } } diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/SmsVerificationReceiver.java b/content/public/android/java/src/org/chromium/content/browser/sms/SmsVerificationReceiver.java --- a/content/public/android/java/src/org/chromium/content/browser/sms/SmsVerificationReceiver.java +++ b/content/public/android/java/src/org/chromium/content/browser/sms/SmsVerificationReceiver.java @@ -11,16 +11,6 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import com.google.android.gms.auth.api.phone.SmsCodeBrowserClient; -import com.google.android.gms.auth.api.phone.SmsCodeRetriever; -import com.google.android.gms.auth.api.phone.SmsRetriever; -import com.google.android.gms.auth.api.phone.SmsRetrieverStatusCodes; -import com.google.android.gms.common.api.ApiException; -import com.google.android.gms.common.api.CommonStatusCodes; -import com.google.android.gms.common.api.ResolvableApiException; -import com.google.android.gms.common.api.Status; -import com.google.android.gms.tasks.Task; - import org.chromium.base.ContextUtils; import org.chromium.base.Log; import org.chromium.base.metrics.RecordHistogram; @@ -63,32 +53,14 @@ public class SmsVerificationReceiver extends BroadcastReceiver { // lightweight (e.g. it responds quickly without much computation). If this broadcast // receiver becomes more heavyweight, we should make this registration expire after the SMS // message is received. - if (DEBUG) Log.i(TAG, "Registering intent filters."); - IntentFilter filter = new IntentFilter(); - filter.addAction(SmsCodeRetriever.SMS_CODE_RETRIEVED_ACTION); - - // The SEND_PERMISSION permission is not documented to held by the sender of this broadcast, - // but it's coming from the same place the UserConsent (SmsRetriever.SMS_RETRIEVED_ACTION) - // broadcast is coming from, so the sender will be holding this permission. This prevents - // other apps from spoofing verification codes. - ContextUtils.registerExportedBroadcastReceiver( - mContext, this, filter, SmsRetriever.SEND_PERMISSION); - } - - public SmsCodeBrowserClient createClient() { - return SmsCodeRetriever.getBrowserClient(mContext); } public void destroy() { - if (mDestroyed) return; - if (DEBUG) Log.d(TAG, "Destroying SmsVerificationReceiver."); - mDestroyed = true; - mContext.unregisterReceiver(this); } @Override public void onReceive(Context context, Intent intent) { - if (DEBUG) Log.d(TAG, "Received something!"); + /*if (DEBUG) Log.d(TAG, "Received something!"); if (mDestroyed) { return; @@ -121,7 +93,7 @@ public class SmsVerificationReceiver extends BroadcastReceiver { if (DEBUG) Log.d(TAG, "Timeout"); mProvider.onTimeout(); break; - } + }*/ } public void onPermissionDone(int resultCode, boolean isLocalRequest) { @@ -141,7 +113,7 @@ public class SmsVerificationReceiver extends BroadcastReceiver { * task. */ public void onRetrieverTaskFailure(boolean isLocalRequest, Exception e) { - if (DEBUG) Log.d(TAG, "Task failed. Attempting recovery.", e); + /* if (DEBUG) Log.d(TAG, "Task failed. Attempting recovery.", e); ApiException exception = (ApiException) e; if (exception.getStatusCode() == SmsRetrieverStatusCodes.API_NOT_CONNECTED) { reportBackendAvailability(BackendAvailability.API_NOT_CONNECTED); @@ -183,12 +155,12 @@ public class SmsVerificationReceiver extends BroadcastReceiver { } } } else { - Log.w(TAG, "Unexpected exception", e); - } + Log.w(TAG, "Unexpected exception", e); // marker + } */ } public void listen(boolean isLocalRequest) { - Wrappers.SmsRetrieverClientWrapper client = mProvider.getClient(); + /* Wrappers.SmsRetrieverClientWrapper client = mProvider.getClient(); Task task = client.startSmsCodeBrowserRetriever(); task.addOnSuccessListener(unused -> { @@ -200,7 +172,8 @@ public class SmsVerificationReceiver extends BroadcastReceiver { mProvider.verificationReceiverFailed(isLocalRequest); }); - if (DEBUG) Log.d(TAG, "Installed task"); + if (DEBUG) Log.d(TAG, "Installed task"); */ + if (DEBUG) Log.d(TAG, "Ignored task"); } public void reportBackendAvailability(BackendAvailability availability) { diff --git a/content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java b/content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java --- a/content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java +++ b/content/public/android/java/src/org/chromium/content/browser/sms/Wrappers.java @@ -14,11 +14,6 @@ import android.os.Handler; import androidx.annotation.RequiresApi; -import com.google.android.gms.auth.api.phone.SmsCodeBrowserClient; -import com.google.android.gms.auth.api.phone.SmsCodeRetriever; -import com.google.android.gms.auth.api.phone.SmsRetrieverClient; -import com.google.android.gms.tasks.Task; - class Wrappers { // Prevent instantiation. private Wrappers() {} @@ -27,16 +22,9 @@ class Wrappers { * Wraps com.google.android.gms.auth.api.phone.SmsRetrieverClient. */ static class SmsRetrieverClientWrapper { - // Used for user consent flow. - private final SmsRetrieverClient mSmsRetrieverClient; - // Used for browser code flow. - private final SmsCodeBrowserClient mSmsCodeBrowserClient; private WebOTPServiceContext mContext; - public SmsRetrieverClientWrapper( - SmsRetrieverClient smsRetrieverClient, SmsCodeBrowserClient smsCodeBrowserClient) { - mSmsRetrieverClient = smsRetrieverClient; - mSmsCodeBrowserClient = smsCodeBrowserClient; + public SmsRetrieverClientWrapper() { } public void setContext(WebOTPServiceContext context) { @@ -46,14 +34,6 @@ class Wrappers { public WebOTPServiceContext getContext() { return mContext; } - - public Task startSmsCodeBrowserRetriever() { - return mSmsCodeBrowserClient.startSmsCodeRetriever(); - } - - public Task startSmsUserConsent(String senderAddress) { - return mSmsRetrieverClient.startSmsUserConsent(senderAddress); - } } /** @@ -83,11 +63,6 @@ class Wrappers { } private void onRegisterReceiver(BroadcastReceiver receiver, IntentFilter filter) { - if (filter.hasAction(SmsCodeRetriever.SMS_CODE_RETRIEVED_ACTION)) { - mVerificationReceiver = receiver; - } else { - mUserConsentReceiver = receiver; - } } // --------------------------------------------------------------------- -- 2.25.1