1 /* 2 * Copyright (C) 2018 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.server.contentsuggestions; 18 19 import android.annotation.NonNull; 20 import android.os.ShellCommand; 21 22 import java.io.PrintWriter; 23 24 /** 25 * The shell command implementation for the ContentSuggestionsManagerService. 26 */ 27 public class ContentSuggestionsManagerServiceShellCommand extends ShellCommand { 28 29 private static final String TAG = 30 ContentSuggestionsManagerServiceShellCommand.class.getSimpleName(); 31 32 private final ContentSuggestionsManagerService mService; 33 ContentSuggestionsManagerServiceShellCommand( @onNull ContentSuggestionsManagerService service)34 public ContentSuggestionsManagerServiceShellCommand( 35 @NonNull ContentSuggestionsManagerService service) { 36 mService = service; 37 } 38 39 @Override onCommand(String cmd)40 public int onCommand(String cmd) { 41 if (cmd == null) { 42 return handleDefaultCommands(cmd); 43 } 44 final PrintWriter pw = getOutPrintWriter(); 45 switch (cmd) { 46 case "set": 47 return requestSet(pw); 48 case "get": 49 return requestGet(pw); 50 default: 51 return handleDefaultCommands(cmd); 52 } 53 } 54 55 @Override onHelp()56 public void onHelp() { 57 try (PrintWriter pw = getOutPrintWriter()) { 58 pw.println("ContentSuggestionsManagerService commands:"); 59 pw.println(" help"); 60 pw.println(" Prints this help text."); 61 pw.println(""); 62 pw.println(" set temporary-service USER_ID [COMPONENT_NAME DURATION]"); 63 pw.println(" Temporarily (for DURATION ms) changes the service implementation."); 64 pw.println(" To reset, call with just the USER_ID argument."); 65 pw.println(""); 66 pw.println(" set default-service-enabled USER_ID [true|false]"); 67 pw.println(" Enable / disable the default service for the user."); 68 pw.println(""); 69 pw.println(" get default-service-enabled USER_ID"); 70 pw.println(" Checks whether the default service is enabled for the user."); 71 pw.println(""); 72 } 73 } 74 requestSet(PrintWriter pw)75 private int requestSet(PrintWriter pw) { 76 final String what = getNextArgRequired(); 77 78 switch(what) { 79 case "temporary-service": 80 return setTemporaryService(pw); 81 case "default-service-enabled": 82 return setDefaultServiceEnabled(); 83 default: 84 pw.println("Invalid set: " + what); 85 return -1; 86 } 87 } 88 requestGet(PrintWriter pw)89 private int requestGet(PrintWriter pw) { 90 final String what = getNextArgRequired(); 91 switch(what) { 92 case "default-service-enabled": 93 return getDefaultServiceEnabled(pw); 94 default: 95 pw.println("Invalid get: " + what); 96 return -1; 97 } 98 } 99 setTemporaryService(PrintWriter pw)100 private int setTemporaryService(PrintWriter pw) { 101 final int userId = Integer.parseInt(getNextArgRequired()); 102 String serviceName = getNextArg(); 103 if (serviceName == null) { 104 mService.resetTemporaryService(userId); 105 return 0; 106 } 107 final int duration = Integer.parseInt(getNextArgRequired()); 108 mService.setTemporaryService(userId, serviceName, duration); 109 pw.println("ContentSuggestionsService temporarily set to " + serviceName 110 + " for " + duration + "ms"); 111 return 0; 112 } 113 setDefaultServiceEnabled()114 private int setDefaultServiceEnabled() { 115 final int userId = getNextIntArgRequired(); 116 final boolean enabled = Boolean.parseBoolean(getNextArg()); 117 mService.setDefaultServiceEnabled(userId, enabled); 118 return 0; 119 } 120 getDefaultServiceEnabled(PrintWriter pw)121 private int getDefaultServiceEnabled(PrintWriter pw) { 122 final int userId = getNextIntArgRequired(); 123 final boolean enabled = mService.isDefaultServiceEnabled(userId); 124 pw.println(enabled); 125 return 0; 126 } 127 getNextIntArgRequired()128 private int getNextIntArgRequired() { 129 return Integer.parseInt(getNextArgRequired()); 130 } 131 } 132