19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage com.android.statusbartest;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Binder;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.IBinder;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.IPowerManager;
22d070e89396e250782c015bc993bcae6e7e03af7aJoe Onoratoimport android.content.ComponentName;
23d070e89396e250782c015bc993bcae6e7e03af7aJoe Onoratoimport android.content.pm.PackageManager;
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Handler;
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.ServiceManager;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.PowerManager;
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class PowerTest extends TestActivity
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final static String TAG = "PowerTest";
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    IPowerManager mPowerManager;
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    int mPokeState = 0;
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    IBinder mPokeToken = new Binder();
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    Handler mHandler = new Handler();
358274a0e53630f80ab356f69ddad895ed9638574eJoe Onorato    PowerManager mPm;
368274a0e53630f80ab356f69ddad895ed9638574eJoe Onorato    PowerManager.WakeLock mProx;
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    protected String tag() {
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return TAG;
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    protected Test[] tests() {
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mPowerManager = IPowerManager.Stub.asInterface(ServiceManager.getService("power"));
468274a0e53630f80ab356f69ddad895ed9638574eJoe Onorato        mPm = (PowerManager)getSystemService("power");
478274a0e53630f80ab356f69ddad895ed9638574eJoe Onorato        mProx = mPm.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, "PowerTest-prox");
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mTests;
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private Test[] mTests = new Test[] {
52d070e89396e250782c015bc993bcae6e7e03af7aJoe Onorato        new Test("Enable settings widget") {
53d070e89396e250782c015bc993bcae6e7e03af7aJoe Onorato            public void run() {
54d070e89396e250782c015bc993bcae6e7e03af7aJoe Onorato                PackageManager pm = getPackageManager();
55d070e89396e250782c015bc993bcae6e7e03af7aJoe Onorato                pm.setComponentEnabledSetting(new ComponentName("com.android.settings",
56d070e89396e250782c015bc993bcae6e7e03af7aJoe Onorato                            "com.android.settings.widget.SettingsAppWidgetProvider"),
57d070e89396e250782c015bc993bcae6e7e03af7aJoe Onorato                        PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0);
58d070e89396e250782c015bc993bcae6e7e03af7aJoe Onorato
59d070e89396e250782c015bc993bcae6e7e03af7aJoe Onorato            }
60d070e89396e250782c015bc993bcae6e7e03af7aJoe Onorato        },
61d070e89396e250782c015bc993bcae6e7e03af7aJoe Onorato        new Test("Disable settings widget") {
62d070e89396e250782c015bc993bcae6e7e03af7aJoe Onorato            public void run() {
63d070e89396e250782c015bc993bcae6e7e03af7aJoe Onorato                PackageManager pm = getPackageManager();
64d070e89396e250782c015bc993bcae6e7e03af7aJoe Onorato                pm.setComponentEnabledSetting(new ComponentName("com.android.settings",
65d070e89396e250782c015bc993bcae6e7e03af7aJoe Onorato                            "com.android.settings.widget.SettingsAppWidgetProvider"),
66d070e89396e250782c015bc993bcae6e7e03af7aJoe Onorato                        PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);
67d070e89396e250782c015bc993bcae6e7e03af7aJoe Onorato
68d070e89396e250782c015bc993bcae6e7e03af7aJoe Onorato            }
69d070e89396e250782c015bc993bcae6e7e03af7aJoe Onorato        },
708274a0e53630f80ab356f69ddad895ed9638574eJoe Onorato        new Test("Enable proximity") {
718274a0e53630f80ab356f69ddad895ed9638574eJoe Onorato            public void run() {
728274a0e53630f80ab356f69ddad895ed9638574eJoe Onorato                mProx.acquire();
738274a0e53630f80ab356f69ddad895ed9638574eJoe Onorato            }
748274a0e53630f80ab356f69ddad895ed9638574eJoe Onorato        },
758274a0e53630f80ab356f69ddad895ed9638574eJoe Onorato        new Test("Disable proximity") {
768274a0e53630f80ab356f69ddad895ed9638574eJoe Onorato            public void run() {
778274a0e53630f80ab356f69ddad895ed9638574eJoe Onorato                mProx.release();
788274a0e53630f80ab356f69ddad895ed9638574eJoe Onorato            }
798274a0e53630f80ab356f69ddad895ed9638574eJoe Onorato        },
801208e2718daeae538dc89c37198092ccb32798a2Michael Wright        new Test("Disable proximity (RELEASE_FLAG_WAIT_FOR_NO_PROXIMITY") {
818274a0e53630f80ab356f69ddad895ed9638574eJoe Onorato            public void run() {
821208e2718daeae538dc89c37198092ccb32798a2Michael Wright                mProx.release(PowerManager.RELEASE_FLAG_WAIT_FOR_NO_PROXIMITY);
838274a0e53630f80ab356f69ddad895ed9638574eJoe Onorato            }
848274a0e53630f80ab356f69ddad895ed9638574eJoe Onorato        },
859630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown        new Test("Enable proximity, wait 5 seconds then disable") {
869630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown            public void run() {
879630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown                mProx.acquire();
889630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown                mHandler.postDelayed(new Runnable() {
899630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown                    @Override
909630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown                    public void run() {
919630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown                        mProx.release();
929630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown                    }
939630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown                }, 5000);
949630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown            }
959630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown        },
961208e2718daeae538dc89c37198092ccb32798a2Michael Wright        new Test("Enable proximity, wait 5 seconds then disable " +
971208e2718daeae538dc89c37198092ccb32798a2Michael Wright                "(RELEASE_FLAG_WAIT_FOR_NO_PROXIMITY)") {
989630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown            public void run() {
999630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown                mProx.acquire();
1009630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown                mHandler.postDelayed(new Runnable() {
1019630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown                    @Override
1029630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown                    public void run() {
1031208e2718daeae538dc89c37198092ccb32798a2Michael Wright                        mProx.release(PowerManager.RELEASE_FLAG_WAIT_FOR_NO_PROXIMITY);
1049630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown                    }
1059630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown                }, 5000);
1069630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown            }
1079630704ed3b265f008a8f64ec60a33cf9dcd3345Jeff Brown        },
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    };
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
110