diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2008-12-17 18:05:43 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2008-12-17 18:05:43 -0800 |
commit | f013e1afd1e68af5e3b868c26a653bbfb39538f8 (patch) | |
tree | 7ad6c8fd9c7b55f4b4017171dec1cb760bbd26bf /tests/StatusBar | |
parent | e70cfafe580c6f2994c4827cd8a534aabf3eb05c (diff) | |
download | frameworks_base-f013e1afd1e68af5e3b868c26a653bbfb39538f8.zip frameworks_base-f013e1afd1e68af5e3b868c26a653bbfb39538f8.tar.gz frameworks_base-f013e1afd1e68af5e3b868c26a653bbfb39538f8.tar.bz2 |
Code drop from //branches/cupcake/...@124589
Diffstat (limited to 'tests/StatusBar')
19 files changed, 1109 insertions, 0 deletions
diff --git a/tests/StatusBar/Android.mk b/tests/StatusBar/Android.mk new file mode 100644 index 0000000..44f5099 --- /dev/null +++ b/tests/StatusBar/Android.mk @@ -0,0 +1,11 @@ +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_MODULE_TAGS := test + +LOCAL_SRC_FILES := $(call all-subdir-java-files) + +LOCAL_PACKAGE_NAME := StatusBarTest +LOCAL_CERTIFICATE := platform + +include $(BUILD_PACKAGE) diff --git a/tests/StatusBar/AndroidManifest.xml b/tests/StatusBar/AndroidManifest.xml new file mode 100644 index 0000000..9bba79c --- /dev/null +++ b/tests/StatusBar/AndroidManifest.xml @@ -0,0 +1,38 @@ +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.statusbartest"> + <uses-permission android:name="android.permission.DEVICE_POWER" /> + <uses-permission android:name="android.permission.STATUS_BAR" /> + <uses-permission android:name="android.permission.EXPAND_STATUS_BAR" /> + <uses-permission android:name="android.permission.VIBRATE" /> + + <application> + <activity android:name="StatusBarTest" android:label="_StatusBar"> + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> + <activity android:name="NotificationTestList" android:label="_Notifications"> + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> + <activity android:name="ToastTest" android:label="_Toasts"> + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> + <activity android:name="PowerTest" android:label="_Power"> + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> + </application> +</manifest> diff --git a/tests/StatusBar/res/drawable/app_gmail.png b/tests/StatusBar/res/drawable/app_gmail.png Binary files differnew file mode 100644 index 0000000..beaaacf --- /dev/null +++ b/tests/StatusBar/res/drawable/app_gmail.png diff --git a/tests/StatusBar/res/drawable/app_phone.png b/tests/StatusBar/res/drawable/app_phone.png Binary files differnew file mode 100644 index 0000000..2748c1c --- /dev/null +++ b/tests/StatusBar/res/drawable/app_phone.png diff --git a/tests/StatusBar/res/drawable/ic_statusbar_chat.png b/tests/StatusBar/res/drawable/ic_statusbar_chat.png Binary files differnew file mode 100644 index 0000000..e08cddb --- /dev/null +++ b/tests/StatusBar/res/drawable/ic_statusbar_chat.png diff --git a/tests/StatusBar/res/drawable/ic_statusbar_email.png b/tests/StatusBar/res/drawable/ic_statusbar_email.png Binary files differnew file mode 100644 index 0000000..19c9005 --- /dev/null +++ b/tests/StatusBar/res/drawable/ic_statusbar_email.png diff --git a/tests/StatusBar/res/drawable/ic_statusbar_missedcall.png b/tests/StatusBar/res/drawable/ic_statusbar_missedcall.png Binary files differnew file mode 100644 index 0000000..ced62d7 --- /dev/null +++ b/tests/StatusBar/res/drawable/ic_statusbar_missedcall.png diff --git a/tests/StatusBar/res/drawable/icon1.png b/tests/StatusBar/res/drawable/icon1.png Binary files differnew file mode 100644 index 0000000..abfb6fa --- /dev/null +++ b/tests/StatusBar/res/drawable/icon1.png diff --git a/tests/StatusBar/res/drawable/icon2.png b/tests/StatusBar/res/drawable/icon2.png Binary files differnew file mode 100644 index 0000000..564b38b --- /dev/null +++ b/tests/StatusBar/res/drawable/icon2.png diff --git a/tests/StatusBar/res/drawable/icon3.png b/tests/StatusBar/res/drawable/icon3.png Binary files differnew file mode 100644 index 0000000..e765d8f --- /dev/null +++ b/tests/StatusBar/res/drawable/icon3.png diff --git a/tests/StatusBar/res/drawable/icon4.png b/tests/StatusBar/res/drawable/icon4.png Binary files differnew file mode 100644 index 0000000..5f33885 --- /dev/null +++ b/tests/StatusBar/res/drawable/icon4.png diff --git a/tests/StatusBar/res/layout/chrono_notification.xml b/tests/StatusBar/res/layout/chrono_notification.xml new file mode 100644 index 0000000..913a860 --- /dev/null +++ b/tests/StatusBar/res/layout/chrono_notification.xml @@ -0,0 +1,41 @@ +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="fill_parent" + android:layout_height="80sp" + android:orientation="horizontal" + > + + <LinearLayout + android:layout_width="wrap_content" + android:layout_height="fill_parent" + android:layout_weight="0" + android:orientation="vertical" + > + + <ImageView android:id="@+id/icon" + android:layout_width="wrap_content" + android:layout_height="45dp" + android:layout_gravity="center" + android:scaleType="fitCenter" + android:src="@android:drawable/sym_def_app_icon" + /> + + <Chronometer android:id="@+id/time" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:singleLine="true" + android:textColor="#ffffffff" /> + + </LinearLayout> + + <TextView android:id="@+id/appName" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_weight="1" + android:paddingTop="4dp" + android:textSize="12sp" + android:textColor="#ffffffff" + /> + +</LinearLayout> + diff --git a/tests/StatusBar/res/raw/ringer.mp3 b/tests/StatusBar/res/raw/ringer.mp3 Binary files differnew file mode 100644 index 0000000..aa052e7 --- /dev/null +++ b/tests/StatusBar/res/raw/ringer.mp3 diff --git a/tests/StatusBar/res/values/strings.xml b/tests/StatusBar/res/values/strings.xml new file mode 100644 index 0000000..0c2cf0d --- /dev/null +++ b/tests/StatusBar/res/values/strings.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- 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. +--> + +<resources> + <string name="mainLabel">Hello <u>th<ignore>e</ignore>re</u>, <i>you</i> <b>Activity</b>!</string> + <string name="back">Back</string> + <string name="clear">Clear</string> +</resources> + 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(); + } + }, + + }; +} + |