diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 19:31:44 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 19:31:44 -0800 |
commit | 9066cfe9886ac131c34d59ed0e2d287b0e3c0087 (patch) | |
tree | d88beb88001f2482911e3d28e43833b50e4b4e97 /tests/StatusBar/src | |
parent | d83a98f4ce9cfa908f5c54bbd70f03eec07e7553 (diff) | |
download | frameworks_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')
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(); + } + }, + + }; +} + |