/* * Copyright (C) 2015 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.messaging.datamodel.action; import android.content.Context; import android.database.ContentObserver; import android.net.Uri; import android.os.Bundle; import com.android.messaging.util.ConnectivityUtil; import java.util.ArrayList; import java.util.List; public class ActionTestHelpers { private static final String TAG = "DataModelTestHelpers"; static class StubLoader extends ContentObserver { ArrayList mUriList = new ArrayList(); StubLoader() { super(null); } public void clear() { mUriList.clear(); } @Override public void onChange(final boolean selfChange) { // Handle change. mUriList.add(null); } // Implement the onChange(boolean, Uri) method to take advantage of the new Uri argument. // Only supported on platform 16 and above... @Override public void onChange(final boolean selfChange, final Uri uri) { // Handle change. mUriList.add(uri); } } static class StubBackgroundWorker extends BackgroundWorker { public StubBackgroundWorker() { super(); mActions = new ArrayList(); } ArrayList mActions; public ArrayList getRequestsMade() { return mActions; } @Override public void queueBackgroundWork(final List actions) { mActions.addAll(actions); synchronized(this) { this.notifyAll(); } } } static class ResultTracker { public Object executionResult; public Object completionResult; } static class StubChatActionMonitor extends ActionMonitor { static public class StateTransition { Action action; int from; int to; public StateTransition(final Action action, final int from, final int to) { this.action = action; this.from = from; this.to = to; } } private final ArrayList mTransitions; public ArrayList getTransitions() { return mTransitions; } protected StubChatActionMonitor(final int initialState, final String actionKey, final Object data) { super(initialState, actionKey, data); mTransitions = new ArrayList(); } @Override protected void updateState(final Action action, final int expectedState, final int state) { mTransitions.add(new StateTransition(action, mState, state)); super.updateState(action, expectedState, state); } public void setState(final int state) { mState = state; } public int getState() { return mState; } } public static class StubActionService extends ActionService { public static class StubActionServiceCallLog { public final Action action; public final Action request; public final Bundle response; public final Exception exception; public final Action update; public StubActionServiceCallLog(final Action action, final Action request, final Bundle response, final Exception exception, final Action update) { this.action = action; this.request = request; this.response = response; this.exception = exception; this.update = update; } } private final ArrayList mServiceCalls = new ArrayList(); public ArrayList getCalls() { return mServiceCalls; } @Override public void startAction(final Action action) { mServiceCalls.add(new StubActionServiceCallLog(action, null, null, null, null)); synchronized(this) { this.notifyAll(); } } @Override public void handleResponseFromBackgroundWorker(final Action request, final Bundle response) { mServiceCalls.add(new StubActionServiceCallLog(null, request, response, null, null)); synchronized(this) { this.notifyAll(); } } @Override protected void handleFailureFromBackgroundWorker(final Action request, final Exception exception) { mServiceCalls.add(new StubActionServiceCallLog(null, request, null, exception, null)); synchronized(this) { this.notifyAll(); } } } public static class StubConnectivityUtil extends ConnectivityUtil { public StubConnectivityUtil(final Context context) { super(context); } @Override public void registerForSignalStrength() { } @Override public void unregisterForSignalStrength() { } } }