diff options
author | twyen <twyen@google.com> | 2018-03-30 10:56:48 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-03-30 12:33:04 -0700 |
commit | 49c5dcd4e6f09f3931a7df808db5562eb92ed14d (patch) | |
tree | ea212777e1a8ddf935784339fc7a639f9997d254 /java/com/android/dialer/commandline | |
parent | 1d8aaa53ca6a0c404b32b999cff97a5f81bdd4ef (diff) |
Implement new blocking
Old blocking is deprecated.
Bug: 70989544
Test: TAP
PiperOrigin-RevId: 191086875
Change-Id: Icde4963fce603fc4e16e486b78c070bd439e26e4
Diffstat (limited to 'java/com/android/dialer/commandline')
-rw-r--r-- | java/com/android/dialer/commandline/CommandLineModule.java | 14 | ||||
-rw-r--r-- | java/com/android/dialer/commandline/impl/BlockingCommand.java (renamed from java/com/android/dialer/commandline/impl/Blocking.java) | 61 |
2 files changed, 47 insertions, 28 deletions
diff --git a/java/com/android/dialer/commandline/CommandLineModule.java b/java/com/android/dialer/commandline/CommandLineModule.java index 612155662..915578722 100644 --- a/java/com/android/dialer/commandline/CommandLineModule.java +++ b/java/com/android/dialer/commandline/CommandLineModule.java @@ -16,7 +16,7 @@ package com.android.dialer.commandline; -import com.android.dialer.commandline.impl.Blocking; +import com.android.dialer.commandline.impl.BlockingCommand; import com.android.dialer.commandline.impl.CallCommand; import com.android.dialer.commandline.impl.Echo; import com.android.dialer.commandline.impl.Help; @@ -43,16 +43,20 @@ public abstract class CommandLineModule { private final Help help; private final Version version; private final Echo echo; - private final Blocking blocking; + private final BlockingCommand blockingCommand; private final CallCommand callCommand; @Inject AospCommandInjector( - Help help, Version version, Echo echo, Blocking blocking, CallCommand callCommand) { + Help help, + Version version, + Echo echo, + BlockingCommand blockingCommand, + CallCommand callCommand) { this.help = help; this.version = version; this.echo = echo; - this.blocking = blocking; + this.blockingCommand = blockingCommand; this.callCommand = callCommand; } @@ -60,7 +64,7 @@ public abstract class CommandLineModule { builder.addCommand("help", help); builder.addCommand("version", version); builder.addCommand("echo", echo); - builder.addCommand("blocking", blocking); + builder.addCommand("blocking", blockingCommand); builder.addCommand("call", callCommand); return builder; } diff --git a/java/com/android/dialer/commandline/impl/Blocking.java b/java/com/android/dialer/commandline/impl/BlockingCommand.java index 2afd16522..c8f893422 100644 --- a/java/com/android/dialer/commandline/impl/Blocking.java +++ b/java/com/android/dialer/commandline/impl/BlockingCommand.java @@ -18,17 +18,25 @@ package com.android.dialer.commandline.impl; import android.content.Context; import android.support.annotation.NonNull; -import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler; +import com.android.dialer.DialerPhoneNumber; +import com.android.dialer.blocking.Blocking; import com.android.dialer.commandline.Arguments; import com.android.dialer.commandline.Command; import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor; import com.android.dialer.inject.ApplicationContext; +import com.android.dialer.phonelookup.PhoneLookupComponent; +import com.android.dialer.phonelookup.PhoneLookupInfo; +import com.android.dialer.phonelookup.consolidator.PhoneLookupInfoConsolidator; +import com.android.dialer.phonenumberproto.DialerPhoneNumberUtil; +import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListeningExecutorService; +import com.google.common.util.concurrent.MoreExecutors; +import com.google.i18n.phonenumbers.PhoneNumberUtil; import javax.inject.Inject; /** Block or unblock a number. */ -public class Blocking implements Command { +public class BlockingCommand implements Command { @NonNull @Override @@ -46,7 +54,7 @@ public class Blocking implements Command { private final ListeningExecutorService executorService; @Inject - Blocking( + BlockingCommand( @ApplicationContext Context context, @BackgroundExecutor ListeningExecutorService executorService) { this.appContext = context; @@ -55,42 +63,49 @@ public class Blocking implements Command { @Override public ListenableFuture<String> run(Arguments args) throws IllegalCommandLineArgumentException { - // AsyncQueryHandler must be created on a thread with looper. - // TODO(a bug): Use blocking version - FilteredNumberAsyncQueryHandler asyncQueryHandler = - new FilteredNumberAsyncQueryHandler(appContext); - return executorService.submit(() -> doInBackground(args, asyncQueryHandler)); - } - - private String doInBackground(Arguments args, FilteredNumberAsyncQueryHandler asyncQueryHandler) { if (args.getPositionals().isEmpty()) { - return getUsage(); + return Futures.immediateFuture(getUsage()); } String command = args.getPositionals().get(0); if ("block".equals(command)) { String number = args.getPositionals().get(1); - asyncQueryHandler.blockNumber((unused) -> {}, number, null); - return "blocked " + number; + return Futures.transform( + Blocking.block(appContext, executorService, number, null), + (unused) -> "blocked " + number, + MoreExecutors.directExecutor()); } if ("unblock".equals(command)) { String number = args.getPositionals().get(1); - Integer id = asyncQueryHandler.getBlockedIdSynchronous(number, null); - if (id == null) { - return number + " is not blocked"; - } - asyncQueryHandler.unblock((unusedRows, unusedValues) -> {}, id); - return "unblocked " + number; + return Futures.transform( + Blocking.unblock(appContext, executorService, number, null), + (unused) -> "unblocked " + number, + MoreExecutors.directExecutor()); } if ("isblocked".equals(command)) { String number = args.getPositionals().get(1); - Integer id = asyncQueryHandler.getBlockedIdSynchronous(number, null); - return id == null ? "false" : "true"; + ListenableFuture<DialerPhoneNumber> dialerPhoneNumberFuture = + executorService.submit( + () -> new DialerPhoneNumberUtil(PhoneNumberUtil.getInstance()).parse(number, null)); + + ListenableFuture<PhoneLookupInfo> lookupFuture = + Futures.transformAsync( + dialerPhoneNumberFuture, + (dialerPhoneNumber) -> + PhoneLookupComponent.get(appContext) + .compositePhoneLookup() + .lookup(dialerPhoneNumber), + executorService); + + return Futures.transform( + lookupFuture, + (info) -> new PhoneLookupInfoConsolidator(info).isBlocked() ? "true" : "false", + MoreExecutors.directExecutor()); } - return getUsage(); + return Futures.immediateFuture(getUsage()); } } |