summaryrefslogtreecommitdiffstats
path: root/tests/StatusBar/src
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2009-03-03 19:31:44 -0800
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-03 19:31:44 -0800
commit9066cfe9886ac131c34d59ed0e2d287b0e3c0087 (patch)
treed88beb88001f2482911e3d28e43833b50e4b4e97 /tests/StatusBar/src
parentd83a98f4ce9cfa908f5c54bbd70f03eec07e7553 (diff)
downloadframeworks_base-9066cfe9886ac131c34d59ed0e2d287b0e3c0087.zip
frameworks_base-9066cfe9886ac131c34d59ed0e2d287b0e3c0087.tar.gz
frameworks_base-9066cfe9886ac131c34d59ed0e2d287b0e3c0087.tar.bz2
auto import from //depot/cupcake/@135843
Diffstat (limited to 'tests/StatusBar/src')
-rw-r--r--tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java517
-rw-r--r--tests/StatusBar/src/com/android/statusbartest/PowerTest.java129
-rw-r--r--tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java164
-rw-r--r--tests/StatusBar/src/com/android/statusbartest/TestActivity.java73
-rw-r--r--tests/StatusBar/src/com/android/statusbartest/ToastTest.java114
5 files changed, 997 insertions, 0 deletions
diff --git a/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java b/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java
new file mode 100644
index 0000000..e1a0e7d
--- /dev/null
+++ b/tests/StatusBar/src/com/android/statusbartest/NotificationTestList.java
@@ -0,0 +1,517 @@
+/*
+ * Copyright (C) 2007 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.statusbartest;
+
+import android.app.ListActivity;
+import android.app.PendingIntent;
+import android.widget.ArrayAdapter;
+import android.view.View;
+import android.widget.ListView;
+import android.content.Intent;
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.os.Vibrator;
+import android.os.Bundle;
+import android.os.Handler;
+import android.util.Log;
+import android.net.Uri;
+import android.os.SystemClock;
+import android.widget.RemoteViews;
+import android.widget.TextView;
+import android.os.PowerManager;
+
+public class NotificationTestList extends TestActivity
+{
+ private final static String TAG = "NotificationTestList";
+
+ NotificationManager mNM;
+ Vibrator mVibrator = new Vibrator();
+ Handler mHandler = new Handler();
+
+ long mChronometerBase = 0;
+
+ @Override
+ protected String tag() {
+ return TAG;
+ }
+
+ @Override
+ protected Test[] tests() {
+ mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
+
+ return mTests;
+ }
+
+ private Test[] mTests = new Test[] {
+ new Test("Crash") {
+ public void run()
+ {
+ PowerManager.WakeLock wl
+ = ((PowerManager)NotificationTestList.this.getSystemService("power"))
+ .newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "crasher");
+ wl.acquire();
+ mHandler.postDelayed(new Runnable() {
+ public void run() {
+ throw new RuntimeException("Die!");
+ }
+ }, 10000);
+
+ }
+ },
+
+ new Test("No view") {
+ public void run() {
+ Notification n = new Notification(R.drawable.icon1, "No view",
+ System.currentTimeMillis());
+ mNM.notify(1, n);
+ }
+ },
+
+ new Test("No intent") {
+ public void run() {
+ Notification n = new Notification(R.drawable.icon1, "No intent",
+ System.currentTimeMillis());
+ n.setLatestEventInfo(NotificationTestList.this, "No intent",
+ "No intent", null);
+ mNM.notify(1, n);
+ }
+ },
+
+ new Test("Layout") {
+ public void run()
+ {
+
+ mNM.notify(1, new Notification(NotificationTestList.this,
+ R.drawable.ic_statusbar_missedcall,
+ null, System.currentTimeMillis()-(1000*60*60*24),
+ "(453) 123-2328",
+ "", null));
+
+ mNM.notify(2, new Notification(NotificationTestList.this,
+ R.drawable.ic_statusbar_email,
+ null, System.currentTimeMillis(),
+ "Mark Willem, Me (2)",
+ "Re: Didn't you get the memo?", null));
+
+ mNM.notify(3, new Notification(NotificationTestList.this,
+ R.drawable.ic_statusbar_chat,
+ null, System.currentTimeMillis()+(1000*60*60*24),
+ "Sophia Winterlanden",
+ "Lorem ipsum dolor sit amet.", null));
+ }
+ },
+
+ new StateStress("Stress - Ongoing / Latest", 100, 100, new Runnable[] {
+ new Runnable() {
+ public void run() {
+ Log.d(TAG, "Stress - Ongoing/Latest 0");
+ Notification n = new Notification(NotificationTestList.this,
+ R.drawable.icon3,
+ null, System.currentTimeMillis(), "Stress - Ongoing",
+ "Notify me!!!", null);
+ n.flags |= Notification.FLAG_ONGOING_EVENT;
+ mNM.notify(1, n);
+ }
+ },
+ new Runnable() {
+ public void run() {
+ Log.d(TAG, "Stress - Ongoing/Latest 1");
+ Notification n = new Notification(NotificationTestList.this,
+ R.drawable.icon4,
+ null, System.currentTimeMillis(), "Stress - Latest",
+ "Notify me!!!", null);
+ n.flags |= Notification.FLAG_ONGOING_EVENT;
+ mNM.notify(1, n);
+ }
+ }
+ }),
+
+ new Test("Long") {
+ public void run()
+ {
+ Notification n = new Notification();
+ n.defaults |= Notification.DEFAULT_SOUND ;
+ n.vibrate = new long[] {
+ 300, 400, 300, 400, 300, 400, 300, 400, 300, 400, 300, 400,
+ 300, 400, 300, 400, 300, 400, 300, 400, 300, 400, 300, 400,
+ 300, 400, 300, 400, 300, 400, 300, 400, 300, 400, 300, 400 };
+ mNM.notify(1, n);
+ }
+ },
+
+ new Test("Default All") {
+ public void run()
+ {
+ Notification n = new Notification();
+ n.defaults |= Notification.DEFAULT_ALL;
+ mNM.notify(1, n);
+ }
+ },
+
+ new Test("Default All, once") {
+ public void run()
+ {
+ Notification n = new Notification();
+ n.defaults |= Notification.DEFAULT_ALL;
+ n.flags |= Notification.FLAG_ONLY_ALERT_ONCE ;
+ mNM.notify(1, n);
+ }
+ },
+
+ new Test("Content Sound") {
+ public void run()
+ {
+ Notification n = new Notification();
+ n.sound = Uri.parse(
+ "content://media/internal/audio/media/7");
+
+ mNM.notify(1, n);
+ }
+ },
+
+ new Test("Resource Sound") {
+ public void run()
+ {
+ Notification n = new Notification();
+ n.sound = Uri.parse(
+ "android.resource://com.android.notificationtest/raw/ringer");
+ Log.d(TAG, "n.sound=" + n.sound);
+
+ mNM.notify(1, n);
+ }
+ },
+
+ new Test("Sound and Cancel") {
+ public void run()
+ {
+ Notification n = new Notification();
+ n.sound = Uri.parse(
+ "content://media/internal/audio/media/7");
+
+ mNM.notify(1, n);
+ SystemClock.sleep(200);
+ mNM.cancel(1);
+ }
+ },
+
+ new Test("Vibrate") {
+ public void run()
+ {
+ Notification n = new Notification();
+ n.vibrate = new long[] { 0, 700, 500, 1000 };
+
+ mNM.notify(1, n);
+ }
+ },
+
+ new Test("Vibrate and cancel") {
+ public void run()
+ {
+ Notification n = new Notification();
+ n.vibrate = new long[] { 0, 700, 500, 1000 };
+
+ mNM.notify(1, n);
+ SystemClock.sleep(500);
+ mNM.cancel(1);
+ }
+ },
+
+ new Test("Vibrate pattern") {
+ public void run()
+ {
+ mVibrator.vibrate(new long[] { 250, 1000, 500, 2000 }, -1);
+ }
+ },
+
+ new Test("Vibrate pattern repeating") {
+ public void run()
+ {
+ mVibrator.vibrate(new long[] { 250, 1000, 500 }, 1);
+ }
+ },
+
+ new Test("Vibrate 3s") {
+ public void run()
+ {
+ mVibrator.vibrate(3000);
+ }
+ },
+
+ new Test("Vibrate 100s") {
+ public void run()
+ {
+ mVibrator.vibrate(100000);
+ }
+ },
+
+ new Test("Vibrate off") {
+ public void run()
+ {
+ mVibrator.cancel();
+ }
+ },
+
+ new Test("Cancel #1") {
+ public void run() {
+ mNM.cancel(1);
+ }
+ },
+
+ new Test("Cancel #1 in 3 sec") {
+ public void run() {
+ mHandler.postDelayed(new Runnable() {
+ public void run() {
+ Log.d(TAG, "Cancelling now...");
+ mNM.cancel(1);
+ }
+ }, 3000);
+ }
+ },
+
+ new Test("Cancel #2") {
+ public void run() {
+ mNM.cancel(2);
+ }
+ },
+
+ new Test("Persistent #1") {
+ public void run() {
+ Notification n = new Notification(R.drawable.icon1, "tick tick tick",
+ System.currentTimeMillis());
+ n.setLatestEventInfo(NotificationTestList.this, "Persistent #1",
+ "This is a notification!!!", makeIntent());
+ mNM.notify(1, n);
+ }
+ },
+
+ new Test("Persistent #1 in 3 sec") {
+ public void run() {
+ mHandler.postDelayed(new Runnable() {
+ public void run() {
+ Notification n = new Notification(R.drawable.icon1,
+ " "
+ + "tick tock tick tock\n\nSometimes notifications can "
+ + "be really long and wrap to more than one line.\n"
+ + "Sometimes."
+ + "Ohandwhathappensifwehaveonereallylongstringarewesure"
+ + "thatwesegmentitcorrectly?\n",
+ System.currentTimeMillis());
+ n.setLatestEventInfo(NotificationTestList.this,
+ "Still Persistent #1",
+ "This is still a notification!!!",
+ makeIntent());
+ mNM.notify(1, n);
+ }
+ }, 3000);
+ }
+ },
+
+ new Test("Persistent #2") {
+ public void run() {
+ Notification n = new Notification(R.drawable.icon2, "tock tock tock",
+ System.currentTimeMillis());
+ n.setLatestEventInfo(NotificationTestList.this, "Persistent #2",
+ "Notify me!!!", makeIntent());
+ mNM.notify(2, n);
+ }
+ },
+
+ new Test("Persistent #2 Vibrate") {
+ public void run() {
+ Notification n = new Notification(R.drawable.icon2, "tock tock tock",
+ System.currentTimeMillis());
+ n.setLatestEventInfo(NotificationTestList.this, "Persistent #2",
+ "Notify me!!!", makeIntent());
+ n.defaults = Notification.DEFAULT_VIBRATE;
+ mNM.notify(2, n);
+ }
+ },
+
+ new Test("Chronometer Start") {
+ public void run() {
+ Notification n = new Notification(R.drawable.icon2, "me me me me",
+ System.currentTimeMillis());
+ n.contentView = new RemoteViews(getPackageName(), R.layout.chrono_notification);
+ mChronometerBase = SystemClock.elapsedRealtime();
+ n.contentView.setChronometer(R.id.time, mChronometerBase, "Yay! (%s)", true);
+ n.flags |= Notification.FLAG_ONGOING_EVENT;
+ n.contentIntent = makeIntent();
+ mNM.notify(2, n);
+ }
+ },
+
+ new Test("Chronometer Stop") {
+ public void run() {
+ mHandler.postDelayed(new Runnable() {
+ public void run() {
+ Log.d(TAG, "Chronometer Stop");
+ Notification n = new Notification();
+ n.icon = R.drawable.icon1;
+ n.contentView = new RemoteViews(getPackageName(),
+ R.layout.chrono_notification);
+ n.contentView.setChronometer(R.id.time, mChronometerBase, null, false);
+ n.contentIntent = makeIntent();
+ mNM.notify(2, n);
+ }
+ }, 3000);
+ }
+ },
+
+ new Test("Sequential Persistent") {
+ public void run() {
+ mNM.notify(1, notificationWithNumbers(1));
+ mNM.notify(2, notificationWithNumbers(2));
+ }
+ },
+
+ new Test("Replace Persistent") {
+ public void run() {
+ mNM.notify(1, notificationWithNumbers(1));
+ mNM.notify(1, notificationWithNumbers(1));
+ }
+ },
+
+ new Test("Run and Cancel (n=1)") {
+ public void run() {
+ mNM.notify(1, notificationWithNumbers(1));
+ mNM.cancel(1);
+ }
+ },
+
+ new Test("Run an Cancel (n=2)") {
+ public void run() {
+ mNM.notify(1, notificationWithNumbers(1));
+ mNM.notify(2, notificationWithNumbers(2));
+ mNM.cancel(2);
+ }
+ },
+
+ // Repeatedly notify and cancel -- triggers bug #670627
+ new Test("Bug 670627") {
+ public void run() {
+ for (int i = 0; i < 10; i++) {
+ Log.d(TAG, "Add two notifications");
+ mNM.notify(1, notificationWithNumbers(1));
+ mNM.notify(2, notificationWithNumbers(2));
+ Log.d(TAG, "Cancel two notifications");
+ mNM.cancel(1);
+ mNM.cancel(2);
+ }
+ }
+ },
+
+ new Test("Ten Notifications") {
+ public void run() {
+ for (int i = 0; i < 2; i++) {
+ Notification n = new Notification(NotificationTestList.this, R.drawable.icon2,
+ null, System.currentTimeMillis(), "Persistent #" + i,
+ "Notify me!!!" + i, null);
+ n.flags |= Notification.FLAG_ONGOING_EVENT;
+ n.number = i;
+ mNM.notify((i+1)*10, n);
+ }
+ for (int i = 2; i < 10; i++) {
+ Notification n = new Notification(NotificationTestList.this, R.drawable.icon2,
+ null, System.currentTimeMillis(), "Persistent #" + i,
+ "Notify me!!!" + i, null);
+ n.number = i;
+ mNM.notify((i+1)*10, n);
+ }
+ }
+ },
+
+ new Test("Cancel eight notifications") {
+ public void run() {
+ for (int i = 1; i < 9; i++) {
+ mNM.cancel((i+1)*10);
+ }
+ }
+ },
+
+ new Test("Persistent with numbers 1") {
+ public void run() {
+ mNM.notify(1, notificationWithNumbers(1));
+ }
+ },
+
+ new Test("Persistent with numbers 222") {
+ public void run() {
+ mNM.notify(1, notificationWithNumbers(22));
+ }
+ },
+
+ new Test("Persistent with numbers 333") {
+ public void run() {
+ mNM.notify(1, notificationWithNumbers(333));
+ }
+ },
+
+ new Test("Persistent with numbers 4444") {
+ public void run() {
+ mNM.notify(1, notificationWithNumbers(4444));
+ }
+ },
+
+ };
+
+ private Notification notificationWithNumbers(int num) {
+ Notification n = new Notification(this, R.drawable.icon2, null, System.currentTimeMillis(),
+ "Persistent #2", "Notify me!!!", null);
+ n.number = num;
+ return n;
+ }
+
+ private PendingIntent makeIntent() {
+ Intent intent = new Intent(Intent.ACTION_MAIN);
+ intent.setComponent(new android.content.ComponentName(
+ "com.android.contacts",
+ "com.android.contacts.ContactsActivity"));
+ return PendingIntent.getActivity(this, 0, intent, 0);
+ }
+
+ class StateStress extends Test {
+ StateStress(String name, int pause, int iterations, Runnable[] tasks) {
+ super(name);
+ mPause = pause;
+ mTasks = tasks;
+ mIteration = iterations;
+ }
+ Runnable[] mTasks;
+ int mNext;
+ int mIteration;
+ long mPause;
+ Runnable mRunnable = new Runnable() {
+ public void run() {
+ mTasks[mNext].run();
+ mNext++;
+ if (mNext >= mTasks.length) {
+ mNext = 0;
+ mIteration--;
+ if (mIteration <= 0) {
+ return;
+ }
+ }
+ mHandler.postDelayed(mRunnable, mPause);
+ }
+ };
+ public void run() {
+ mNext = 0;
+ mHandler.postDelayed(mRunnable, mPause);
+ }
+ }
+}
+
diff --git a/tests/StatusBar/src/com/android/statusbartest/PowerTest.java b/tests/StatusBar/src/com/android/statusbartest/PowerTest.java
new file mode 100644
index 0000000..f236a4b
--- /dev/null
+++ b/tests/StatusBar/src/com/android/statusbartest/PowerTest.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2008 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.statusbartest;
+
+import android.app.ListActivity;
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.widget.ArrayAdapter;
+import android.view.View;
+import android.os.Binder;
+import android.os.IBinder;
+import android.os.IPowerManager;
+import android.widget.ListView;
+import android.content.Intent;
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.app.StatusBarManager;
+import android.os.RemoteException;
+import android.os.Vibrator;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.LocalPowerManager;
+import android.os.ServiceManager;
+import android.util.Log;
+import android.net.Uri;
+import android.os.SystemClock;
+import android.widget.RemoteViews;
+import android.widget.Toast;
+import android.os.PowerManager;
+
+public class PowerTest extends TestActivity
+{
+ private final static String TAG = "PowerTest";
+ IPowerManager mPowerManager;
+ int mPokeState = 0;
+ IBinder mPokeToken = new Binder();
+ Handler mHandler = new Handler();
+
+ @Override
+ protected String tag() {
+ return TAG;
+ }
+
+ @Override
+ protected Test[] tests() {
+ mPowerManager = IPowerManager.Stub.asInterface(ServiceManager.getService("power"));
+
+ return mTests;
+ }
+ private Test[] mTests = new Test[] {
+ new Test("Touch events don't poke") {
+ public void run() {
+ mPokeState |= LocalPowerManager.POKE_LOCK_IGNORE_CHEEK_EVENTS;
+ try {
+ mPowerManager.setPokeLock(mPokeState, mPokeToken, TAG);
+ } catch (RemoteException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ },
+ new Test("Touch events poke") {
+ public void run() {
+ mPokeState &= ~LocalPowerManager.POKE_LOCK_IGNORE_CHEEK_EVENTS;
+ try {
+ mPowerManager.setPokeLock(mPokeState, mPokeToken, TAG);
+ } catch (RemoteException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ },
+ new Test("Short timeout") {
+ public void run() {
+ mPokeState &= ~LocalPowerManager.POKE_LOCK_TIMEOUT_MASK;
+ mPokeState |= LocalPowerManager.POKE_LOCK_SHORT_TIMEOUT;
+ try {
+ mPowerManager.setPokeLock(mPokeState, mPokeToken, TAG);
+ } catch (RemoteException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ },
+ new Test("Medium timeout") {
+ public void run() {
+ mPokeState &= ~LocalPowerManager.POKE_LOCK_TIMEOUT_MASK;
+ mPokeState |= LocalPowerManager.POKE_LOCK_MEDIUM_TIMEOUT;
+ try {
+ mPowerManager.setPokeLock(mPokeState, mPokeToken, TAG);
+ } catch (RemoteException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ },
+ new Test("Normal timeout") {
+ public void run() {
+ mPokeState &= ~LocalPowerManager.POKE_LOCK_TIMEOUT_MASK;
+ try {
+ mPowerManager.setPokeLock(mPokeState, mPokeToken, TAG);
+ } catch (RemoteException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ },
+ new Test("Illegal timeout") {
+ public void run() {
+ mPokeState |= LocalPowerManager.POKE_LOCK_SHORT_TIMEOUT
+ | LocalPowerManager.POKE_LOCK_MEDIUM_TIMEOUT;
+ try {
+ mPowerManager.setPokeLock(mPokeState, mPokeToken, TAG);
+ } catch (RemoteException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ },
+ };
+}
diff --git a/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java b/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java
new file mode 100644
index 0000000..275e5cb
--- /dev/null
+++ b/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2007 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.statusbartest;
+
+import android.app.ListActivity;
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.widget.ArrayAdapter;
+import android.view.View;
+import android.widget.ListView;
+import android.content.Intent;
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.app.StatusBarManager;
+import android.os.Vibrator;
+import android.os.Bundle;
+import android.os.Handler;
+import android.util.Log;
+import android.net.Uri;
+import android.os.SystemClock;
+import android.widget.RemoteViews;
+import android.widget.Toast;
+import android.os.PowerManager;
+
+public class StatusBarTest extends TestActivity
+{
+ private final static String TAG = "StatusBarTest";
+ StatusBarManager mStatusBarManager;
+ NotificationManager mNotificationManager;
+ Handler mHandler = new Handler();
+
+ @Override
+ protected String tag() {
+ return TAG;
+ }
+
+ @Override
+ protected Test[] tests() {
+ mStatusBarManager = (StatusBarManager)getSystemService(STATUS_BAR_SERVICE);
+ mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
+
+ return mTests;
+ }
+
+ private Test[] mTests = new Test[] {
+ new Test("Disable Alerts") {
+ public void run() {
+ mStatusBarManager.disable(StatusBarManager.DISABLE_NOTIFICATION_ALERTS);
+ }
+ },
+ new Test("Disable Expand in 3 sec.") {
+ public void run() {
+ mHandler.postDelayed(new Runnable() {
+ public void run() {
+ mStatusBarManager.disable(StatusBarManager.DISABLE_EXPAND);
+ }
+ }, 3000);
+ }
+ },
+ new Test("Disable Notifications in 3 sec.") {
+ public void run() {
+ mHandler.postDelayed(new Runnable() {
+ public void run() {
+ mStatusBarManager.disable(StatusBarManager.DISABLE_NOTIFICATION_ICONS);
+ }
+ }, 3000);
+ }
+ },
+ new Test("Disable Both in 3 sec.") {
+ public void run() {
+ mHandler.postDelayed(new Runnable() {
+ public void run() {
+ mStatusBarManager.disable(StatusBarManager.DISABLE_EXPAND
+ | StatusBarManager.DISABLE_NOTIFICATION_ICONS);
+ }
+ }, 3000);
+ }
+ },
+ new Test("Disable None in 3 sec.") {
+ public void run() {
+ mHandler.postDelayed(new Runnable() {
+ public void run() {
+ mStatusBarManager.disable(0);
+ }
+ }, 3000);
+ }
+ },
+ new Test("Notify in 3 sec.") {
+ public void run() {
+ mHandler.postDelayed(new Runnable() {
+ public void run() {
+ mNotificationManager.notify(1,
+ new Notification(StatusBarTest.this,
+ R.drawable.ic_statusbar_missedcall,
+ "tick tick tick",
+ System.currentTimeMillis()-(1000*60*60*24),
+ "(453) 123-2328",
+ "", null
+ ));
+ }
+ }, 3000);
+ }
+ },
+ new Test("Cancel Notification in 3 sec.") {
+ public void run() {
+ mHandler.postDelayed(new Runnable() {
+ public void run() {
+ mNotificationManager.cancel(1);
+ }
+ }, 3000);
+ }
+ },
+ new Test("Expand in 3 sec.") {
+ public void run() {
+ mHandler.postDelayed(new Runnable() {
+ public void run() {
+ mStatusBarManager.expand();
+ }
+ }, 3000);
+ }
+ },
+ new Test("Expand in 3 sec.") {
+ public void run() {
+ mHandler.postDelayed(new Runnable() {
+ public void run() {
+ mStatusBarManager.expand();
+ }
+ }, 3000);
+ }
+ },
+ new Test("Collapse in 3 sec.") {
+ public void run() {
+ mHandler.postDelayed(new Runnable() {
+ public void run() {
+ mStatusBarManager.collapse();
+ }
+ }, 3000);
+ }
+ },
+ new Test("Toggle in 3 sec.") {
+ public void run() {
+ mHandler.postDelayed(new Runnable() {
+ public void run() {
+ mStatusBarManager.toggle();
+ }
+ }, 3000);
+ }
+ },
+ };
+}
diff --git a/tests/StatusBar/src/com/android/statusbartest/TestActivity.java b/tests/StatusBar/src/com/android/statusbartest/TestActivity.java
new file mode 100644
index 0000000..6a8c62e
--- /dev/null
+++ b/tests/StatusBar/src/com/android/statusbartest/TestActivity.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2008 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.statusbartest;
+
+import android.app.ListActivity;
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.widget.ArrayAdapter;
+import android.view.View;
+import android.widget.ListView;
+import android.content.Intent;
+import android.os.Vibrator;
+import android.os.Bundle;
+import android.os.Handler;
+import android.util.Log;
+import android.net.Uri;
+import android.os.SystemClock;
+import android.widget.RemoteViews;
+import android.widget.Toast;
+import android.os.PowerManager;
+
+public abstract class TestActivity extends ListActivity
+{
+ Test[] mTests;
+
+ protected abstract String tag();
+ protected abstract Test[] tests();
+
+ abstract class Test {
+ String name;
+ Test(String n) {
+ name = n;
+ }
+ abstract void run();
+ }
+
+ @Override
+ public void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+
+ mTests = tests();
+
+ String[] labels = new String[mTests.length];
+ for (int i=0; i<mTests.length; i++) {
+ labels[i] = mTests[i].name;
+ }
+
+ setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, labels));
+ }
+
+ @Override
+ public void onListItemClick(ListView l, View v, int position, long id)
+ {
+ Test t = mTests[position];
+ Log.d(tag(), "Test: " + t.name);
+ t.run();
+ }
+
+}
diff --git a/tests/StatusBar/src/com/android/statusbartest/ToastTest.java b/tests/StatusBar/src/com/android/statusbartest/ToastTest.java
new file mode 100644
index 0000000..018c9f2
--- /dev/null
+++ b/tests/StatusBar/src/com/android/statusbartest/ToastTest.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2008 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.statusbartest;
+
+import android.app.ListActivity;
+import android.app.PendingIntent;
+import android.widget.ArrayAdapter;
+import android.view.View;
+import android.widget.ListView;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.util.Log;
+import android.net.Uri;
+import android.os.SystemClock;
+import android.view.Gravity;
+import android.widget.RemoteViews;
+import android.widget.Toast;
+import android.widget.TextView;
+import android.os.PowerManager;
+
+public class ToastTest extends TestActivity
+{
+ private final static String TAG = "ToastTest";
+
+ Handler mHandler = new Handler();
+ Toast mToast1;
+ Toast mToast2;
+
+ @Override
+ protected String tag() {
+ return TAG;
+ }
+
+ @Override
+ protected Test[] tests() {
+ return mTests;
+ }
+
+ private Test[] mTests = new Test[] {
+ new Test("Make Toast #1") {
+ public void run()
+ {
+ mToast1 = Toast.makeText(ToastTest.this, "hi 1", Toast.LENGTH_SHORT);
+ }
+ },
+
+ new Test("Show Toast #1") {
+ public void run()
+ {
+ mToast1.show();
+ }
+ },
+
+ new Test("Update Toast #1") {
+ public void run()
+ {
+ TextView view = new TextView(ToastTest.this);
+ view.setText("replaced!");
+ mToast1.setView(view);
+ mToast1.show();
+ }
+ },
+
+ new Test("Make Toast #2") {
+ public void run()
+ {
+ mToast2 = Toast.makeText(ToastTest.this, "hi 2", Toast.LENGTH_SHORT);
+ }
+ },
+
+ new Test("Show Toast #2") {
+ public void run()
+ {
+ mToast2.show();
+ }
+ },
+
+ new Test("Gravity Toast LEFT") {
+ public void run()
+ {
+ Toast toast = Toast.makeText(ToastTest.this, "LEFT", Toast.LENGTH_SHORT);
+ toast.setGravity(Gravity.LEFT, 0, 0);
+ toast.show();
+ }
+ },
+
+ new Test("Gravity Toast FILL_HORIZONTAL") {
+ public void run()
+ {
+ Toast toast = Toast.makeText(ToastTest.this, "FILL_HORIZONTAL",
+ Toast.LENGTH_SHORT);
+ toast.setGravity(Gravity.FILL_HORIZONTAL, 0, 0);
+ toast.show();
+ }
+ },
+
+ };
+}
+