From 540385d1fb39df3e5cbf6553e988089739ef92d1 Mon Sep 17 00:00:00 2001 From: uabdullah Date: Tue, 27 Mar 2018 15:12:22 -0700 Subject: Turn off transcription when user declines tos (existing dialer user) When an existing dialer user is shown the ToS and they declines it, the transcription setting must be turned off, to respect the users wishes. We also no longer take the user to the settings page. Bug: 74033229,77147114 Test: Unit test PiperOrigin-RevId: 190682249 Change-Id: I8c0abf9f3cbb15ded12a760abe540c557fd2e7d3 --- .../listui/error/VoicemailTosMessageCreator.java | 20 +++++++------------- .../voicemail/listui/error/res/values/strings.xml | 2 +- 2 files changed, 8 insertions(+), 14 deletions(-) (limited to 'java') diff --git a/java/com/android/dialer/voicemail/listui/error/VoicemailTosMessageCreator.java b/java/com/android/dialer/voicemail/listui/error/VoicemailTosMessageCreator.java index ec1a95a1a..ba9e35012 100644 --- a/java/com/android/dialer/voicemail/listui/error/VoicemailTosMessageCreator.java +++ b/java/com/android/dialer/voicemail/listui/error/VoicemailTosMessageCreator.java @@ -22,7 +22,6 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; -import android.net.Uri; import android.os.Build; import android.preference.PreferenceManager; import android.support.annotation.Nullable; @@ -40,11 +39,9 @@ import android.view.View.OnClickListener; import com.android.dialer.common.LogUtil; import com.android.dialer.compat.telephony.TelephonyManagerCompat; import com.android.dialer.configprovider.ConfigProviderBindings; -import com.android.dialer.constants.Constants; import com.android.dialer.logging.DialerImpression; import com.android.dialer.logging.Logger; import com.android.dialer.voicemail.listui.error.VoicemailErrorMessage.Action; -import com.android.dialer.voicemail.settings.VoicemailSettingsFragment; import com.android.voicemail.VisualVoicemailTypeExtensions; import com.android.voicemail.VoicemailClient; import com.android.voicemail.VoicemailComponent; @@ -129,19 +126,16 @@ public class VoicemailTosMessageCreator { getExistingUserTosTitle(), getExistingUserTosMessageText(), new Action( - context.getString(R.string.dialer_terms_and_conditions_existing_user_setings), + context.getString(R.string.dialer_terms_and_conditions_existing_user_decline), new OnClickListener() { @Override public void onClick(View v) { - LogUtil.i("VoicemailTosMessageCreator.getPromoMessage", "open settings"); - Intent intent = - new Intent(Intent.ACTION_VIEW) - .setComponent( - new ComponentName(context, Constants.get().getSettingsActivity())) - .setData( - Uri.fromParts( - "header", VoicemailSettingsFragment.class.getName(), null)); - context.startActivity(intent); + LogUtil.i( + "VoicemailTosMessageCreator.getPromoMessage", "declined transcription"); + VoicemailClient voicemailClient = + VoicemailComponent.get(context).getVoicemailClient(); + voicemailClient.setVoicemailTranscriptionEnabled( + context, status.getPhoneAccountHandle(), false); } }), new Action( diff --git a/java/com/android/dialer/voicemail/listui/error/res/values/strings.xml b/java/com/android/dialer/voicemail/listui/error/res/values/strings.xml index b222d9c01..4306063d9 100644 --- a/java/com/android/dialer/voicemail/listui/error/res/values/strings.xml +++ b/java/com/android/dialer/voicemail/listui/error/res/values/strings.xml @@ -199,7 +199,7 @@ Si no acepta todos estos términos y condiciones, no use el buzón de voz visual Rechazar Ok, got it - Settings + No Thanks Disable visual voicemail? -- cgit v1.2.3 From 68cf8dc4e305d7d27bbff93dc24a02bca1b13f8c Mon Sep 17 00:00:00 2001 From: uabdullah Date: Tue, 27 Mar 2018 16:50:56 -0700 Subject: Turn on transcription when existing dialer user accepts ToS and transcription is available. Also updated the isVoicemailAvailable helper method, since just checking if the flag and OS is not enough (we have other things such as is VVM enabled, is VM activated), if we don't do this, it doesnt make sense to turn on transcription e.g Why what would happen if transcription is turned on but vvm is disabled Bug: 74033229 Test: Added a todo, will be added later (there are a few more similar CL's that I am sending for other ToS conditions) to ensure the logic is correct for all ToS conditions first and I can add a test right at the end for all conditions. PiperOrigin-RevId: 190696695 Change-Id: I9cb063a97e11943abeb1f823dc661efe88dfa3f1 --- .../voicemail/listui/error/VoicemailTosMessageCreator.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'java') diff --git a/java/com/android/dialer/voicemail/listui/error/VoicemailTosMessageCreator.java b/java/com/android/dialer/voicemail/listui/error/VoicemailTosMessageCreator.java index ba9e35012..382118fca 100644 --- a/java/com/android/dialer/voicemail/listui/error/VoicemailTosMessageCreator.java +++ b/java/com/android/dialer/voicemail/listui/error/VoicemailTosMessageCreator.java @@ -22,7 +22,6 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; -import android.os.Build; import android.preference.PreferenceManager; import android.support.annotation.Nullable; import android.telecom.PhoneAccountHandle; @@ -144,6 +143,12 @@ public class VoicemailTosMessageCreator { @Override public void onClick(View v) { LogUtil.i("VoicemailTosMessageCreator.getPromoMessage", "acknowledge clicked"); + if (isVoicemailTranscriptionAvailable()) { + VoicemailComponent.get(context) + .getVoicemailClient() + .setVoicemailTranscriptionEnabled( + context, status.getPhoneAccountHandle(), true); + } // Feature acknowledgement also means accepting TOS recordTosAcceptance(); recordFeatureAcknowledgement(); @@ -222,9 +227,9 @@ public class VoicemailTosMessageCreator { } private boolean isVoicemailTranscriptionAvailable() { - return Build.VERSION.SDK_INT >= Build.VERSION_CODES.O - && ConfigProviderBindings.get(context) - .getBoolean("voicemail_transcription_available", false); + return VoicemailComponent.get(context) + .getVoicemailClient() + .isVoicemailTranscriptionAvailable(context, status.getPhoneAccountHandle()); } private void showDeclineTosDialog(final PhoneAccountHandle handle) { -- cgit v1.2.3 From bb4c1be2923ea7bfc9152e3cef9d0c12cb6664bd Mon Sep 17 00:00:00 2001 From: zachh Date: Tue, 27 Mar 2018 17:04:15 -0700 Subject: Use CallLogConfig for enabling new peer. ConfigProvider should not be used directly for reading NUI flags as CallLogConfig needs to perform work when they change. Bug: 74821995 Test: existing PiperOrigin-RevId: 190698415 Change-Id: Ic084d9032d2a6f35ffba9f395eaaff9053cfa262 --- .../configprovider/SharedPrefConfigProvider.java | 22 +++++++++++++--------- .../SharedPrefConfigProviderModule.java | 5 ++++- .../com/android/dialer/main/impl/MainActivity.java | 6 +++--- 3 files changed, 20 insertions(+), 13 deletions(-) (limited to 'java') diff --git a/java/com/android/dialer/configprovider/SharedPrefConfigProvider.java b/java/com/android/dialer/configprovider/SharedPrefConfigProvider.java index d700fb676..ce95c5700 100644 --- a/java/com/android/dialer/configprovider/SharedPrefConfigProvider.java +++ b/java/com/android/dialer/configprovider/SharedPrefConfigProvider.java @@ -23,8 +23,8 @@ import android.content.SharedPreferences.Editor; import android.support.annotation.Nullable; import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; -import com.android.dialer.inject.ApplicationContext; import com.android.dialer.storage.StorageComponent; +import com.android.dialer.storage.Unencrypted; import com.android.dialer.strictmode.StrictModeUtils; import javax.inject.Inject; @@ -49,14 +49,14 @@ import javax.inject.Inject; * /data/user_de/0/com.android.dialer/shared_prefs/com.android.dialer_preferences.xml * */ -class SharedPrefConfigProvider implements ConfigProvider { +public class SharedPrefConfigProvider implements ConfigProvider { private static final String PREF_PREFIX = "config_provider_prefs_"; - private final Context appContext; + private final SharedPreferences sharedPreferences; @Inject - SharedPrefConfigProvider(@ApplicationContext Context appContext) { - this.appContext = appContext; + SharedPrefConfigProvider(@Unencrypted SharedPreferences sharedPreferences) { + this.sharedPreferences = sharedPreferences; } /** Service to write values into {@link SharedPrefConfigProvider} using adb. */ @@ -93,25 +93,29 @@ class SharedPrefConfigProvider implements ConfigProvider { } } + /** Set a boolean config value. */ + public void putBoolean(String key, boolean value) { + sharedPreferences.edit().putBoolean(PREF_PREFIX + key, value).apply(); + } + @Override public String getString(String key, String defaultValue) { // Reading shared prefs on the main thread is generally safe since a single instance is cached. return StrictModeUtils.bypass( - () -> getSharedPrefs(appContext).getString(PREF_PREFIX + key, defaultValue)); + () -> sharedPreferences.getString(PREF_PREFIX + key, defaultValue)); } @Override public long getLong(String key, long defaultValue) { // Reading shared prefs on the main thread is generally safe since a single instance is cached. - return StrictModeUtils.bypass( - () -> getSharedPrefs(appContext).getLong(PREF_PREFIX + key, defaultValue)); + return StrictModeUtils.bypass(() -> sharedPreferences.getLong(PREF_PREFIX + key, defaultValue)); } @Override public boolean getBoolean(String key, boolean defaultValue) { // Reading shared prefs on the main thread is generally safe since a single instance is cached. return StrictModeUtils.bypass( - () -> getSharedPrefs(appContext).getBoolean(PREF_PREFIX + key, defaultValue)); + () -> sharedPreferences.getBoolean(PREF_PREFIX + key, defaultValue)); } private static SharedPreferences getSharedPrefs(Context appContext) { diff --git a/java/com/android/dialer/configprovider/SharedPrefConfigProviderModule.java b/java/com/android/dialer/configprovider/SharedPrefConfigProviderModule.java index fe1c90816..4af8bfe17 100644 --- a/java/com/android/dialer/configprovider/SharedPrefConfigProviderModule.java +++ b/java/com/android/dialer/configprovider/SharedPrefConfigProviderModule.java @@ -16,14 +16,17 @@ package com.android.dialer.configprovider; +import com.android.dialer.storage.StorageModule; import dagger.Binds; import dagger.Module; import javax.inject.Singleton; /** Dagger module providing {@link ConfigProvider} based on shared preferences. */ -@Module +@Module(includes = StorageModule.class) public abstract class SharedPrefConfigProviderModule { + private SharedPrefConfigProviderModule() {} + @Binds @Singleton abstract ConfigProvider to(SharedPrefConfigProvider impl); diff --git a/java/com/android/dialer/main/impl/MainActivity.java b/java/com/android/dialer/main/impl/MainActivity.java index 1d705f06c..2046b048f 100644 --- a/java/com/android/dialer/main/impl/MainActivity.java +++ b/java/com/android/dialer/main/impl/MainActivity.java @@ -21,9 +21,9 @@ import android.content.Intent; import android.os.Bundle; import android.support.v4.content.LocalBroadcastManager; import com.android.dialer.blockreportspam.ShowBlockReportSpamDialogReceiver; +import com.android.dialer.calllog.config.CallLogConfigComponent; import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; -import com.android.dialer.configprovider.ConfigProviderBindings; import com.android.dialer.interactions.PhoneNumberInteraction.DisambigDialogDismissedListener; import com.android.dialer.interactions.PhoneNumberInteraction.InteractionErrorCode; import com.android.dialer.interactions.PhoneNumberInteraction.InteractionErrorListener; @@ -53,7 +53,7 @@ public class MainActivity extends TransactionSafeActivity /** Returns intent that will open MainActivity to the specified tab. */ public static Intent getShowTabIntent(Context context, @TabIndex int tabIndex) { - if (ConfigProviderBindings.get(context).getBoolean("nui_peer_enabled", false)) { + if (CallLogConfigComponent.get(context).callLogConfig().isNewPeerEnabled()) { // TODO(calderwoodra): implement this in NewMainActivityPeer return null; } @@ -82,7 +82,7 @@ public class MainActivity extends TransactionSafeActivity } protected MainActivityPeer getNewPeer() { - if (ConfigProviderBindings.get(this).getBoolean("nui_peer_enabled", false)) { + if (CallLogConfigComponent.get(this).callLogConfig().isNewPeerEnabled()) { return new NewMainActivityPeer(this); } else { return new OldMainActivityPeer(this); -- cgit v1.2.3