Home | History | Annotate | Download | only in statsd
      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 package com.android.server.cts.device.statsd;
     17 
     18 import android.accounts.AbstractAccountAuthenticator;
     19 import android.accounts.Account;
     20 import android.accounts.AccountAuthenticatorResponse;
     21 import android.accounts.AccountManager;
     22 import android.accounts.NetworkErrorException;
     23 import android.app.Service;
     24 import android.content.Context;
     25 import android.content.Intent;
     26 import android.os.Bundle;
     27 import android.os.IBinder;
     28 import android.util.Log;
     29 
     30 import java.util.Arrays;
     31 
     32 /**
     33  * Authenticator for the sync test.
     34  */
     35 public class StatsdAuthenticator extends Service {
     36     private static final String TAG = "AtomTestsAuthenticator";
     37 
     38     private static final String ACCOUNT_NAME = "StatsdCts";
     39     private static final String ACCOUNT_TYPE = "com.android.cts.statsd";
     40     private static Authenticator sInstance;
     41 
     42     @Override
     43     public IBinder onBind(Intent intent) {
     44         if (sInstance == null) {
     45             sInstance = new Authenticator(getApplicationContext());
     46 
     47         }
     48         return sInstance.getIBinder();
     49     }
     50 
     51     public static Account getTestAccount() {
     52         return new Account(ACCOUNT_NAME, ACCOUNT_TYPE);
     53     }
     54 
     55     /**
     56      * Adds the test account, if it doesn't exist yet.
     57      */
     58     public static void ensureTestAccount(Context context) {
     59         final Account account = getTestAccount();
     60 
     61         Bundle result = new Bundle();
     62         result.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type);
     63         result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name);
     64 
     65         final AccountManager am = context.getSystemService(AccountManager.class);
     66 
     67         if (!Arrays.asList(am.getAccountsByType(account.type)).contains(account) ){
     68             am.addAccountExplicitly(account, "password", new Bundle());
     69         }
     70     }
     71 
     72     /**
     73      * Remove the test account.
     74      */
     75     public static void removeAllAccounts(Context context) {
     76         final AccountManager am = context.getSystemService(AccountManager.class);
     77 
     78         for (Account account : am.getAccountsByType(ACCOUNT_TYPE)) {
     79             Log.i(TAG, "Removing " + account + "...");
     80             am.removeAccountExplicitly(account);
     81             Log.i(TAG, "Removed");
     82         }
     83     }
     84 
     85     public static class Authenticator extends AbstractAccountAuthenticator {
     86 
     87         private final Context mContxet;
     88 
     89         public Authenticator(Context context) {
     90             super(context);
     91             mContxet = context;
     92         }
     93 
     94         @Override
     95         public Bundle addAccount(AccountAuthenticatorResponse response, String accountType,
     96                 String authTokenType, String[] requiredFeatures, Bundle options)
     97                 throws NetworkErrorException {
     98             return new Bundle();
     99         }
    100 
    101         @Override
    102         public Bundle editProperties(AccountAuthenticatorResponse response, String accountType) {
    103             return new Bundle();
    104         }
    105 
    106         @Override
    107         public Bundle updateCredentials(AccountAuthenticatorResponse response, Account account,
    108                 String authTokenType, Bundle options) throws NetworkErrorException {
    109             return new Bundle();
    110         }
    111 
    112         @Override
    113         public Bundle confirmCredentials(AccountAuthenticatorResponse response, Account account,
    114                 Bundle options) throws NetworkErrorException {
    115             return new Bundle();
    116         }
    117 
    118         @Override
    119         public Bundle getAuthToken(AccountAuthenticatorResponse response, Account account,
    120                 String authTokenType, Bundle options) throws NetworkErrorException {
    121             return new Bundle();
    122         }
    123 
    124         @Override
    125         public String getAuthTokenLabel(String authTokenType) {
    126             return "token_label";
    127         }
    128 
    129         @Override
    130         public Bundle hasFeatures(AccountAuthenticatorResponse response, Account account,
    131                 String[] features) throws NetworkErrorException {
    132             return new Bundle();
    133         }
    134     }
    135 }
    136