summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/calllog/CallLogFramework.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/dialer/calllog/CallLogFramework.java')
-rw-r--r--java/com/android/dialer/calllog/CallLogFramework.java38
1 files changed, 34 insertions, 4 deletions
diff --git a/java/com/android/dialer/calllog/CallLogFramework.java b/java/com/android/dialer/calllog/CallLogFramework.java
index 61535e606..365e4d7c0 100644
--- a/java/com/android/dialer/calllog/CallLogFramework.java
+++ b/java/com/android/dialer/calllog/CallLogFramework.java
@@ -21,6 +21,12 @@ import com.android.dialer.calllog.datasources.CallLogDataSource;
import com.android.dialer.calllog.datasources.DataSources;
import com.android.dialer.common.LogUtil;
import com.android.dialer.configprovider.ConfigProviderBindings;
+import com.android.dialer.inject.ApplicationContext;
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
+import java.util.ArrayList;
+import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
@@ -32,21 +38,23 @@ import javax.inject.Singleton;
@Singleton
public final class CallLogFramework {
+ private final Context appContext;
private final DataSources dataSources;
@Inject
- CallLogFramework(DataSources dataSources) {
+ CallLogFramework(@ApplicationContext Context appContext, DataSources dataSources) {
+ this.appContext = appContext;
this.dataSources = dataSources;
}
/** Performs necessary setup work when the application is created. */
- public void onApplicationCreate(Context appContext) {
- registerContentObservers(appContext);
+ public void onApplicationCreate() {
+ registerContentObservers();
CallLogConfig.schedulePollingJob(appContext);
}
/** Registers the content observers for all data sources. */
- public void registerContentObservers(Context appContext) {
+ public void registerContentObservers() {
LogUtil.enterBlock("CallLogFramework.registerContentObservers");
// This is the same condition used in MainImpl#isNewUiEnabled. It means that bugfood/debug
@@ -61,4 +69,26 @@ public final class CallLogFramework {
LogUtil.i("CallLogFramework.registerContentObservers", "not registering content observers");
}
}
+
+ /** Disables the framework. */
+ public ListenableFuture<Void> disable() {
+ LogUtil.enterBlock("CallLogFramework.disable");
+
+ if (!ConfigProviderBindings.get(appContext).getBoolean("is_nui_shortcut_enabled", false)) {
+ LogUtil.i("CallLogFramework.disable", "not disabling");
+ return Futures.immediateFuture(null);
+ }
+
+ for (CallLogDataSource dataSource : dataSources.getDataSourcesIncludingSystemCallLog()) {
+ dataSource.unregisterContentObservers(appContext);
+ }
+
+ // Clear data only after all content observers have been disabled.
+ List<ListenableFuture<Void>> allFutures = new ArrayList<>();
+ for (CallLogDataSource dataSource : dataSources.getDataSourcesIncludingSystemCallLog()) {
+ allFutures.add(dataSource.clearData());
+ }
+ return Futures.transform(
+ Futures.allAsList(allFutures), unused -> null, MoreExecutors.directExecutor());
+ }
}