diff options
author | zachh <zachh@google.com> | 2018-03-20 17:08:52 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-03-20 17:09:39 -0700 |
commit | 2482c0fc58034e01efb7ce7e67408e248f028c95 (patch) | |
tree | 64e3aa663d2a36568df7a3d35d5322d24398e706 /java/com/android/dialer/phonelookup | |
parent | 6f067c91169ab9d4c24e43c039ef902700a7087f (diff) |
Added "clearData" to CallLogDataSource and PhoneLookup interfaces.
This is necessary to disable the call log framework via flags.
This isn't yet called anywhere.
Bug: 74821995
Test: unit
PiperOrigin-RevId: 189838957
Change-Id: I926c02c41151528eabc208c874acbfe7897a2f93
Diffstat (limited to 'java/com/android/dialer/phonelookup')
10 files changed, 121 insertions, 4 deletions
diff --git a/java/com/android/dialer/phonelookup/PhoneLookup.java b/java/com/android/dialer/phonelookup/PhoneLookup.java index 016a8a854..d4a1ddfbd 100644 --- a/java/com/android/dialer/phonelookup/PhoneLookup.java +++ b/java/com/android/dialer/phonelookup/PhoneLookup.java @@ -88,4 +88,10 @@ public interface PhoneLookup<T> { @MainThread void unregisterContentObservers(Context appContext); + + /** + * Clear any data written by this lookup. This is called when the new call log framework has been + * disabled (because for example there was a problem with it). + */ + ListenableFuture<Void> clearData(); } diff --git a/java/com/android/dialer/phonelookup/blockednumber/DialerBlockedNumberPhoneLookup.java b/java/com/android/dialer/phonelookup/blockednumber/DialerBlockedNumberPhoneLookup.java index 3491070ad..f5a249aed 100644 --- a/java/com/android/dialer/phonelookup/blockednumber/DialerBlockedNumberPhoneLookup.java +++ b/java/com/android/dialer/phonelookup/blockednumber/DialerBlockedNumberPhoneLookup.java @@ -182,4 +182,9 @@ public final class DialerBlockedNumberPhoneLookup implements PhoneLookup<DialerB public void unregisterContentObservers(Context appContext) { appContext.getContentResolver().unregisterContentObserver(markDirtyObserver); } + + @Override + public ListenableFuture<Void> clearData() { + return Futures.immediateFuture(null); + } } diff --git a/java/com/android/dialer/phonelookup/blockednumber/SystemBlockedNumberPhoneLookup.java b/java/com/android/dialer/phonelookup/blockednumber/SystemBlockedNumberPhoneLookup.java index def1f017d..e2a90c257 100644 --- a/java/com/android/dialer/phonelookup/blockednumber/SystemBlockedNumberPhoneLookup.java +++ b/java/com/android/dialer/phonelookup/blockednumber/SystemBlockedNumberPhoneLookup.java @@ -186,4 +186,9 @@ public class SystemBlockedNumberPhoneLookup implements PhoneLookup<SystemBlocked public void unregisterContentObservers(Context appContext) { appContext.getContentResolver().unregisterContentObserver(markDirtyObserver); } + + @Override + public ListenableFuture<Void> clearData() { + return Futures.immediateFuture(null); + } } diff --git a/java/com/android/dialer/phonelookup/composite/CompositePhoneLookup.java b/java/com/android/dialer/phonelookup/composite/CompositePhoneLookup.java index 4be43dade..365b21883 100644 --- a/java/com/android/dialer/phonelookup/composite/CompositePhoneLookup.java +++ b/java/com/android/dialer/phonelookup/composite/CompositePhoneLookup.java @@ -230,6 +230,17 @@ public final class CompositePhoneLookup { } } + /** Delegates to sub-lookups' {@link PhoneLookup#clearData()}. */ + public ListenableFuture<Void> clearData() { + List<ListenableFuture<Void>> futures = new ArrayList<>(); + for (PhoneLookup<?> phoneLookup : phoneLookups) { + ListenableFuture<Void> phoneLookupFuture = phoneLookup.clearData(); + futures.add(phoneLookupFuture); + } + return Futures.transform( + Futures.allAsList(futures), unused -> null, lightweightExecutorService); + } + private static String getMostRecentInfoEventName(Object classNameSource, boolean isBuilt) { return String.format( !isBuilt diff --git a/java/com/android/dialer/phonelookup/cp2/Cp2DefaultDirectoryPhoneLookup.java b/java/com/android/dialer/phonelookup/cp2/Cp2DefaultDirectoryPhoneLookup.java index b023500dc..a5b3b7251 100644 --- a/java/com/android/dialer/phonelookup/cp2/Cp2DefaultDirectoryPhoneLookup.java +++ b/java/com/android/dialer/phonelookup/cp2/Cp2DefaultDirectoryPhoneLookup.java @@ -630,6 +630,15 @@ public final class Cp2DefaultDirectoryPhoneLookup implements PhoneLookup<Cp2Info @Override public void unregisterContentObservers(Context appContext) {} + @Override + public ListenableFuture<Void> clearData() { + return backgroundExecutorService.submit( + () -> { + sharedPreferences.edit().remove(PREF_LAST_TIMESTAMP_PROCESSED).apply(); + return null; + }); + } + /** * 1. get all contact ids. if the id is unset, add the number to the list of contacts to look up. * 2. reduce our list of contact ids to those that were updated after lastModified. 3. Now we have diff --git a/java/com/android/dialer/phonelookup/cp2/Cp2ExtendedDirectoryPhoneLookup.java b/java/com/android/dialer/phonelookup/cp2/Cp2ExtendedDirectoryPhoneLookup.java index 873658b05..9110aa71f 100644 --- a/java/com/android/dialer/phonelookup/cp2/Cp2ExtendedDirectoryPhoneLookup.java +++ b/java/com/android/dialer/phonelookup/cp2/Cp2ExtendedDirectoryPhoneLookup.java @@ -236,4 +236,9 @@ public final class Cp2ExtendedDirectoryPhoneLookup implements PhoneLookup<Cp2Inf @Override public void unregisterContentObservers(Context appContext) {} + + @Override + public ListenableFuture<Void> clearData() { + return Futures.immediateFuture(null); + } } diff --git a/java/com/android/dialer/phonelookup/database/PhoneLookupDatabaseComponent.java b/java/com/android/dialer/phonelookup/database/PhoneLookupDatabaseComponent.java new file mode 100644 index 000000000..e3e416078 --- /dev/null +++ b/java/com/android/dialer/phonelookup/database/PhoneLookupDatabaseComponent.java @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ +package com.android.dialer.phonelookup.database; + +import android.content.Context; +import com.android.dialer.inject.HasRootComponent; +import dagger.Subcomponent; + +/** Dagger component for database package. */ +@Subcomponent +public abstract class PhoneLookupDatabaseComponent { + + public abstract PhoneLookupHistoryDatabaseHelper phoneLookupHistoryDatabaseHelper(); + + public static PhoneLookupDatabaseComponent get(Context context) { + return ((PhoneLookupDatabaseComponent.HasComponent) + ((HasRootComponent) context.getApplicationContext()).component()) + .phoneLookupDatabaseComponent(); + } + + /** Used to refer to the root application component. */ + public interface HasComponent { + PhoneLookupDatabaseComponent phoneLookupDatabaseComponent(); + } +} diff --git a/java/com/android/dialer/phonelookup/database/PhoneLookupHistoryContentProvider.java b/java/com/android/dialer/phonelookup/database/PhoneLookupHistoryContentProvider.java index 1c20b10e9..35d2d4f79 100644 --- a/java/com/android/dialer/phonelookup/database/PhoneLookupHistoryContentProvider.java +++ b/java/com/android/dialer/phonelookup/database/PhoneLookupHistoryContentProvider.java @@ -81,7 +81,8 @@ public class PhoneLookupHistoryContentProvider extends ContentProvider { @Override public boolean onCreate() { - databaseHelper = new PhoneLookupHistoryDatabaseHelper(getContext()); + databaseHelper = + PhoneLookupDatabaseComponent.get(getContext()).phoneLookupHistoryDatabaseHelper(); return true; } diff --git a/java/com/android/dialer/phonelookup/database/PhoneLookupHistoryDatabaseHelper.java b/java/com/android/dialer/phonelookup/database/PhoneLookupHistoryDatabaseHelper.java index 43b6f102c..337e467ab 100644 --- a/java/com/android/dialer/phonelookup/database/PhoneLookupHistoryDatabaseHelper.java +++ b/java/com/android/dialer/phonelookup/database/PhoneLookupHistoryDatabaseHelper.java @@ -21,13 +21,31 @@ import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.os.SystemClock; import com.android.dialer.common.LogUtil; +import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor; +import com.android.dialer.inject.ApplicationContext; import com.android.dialer.phonelookup.database.contract.PhoneLookupHistoryContract.PhoneLookupHistory; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.ListeningExecutorService; +import javax.inject.Inject; +import javax.inject.Singleton; /** {@link SQLiteOpenHelper} for the PhoneLookupHistory database. */ -class PhoneLookupHistoryDatabaseHelper extends SQLiteOpenHelper { +@Singleton +public class PhoneLookupHistoryDatabaseHelper extends SQLiteOpenHelper { - PhoneLookupHistoryDatabaseHelper(Context appContext) { - super(appContext, "phone_lookup_history.db", null, 1); + private static final String FILENAME = "phone_lookup_history.db"; + + private final Context appContext; + private final ListeningExecutorService backgroundExecutor; + + @Inject + PhoneLookupHistoryDatabaseHelper( + @ApplicationContext Context appContext, + @BackgroundExecutor ListeningExecutorService backgroundExecutor) { + super(appContext, FILENAME, null, 1); + + this.appContext = appContext; + this.backgroundExecutor = backgroundExecutor; } // TODO(zachh): LAST_MODIFIED is no longer read and can be deleted. @@ -62,4 +80,14 @@ class PhoneLookupHistoryDatabaseHelper extends SQLiteOpenHelper { @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {} + + /** Closes the database and deletes it. */ + public ListenableFuture<Void> delete() { + return backgroundExecutor.submit( + () -> { + close(); + appContext.deleteDatabase(FILENAME); + return null; + }); + } } diff --git a/java/com/android/dialer/phonelookup/spam/SpamPhoneLookup.java b/java/com/android/dialer/phonelookup/spam/SpamPhoneLookup.java index 2a856280b..315f65819 100644 --- a/java/com/android/dialer/phonelookup/spam/SpamPhoneLookup.java +++ b/java/com/android/dialer/phonelookup/spam/SpamPhoneLookup.java @@ -159,4 +159,13 @@ public final class SpamPhoneLookup implements PhoneLookup<SpamInfo> { @Override public void unregisterContentObservers(Context appContext) {} + + @Override + public ListenableFuture<Void> clearData() { + return backgroundExecutorService.submit( + () -> { + sharedPreferences.edit().remove(PREF_LAST_TIMESTAMP_PROCESSED).apply(); + return null; + }); + } } |