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

Commit 947c6155 authored by Paul Duffin's avatar Paul Duffin Committed by Android (Google) Code Review
Browse files

Merge "Add apis needed for android.test.legacy"

parents 8da513e8 772b6923
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
package android.test.mock {

  public deprecated class MockAccountManager {
    method public static android.accounts.AccountManager newMockAccountManager(android.content.Context);
  }

  public deprecated class MockApplication extends android.app.Application {
    ctor public MockApplication();
  }
@@ -9,6 +13,7 @@ package android.test.mock {
    ctor public MockContentProvider(android.content.Context);
    ctor public MockContentProvider(android.content.Context, java.lang.String, java.lang.String, android.content.pm.PathPermission[]);
    method public android.content.ContentProviderResult[] applyBatch(java.util.ArrayList<android.content.ContentProviderOperation>);
    method public static deprecated void attachInfoForTesting(android.content.ContentProvider, android.content.Context, android.content.pm.ProviderInfo);
    method public int delete(android.net.Uri, java.lang.String, java.lang.String[]);
    method public java.lang.String getType(android.net.Uri);
    method public android.net.Uri insert(android.net.Uri, android.content.ContentValues);
@@ -289,5 +294,9 @@ package android.test.mock {
    method public void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics);
  }

  public deprecated class MockService {
    method public static <T extends android.app.Service> void attachForTesting(android.app.Service, android.content.Context, java.lang.String, android.app.Application);
  }

}
+119 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2017 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 android.test.mock;

import android.accounts.Account;
import android.accounts.AccountManager;
import android.accounts.AccountManagerCallback;
import android.accounts.AccountManagerFuture;
import android.accounts.AuthenticatorException;
import android.accounts.OnAccountsUpdateListener;
import android.accounts.OperationCanceledException;
import android.content.Context;
import android.os.Handler;
import java.io.IOException;
import java.util.concurrent.TimeUnit;

/**
 * A mock {@link android.accounts.AccountManager} class.
 *
 * <p>Provided for use by {@code android.test.IsolatedContext}.
 *
 * @deprecated Use a mocking framework like <a href="https://github.com/mockito/mockito">Mockito</a>.
 * New tests should be written using the
 * <a href="{@docRoot}
 * tools/testing-support-library/index.html">Android Testing Support Library</a>.
 */
@Deprecated
public class MockAccountManager {

    /**
     * Create a new mock {@link AccountManager} instance.
     *
     * @param context the {@link Context} to which the returned object belongs.
     * @return the new instance.
     */
    public static AccountManager newMockAccountManager(Context context) {
        return new MockAccountManagerImpl(context);
    }

    private MockAccountManager() {
    }

    private static class MockAccountManagerImpl extends AccountManager {

        MockAccountManagerImpl(Context context) {
            super(context, null /* IAccountManager */, null /* handler */);
        }

        public void addOnAccountsUpdatedListener(OnAccountsUpdateListener listener,
                Handler handler, boolean updateImmediately) {
            // do nothing
        }

        public Account[] getAccounts() {
            return new Account[] {};
        }

        public AccountManagerFuture<Account[]> getAccountsByTypeAndFeatures(
                final String type, final String[] features,
                AccountManagerCallback<Account[]> callback, Handler handler) {
            return new MockAccountManagerFuture<Account[]>(new Account[0]);
        }

        public String blockingGetAuthToken(Account account, String authTokenType,
                boolean notifyAuthFailure)
                throws OperationCanceledException, IOException, AuthenticatorException {
            return null;
        }
    }

    /**
     * A very simple AccountManagerFuture class
     * that returns what ever was passed in
     */
    private static class MockAccountManagerFuture<T>
            implements AccountManagerFuture<T> {

        T mResult;

        MockAccountManagerFuture(T result) {
            mResult = result;
        }

        public boolean cancel(boolean mayInterruptIfRunning) {
            return false;
        }

        public boolean isCancelled() {
            return false;
        }

        public boolean isDone() {
            return true;
        }

        public T getResult()
                throws OperationCanceledException, IOException, AuthenticatorException {
            return mResult;
        }

        public T getResult(long timeout, TimeUnit unit)
                throws OperationCanceledException, IOException, AuthenticatorException {
            return getResult();
        }
    }
}
+17 −0
Original line number Diff line number Diff line
@@ -277,4 +277,21 @@ public class MockContentProvider extends ContentProvider {
    public final IContentProvider getIContentProvider() {
        return mIContentProvider;
    }

    /**
     * Like {@link #attachInfo(Context, android.content.pm.ProviderInfo)}, but for use
     * when directly instantiating the provider for testing.
     *
     * <p>Provided for use by {@code android.test.ProviderTestCase2} and
     * {@code android.test.RenamingDelegatingContext}.
     *
     * @deprecated Use a mocking framework like <a href="https://github.com/mockito/mockito">Mockito</a>.
     * New tests should be written using the
     * <a href="{@docRoot}tools/testing-support-library/index.html">Android Testing Support Library</a>.
     */
    @Deprecated
    public static void attachInfoForTesting(
            ContentProvider provider, Context context, ProviderInfo providerInfo) {
        provider.attachInfoForTesting(context, providerInfo);
    }
}
+49 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2017 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 android.test.mock;

import android.app.Application;
import android.app.Service;
import android.content.Context;

/**
 * A mock {@link android.app.Service} class.
 *
 * <p>Provided for use by {@code android.test.ServiceTestCase}.
 *
 * @deprecated Use a mocking framework like <a href="https://github.com/mockito/mockito">Mockito</a>.
 * New tests should be written using the
 * <a href="{@docRoot}tools/testing-support-library/index.html">Android Testing Support Library</a>.
 */
@Deprecated
public class MockService {

    public static <T extends Service> void attachForTesting(Service service, Context context,
            String serviceClassName,
            Application application) {
        service.attach(
                context,
                null,               // ActivityThread not actually used in Service
                serviceClassName,
                null,               // token not needed when not talking with the activity manager
                application,
                null                // mocked services don't talk with the activity manager
        );
    }

    private MockService() {
    }
}