Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 849f332f authored by linyuh's avatar linyuh Committed by Copybara-Service
Browse files

Add skeleton for SpamPhoneLookup

Bug: 70989534
Test: SpamPhoneLookupTest
PiperOrigin-RevId: 183174131
Change-Id: I46e819a0710ccce293195594e2f249e91d74551a
parent 0874af84
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -75,7 +75,6 @@ public class AnnotatedCallLogContentProvider extends ContentProvider {
  }

  private AnnotatedCallLogDatabaseHelper databaseHelper;
  private Coalescer coalescer;

  private final ThreadLocal<Boolean> applyingBatch = new ThreadLocal<>();

@@ -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;
  }

@@ -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;
+5 −2
Original line number Diff line number Diff line
@@ -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;
@@ -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
+1 −0
Original line number Diff line number Diff line
@@ -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;
  }
+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
  }
}