ApplicationThreadNative.java revision 9d39d0cb361c5d3bba04a6bacf299be2162a6e92
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 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 android.app; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.ComponentName; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Intent; 211ccac75e1f1b97eccb916a8de04fc1012b30f6e5Suchi Amalapurapuimport android.content.IIntentReceiver; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.pm.ActivityInfo; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.pm.ApplicationInfo; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.pm.ProviderInfo; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.pm.ServiceInfo; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.res.Configuration; 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Binder; 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Bundle; 293025ef332c29e255388f74b2afefe05f64bce07cDianne Hackbornimport android.os.Debug; 309c8dd55a9d829c29a3feee9469d8c2f27a9f5516Dianne Hackbornimport android.os.Parcelable; 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.RemoteException; 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.IBinder; 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcel; 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.ParcelFileDescriptor; 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.FileDescriptor; 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.IOException; 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.HashMap; 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.List; 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.Map; 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** {@hide} */ 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic abstract class ApplicationThreadNative extends Binder 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project implements IApplicationThread { 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Cast a Binder object into an application thread interface, generating 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a proxy if needed. 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static public IApplicationThread asInterface(IBinder obj) { 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (obj == null) { 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IApplicationThread in = 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project (IApplicationThread)obj.queryLocalInterface(descriptor); 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (in != null) { 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return in; 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new ApplicationThreadProxy(obj); 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ApplicationThreadNative() { 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project attachInterface(this, descriptor); 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean onTransact(int code, Parcel data, Parcel reply, int flags) 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throws RemoteException { 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project switch (code) { 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case SCHEDULE_PAUSE_ACTIVITY_TRANSACTION: 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.enforceInterface(IApplicationThread.descriptor); 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder b = data.readStrongBinder(); 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean finished = data.readInt() != 0; 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean userLeaving = data.readInt() != 0; 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int configChanges = data.readInt(); 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project schedulePauseActivity(b, finished, userLeaving, configChanges); 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case SCHEDULE_STOP_ACTIVITY_TRANSACTION: 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.enforceInterface(IApplicationThread.descriptor); 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder b = data.readStrongBinder(); 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean show = data.readInt() != 0; 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int configChanges = data.readInt(); 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project scheduleStopActivity(b, show, configChanges); 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case SCHEDULE_WINDOW_VISIBILITY_TRANSACTION: 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.enforceInterface(IApplicationThread.descriptor); 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder b = data.readStrongBinder(); 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean show = data.readInt() != 0; 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project scheduleWindowVisibility(b, show); 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case SCHEDULE_RESUME_ACTIVITY_TRANSACTION: 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.enforceInterface(IApplicationThread.descriptor); 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder b = data.readStrongBinder(); 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean isForward = data.readInt() != 0; 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project scheduleResumeActivity(b, isForward); 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case SCHEDULE_SEND_RESULT_TRANSACTION: 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.enforceInterface(IApplicationThread.descriptor); 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder b = data.readStrongBinder(); 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project List<ResultInfo> ri = data.createTypedArrayList(ResultInfo.CREATOR); 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project scheduleSendResult(b, ri); 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case SCHEDULE_LAUNCH_ACTIVITY_TRANSACTION: 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.enforceInterface(IApplicationThread.descriptor); 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Intent intent = Intent.CREATOR.createFromParcel(data); 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder b = data.readStrongBinder(); 123b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn int ident = data.readInt(); 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ActivityInfo info = ActivityInfo.CREATOR.createFromParcel(data); 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Bundle state = data.readBundle(); 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project List<ResultInfo> ri = data.createTypedArrayList(ResultInfo.CREATOR); 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project List<Intent> pi = data.createTypedArrayList(Intent.CREATOR); 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean notResumed = data.readInt() != 0; 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean isForward = data.readInt() != 0; 130b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn scheduleLaunchActivity(intent, b, ident, info, state, ri, pi, 131b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn notResumed, isForward); 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case SCHEDULE_RELAUNCH_ACTIVITY_TRANSACTION: 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.enforceInterface(IApplicationThread.descriptor); 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder b = data.readStrongBinder(); 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project List<ResultInfo> ri = data.createTypedArrayList(ResultInfo.CREATOR); 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project List<Intent> pi = data.createTypedArrayList(Intent.CREATOR); 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int configChanges = data.readInt(); 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean notResumed = data.readInt() != 0; 143871ecdce67fb59a2603c1b93db657fe8b65695bdDianne Hackborn Configuration config = null; 144871ecdce67fb59a2603c1b93db657fe8b65695bdDianne Hackborn if (data.readInt() != 0) { 145871ecdce67fb59a2603c1b93db657fe8b65695bdDianne Hackborn config = Configuration.CREATOR.createFromParcel(data); 146871ecdce67fb59a2603c1b93db657fe8b65695bdDianne Hackborn } 147871ecdce67fb59a2603c1b93db657fe8b65695bdDianne Hackborn scheduleRelaunchActivity(b, ri, pi, configChanges, notResumed, config); 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case SCHEDULE_NEW_INTENT_TRANSACTION: 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.enforceInterface(IApplicationThread.descriptor); 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project List<Intent> pi = data.createTypedArrayList(Intent.CREATOR); 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder b = data.readStrongBinder(); 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project scheduleNewIntent(pi, b); 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case SCHEDULE_FINISH_ACTIVITY_TRANSACTION: 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.enforceInterface(IApplicationThread.descriptor); 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder b = data.readStrongBinder(); 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean finishing = data.readInt() != 0; 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int configChanges = data.readInt(); 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project scheduleDestroyActivity(b, finishing, configChanges); 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case SCHEDULE_RECEIVER_TRANSACTION: 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.enforceInterface(IApplicationThread.descriptor); 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Intent intent = Intent.CREATOR.createFromParcel(data); 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ActivityInfo info = ActivityInfo.CREATOR.createFromParcel(data); 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int resultCode = data.readInt(); 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String resultData = data.readString(); 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Bundle resultExtras = data.readBundle(); 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean sync = data.readInt() != 0; 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project scheduleReceiver(intent, info, resultCode, resultData, 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project resultExtras, sync); 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case SCHEDULE_CREATE_SERVICE_TRANSACTION: { 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.enforceInterface(IApplicationThread.descriptor); 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder token = data.readStrongBinder(); 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ServiceInfo info = ServiceInfo.CREATOR.createFromParcel(data); 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project scheduleCreateService(token, info); 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case SCHEDULE_BIND_SERVICE_TRANSACTION: { 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.enforceInterface(IApplicationThread.descriptor); 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder token = data.readStrongBinder(); 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Intent intent = Intent.CREATOR.createFromParcel(data); 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean rebind = data.readInt() != 0; 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project scheduleBindService(token, intent, rebind); 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case SCHEDULE_UNBIND_SERVICE_TRANSACTION: { 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.enforceInterface(IApplicationThread.descriptor); 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder token = data.readStrongBinder(); 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Intent intent = Intent.CREATOR.createFromParcel(data); 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project scheduleUnbindService(token, intent); 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case SCHEDULE_SERVICE_ARGS_TRANSACTION: 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.enforceInterface(IApplicationThread.descriptor); 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder token = data.readStrongBinder(); 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int startId = data.readInt(); 214f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn int fl = data.readInt(); 215f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn Intent args; 216f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn if (data.readInt() != 0) { 217f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn args = Intent.CREATOR.createFromParcel(data); 218f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn } else { 219f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn args = null; 220f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn } 221f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn scheduleServiceArgs(token, startId, fl, args); 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case SCHEDULE_STOP_SERVICE_TRANSACTION: 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.enforceInterface(IApplicationThread.descriptor); 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder token = data.readStrongBinder(); 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project scheduleStopService(token); 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case BIND_APPLICATION_TRANSACTION: 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.enforceInterface(IApplicationThread.descriptor); 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String packageName = data.readString(); 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ApplicationInfo info = 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ApplicationInfo.CREATOR.createFromParcel(data); 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project List<ProviderInfo> providers = 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.createTypedArrayList(ProviderInfo.CREATOR); 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ComponentName testName = (data.readInt() != 0) 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ? new ComponentName(data) : null; 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String profileName = data.readString(); 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Bundle testArgs = data.readBundle(); 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder binder = data.readStrongBinder(); 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IInstrumentationWatcher testWatcher = IInstrumentationWatcher.Stub.asInterface(binder); 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int testMode = data.readInt(); 248181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate boolean restrictedBackupMode = (data.readInt() != 0); 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Configuration config = Configuration.CREATOR.createFromParcel(data); 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project HashMap<String, IBinder> services = data.readHashMap(null); 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bindApplication(packageName, info, 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project providers, testName, profileName, 253181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate testArgs, testWatcher, testMode, restrictedBackupMode, 254181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate config, services); 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case SCHEDULE_EXIT_TRANSACTION: 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.enforceInterface(IApplicationThread.descriptor); 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project scheduleExit(); 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2655e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate case SCHEDULE_SUICIDE_TRANSACTION: 2665e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate { 2675e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate data.enforceInterface(IApplicationThread.descriptor); 2685e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate scheduleSuicide(); 2695e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate return true; 2705e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate } 2715e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case REQUEST_THUMBNAIL_TRANSACTION: 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.enforceInterface(IApplicationThread.descriptor); 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder b = data.readStrongBinder(); 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project requestThumbnail(b); 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case SCHEDULE_CONFIGURATION_CHANGED_TRANSACTION: 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.enforceInterface(IApplicationThread.descriptor); 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Configuration config = Configuration.CREATOR.createFromParcel(data); 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project scheduleConfigurationChanged(config); 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case UPDATE_TIME_ZONE_TRANSACTION: { 2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.enforceInterface(IApplicationThread.descriptor); 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project updateTimeZone(); 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case PROCESS_IN_BACKGROUND_TRANSACTION: { 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.enforceInterface(IApplicationThread.descriptor); 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project processInBackground(); 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case DUMP_SERVICE_TRANSACTION: { 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.enforceInterface(IApplicationThread.descriptor); 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ParcelFileDescriptor fd = data.readFileDescriptor(); 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final IBinder service = data.readStrongBinder(); 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project final String[] args = data.readStringArray(); 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (fd != null) { 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dumpService(fd.getFileDescriptor(), service, args); 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fd.close(); 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (IOException e) { 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case SCHEDULE_REGISTERED_RECEIVER_TRANSACTION: { 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.enforceInterface(IApplicationThread.descriptor); 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IIntentReceiver receiver = IIntentReceiver.Stub.asInterface( 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.readStrongBinder()); 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Intent intent = Intent.CREATOR.createFromParcel(data); 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int resultCode = data.readInt(); 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String dataStr = data.readString(); 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Bundle extras = data.readBundle(); 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean ordered = data.readInt() != 0; 32468d881cf2d2b252f6f795cd64d43e316a1d736e5Dianne Hackborn boolean sticky = data.readInt() != 0; 3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project scheduleRegisteredReceiver(receiver, intent, 32668d881cf2d2b252f6f795cd64d43e316a1d736e5Dianne Hackborn resultCode, dataStr, extras, ordered, sticky); 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case SCHEDULE_LOW_MEMORY_TRANSACTION: 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project scheduleLowMemory(); 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case SCHEDULE_ACTIVITY_CONFIGURATION_CHANGED_TRANSACTION: 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.enforceInterface(IApplicationThread.descriptor); 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder b = data.readStrongBinder(); 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project scheduleActivityConfigurationChanged(b); 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project case REQUEST_PSS_TRANSACTION: 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.enforceInterface(IApplicationThread.descriptor); 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project requestPss(); 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 350f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project 351f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project case PROFILER_CONTROL_TRANSACTION: 352f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project { 353f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project data.enforceInterface(IApplicationThread.descriptor); 354f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project boolean start = data.readInt() != 0; 355f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project String path = data.readString(); 3569c8dd55a9d829c29a3feee9469d8c2f27a9f5516Dianne Hackborn ParcelFileDescriptor fd = data.readInt() != 0 3579c8dd55a9d829c29a3feee9469d8c2f27a9f5516Dianne Hackborn ? data.readFileDescriptor() : null; 3589c8dd55a9d829c29a3feee9469d8c2f27a9f5516Dianne Hackborn profilerControl(start, path, fd); 359f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project return true; 360f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project } 36106de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn 36206de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn case SET_SCHEDULING_GROUP_TRANSACTION: 36306de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn { 36406de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn data.enforceInterface(IApplicationThread.descriptor); 36506de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn int group = data.readInt(); 36606de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn setSchedulingGroup(group); 36706de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn return true; 36806de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn } 369181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate 370181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate case SCHEDULE_CREATE_BACKUP_AGENT_TRANSACTION: 371181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate { 372181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate data.enforceInterface(IApplicationThread.descriptor); 373181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate ApplicationInfo appInfo = ApplicationInfo.CREATOR.createFromParcel(data); 374181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate int backupMode = data.readInt(); 375181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate scheduleCreateBackupAgent(appInfo, backupMode); 376181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate return true; 377181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate } 3781885b37913181230c36d6485bdd389f89fa90f43Christopher Tate 3791885b37913181230c36d6485bdd389f89fa90f43Christopher Tate case SCHEDULE_DESTROY_BACKUP_AGENT_TRANSACTION: 3801885b37913181230c36d6485bdd389f89fa90f43Christopher Tate { 3811885b37913181230c36d6485bdd389f89fa90f43Christopher Tate data.enforceInterface(IApplicationThread.descriptor); 3821885b37913181230c36d6485bdd389f89fa90f43Christopher Tate ApplicationInfo appInfo = ApplicationInfo.CREATOR.createFromParcel(data); 3831885b37913181230c36d6485bdd389f89fa90f43Christopher Tate scheduleDestroyBackupAgent(appInfo); 3841885b37913181230c36d6485bdd389f89fa90f43Christopher Tate return true; 3851885b37913181230c36d6485bdd389f89fa90f43Christopher Tate } 3863025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn 3873025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn case GET_MEMORY_INFO_TRANSACTION: 3883025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn { 3893025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn data.enforceInterface(IApplicationThread.descriptor); 3903025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn Debug.MemoryInfo mi = new Debug.MemoryInfo(); 3913025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn getMemoryInfo(mi); 3923025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn reply.writeNoException(); 3933025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn mi.writeToParcel(reply, 0); 3943025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn return true; 3953025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn } 3964416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn 3974416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn case DISPATCH_PACKAGE_BROADCAST_TRANSACTION: 3984416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn { 3994416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn data.enforceInterface(IApplicationThread.descriptor); 4004416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn int cmd = data.readInt(); 4014416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn String[] packages = data.readStringArray(); 4024416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn dispatchPackageBroadcast(cmd, packages); 4034416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn return true; 4044416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn } 4059d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn 4069d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn case SCHEDULE_CRASH_TRANSACTION: 4079d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn { 4089d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn data.enforceInterface(IApplicationThread.descriptor); 4099d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn String msg = data.readString(); 4109d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn scheduleCrash(msg); 4119d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn return true; 4129d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn } 4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return super.onTransact(code, data, reply, flags); 4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public IBinder asBinder() 4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project { 4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this; 4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass ApplicationThreadProxy implements IApplicationThread { 4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private final IBinder mRemote; 4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ApplicationThreadProxy(IBinder remote) { 4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRemote = remote; 4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final IBinder asBinder() { 4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mRemote; 4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void schedulePauseActivity(IBinder token, boolean finished, 4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean userLeaving, int configChanges) throws RemoteException { 4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel data = Parcel.obtain(); 4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInterfaceToken(IApplicationThread.descriptor); 4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeStrongBinder(token); 4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInt(finished ? 1 : 0); 4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInt(userLeaving ? 1 :0); 4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInt(configChanges); 4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRemote.transact(SCHEDULE_PAUSE_ACTIVITY_TRANSACTION, data, null, 4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder.FLAG_ONEWAY); 4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.recycle(); 4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void scheduleStopActivity(IBinder token, boolean showWindow, 4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int configChanges) throws RemoteException { 4509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel data = Parcel.obtain(); 4519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInterfaceToken(IApplicationThread.descriptor); 4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeStrongBinder(token); 4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInt(showWindow ? 1 : 0); 4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInt(configChanges); 4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRemote.transact(SCHEDULE_STOP_ACTIVITY_TRANSACTION, data, null, 4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder.FLAG_ONEWAY); 4579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.recycle(); 4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void scheduleWindowVisibility(IBinder token, 4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean showWindow) throws RemoteException { 4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel data = Parcel.obtain(); 4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInterfaceToken(IApplicationThread.descriptor); 4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeStrongBinder(token); 4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInt(showWindow ? 1 : 0); 4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRemote.transact(SCHEDULE_WINDOW_VISIBILITY_TRANSACTION, data, null, 4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder.FLAG_ONEWAY); 4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.recycle(); 4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void scheduleResumeActivity(IBinder token, boolean isForward) 4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throws RemoteException { 4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel data = Parcel.obtain(); 4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInterfaceToken(IApplicationThread.descriptor); 4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeStrongBinder(token); 4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInt(isForward ? 1 : 0); 4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRemote.transact(SCHEDULE_RESUME_ACTIVITY_TRANSACTION, data, null, 4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder.FLAG_ONEWAY); 4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.recycle(); 4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void scheduleSendResult(IBinder token, List<ResultInfo> results) 4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throws RemoteException { 4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel data = Parcel.obtain(); 4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInterfaceToken(IApplicationThread.descriptor); 4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeStrongBinder(token); 4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeTypedList(results); 4889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRemote.transact(SCHEDULE_SEND_RESULT_TRANSACTION, data, null, 4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder.FLAG_ONEWAY); 4909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.recycle(); 4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 493b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn public final void scheduleLaunchActivity(Intent intent, IBinder token, int ident, 4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ActivityInfo info, Bundle state, List<ResultInfo> pendingResults, 4959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project List<Intent> pendingNewIntents, boolean notResumed, boolean isForward) 4969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throws RemoteException { 4979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel data = Parcel.obtain(); 4989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInterfaceToken(IApplicationThread.descriptor); 4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project intent.writeToParcel(data, 0); 5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeStrongBinder(token); 501b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn data.writeInt(ident); 5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project info.writeToParcel(data, 0); 5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeBundle(state); 5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeTypedList(pendingResults); 5059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeTypedList(pendingNewIntents); 5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInt(notResumed ? 1 : 0); 5079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInt(isForward ? 1 : 0); 5089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRemote.transact(SCHEDULE_LAUNCH_ACTIVITY_TRANSACTION, data, null, 5099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder.FLAG_ONEWAY); 5109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.recycle(); 5119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void scheduleRelaunchActivity(IBinder token, 5149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project List<ResultInfo> pendingResults, List<Intent> pendingNewIntents, 515871ecdce67fb59a2603c1b93db657fe8b65695bdDianne Hackborn int configChanges, boolean notResumed, Configuration config) 516871ecdce67fb59a2603c1b93db657fe8b65695bdDianne Hackborn throws RemoteException { 5179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel data = Parcel.obtain(); 5189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInterfaceToken(IApplicationThread.descriptor); 5199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeStrongBinder(token); 5209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeTypedList(pendingResults); 5219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeTypedList(pendingNewIntents); 5229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInt(configChanges); 5239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInt(notResumed ? 1 : 0); 524871ecdce67fb59a2603c1b93db657fe8b65695bdDianne Hackborn if (config != null) { 525871ecdce67fb59a2603c1b93db657fe8b65695bdDianne Hackborn data.writeInt(1); 526871ecdce67fb59a2603c1b93db657fe8b65695bdDianne Hackborn config.writeToParcel(data, 0); 527871ecdce67fb59a2603c1b93db657fe8b65695bdDianne Hackborn } else { 528871ecdce67fb59a2603c1b93db657fe8b65695bdDianne Hackborn data.writeInt(0); 529871ecdce67fb59a2603c1b93db657fe8b65695bdDianne Hackborn } 5309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRemote.transact(SCHEDULE_RELAUNCH_ACTIVITY_TRANSACTION, data, null, 5319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder.FLAG_ONEWAY); 5329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.recycle(); 5339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void scheduleNewIntent(List<Intent> intents, IBinder token) 5369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throws RemoteException { 5379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel data = Parcel.obtain(); 5389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInterfaceToken(IApplicationThread.descriptor); 5399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeTypedList(intents); 5409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeStrongBinder(token); 5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRemote.transact(SCHEDULE_NEW_INTENT_TRANSACTION, data, null, 5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder.FLAG_ONEWAY); 5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.recycle(); 5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void scheduleDestroyActivity(IBinder token, boolean finishing, 5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int configChanges) throws RemoteException { 5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel data = Parcel.obtain(); 5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInterfaceToken(IApplicationThread.descriptor); 5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeStrongBinder(token); 5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInt(finishing ? 1 : 0); 5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInt(configChanges); 5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRemote.transact(SCHEDULE_FINISH_ACTIVITY_TRANSACTION, data, null, 5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder.FLAG_ONEWAY); 5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.recycle(); 5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void scheduleReceiver(Intent intent, ActivityInfo info, 5599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int resultCode, String resultData, 5609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Bundle map, boolean sync) throws RemoteException { 5619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel data = Parcel.obtain(); 5629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInterfaceToken(IApplicationThread.descriptor); 5639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project intent.writeToParcel(data, 0); 5649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project info.writeToParcel(data, 0); 5659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInt(resultCode); 5669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeString(resultData); 5679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeBundle(map); 5689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInt(sync ? 1 : 0); 5699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRemote.transact(SCHEDULE_RECEIVER_TRANSACTION, data, null, 5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder.FLAG_ONEWAY); 5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.recycle(); 5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 574181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate public final void scheduleCreateBackupAgent(ApplicationInfo app, int backupMode) 575181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate throws RemoteException { 576181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate Parcel data = Parcel.obtain(); 577181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate data.writeInterfaceToken(IApplicationThread.descriptor); 578181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate app.writeToParcel(data, 0); 579181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate data.writeInt(backupMode); 580d884f43ffa47f1966e9c63d1ac4722994e037c0bChristopher Tate mRemote.transact(SCHEDULE_CREATE_BACKUP_AGENT_TRANSACTION, data, null, 581d884f43ffa47f1966e9c63d1ac4722994e037c0bChristopher Tate IBinder.FLAG_ONEWAY); 582181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate data.recycle(); 583181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate } 584181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate 585181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate public final void scheduleDestroyBackupAgent(ApplicationInfo app) throws RemoteException { 586181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate Parcel data = Parcel.obtain(); 587181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate data.writeInterfaceToken(IApplicationThread.descriptor); 588181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate app.writeToParcel(data, 0); 589d884f43ffa47f1966e9c63d1ac4722994e037c0bChristopher Tate mRemote.transact(SCHEDULE_DESTROY_BACKUP_AGENT_TRANSACTION, data, null, 590d884f43ffa47f1966e9c63d1ac4722994e037c0bChristopher Tate IBinder.FLAG_ONEWAY); 591181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate data.recycle(); 592181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate } 593181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate 5949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void scheduleCreateService(IBinder token, ServiceInfo info) 5959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throws RemoteException { 5969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel data = Parcel.obtain(); 5979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInterfaceToken(IApplicationThread.descriptor); 5989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeStrongBinder(token); 5999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project info.writeToParcel(data, 0); 6009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRemote.transact(SCHEDULE_CREATE_SERVICE_TRANSACTION, data, null, 6019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder.FLAG_ONEWAY); 6029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.recycle(); 6039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void scheduleBindService(IBinder token, Intent intent, boolean rebind) 6069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throws RemoteException { 6079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel data = Parcel.obtain(); 6089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInterfaceToken(IApplicationThread.descriptor); 6099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeStrongBinder(token); 6109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project intent.writeToParcel(data, 0); 6119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInt(rebind ? 1 : 0); 6129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRemote.transact(SCHEDULE_BIND_SERVICE_TRANSACTION, data, null, 6139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder.FLAG_ONEWAY); 6149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.recycle(); 6159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void scheduleUnbindService(IBinder token, Intent intent) 6189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throws RemoteException { 6199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel data = Parcel.obtain(); 6209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInterfaceToken(IApplicationThread.descriptor); 6219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeStrongBinder(token); 6229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project intent.writeToParcel(data, 0); 6239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRemote.transact(SCHEDULE_UNBIND_SERVICE_TRANSACTION, data, null, 6249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder.FLAG_ONEWAY); 6259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.recycle(); 6269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void scheduleServiceArgs(IBinder token, int startId, 629f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn int flags, Intent args) throws RemoteException { 6309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel data = Parcel.obtain(); 6319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInterfaceToken(IApplicationThread.descriptor); 6329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeStrongBinder(token); 6339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInt(startId); 634f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn data.writeInt(flags); 635f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn if (args != null) { 636f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn data.writeInt(1); 637f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn args.writeToParcel(data, 0); 638f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn } else { 639f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn data.writeInt(0); 640f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn } 6419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRemote.transact(SCHEDULE_SERVICE_ARGS_TRANSACTION, data, null, 6429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder.FLAG_ONEWAY); 6439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.recycle(); 6449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void scheduleStopService(IBinder token) 6479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throws RemoteException { 6489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel data = Parcel.obtain(); 6499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInterfaceToken(IApplicationThread.descriptor); 6509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeStrongBinder(token); 6519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRemote.transact(SCHEDULE_STOP_SERVICE_TRANSACTION, data, null, 6529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder.FLAG_ONEWAY); 6539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.recycle(); 6549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void bindApplication(String packageName, ApplicationInfo info, 6579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project List<ProviderInfo> providers, ComponentName testName, 6589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String profileName, Bundle testArgs, IInstrumentationWatcher testWatcher, int debugMode, 659181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate boolean restrictedBackupMode, Configuration config, 660181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate Map<String, IBinder> services) throws RemoteException { 6619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel data = Parcel.obtain(); 6629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInterfaceToken(IApplicationThread.descriptor); 6639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeString(packageName); 6649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project info.writeToParcel(data, 0); 6659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeTypedList(providers); 6669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (testName == null) { 6679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInt(0); 6689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 6699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInt(1); 6709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project testName.writeToParcel(data, 0); 6719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeString(profileName); 6739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeBundle(testArgs); 6749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeStrongInterface(testWatcher); 6759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInt(debugMode); 676181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate data.writeInt(restrictedBackupMode ? 1 : 0); 6779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project config.writeToParcel(data, 0); 6789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeMap(services); 6799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRemote.transact(BIND_APPLICATION_TRANSACTION, data, null, 6809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder.FLAG_ONEWAY); 6819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.recycle(); 6829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void scheduleExit() throws RemoteException { 6859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel data = Parcel.obtain(); 6869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInterfaceToken(IApplicationThread.descriptor); 6879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRemote.transact(SCHEDULE_EXIT_TRANSACTION, data, null, 6889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder.FLAG_ONEWAY); 6899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.recycle(); 6909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6915e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate 6925e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate public final void scheduleSuicide() throws RemoteException { 6935e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate Parcel data = Parcel.obtain(); 6945e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate data.writeInterfaceToken(IApplicationThread.descriptor); 6955e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate mRemote.transact(SCHEDULE_SUICIDE_TRANSACTION, data, null, 6965e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate IBinder.FLAG_ONEWAY); 6975e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate data.recycle(); 6985e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate } 6995e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate 7009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void requestThumbnail(IBinder token) 7019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throws RemoteException { 7029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel data = Parcel.obtain(); 7039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInterfaceToken(IApplicationThread.descriptor); 7049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeStrongBinder(token); 7059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRemote.transact(REQUEST_THUMBNAIL_TRANSACTION, data, null, 7069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder.FLAG_ONEWAY); 7079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.recycle(); 7089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void scheduleConfigurationChanged(Configuration config) 7119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throws RemoteException { 7129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel data = Parcel.obtain(); 7139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInterfaceToken(IApplicationThread.descriptor); 7149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project config.writeToParcel(data, 0); 7159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRemote.transact(SCHEDULE_CONFIGURATION_CHANGED_TRANSACTION, data, null, 7169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder.FLAG_ONEWAY); 7179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.recycle(); 7189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void updateTimeZone() throws RemoteException { 7219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel data = Parcel.obtain(); 7229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInterfaceToken(IApplicationThread.descriptor); 7239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRemote.transact(UPDATE_TIME_ZONE_TRANSACTION, data, null, 7249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder.FLAG_ONEWAY); 7259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.recycle(); 7269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void processInBackground() throws RemoteException { 7299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel data = Parcel.obtain(); 7309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInterfaceToken(IApplicationThread.descriptor); 7319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRemote.transact(PROCESS_IN_BACKGROUND_TRANSACTION, data, null, 7329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder.FLAG_ONEWAY); 7339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.recycle(); 7349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void dumpService(FileDescriptor fd, IBinder token, String[] args) 7379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throws RemoteException { 7389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel data = Parcel.obtain(); 7399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInterfaceToken(IApplicationThread.descriptor); 7409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeFileDescriptor(fd); 7419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeStrongBinder(token); 7429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeStringArray(args); 7439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRemote.transact(DUMP_SERVICE_TRANSACTION, data, null, 0); 7449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.recycle(); 7459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void scheduleRegisteredReceiver(IIntentReceiver receiver, Intent intent, 74868d881cf2d2b252f6f795cd64d43e316a1d736e5Dianne Hackborn int resultCode, String dataStr, Bundle extras, boolean ordered, boolean sticky) 7499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throws RemoteException { 7509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel data = Parcel.obtain(); 7519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInterfaceToken(IApplicationThread.descriptor); 7529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeStrongBinder(receiver.asBinder()); 7539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project intent.writeToParcel(data, 0); 7549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInt(resultCode); 7559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeString(dataStr); 7569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeBundle(extras); 7579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInt(ordered ? 1 : 0); 75868d881cf2d2b252f6f795cd64d43e316a1d736e5Dianne Hackborn data.writeInt(sticky ? 1 : 0); 7599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRemote.transact(SCHEDULE_REGISTERED_RECEIVER_TRANSACTION, data, null, 7609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder.FLAG_ONEWAY); 7619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.recycle(); 7629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void scheduleLowMemory() throws RemoteException { 7659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel data = Parcel.obtain(); 7669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInterfaceToken(IApplicationThread.descriptor); 7679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRemote.transact(SCHEDULE_LOW_MEMORY_TRANSACTION, data, null, 7689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder.FLAG_ONEWAY); 7699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.recycle(); 7709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void scheduleActivityConfigurationChanged( 7739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder token) throws RemoteException { 7749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel data = Parcel.obtain(); 7759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInterfaceToken(IApplicationThread.descriptor); 7769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeStrongBinder(token); 7779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRemote.transact(SCHEDULE_ACTIVITY_CONFIGURATION_CHANGED_TRANSACTION, data, null, 7789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder.FLAG_ONEWAY); 7799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.recycle(); 7809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void requestPss() throws RemoteException { 7839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcel data = Parcel.obtain(); 7849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.writeInterfaceToken(IApplicationThread.descriptor); 7859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mRemote.transact(REQUEST_PSS_TRANSACTION, data, null, 7869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBinder.FLAG_ONEWAY); 7879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project data.recycle(); 7889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7909c8dd55a9d829c29a3feee9469d8c2f27a9f5516Dianne Hackborn public void profilerControl(boolean start, String path, 7919c8dd55a9d829c29a3feee9469d8c2f27a9f5516Dianne Hackborn ParcelFileDescriptor fd) throws RemoteException { 792f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project Parcel data = Parcel.obtain(); 793f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project data.writeInterfaceToken(IApplicationThread.descriptor); 794f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project data.writeInt(start ? 1 : 0); 795f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project data.writeString(path); 7969c8dd55a9d829c29a3feee9469d8c2f27a9f5516Dianne Hackborn if (fd != null) { 7979c8dd55a9d829c29a3feee9469d8c2f27a9f5516Dianne Hackborn data.writeInt(1); 7989c8dd55a9d829c29a3feee9469d8c2f27a9f5516Dianne Hackborn fd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 7999c8dd55a9d829c29a3feee9469d8c2f27a9f5516Dianne Hackborn } else { 8009c8dd55a9d829c29a3feee9469d8c2f27a9f5516Dianne Hackborn data.writeInt(0); 8019c8dd55a9d829c29a3feee9469d8c2f27a9f5516Dianne Hackborn } 802f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project mRemote.transact(PROFILER_CONTROL_TRANSACTION, data, null, 803f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project IBinder.FLAG_ONEWAY); 804f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project data.recycle(); 805f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project } 80606de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn 80706de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn public void setSchedulingGroup(int group) throws RemoteException { 80806de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn Parcel data = Parcel.obtain(); 80906de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn data.writeInterfaceToken(IApplicationThread.descriptor); 81006de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn data.writeInt(group); 81106de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn mRemote.transact(SET_SCHEDULING_GROUP_TRANSACTION, data, null, 81206de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn IBinder.FLAG_ONEWAY); 81306de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn data.recycle(); 81406de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn } 8153025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn 8163025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn public void getMemoryInfo(Debug.MemoryInfo outInfo) throws RemoteException { 8173025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn Parcel data = Parcel.obtain(); 8183025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn Parcel reply = Parcel.obtain(); 8193025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn data.writeInterfaceToken(IApplicationThread.descriptor); 8203025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn mRemote.transact(GET_MEMORY_INFO_TRANSACTION, data, reply, 0); 8213025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn reply.readException(); 8223025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn outInfo.readFromParcel(reply); 8233025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn data.recycle(); 8243025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn reply.recycle(); 8253025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn } 8264416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn 8274416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn public void dispatchPackageBroadcast(int cmd, String[] packages) throws RemoteException { 8284416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn Parcel data = Parcel.obtain(); 8294416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn data.writeInterfaceToken(IApplicationThread.descriptor); 8304416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn data.writeInt(cmd); 8314416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn data.writeStringArray(packages); 8324416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn mRemote.transact(DISPATCH_PACKAGE_BROADCAST_TRANSACTION, data, null, 8334416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn IBinder.FLAG_ONEWAY); 8344416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn data.recycle(); 8354416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn 8364416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn } 8379d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn 8389d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn public void scheduleCrash(String msg) throws RemoteException { 8399d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn Parcel data = Parcel.obtain(); 8409d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn data.writeInterfaceToken(IApplicationThread.descriptor); 8419d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn data.writeString(msg); 8429d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn mRemote.transact(SCHEDULE_CRASH_TRANSACTION, data, null, 8439d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn IBinder.FLAG_ONEWAY); 8449d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn data.recycle(); 8459d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn 8469d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn } 8479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 849