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