Fixing bug in donation settings
in cl/173731907 we added a setting for donating voicemails, but didn't
distinguish between when this feature is enabled/disabled by the user
or by configuration. this cl fixes that by adding a method to check
if the feature is available (ie enabled by config).
Bug: 62423454
Test: manual and unit test
PiperOrigin-RevId: 174245260
Change-Id: I45a59de7f4a171d759e2fcf86db27a100a84de67
diff --git a/java/com/android/dialer/voicemail/settings/VoicemailSettingsFragment.java b/java/com/android/dialer/voicemail/settings/VoicemailSettingsFragment.java
index efeed08..2b496c0 100644
--- a/java/com/android/dialer/voicemail/settings/VoicemailSettingsFragment.java
+++ b/java/com/android/dialer/voicemail/settings/VoicemailSettingsFragment.java
@@ -113,7 +113,7 @@
if (!VoicemailComponent.get(getContext())
.getVoicemailClient()
- .isVoicemailDonationEnabled(getContext(), phoneAccountHandle)) {
+ .isVoicemailDonationAvailable(getContext())) {
getPreferenceScreen().removePreference(donateVoicemailSwitchPreference);
}
diff --git a/java/com/android/voicemail/VoicemailClient.java b/java/com/android/voicemail/VoicemailClient.java
index d033369..050286a 100644
--- a/java/com/android/voicemail/VoicemailClient.java
+++ b/java/com/android/voicemail/VoicemailClient.java
@@ -128,6 +128,9 @@
*/
boolean isVoicemailTranscriptionAvailable(Context context);
+ /** @return if the voicemail donation feature is available. */
+ boolean isVoicemailDonationAvailable(Context context);
+
/** @return if the voicemail donation setting has been enabled by the user. */
boolean isVoicemailDonationEnabled(Context context, PhoneAccountHandle account);
diff --git a/java/com/android/voicemail/impl/VoicemailClientImpl.java b/java/com/android/voicemail/impl/VoicemailClientImpl.java
index 14fa1d8..2add59e 100644
--- a/java/com/android/voicemail/impl/VoicemailClientImpl.java
+++ b/java/com/android/voicemail/impl/VoicemailClientImpl.java
@@ -136,6 +136,22 @@
}
@Override
+ public boolean isVoicemailDonationAvailable(Context context) {
+ if (!isVoicemailTranscriptionAvailable(context)) {
+ LogUtil.i("VoicemailClientImpl.isVoicemailDonationAvailable", "transcription not available");
+ return false;
+ }
+
+ TranscriptionConfigProvider provider = new TranscriptionConfigProvider(context);
+ if (!provider.isVoicemailDonationAvailable()) {
+ LogUtil.i("VoicemailClientImpl.isVoicemailDonationAvailable", "feature disabled by config");
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
public boolean isVoicemailDonationEnabled(Context context, PhoneAccountHandle account) {
return isVoicemailTranscriptionAvailable(context)
&& VisualVoicemailSettingsUtil.isVoicemailDonationEnabled(context, account);
diff --git a/java/com/android/voicemail/impl/transcribe/TranscriptionConfigProvider.java b/java/com/android/voicemail/impl/transcribe/TranscriptionConfigProvider.java
index 5da4503..f4996a0 100644
--- a/java/com/android/voicemail/impl/transcribe/TranscriptionConfigProvider.java
+++ b/java/com/android/voicemail/impl/transcribe/TranscriptionConfigProvider.java
@@ -75,9 +75,9 @@
.getLong("voicemail_transcription_get_transcript_poll_interval_millis", 1000L);
}
- public boolean isVoicemailDonationEnabled() {
+ public boolean isVoicemailDonationAvailable() {
return ConfigProviderBindings.get(context)
- .getBoolean("voicemail_transcription_donation_enabled", false);
+ .getBoolean("voicemail_transcription_donation_available", false);
}
@Override
diff --git a/java/com/android/voicemail/stub/StubVoicemailClient.java b/java/com/android/voicemail/stub/StubVoicemailClient.java
index 0fe533e..fe06324 100644
--- a/java/com/android/voicemail/stub/StubVoicemailClient.java
+++ b/java/com/android/voicemail/stub/StubVoicemailClient.java
@@ -76,6 +76,11 @@
}
@Override
+ public boolean isVoicemailDonationAvailable(Context context) {
+ return false;
+ }
+
+ @Override
public boolean isVoicemailDonationEnabled(Context context, PhoneAccountHandle account) {
return false;
}