Add some more buttons to Bad Behavior:
- crash system server - report a Log.wtf() Update Monkey for changes to IActivityController interface.
This commit is contained in:
@@ -17,28 +17,29 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="com.android.development"
|
package="com.android.development"
|
||||||
android:versionCode="1" android:versionName="1.0">
|
android:versionCode="1" android:versionName="1.0">
|
||||||
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
|
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||||
|
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
|
||||||
|
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
|
||||||
|
<uses-permission android:name="android.permission.DEVICE_POWER" />
|
||||||
<uses-permission android:name="android.permission.DUMP" />
|
<uses-permission android:name="android.permission.DUMP" />
|
||||||
<uses-permission android:name="android.permission.SET_PREFERRED_APPLICATIONS" />
|
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
|
||||||
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
|
|
||||||
<uses-permission android:name="android.permission.SET_ANIMATION_SCALE" />
|
|
||||||
<uses-permission android:name="android.permission.SET_PROCESS_LIMIT" />
|
|
||||||
<uses-permission android:name="android.permission.SET_ALWAYS_FINISH" />
|
|
||||||
<uses-permission android:name="android.permission.SET_DEBUG_APP" />
|
|
||||||
<uses-permission android:name="android.permission.HARDWARE_TEST" />
|
<uses-permission android:name="android.permission.HARDWARE_TEST" />
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
|
||||||
|
<uses-permission android:name="android.permission.REBOOT" />
|
||||||
|
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
|
||||||
|
<uses-permission android:name="android.permission.SET_ALWAYS_FINISH" />
|
||||||
|
<uses-permission android:name="android.permission.SET_ANIMATION_SCALE" />
|
||||||
|
<uses-permission android:name="android.permission.SET_DEBUG_APP" />
|
||||||
|
<uses-permission android:name="android.permission.SET_PREFERRED_APPLICATIONS" />
|
||||||
|
<uses-permission android:name="android.permission.SET_PROCESS_LIMIT" />
|
||||||
|
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
|
||||||
|
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||||
|
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
|
||||||
|
<uses-permission android:name="com.google.android.googleapps.permission.ACCESS_GOOGLE_PASSWORD" />
|
||||||
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH" />
|
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH" />
|
||||||
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH.ALL_SERVICES" />
|
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH.ALL_SERVICES" />
|
||||||
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH.YouTubeUser" />
|
<uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH.YouTubeUser" />
|
||||||
<uses-permission android:name="com.google.android.googleapps.permission.ACCESS_GOOGLE_PASSWORD" />
|
|
||||||
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
|
|
||||||
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
|
|
||||||
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
|
|
||||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
|
||||||
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
|
|
||||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
|
||||||
<uses-permission android:name="android.permission.DEVICE_POWER" />
|
|
||||||
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
|
|
||||||
|
|
||||||
<application android:label="Dev Tools"
|
<application android:label="Dev Tools"
|
||||||
android:icon="@drawable/ic_launcher_devtools">
|
android:icon="@drawable/ic_launcher_devtools">
|
||||||
|
|||||||
@@ -19,6 +19,11 @@
|
|||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="fill_parent">
|
android:layout_height="fill_parent">
|
||||||
|
|
||||||
|
<Button android:id="@+id/bad_behavior_crash_system"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/bad_behavior_crash_system_label" />
|
||||||
|
|
||||||
<Button android:id="@+id/bad_behavior_crash_main"
|
<Button android:id="@+id/bad_behavior_crash_main"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@@ -29,6 +34,11 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/bad_behavior_crash_thread_label" />
|
android:text="@string/bad_behavior_crash_thread_label" />
|
||||||
|
|
||||||
|
<Button android:id="@+id/bad_behavior_wtf"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/bad_behavior_wtf_label" />
|
||||||
|
|
||||||
<Button android:id="@+id/bad_behavior_anr"
|
<Button android:id="@+id/bad_behavior_anr"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
|||||||
@@ -195,7 +195,9 @@
|
|||||||
<string name="select_account_to_sync">Select account to sync</string>
|
<string name="select_account_to_sync">Select account to sync</string>
|
||||||
|
|
||||||
<!-- BadBehaviorActivity -->
|
<!-- BadBehaviorActivity -->
|
||||||
<string name="bad_behavior_crash_main_label">Crash the main thread</string>
|
<string name="bad_behavior_crash_system_label">Crash the system server</string>
|
||||||
<string name="bad_behavior_crash_thread_label">Crash an auxiliary thread</string>
|
<string name="bad_behavior_crash_main_label">Crash the main app thread</string>
|
||||||
|
<string name="bad_behavior_crash_thread_label">Crash an auxiliary app thread</string>
|
||||||
|
<string name="bad_behavior_wtf_label">Report a WTF condition</string>
|
||||||
<string name="bad_behavior_anr_label">Stop responding for 20 seconds (ANR)</string>
|
<string name="bad_behavior_anr_label">Stop responding for 20 seconds (ANR)</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -18,8 +18,13 @@ package com.android.development;
|
|||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.widget.Button;
|
import android.os.IBinder;
|
||||||
|
import android.os.IPowerManager;
|
||||||
|
import android.os.RemoteException;
|
||||||
|
import android.os.ServiceManager;
|
||||||
|
import android.util.Log;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.widget.Button;
|
||||||
|
|
||||||
public class BadBehaviorActivity extends Activity {
|
public class BadBehaviorActivity extends Activity {
|
||||||
static class BadBehaviorException extends RuntimeException {
|
static class BadBehaviorException extends RuntimeException {
|
||||||
@@ -34,6 +39,19 @@ public class BadBehaviorActivity extends Activity {
|
|||||||
super.onCreate(icicle);
|
super.onCreate(icicle);
|
||||||
setContentView(R.layout.bad_behavior);
|
setContentView(R.layout.bad_behavior);
|
||||||
|
|
||||||
|
Button crash_system = (Button) findViewById(R.id.bad_behavior_crash_system);
|
||||||
|
crash_system.setOnClickListener(new View.OnClickListener() {
|
||||||
|
public void onClick(View v) {
|
||||||
|
try {
|
||||||
|
IBinder b = ServiceManager.getService(POWER_SERVICE);
|
||||||
|
IPowerManager pm = IPowerManager.Stub.asInterface(b);
|
||||||
|
pm.crash("Crashed by BadBehaviorActivity");
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
Log.e("BadBehavior", "Can't call IPowerManager.crash()", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
Button crash_main = (Button) findViewById(R.id.bad_behavior_crash_main);
|
Button crash_main = (Button) findViewById(R.id.bad_behavior_crash_main);
|
||||||
crash_main.setOnClickListener(new View.OnClickListener() {
|
crash_main.setOnClickListener(new View.OnClickListener() {
|
||||||
public void onClick(View v) { throw new BadBehaviorException(); }
|
public void onClick(View v) { throw new BadBehaviorException(); }
|
||||||
@@ -49,6 +67,11 @@ public class BadBehaviorActivity extends Activity {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Button wtf = (Button) findViewById(R.id.bad_behavior_wtf);
|
||||||
|
wtf.setOnClickListener(new View.OnClickListener() {
|
||||||
|
public void onClick(View v) { Log.wtf("BadBehavior", "Apps Behaving Badly"); }
|
||||||
|
});
|
||||||
|
|
||||||
Button anr = (Button) findViewById(R.id.bad_behavior_anr);
|
Button anr = (Button) findViewById(R.id.bad_behavior_anr);
|
||||||
anr.setOnClickListener(new View.OnClickListener() {
|
anr.setOnClickListener(new View.OnClickListener() {
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
|
|||||||
@@ -226,7 +226,7 @@ public class Monkey {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean appCrashed(String processName, int pid,
|
public boolean appCrashed(String processName, int pid,
|
||||||
String tag, String shortMsg, String longMsg,
|
String shortMsg, String longMsg,
|
||||||
long timeMillis, String stackTrace) {
|
long timeMillis, String stackTrace) {
|
||||||
System.err.println("// CRASH: " + processName + " (pid " + pid + ")");
|
System.err.println("// CRASH: " + processName + " (pid " + pid + ")");
|
||||||
System.err.println("// Short Msg: " + shortMsg);
|
System.err.println("// Short Msg: " + shortMsg);
|
||||||
@@ -234,8 +234,6 @@ public class Monkey {
|
|||||||
System.err.println("// Build Label: " + Build.FINGERPRINT);
|
System.err.println("// Build Label: " + Build.FINGERPRINT);
|
||||||
System.err.println("// Build Changelist: " + Build.VERSION.INCREMENTAL);
|
System.err.println("// Build Changelist: " + Build.VERSION.INCREMENTAL);
|
||||||
System.err.println("// Build Time: " + Build.TIME);
|
System.err.println("// Build Time: " + Build.TIME);
|
||||||
System.err.println("// ID: "); // TODO: This was never set -- remove?
|
|
||||||
System.err.println("// Tag: " + tag);
|
|
||||||
System.err.println("// " + stackTrace.replace("\n", "\n// "));
|
System.err.println("// " + stackTrace.replace("\n", "\n// "));
|
||||||
|
|
||||||
if (!mIgnoreCrashes) {
|
if (!mIgnoreCrashes) {
|
||||||
|
|||||||
Reference in New Issue
Block a user