Loading java/com/android/dialer/calllog/database/AnnotatedCallLogContentProvider.java +10 −3 Original line number Diff line number Diff line Loading @@ -75,7 +75,6 @@ public class AnnotatedCallLogContentProvider extends ContentProvider { } private AnnotatedCallLogDatabaseHelper databaseHelper; private Coalescer coalescer; private final ThreadLocal<Boolean> applyingBatch = new ThreadLocal<>(); Loading @@ -87,7 +86,12 @@ public class AnnotatedCallLogContentProvider extends ContentProvider { @Override public boolean onCreate() { databaseHelper = new AnnotatedCallLogDatabaseHelper(getContext(), MAX_ROWS); coalescer = CallLogDatabaseComponent.get(getContext()).coalescer(); // Note: As this method is called before Application#onCreate, we must *not* initialize objects // that require preparation work done in Application#onCreate. // One example is to avoid obtaining an instance that depends on Google's proprietary config, // which is initialized in Application#onCreate. return true; } Loading Loading @@ -158,7 +162,10 @@ public class AnnotatedCallLogContentProvider extends ContentProvider { null, null, AnnotatedCallLog.TIMESTAMP + " DESC")) { Cursor coalescedRows = coalescer.coalesce(allAnnotatedCallLogRows); Cursor coalescedRows = CallLogDatabaseComponent.get(getContext()) .coalescer() .coalesce(allAnnotatedCallLogRows); coalescedRows.setNotificationUri( getContext().getContentResolver(), CoalescedAnnotatedCallLog.CONTENT_URI); return coalescedRows; Loading java/com/android/dialer/phonelookup/PhoneLookupModule.java +5 −2 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import com.android.dialer.phonelookup.blockednumber.SystemBlockedNumberPhoneLook import com.android.dialer.phonelookup.composite.CompositePhoneLookup; import com.android.dialer.phonelookup.cp2.Cp2LocalPhoneLookup; import com.android.dialer.phonelookup.cp2.Cp2RemotePhoneLookup; import com.android.dialer.phonelookup.spam.SpamPhoneLookup; import com.google.common.collect.ImmutableList; import dagger.Module; import dagger.Provides; Loading @@ -35,12 +36,14 @@ public abstract class PhoneLookupModule { Cp2LocalPhoneLookup cp2LocalPhoneLookup, Cp2RemotePhoneLookup cp2RemotePhoneLookup, DialerBlockedNumberPhoneLookup dialerBlockedNumberPhoneLookup, SystemBlockedNumberPhoneLookup systemBlockedNumberPhoneLookup) { SystemBlockedNumberPhoneLookup systemBlockedNumberPhoneLookup, SpamPhoneLookup spamPhoneLookup) { return ImmutableList.of( cp2LocalPhoneLookup, cp2RemotePhoneLookup, dialerBlockedNumberPhoneLookup, systemBlockedNumberPhoneLookup); systemBlockedNumberPhoneLookup, spamPhoneLookup); } @Provides Loading java/com/android/dialer/phonelookup/phone_lookup_info.proto +1 −0 Original line number Diff line number Diff line Loading @@ -82,6 +82,7 @@ message PhoneLookupInfo { optional Cp2Info cp2_remote_info = 6; // Message for spam info. // SpamPhoneLookup is responsible for populating this message. message SpamInfo { optional bool is_spam = 1; } Loading java/com/android/dialer/phonelookup/spam/SpamPhoneLookup.java 0 → 100644 +81 −0 Original line number Diff line number Diff line /* * 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.spam; import android.content.Context; import com.android.dialer.DialerPhoneNumber; import com.android.dialer.phonelookup.PhoneLookup; import com.android.dialer.phonelookup.PhoneLookupInfo; import com.android.dialer.phonelookup.PhoneLookupInfo.SpamInfo; import com.android.dialer.spam.Spam; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import javax.inject.Inject; /** PhoneLookup implementation for Spam info. */ public final class SpamPhoneLookup implements PhoneLookup<SpamInfo> { private final Spam spam; @Inject SpamPhoneLookup(Spam spam) { this.spam = spam; } @Override public ListenableFuture<SpamInfo> lookup(DialerPhoneNumber dialerPhoneNumber) { // TODO(a bug): Use Spam to look up spam info. return Futures.immediateFuture(SpamInfo.getDefaultInstance()); } @Override public ListenableFuture<Boolean> isDirty(ImmutableSet<DialerPhoneNumber> phoneNumbers) { // TODO(a bug): Use Spam to check if its underlying data have been updated. return Futures.immediateFuture(false); } @Override public ListenableFuture<ImmutableMap<DialerPhoneNumber, SpamInfo>> getMostRecentInfo( ImmutableMap<DialerPhoneNumber, SpamInfo> existingInfoMap) { // TODO(a bug): Use Spam to retrieve the most recent spam info. return Futures.immediateFuture(existingInfoMap); } @Override public SpamInfo getSubMessage(PhoneLookupInfo phoneLookupInfo) { return phoneLookupInfo.getSpamInfo(); } @Override public void setSubMessage(PhoneLookupInfo.Builder destination, SpamInfo subMessage) { destination.setSpamInfo(subMessage); } @Override public ListenableFuture<Void> onSuccessfulBulkUpdate() { // TODO(a bug): Properly implement this method. return Futures.immediateFuture(null); } @Override public void registerContentObservers( Context appContext, ContentObserverCallbacks contentObserverCallbacks) { // No content observer needed for spam info } } Loading
java/com/android/dialer/calllog/database/AnnotatedCallLogContentProvider.java +10 −3 Original line number Diff line number Diff line Loading @@ -75,7 +75,6 @@ public class AnnotatedCallLogContentProvider extends ContentProvider { } private AnnotatedCallLogDatabaseHelper databaseHelper; private Coalescer coalescer; private final ThreadLocal<Boolean> applyingBatch = new ThreadLocal<>(); Loading @@ -87,7 +86,12 @@ public class AnnotatedCallLogContentProvider extends ContentProvider { @Override public boolean onCreate() { databaseHelper = new AnnotatedCallLogDatabaseHelper(getContext(), MAX_ROWS); coalescer = CallLogDatabaseComponent.get(getContext()).coalescer(); // Note: As this method is called before Application#onCreate, we must *not* initialize objects // that require preparation work done in Application#onCreate. // One example is to avoid obtaining an instance that depends on Google's proprietary config, // which is initialized in Application#onCreate. return true; } Loading Loading @@ -158,7 +162,10 @@ public class AnnotatedCallLogContentProvider extends ContentProvider { null, null, AnnotatedCallLog.TIMESTAMP + " DESC")) { Cursor coalescedRows = coalescer.coalesce(allAnnotatedCallLogRows); Cursor coalescedRows = CallLogDatabaseComponent.get(getContext()) .coalescer() .coalesce(allAnnotatedCallLogRows); coalescedRows.setNotificationUri( getContext().getContentResolver(), CoalescedAnnotatedCallLog.CONTENT_URI); return coalescedRows; Loading
java/com/android/dialer/phonelookup/PhoneLookupModule.java +5 −2 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import com.android.dialer.phonelookup.blockednumber.SystemBlockedNumberPhoneLook import com.android.dialer.phonelookup.composite.CompositePhoneLookup; import com.android.dialer.phonelookup.cp2.Cp2LocalPhoneLookup; import com.android.dialer.phonelookup.cp2.Cp2RemotePhoneLookup; import com.android.dialer.phonelookup.spam.SpamPhoneLookup; import com.google.common.collect.ImmutableList; import dagger.Module; import dagger.Provides; Loading @@ -35,12 +36,14 @@ public abstract class PhoneLookupModule { Cp2LocalPhoneLookup cp2LocalPhoneLookup, Cp2RemotePhoneLookup cp2RemotePhoneLookup, DialerBlockedNumberPhoneLookup dialerBlockedNumberPhoneLookup, SystemBlockedNumberPhoneLookup systemBlockedNumberPhoneLookup) { SystemBlockedNumberPhoneLookup systemBlockedNumberPhoneLookup, SpamPhoneLookup spamPhoneLookup) { return ImmutableList.of( cp2LocalPhoneLookup, cp2RemotePhoneLookup, dialerBlockedNumberPhoneLookup, systemBlockedNumberPhoneLookup); systemBlockedNumberPhoneLookup, spamPhoneLookup); } @Provides Loading
java/com/android/dialer/phonelookup/phone_lookup_info.proto +1 −0 Original line number Diff line number Diff line Loading @@ -82,6 +82,7 @@ message PhoneLookupInfo { optional Cp2Info cp2_remote_info = 6; // Message for spam info. // SpamPhoneLookup is responsible for populating this message. message SpamInfo { optional bool is_spam = 1; } Loading
java/com/android/dialer/phonelookup/spam/SpamPhoneLookup.java 0 → 100644 +81 −0 Original line number Diff line number Diff line /* * 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.spam; import android.content.Context; import com.android.dialer.DialerPhoneNumber; import com.android.dialer.phonelookup.PhoneLookup; import com.android.dialer.phonelookup.PhoneLookupInfo; import com.android.dialer.phonelookup.PhoneLookupInfo.SpamInfo; import com.android.dialer.spam.Spam; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import javax.inject.Inject; /** PhoneLookup implementation for Spam info. */ public final class SpamPhoneLookup implements PhoneLookup<SpamInfo> { private final Spam spam; @Inject SpamPhoneLookup(Spam spam) { this.spam = spam; } @Override public ListenableFuture<SpamInfo> lookup(DialerPhoneNumber dialerPhoneNumber) { // TODO(a bug): Use Spam to look up spam info. return Futures.immediateFuture(SpamInfo.getDefaultInstance()); } @Override public ListenableFuture<Boolean> isDirty(ImmutableSet<DialerPhoneNumber> phoneNumbers) { // TODO(a bug): Use Spam to check if its underlying data have been updated. return Futures.immediateFuture(false); } @Override public ListenableFuture<ImmutableMap<DialerPhoneNumber, SpamInfo>> getMostRecentInfo( ImmutableMap<DialerPhoneNumber, SpamInfo> existingInfoMap) { // TODO(a bug): Use Spam to retrieve the most recent spam info. return Futures.immediateFuture(existingInfoMap); } @Override public SpamInfo getSubMessage(PhoneLookupInfo phoneLookupInfo) { return phoneLookupInfo.getSpamInfo(); } @Override public void setSubMessage(PhoneLookupInfo.Builder destination, SpamInfo subMessage) { destination.setSpamInfo(subMessage); } @Override public ListenableFuture<Void> onSuccessfulBulkUpdate() { // TODO(a bug): Properly implement this method. return Futures.immediateFuture(null); } @Override public void registerContentObservers( Context appContext, ContentObserverCallbacks contentObserverCallbacks) { // No content observer needed for spam info } }