Android Open Source - Cafe Tear Down Helper






From Project

Back to project page Cafe.

License

The source code is released under:

Apache License

If you think the Android project Cafe listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright (C) 2011 Baidu.com Inc//from ww  w. ja v  a 2 s  . c  o  m
 *
 * 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.baidu.cafe;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

import android.view.KeyEvent;

import com.baidu.cafe.local.Log;
import com.baidu.cafe.remote.Armser;

/**
 * @author luxiaoyu01@baidu.com
 * @date 2011-8-11
 * @version
 * @todo
 */
public class TearDownHelper {
    private Armser   mRemote         = null;
    private String[] mWindowsAtBirth = null;

    /**
     * This function must be invoke at setUp()
     * 
     * @param remote
     */
    public TearDownHelper(Armser remote) {
        mRemote = remote;
        mWindowsAtBirth = getWindowPackageName();
    }

    private void print(String msg) {
        Log.i("TearDownHelper", msg);
    }

    public void backToHome() {
        String focusedWindow = mRemote.getFocusedWindow();
        print("focusedWindow: " + focusedWindow);

        if (null == focusedWindow) {
            return;
        }

        if (!focusedWindow.contains("launcher")) {
            mRemote.pressKey(KeyEvent.KEYCODE_HOME);
            print("backToHome");
        }
    }

    /**
     * This function must be invoke once at tearDown()
     */
    public void killWindowsFromBirthToNow() {
        String[] mWindowsAtNow = getWindowPackageName();
        if (null == mWindowsAtNow) {
            print("null == mWindowsAtNow at killWindowsFromBirthToNow");
            return;
        }

        String[] newWindows = arrayUnique(subArray(mWindowsAtNow, mWindowsAtBirth));

        for (String window : newWindows) {
            print("kill:" + window);
            mRemote.killBackgroundProcesses(window);
        }
    }

    private String[] arrayUnique(String[] a) {
        List<String> list = new LinkedList<String>();

        for (int i = 0; i < a.length; i++) {
            if (!list.contains(a[i])) {
                list.add(a[i]);
            }
        }

        return list.toArray(new String[list.size()]);
    }

    private String[] subArray(String[] bigArray, String[] smallArray) {
        List<String> bigArrayList = new ArrayList<String>(Arrays.asList(bigArray));

        for (String s : smallArray) {
            if (bigArrayList.contains(s)) {
                bigArrayList.remove(s);
            } else {
                bigArrayList.add(s);
            }
        }

        return bigArrayList.toArray(new String[bigArrayList.size()]);
    }

    private String[] getWindowPackageName() {
        String[] windowList = mRemote.getWindowList();
        if (null == windowList) {
            print("null == windowList at getWindowPackageName");
            return null;
        }

        String[] windowPackageName = new String[windowList.length];

        for (int i = 0; i < windowList.length; i++) {
            String[] windowSplit = windowList[i].split(" ");

            if (windowSplit.length < 2) {
                continue;
            }

            if (windowSplit[1].contains("/")) {
                windowPackageName[i] = windowSplit[1].substring(0, windowSplit[1].indexOf("/"));
            } else {
                windowPackageName[i] = windowSplit[1];
            }
        }

        return windowPackageName;
    }

}




Java Source Code List

com.baidu.cafe.CafeExceptionHandler.java
com.baidu.cafe.CafeListener.java
com.baidu.cafe.CafeServiceTestCase.java
com.baidu.cafe.CafeTestCase.java
com.baidu.cafe.CafeTestRunner.java
com.baidu.cafe.TearDownHelper.java
com.baidu.cafe.local.DESEncryption.java
com.baidu.cafe.local.FPSTracer.java
com.baidu.cafe.local.FileUtils.java
com.baidu.cafe.local.LocalLib.java
com.baidu.cafe.local.Log.java
com.baidu.cafe.local.NetworkUtils.java
com.baidu.cafe.local.SnapshotHelper.java
com.baidu.cafe.local.record.CafeWebViewClient.java
com.baidu.cafe.local.record.OutputEvent.java
com.baidu.cafe.local.record.ViewRecorderSDK.java
com.baidu.cafe.local.record.ViewRecorder.java
com.baidu.cafe.local.record.WebElementRecorder.java
com.baidu.cafe.local.traveler.APPTraveler.java
com.baidu.cafe.local.traveler.Logger.java
com.baidu.cafe.local.traveler.Operation.java
com.baidu.cafe.local.traveler.Util.java
com.baidu.cafe.local.traveler.ViewHelper.java
com.baidu.cafe.remote.ArmsBinder.java
com.baidu.cafe.remote.ArmsBootupReceiver.java
com.baidu.cafe.remote.Arms.java
com.baidu.cafe.remote.Armser.java
com.baidu.cafe.remote.BatteryState.java
com.baidu.cafe.remote.LockActivity.java
com.baidu.cafe.remote.Log.java
com.baidu.cafe.remote.MonkeyNetwork.java
com.baidu.cafe.remote.MyIntent.java
com.baidu.cafe.remote.SystemLib.java
com.baidu.cafe.remote.UILib.java
com.baidu.cafe.remote.ViewPropertyProvider.java
com.baidu.cafe.utils.CommandResult.java
com.baidu.cafe.utils.ReflectHelper.java
com.baidu.cafe.utils.ShellExecute.java
com.baidu.cafe.utils.Strings.java
com.baidu.cafe.utils.TreeNode.java