ApplicationThreadNative.java revision 58f42a59bda3bc912d0d2f81dc65a9d31d140eaa
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;
26e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackbornimport android.content.res.CompatibilityInfo;
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.res.Configuration;
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Binder;
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Bundle;
303025ef332c29e255388f74b2afefe05f64bce07cDianne Hackbornimport android.os.Debug;
319c8dd55a9d829c29a3feee9469d8c2f27a9f5516Dianne Hackbornimport android.os.Parcelable;
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.RemoteException;
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.IBinder;
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcel;
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.ParcelFileDescriptor;
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.FileDescriptor;
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.IOException;
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.HashMap;
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.List;
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.Map;
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** {@hide} */
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic abstract class ApplicationThreadNative extends Binder
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        implements IApplicationThread {
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Cast a Binder object into an application thread interface, generating
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * a proxy if needed.
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static public IApplicationThread asInterface(IBinder obj) {
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (obj == null) {
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return null;
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        IApplicationThread in =
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            (IApplicationThread)obj.queryLocalInterface(descriptor);
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (in != null) {
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return in;
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return new ApplicationThreadProxy(obj);
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ApplicationThreadNative() {
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        attachInterface(this, descriptor);
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean onTransact(int code, Parcel data, Parcel reply, int flags)
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throws RemoteException {
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        switch (code) {
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        case SCHEDULE_PAUSE_ACTIVITY_TRANSACTION:
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        {
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            data.enforceInterface(IApplicationThread.descriptor);
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            IBinder b = data.readStrongBinder();
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            boolean finished = data.readInt() != 0;
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            boolean userLeaving = data.readInt() != 0;
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int configChanges = data.readInt();
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            schedulePauseActivity(b, finished, userLeaving, configChanges);
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return true;
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        case SCHEDULE_STOP_ACTIVITY_TRANSACTION:
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        {
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            data.enforceInterface(IApplicationThread.descriptor);
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            IBinder b = data.readStrongBinder();
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            boolean show = data.readInt() != 0;
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int configChanges = data.readInt();
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            scheduleStopActivity(b, show, configChanges);
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return true;
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        case SCHEDULE_WINDOW_VISIBILITY_TRANSACTION:
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        {
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            data.enforceInterface(IApplicationThread.descriptor);
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            IBinder b = data.readStrongBinder();
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            boolean show = data.readInt() != 0;
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            scheduleWindowVisibility(b, show);
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return true;
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1014eba96bb314d8ff773ea33d6cb3179f25751ecceDianne Hackborn        case SCHEDULE_SLEEPING_TRANSACTION:
1024eba96bb314d8ff773ea33d6cb3179f25751ecceDianne Hackborn        {
1034eba96bb314d8ff773ea33d6cb3179f25751ecceDianne Hackborn            data.enforceInterface(IApplicationThread.descriptor);
1044eba96bb314d8ff773ea33d6cb3179f25751ecceDianne Hackborn            IBinder b = data.readStrongBinder();
1054eba96bb314d8ff773ea33d6cb3179f25751ecceDianne Hackborn            boolean sleeping = data.readInt() != 0;
1064eba96bb314d8ff773ea33d6cb3179f25751ecceDianne Hackborn            scheduleSleeping(b, sleeping);
1074eba96bb314d8ff773ea33d6cb3179f25751ecceDianne Hackborn            return true;
1084eba96bb314d8ff773ea33d6cb3179f25751ecceDianne Hackborn        }
1094eba96bb314d8ff773ea33d6cb3179f25751ecceDianne Hackborn
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        case SCHEDULE_RESUME_ACTIVITY_TRANSACTION:
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        {
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            data.enforceInterface(IApplicationThread.descriptor);
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            IBinder b = data.readStrongBinder();
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            boolean isForward = data.readInt() != 0;
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            scheduleResumeActivity(b, isForward);
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return true;
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        case SCHEDULE_SEND_RESULT_TRANSACTION:
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        {
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            data.enforceInterface(IApplicationThread.descriptor);
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            IBinder b = data.readStrongBinder();
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            List<ResultInfo> ri = data.createTypedArrayList(ResultInfo.CREATOR);
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            scheduleSendResult(b, ri);
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return true;
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        case SCHEDULE_LAUNCH_ACTIVITY_TRANSACTION:
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        {
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            data.enforceInterface(IApplicationThread.descriptor);
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Intent intent = Intent.CREATOR.createFromParcel(data);
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            IBinder b = data.readStrongBinder();
133b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn            int ident = data.readInt();
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            ActivityInfo info = ActivityInfo.CREATOR.createFromParcel(data);
13558f42a59bda3bc912d0d2f81dc65a9d31d140eaaDianne Hackborn            Configuration curConfig = Configuration.CREATOR.createFromParcel(data);
136e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn            CompatibilityInfo compatInfo = CompatibilityInfo.CREATOR.createFromParcel(data);
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Bundle state = data.readBundle();
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            List<ResultInfo> ri = data.createTypedArrayList(ResultInfo.CREATOR);
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            List<Intent> pi = data.createTypedArrayList(Intent.CREATOR);
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            boolean notResumed = data.readInt() != 0;
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            boolean isForward = data.readInt() != 0;
14262f20ecf492d2b29881bba307c79ff55e68760e6Dianne Hackborn            String profileName = data.readString();
14362f20ecf492d2b29881bba307c79ff55e68760e6Dianne Hackborn            ParcelFileDescriptor profileFd = data.readInt() != 0
14462f20ecf492d2b29881bba307c79ff55e68760e6Dianne Hackborn                    ? data.readFileDescriptor() : null;
14562f20ecf492d2b29881bba307c79ff55e68760e6Dianne Hackborn            boolean autoStopProfiler = data.readInt() != 0;
14658f42a59bda3bc912d0d2f81dc65a9d31d140eaaDianne Hackborn            scheduleLaunchActivity(intent, b, ident, info, curConfig, compatInfo, state, ri, pi,
14762f20ecf492d2b29881bba307c79ff55e68760e6Dianne Hackborn                    notResumed, isForward, profileName, profileFd, autoStopProfiler);
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return true;
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        case SCHEDULE_RELAUNCH_ACTIVITY_TRANSACTION:
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        {
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            data.enforceInterface(IApplicationThread.descriptor);
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            IBinder b = data.readStrongBinder();
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            List<ResultInfo> ri = data.createTypedArrayList(ResultInfo.CREATOR);
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            List<Intent> pi = data.createTypedArrayList(Intent.CREATOR);
1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int configChanges = data.readInt();
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            boolean notResumed = data.readInt() != 0;
159871ecdce67fb59a2603c1b93db657fe8b65695bdDianne Hackborn            Configuration config = null;
160871ecdce67fb59a2603c1b93db657fe8b65695bdDianne Hackborn            if (data.readInt() != 0) {
161871ecdce67fb59a2603c1b93db657fe8b65695bdDianne Hackborn                config = Configuration.CREATOR.createFromParcel(data);
162871ecdce67fb59a2603c1b93db657fe8b65695bdDianne Hackborn            }
163871ecdce67fb59a2603c1b93db657fe8b65695bdDianne Hackborn            scheduleRelaunchActivity(b, ri, pi, configChanges, notResumed, config);
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return true;
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        case SCHEDULE_NEW_INTENT_TRANSACTION:
1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        {
1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            data.enforceInterface(IApplicationThread.descriptor);
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            List<Intent> pi = data.createTypedArrayList(Intent.CREATOR);
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            IBinder b = data.readStrongBinder();
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            scheduleNewIntent(pi, b);
1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return true;
1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        case SCHEDULE_FINISH_ACTIVITY_TRANSACTION:
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        {
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            data.enforceInterface(IApplicationThread.descriptor);
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            IBinder b = data.readStrongBinder();
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            boolean finishing = data.readInt() != 0;
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int configChanges = data.readInt();
1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            scheduleDestroyActivity(b, finishing, configChanges);
1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return true;
1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        case SCHEDULE_RECEIVER_TRANSACTION:
1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        {
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            data.enforceInterface(IApplicationThread.descriptor);
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Intent intent = Intent.CREATOR.createFromParcel(data);
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            ActivityInfo info = ActivityInfo.CREATOR.createFromParcel(data);
191e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn            CompatibilityInfo compatInfo = CompatibilityInfo.CREATOR.createFromParcel(data);
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int resultCode = data.readInt();
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String resultData = data.readString();
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Bundle resultExtras = data.readBundle();
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            boolean sync = data.readInt() != 0;
196e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn            scheduleReceiver(intent, info, compatInfo, resultCode, resultData,
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    resultExtras, sync);
1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return true;
1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        case SCHEDULE_CREATE_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            ServiceInfo info = ServiceInfo.CREATOR.createFromParcel(data);
205e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn            CompatibilityInfo compatInfo = CompatibilityInfo.CREATOR.createFromParcel(data);
206e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn            scheduleCreateService(token, info, compatInfo);
2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return true;
2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        case SCHEDULE_BIND_SERVICE_TRANSACTION: {
2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            data.enforceInterface(IApplicationThread.descriptor);
2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            IBinder token = data.readStrongBinder();
2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Intent intent = Intent.CREATOR.createFromParcel(data);
2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            boolean rebind = data.readInt() != 0;
2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            scheduleBindService(token, intent, rebind);
2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return true;
2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        case SCHEDULE_UNBIND_SERVICE_TRANSACTION: {
2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            data.enforceInterface(IApplicationThread.descriptor);
2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            IBinder token = data.readStrongBinder();
2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Intent intent = Intent.CREATOR.createFromParcel(data);
2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            scheduleUnbindService(token, intent);
2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return true;
2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        case SCHEDULE_SERVICE_ARGS_TRANSACTION:
2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        {
2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            data.enforceInterface(IApplicationThread.descriptor);
2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            IBinder token = data.readStrongBinder();
2310c5001d776d56bae02a5cc2663286a125d99bc5eDianne Hackborn            boolean taskRemoved = data.readInt() != 0;
2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int startId = data.readInt();
233f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn            int fl = data.readInt();
234f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn            Intent args;
235f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn            if (data.readInt() != 0) {
236f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn                args = Intent.CREATOR.createFromParcel(data);
237f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn            } else {
238f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn                args = null;
239f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn            }
2400c5001d776d56bae02a5cc2663286a125d99bc5eDianne Hackborn            scheduleServiceArgs(token, taskRemoved, startId, fl, args);
2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return true;
2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        case SCHEDULE_STOP_SERVICE_TRANSACTION:
2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        {
2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            data.enforceInterface(IApplicationThread.descriptor);
2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            IBinder token = data.readStrongBinder();
2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            scheduleStopService(token);
2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return true;
2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        case BIND_APPLICATION_TRANSACTION:
2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        {
2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            data.enforceInterface(IApplicationThread.descriptor);
2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String packageName = data.readString();
2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            ApplicationInfo info =
2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                ApplicationInfo.CREATOR.createFromParcel(data);
2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            List<ProviderInfo> providers =
2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                data.createTypedArrayList(ProviderInfo.CREATOR);
2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            ComponentName testName = (data.readInt() != 0)
2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                ? new ComponentName(data) : null;
2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String profileName = data.readString();
26362f20ecf492d2b29881bba307c79ff55e68760e6Dianne Hackborn            ParcelFileDescriptor profileFd = data.readInt() != 0
26462f20ecf492d2b29881bba307c79ff55e68760e6Dianne Hackborn                    ? data.readFileDescriptor() : null;
26562f20ecf492d2b29881bba307c79ff55e68760e6Dianne Hackborn            boolean autoStopProfiler = data.readInt() != 0;
2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Bundle testArgs = data.readBundle();
2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            IBinder binder = data.readStrongBinder();
2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            IInstrumentationWatcher testWatcher = IInstrumentationWatcher.Stub.asInterface(binder);
2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int testMode = data.readInt();
270181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate            boolean restrictedBackupMode = (data.readInt() != 0);
2715d927c2d8e832fcfcb0154c8741f896001141ef4Dianne Hackborn            boolean persistent = (data.readInt() != 0);
2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Configuration config = Configuration.CREATOR.createFromParcel(data);
273e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn            CompatibilityInfo compatInfo = CompatibilityInfo.CREATOR.createFromParcel(data);
2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            HashMap<String, IBinder> services = data.readHashMap(null);
27554d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov            Bundle coreSettings = data.readBundle();
2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            bindApplication(packageName, info,
27762f20ecf492d2b29881bba307c79ff55e68760e6Dianne Hackborn                            providers, testName, profileName, profileFd, autoStopProfiler,
2785d927c2d8e832fcfcb0154c8741f896001141ef4Dianne Hackborn                            testArgs, testWatcher, testMode, restrictedBackupMode, persistent,
279e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn                            config, compatInfo, services, coreSettings);
2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return true;
2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        case SCHEDULE_EXIT_TRANSACTION:
2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        {
2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            data.enforceInterface(IApplicationThread.descriptor);
2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            scheduleExit();
2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return true;
2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2905e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate        case SCHEDULE_SUICIDE_TRANSACTION:
2915e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate        {
2925e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate            data.enforceInterface(IApplicationThread.descriptor);
2935e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate            scheduleSuicide();
2945e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate            return true;
2955e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate        }
2965e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate
2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        case REQUEST_THUMBNAIL_TRANSACTION:
2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        {
2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            data.enforceInterface(IApplicationThread.descriptor);
3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            IBinder b = data.readStrongBinder();
3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            requestThumbnail(b);
3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return true;
3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
304434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt
3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        case SCHEDULE_CONFIGURATION_CHANGED_TRANSACTION:
3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        {
3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            data.enforceInterface(IApplicationThread.descriptor);
3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Configuration config = Configuration.CREATOR.createFromParcel(data);
3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            scheduleConfigurationChanged(config);
3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return true;
3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        case UPDATE_TIME_ZONE_TRANSACTION: {
3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            data.enforceInterface(IApplicationThread.descriptor);
3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            updateTimeZone();
3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return true;
3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
31903595d01188d88c169e8c9dd51b357fd545e69ccRobert Greenwalt        case CLEAR_DNS_CACHE_TRANSACTION: {
32003595d01188d88c169e8c9dd51b357fd545e69ccRobert Greenwalt            data.enforceInterface(IApplicationThread.descriptor);
32103595d01188d88c169e8c9dd51b357fd545e69ccRobert Greenwalt            clearDnsCache();
32203595d01188d88c169e8c9dd51b357fd545e69ccRobert Greenwalt            return true;
32303595d01188d88c169e8c9dd51b357fd545e69ccRobert Greenwalt        }
32403595d01188d88c169e8c9dd51b357fd545e69ccRobert Greenwalt
325434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt        case SET_HTTP_PROXY_TRANSACTION: {
326434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt            data.enforceInterface(IApplicationThread.descriptor);
327434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt            final String proxy = data.readString();
328434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt            final String port = data.readString();
329434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt            final String exclList = data.readString();
330434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt            setHttpProxy(proxy, port, exclList);
331434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt            return true;
332434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt        }
333434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt
3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        case PROCESS_IN_BACKGROUND_TRANSACTION: {
3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            data.enforceInterface(IApplicationThread.descriptor);
3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            processInBackground();
3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return true;
3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
339434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt
3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        case DUMP_SERVICE_TRANSACTION: {
3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            data.enforceInterface(IApplicationThread.descriptor);
3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            ParcelFileDescriptor fd = data.readFileDescriptor();
3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            final IBinder service = data.readStrongBinder();
3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            final String[] args = data.readStringArray();
3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            if (fd != null) {
3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                dumpService(fd.getFileDescriptor(), service, args);
3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                try {
3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    fd.close();
3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                } catch (IOException e) {
3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                }
3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            }
3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return true;
3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        case SCHEDULE_REGISTERED_RECEIVER_TRANSACTION: {
3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            data.enforceInterface(IApplicationThread.descriptor);
3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            IIntentReceiver receiver = IIntentReceiver.Stub.asInterface(
3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    data.readStrongBinder());
3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Intent intent = Intent.CREATOR.createFromParcel(data);
3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int resultCode = data.readInt();
3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String dataStr = data.readString();
3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Bundle extras = data.readBundle();
3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            boolean ordered = data.readInt() != 0;
36468d881cf2d2b252f6f795cd64d43e316a1d736e5Dianne Hackborn            boolean sticky = data.readInt() != 0;
3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            scheduleRegisteredReceiver(receiver, intent,
36668d881cf2d2b252f6f795cd64d43e316a1d736e5Dianne Hackborn                    resultCode, dataStr, extras, ordered, sticky);
3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return true;
3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        case SCHEDULE_LOW_MEMORY_TRANSACTION:
3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        {
3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            scheduleLowMemory();
3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return true;
3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        case SCHEDULE_ACTIVITY_CONFIGURATION_CHANGED_TRANSACTION:
3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        {
3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            data.enforceInterface(IApplicationThread.descriptor);
3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            IBinder b = data.readStrongBinder();
3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            scheduleActivityConfigurationChanged(b);
3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return true;
3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
384f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project        case PROFILER_CONTROL_TRANSACTION:
385f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project        {
386f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project            data.enforceInterface(IApplicationThread.descriptor);
387f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project            boolean start = data.readInt() != 0;
3889a8c5cefcab3d5dec6ff63f0e99553e1aa9a4af8Romain Guy            int profileType = data.readInt();
389f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project            String path = data.readString();
3909c8dd55a9d829c29a3feee9469d8c2f27a9f5516Dianne Hackborn            ParcelFileDescriptor fd = data.readInt() != 0
3919c8dd55a9d829c29a3feee9469d8c2f27a9f5516Dianne Hackborn                    ? data.readFileDescriptor() : null;
3927eabe55db6b113f83c2cefcd06812648927de877Romain Guy            profilerControl(start, path, fd, profileType);
393f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project            return true;
394f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project        }
39506de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn
39606de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn        case SET_SCHEDULING_GROUP_TRANSACTION:
39706de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn        {
39806de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn            data.enforceInterface(IApplicationThread.descriptor);
39906de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn            int group = data.readInt();
40006de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn            setSchedulingGroup(group);
40106de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn            return true;
40206de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn        }
403181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate
404181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate        case SCHEDULE_CREATE_BACKUP_AGENT_TRANSACTION:
405181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate        {
406181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate            data.enforceInterface(IApplicationThread.descriptor);
407181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate            ApplicationInfo appInfo = ApplicationInfo.CREATOR.createFromParcel(data);
408e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn            CompatibilityInfo compatInfo = CompatibilityInfo.CREATOR.createFromParcel(data);
409181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate            int backupMode = data.readInt();
410e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn            scheduleCreateBackupAgent(appInfo, compatInfo, backupMode);
411181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate            return true;
412181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate        }
4131885b37913181230c36d6485bdd389f89fa90f43Christopher Tate
4141885b37913181230c36d6485bdd389f89fa90f43Christopher Tate        case SCHEDULE_DESTROY_BACKUP_AGENT_TRANSACTION:
4151885b37913181230c36d6485bdd389f89fa90f43Christopher Tate        {
4161885b37913181230c36d6485bdd389f89fa90f43Christopher Tate            data.enforceInterface(IApplicationThread.descriptor);
4171885b37913181230c36d6485bdd389f89fa90f43Christopher Tate            ApplicationInfo appInfo = ApplicationInfo.CREATOR.createFromParcel(data);
418e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn            CompatibilityInfo compatInfo = CompatibilityInfo.CREATOR.createFromParcel(data);
419e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn            scheduleDestroyBackupAgent(appInfo, compatInfo);
4201885b37913181230c36d6485bdd389f89fa90f43Christopher Tate            return true;
4211885b37913181230c36d6485bdd389f89fa90f43Christopher Tate        }
4223025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn
4233025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn        case GET_MEMORY_INFO_TRANSACTION:
4243025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn        {
4253025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn            data.enforceInterface(IApplicationThread.descriptor);
4263025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn            Debug.MemoryInfo mi = new Debug.MemoryInfo();
4273025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn            getMemoryInfo(mi);
4283025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn            reply.writeNoException();
4293025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn            mi.writeToParcel(reply, 0);
4303025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn            return true;
4313025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn        }
4324416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn
4334416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn        case DISPATCH_PACKAGE_BROADCAST_TRANSACTION:
4344416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn        {
4354416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn            data.enforceInterface(IApplicationThread.descriptor);
4364416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn            int cmd = data.readInt();
4374416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn            String[] packages = data.readStringArray();
4384416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn            dispatchPackageBroadcast(cmd, packages);
4394416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn            return true;
4404416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn        }
4419d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn
4429d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn        case SCHEDULE_CRASH_TRANSACTION:
4439d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn        {
4449d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn            data.enforceInterface(IApplicationThread.descriptor);
4459d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn            String msg = data.readString();
4469d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn            scheduleCrash(msg);
4479d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn            return true;
4489d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn        }
449824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden
450824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden        case DUMP_HEAP_TRANSACTION:
451824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden        {
452824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden            data.enforceInterface(IApplicationThread.descriptor);
453824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden            boolean managed = data.readInt() != 0;
454824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden            String path = data.readString();
455824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden            ParcelFileDescriptor fd = data.readInt() != 0
456824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden                    ? data.readFileDescriptor() : null;
457824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden            dumpHeap(managed, path, fd);
458824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden            return true;
459824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden        }
460625ac271f80777668f832a344486a6fcdc06d0aeDianne Hackborn
461625ac271f80777668f832a344486a6fcdc06d0aeDianne Hackborn        case DUMP_ACTIVITY_TRANSACTION: {
462625ac271f80777668f832a344486a6fcdc06d0aeDianne Hackborn            data.enforceInterface(IApplicationThread.descriptor);
463625ac271f80777668f832a344486a6fcdc06d0aeDianne Hackborn            ParcelFileDescriptor fd = data.readFileDescriptor();
464625ac271f80777668f832a344486a6fcdc06d0aeDianne Hackborn            final IBinder activity = data.readStrongBinder();
46530d7189067524000c738c188c4ff91f84f474d25Dianne Hackborn            final String prefix = data.readString();
466625ac271f80777668f832a344486a6fcdc06d0aeDianne Hackborn            final String[] args = data.readStringArray();
467625ac271f80777668f832a344486a6fcdc06d0aeDianne Hackborn            if (fd != null) {
46830d7189067524000c738c188c4ff91f84f474d25Dianne Hackborn                dumpActivity(fd.getFileDescriptor(), activity, prefix, args);
469625ac271f80777668f832a344486a6fcdc06d0aeDianne Hackborn                try {
470625ac271f80777668f832a344486a6fcdc06d0aeDianne Hackborn                    fd.close();
471625ac271f80777668f832a344486a6fcdc06d0aeDianne Hackborn                } catch (IOException e) {
472625ac271f80777668f832a344486a6fcdc06d0aeDianne Hackborn                }
473625ac271f80777668f832a344486a6fcdc06d0aeDianne Hackborn            }
474625ac271f80777668f832a344486a6fcdc06d0aeDianne Hackborn            return true;
475625ac271f80777668f832a344486a6fcdc06d0aeDianne Hackborn        }
47654d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov
477e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn        case SET_CORE_SETTINGS_TRANSACTION: {
47854d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov            data.enforceInterface(IApplicationThread.descriptor);
47954d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov            Bundle settings = data.readBundle();
48054d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov            setCoreSettings(settings);
48154d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov            return true;
48254d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov        }
483e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn
484e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn        case UPDATE_PACKAGE_COMPATIBILITY_INFO_TRANSACTION: {
485e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn            data.enforceInterface(IApplicationThread.descriptor);
486e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn            String pkg = data.readString();
487e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn            CompatibilityInfo compat = CompatibilityInfo.CREATOR.createFromParcel(data);
488e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn            updatePackageCompatibilityInfo(pkg, compat);
489e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn            return true;
490e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn        }
491ce86ba86df61de8b34b226a4eb6c23ec33e866e0Dianne Hackborn
492ce86ba86df61de8b34b226a4eb6c23ec33e866e0Dianne Hackborn        case SCHEDULE_TRIM_MEMORY_TRANSACTION: {
493ce86ba86df61de8b34b226a4eb6c23ec33e866e0Dianne Hackborn            data.enforceInterface(IApplicationThread.descriptor);
494ce86ba86df61de8b34b226a4eb6c23ec33e866e0Dianne Hackborn            int level = data.readInt();
495ce86ba86df61de8b34b226a4eb6c23ec33e866e0Dianne Hackborn            scheduleTrimMemory(level);
496ce86ba86df61de8b34b226a4eb6c23ec33e866e0Dianne Hackborn            return true;
497ce86ba86df61de8b34b226a4eb6c23ec33e866e0Dianne Hackborn        }
4980e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn
4990e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn        case DUMP_MEM_INFO_TRANSACTION:
5000e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn        {
5010e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn            data.enforceInterface(IApplicationThread.descriptor);
5020e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn            ParcelFileDescriptor fd = data.readFileDescriptor();
503b437e090ec03a2bab10bdfcb9484577a7f34e157Dianne Hackborn            boolean checkin = data.readInt() != 0;
504b437e090ec03a2bab10bdfcb9484577a7f34e157Dianne Hackborn            boolean all = data.readInt() != 0;
5050e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn            String[] args = data.readStringArray();
5060e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn            Debug.MemoryInfo mi = null;
5070e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn            if (fd != null) {
5080e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn                try {
509b437e090ec03a2bab10bdfcb9484577a7f34e157Dianne Hackborn                    mi = dumpMemInfo(fd.getFileDescriptor(), checkin, all, args);
5100e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn                } finally {
5110e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn                    try {
5120e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn                        fd.close();
5130e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn                    } catch (IOException e) {
5140e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn                        // swallowed, not propagated back to the caller
5150e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn                    }
5160e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn                }
5170e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn            }
5180e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn            reply.writeNoException();
5190e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn            mi.writeToParcel(reply, 0);
5200e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn            return true;
5210e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn        }
5220e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn
5230e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn        case DUMP_GFX_INFO_TRANSACTION:
5240e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn        {
5250e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn            data.enforceInterface(IApplicationThread.descriptor);
5260e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn            ParcelFileDescriptor fd = data.readFileDescriptor();
5270e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn            String[] args = data.readStringArray();
5280e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn            if (fd != null) {
5290e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn                try {
5300e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn                    dumpGfxInfo(fd.getFileDescriptor(), args);
5310e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn                } finally {
5320e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn                    try {
5330e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn                        fd.close();
5340e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn                    } catch (IOException e) {
5350e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn                        // swallowed, not propagated back to the caller
5360e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn                    }
5370e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn                }
5380e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn            }
5390e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn            reply.writeNoException();
5400e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn            return true;
5410e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn        }
5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return super.onTransact(code, data, reply, flags);
5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public IBinder asBinder()
5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    {
5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return this;
5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass ApplicationThreadProxy implements IApplicationThread {
5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final IBinder mRemote;
5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ApplicationThreadProxy(IBinder remote) {
5579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRemote = remote;
5589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
5599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final IBinder asBinder() {
5619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mRemote;
5629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
5639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final void schedulePauseActivity(IBinder token, boolean finished,
5659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            boolean userLeaving, int configChanges) throws RemoteException {
5669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Parcel data = Parcel.obtain();
5679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInterfaceToken(IApplicationThread.descriptor);
5689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeStrongBinder(token);
5699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInt(finished ? 1 : 0);
5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInt(userLeaving ? 1 :0);
5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInt(configChanges);
5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRemote.transact(SCHEDULE_PAUSE_ACTIVITY_TRANSACTION, data, null,
5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                IBinder.FLAG_ONEWAY);
5749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.recycle();
5759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final void scheduleStopActivity(IBinder token, boolean showWindow,
5789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int configChanges) throws RemoteException {
5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Parcel data = Parcel.obtain();
5809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInterfaceToken(IApplicationThread.descriptor);
5819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeStrongBinder(token);
5829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInt(showWindow ? 1 : 0);
5839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInt(configChanges);
5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRemote.transact(SCHEDULE_STOP_ACTIVITY_TRANSACTION, data, null,
5859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                IBinder.FLAG_ONEWAY);
5869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.recycle();
5879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
5889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final void scheduleWindowVisibility(IBinder token,
5909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            boolean showWindow) throws RemoteException {
5919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Parcel data = Parcel.obtain();
5929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInterfaceToken(IApplicationThread.descriptor);
5939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeStrongBinder(token);
5949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInt(showWindow ? 1 : 0);
5959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRemote.transact(SCHEDULE_WINDOW_VISIBILITY_TRANSACTION, data, null,
5969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                IBinder.FLAG_ONEWAY);
5979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.recycle();
5989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
5999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6004eba96bb314d8ff773ea33d6cb3179f25751ecceDianne Hackborn    public final void scheduleSleeping(IBinder token,
6014eba96bb314d8ff773ea33d6cb3179f25751ecceDianne Hackborn            boolean sleeping) throws RemoteException {
6024eba96bb314d8ff773ea33d6cb3179f25751ecceDianne Hackborn        Parcel data = Parcel.obtain();
6034eba96bb314d8ff773ea33d6cb3179f25751ecceDianne Hackborn        data.writeInterfaceToken(IApplicationThread.descriptor);
6044eba96bb314d8ff773ea33d6cb3179f25751ecceDianne Hackborn        data.writeStrongBinder(token);
6054eba96bb314d8ff773ea33d6cb3179f25751ecceDianne Hackborn        data.writeInt(sleeping ? 1 : 0);
6064eba96bb314d8ff773ea33d6cb3179f25751ecceDianne Hackborn        mRemote.transact(SCHEDULE_SLEEPING_TRANSACTION, data, null,
6074eba96bb314d8ff773ea33d6cb3179f25751ecceDianne Hackborn                IBinder.FLAG_ONEWAY);
6084eba96bb314d8ff773ea33d6cb3179f25751ecceDianne Hackborn        data.recycle();
6094eba96bb314d8ff773ea33d6cb3179f25751ecceDianne Hackborn    }
6104eba96bb314d8ff773ea33d6cb3179f25751ecceDianne Hackborn
6119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final void scheduleResumeActivity(IBinder token, boolean isForward)
6129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throws RemoteException {
6139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Parcel data = Parcel.obtain();
6149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInterfaceToken(IApplicationThread.descriptor);
6159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeStrongBinder(token);
6169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInt(isForward ? 1 : 0);
6179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRemote.transact(SCHEDULE_RESUME_ACTIVITY_TRANSACTION, data, null,
6189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                IBinder.FLAG_ONEWAY);
6199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.recycle();
6209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
6219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final void scheduleSendResult(IBinder token, List<ResultInfo> results)
6239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    		throws RemoteException {
6249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Parcel data = Parcel.obtain();
6259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInterfaceToken(IApplicationThread.descriptor);
6269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeStrongBinder(token);
6279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeTypedList(results);
6289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRemote.transact(SCHEDULE_SEND_RESULT_TRANSACTION, data, null,
6299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                IBinder.FLAG_ONEWAY);
6309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.recycle();
6319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
6329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
633b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn    public final void scheduleLaunchActivity(Intent intent, IBinder token, int ident,
63458f42a59bda3bc912d0d2f81dc65a9d31d140eaaDianne Hackborn            ActivityInfo info, Configuration curConfig, CompatibilityInfo compatInfo,
63558f42a59bda3bc912d0d2f81dc65a9d31d140eaaDianne Hackborn            Bundle state, List<ResultInfo> pendingResults,
63658f42a59bda3bc912d0d2f81dc65a9d31d140eaaDianne Hackborn    		List<Intent> pendingNewIntents, boolean notResumed, boolean isForward,
63758f42a59bda3bc912d0d2f81dc65a9d31d140eaaDianne Hackborn    		String profileName, ParcelFileDescriptor profileFd, boolean autoStopProfiler)
6389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    		throws RemoteException {
6399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Parcel data = Parcel.obtain();
6409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInterfaceToken(IApplicationThread.descriptor);
6419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        intent.writeToParcel(data, 0);
6429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeStrongBinder(token);
643b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn        data.writeInt(ident);
6449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        info.writeToParcel(data, 0);
64558f42a59bda3bc912d0d2f81dc65a9d31d140eaaDianne Hackborn        curConfig.writeToParcel(data, 0);
646e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn        compatInfo.writeToParcel(data, 0);
6479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeBundle(state);
6489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeTypedList(pendingResults);
6499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeTypedList(pendingNewIntents);
6509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInt(notResumed ? 1 : 0);
6519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInt(isForward ? 1 : 0);
65262f20ecf492d2b29881bba307c79ff55e68760e6Dianne Hackborn        data.writeString(profileName);
65362f20ecf492d2b29881bba307c79ff55e68760e6Dianne Hackborn        if (profileFd != null) {
65462f20ecf492d2b29881bba307c79ff55e68760e6Dianne Hackborn            data.writeInt(1);
65562f20ecf492d2b29881bba307c79ff55e68760e6Dianne Hackborn            profileFd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
65662f20ecf492d2b29881bba307c79ff55e68760e6Dianne Hackborn        } else {
65762f20ecf492d2b29881bba307c79ff55e68760e6Dianne Hackborn            data.writeInt(0);
65862f20ecf492d2b29881bba307c79ff55e68760e6Dianne Hackborn        }
65962f20ecf492d2b29881bba307c79ff55e68760e6Dianne Hackborn        data.writeInt(autoStopProfiler ? 1 : 0);
6609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRemote.transact(SCHEDULE_LAUNCH_ACTIVITY_TRANSACTION, data, null,
6619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                IBinder.FLAG_ONEWAY);
6629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.recycle();
6639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
6649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final void scheduleRelaunchActivity(IBinder token,
6669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            List<ResultInfo> pendingResults, List<Intent> pendingNewIntents,
667871ecdce67fb59a2603c1b93db657fe8b65695bdDianne Hackborn            int configChanges, boolean notResumed, Configuration config)
668871ecdce67fb59a2603c1b93db657fe8b65695bdDianne Hackborn            throws RemoteException {
6699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Parcel data = Parcel.obtain();
6709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInterfaceToken(IApplicationThread.descriptor);
6719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeStrongBinder(token);
6729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeTypedList(pendingResults);
6739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeTypedList(pendingNewIntents);
6749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInt(configChanges);
6759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInt(notResumed ? 1 : 0);
676871ecdce67fb59a2603c1b93db657fe8b65695bdDianne Hackborn        if (config != null) {
677871ecdce67fb59a2603c1b93db657fe8b65695bdDianne Hackborn            data.writeInt(1);
678871ecdce67fb59a2603c1b93db657fe8b65695bdDianne Hackborn            config.writeToParcel(data, 0);
679871ecdce67fb59a2603c1b93db657fe8b65695bdDianne Hackborn        } else {
680871ecdce67fb59a2603c1b93db657fe8b65695bdDianne Hackborn            data.writeInt(0);
681871ecdce67fb59a2603c1b93db657fe8b65695bdDianne Hackborn        }
6829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRemote.transact(SCHEDULE_RELAUNCH_ACTIVITY_TRANSACTION, data, null,
6839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                IBinder.FLAG_ONEWAY);
6849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.recycle();
6859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
6869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void scheduleNewIntent(List<Intent> intents, IBinder token)
6889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throws RemoteException {
6899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Parcel data = Parcel.obtain();
6909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInterfaceToken(IApplicationThread.descriptor);
6919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeTypedList(intents);
6929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeStrongBinder(token);
6939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRemote.transact(SCHEDULE_NEW_INTENT_TRANSACTION, data, null,
6949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                IBinder.FLAG_ONEWAY);
6959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.recycle();
6969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
6979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final void scheduleDestroyActivity(IBinder token, boolean finishing,
6999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            int configChanges) throws RemoteException {
7009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Parcel data = Parcel.obtain();
7019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInterfaceToken(IApplicationThread.descriptor);
7029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeStrongBinder(token);
7039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInt(finishing ? 1 : 0);
7049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInt(configChanges);
7059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRemote.transact(SCHEDULE_FINISH_ACTIVITY_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 scheduleReceiver(Intent intent, ActivityInfo info,
711e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn            CompatibilityInfo compatInfo, int resultCode, String resultData,
7129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Bundle map, boolean sync) throws RemoteException {
7139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Parcel data = Parcel.obtain();
7149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInterfaceToken(IApplicationThread.descriptor);
7159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        intent.writeToParcel(data, 0);
7169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        info.writeToParcel(data, 0);
717e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn        compatInfo.writeToParcel(data, 0);
7189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInt(resultCode);
7199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeString(resultData);
7209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeBundle(map);
7219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInt(sync ? 1 : 0);
7229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRemote.transact(SCHEDULE_RECEIVER_TRANSACTION, data, null,
7239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                IBinder.FLAG_ONEWAY);
7249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.recycle();
7259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
7269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
727e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn    public final void scheduleCreateBackupAgent(ApplicationInfo app,
728e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn            CompatibilityInfo compatInfo, int backupMode) throws RemoteException {
729181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate        Parcel data = Parcel.obtain();
730181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate        data.writeInterfaceToken(IApplicationThread.descriptor);
731181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate        app.writeToParcel(data, 0);
732e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn        compatInfo.writeToParcel(data, 0);
733181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate        data.writeInt(backupMode);
734d884f43ffa47f1966e9c63d1ac4722994e037c0bChristopher Tate        mRemote.transact(SCHEDULE_CREATE_BACKUP_AGENT_TRANSACTION, data, null,
735d884f43ffa47f1966e9c63d1ac4722994e037c0bChristopher Tate                IBinder.FLAG_ONEWAY);
736181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate        data.recycle();
737181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate    }
738181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate
739e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn    public final void scheduleDestroyBackupAgent(ApplicationInfo app,
740e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn            CompatibilityInfo compatInfo) throws RemoteException {
741181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate        Parcel data = Parcel.obtain();
742181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate        data.writeInterfaceToken(IApplicationThread.descriptor);
743181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate        app.writeToParcel(data, 0);
744e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn        compatInfo.writeToParcel(data, 0);
745d884f43ffa47f1966e9c63d1ac4722994e037c0bChristopher Tate        mRemote.transact(SCHEDULE_DESTROY_BACKUP_AGENT_TRANSACTION, data, null,
746d884f43ffa47f1966e9c63d1ac4722994e037c0bChristopher Tate                IBinder.FLAG_ONEWAY);
747181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate        data.recycle();
748181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate    }
749181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate
750e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn    public final void scheduleCreateService(IBinder token, ServiceInfo info,
751e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn            CompatibilityInfo compatInfo) throws RemoteException {
7529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Parcel data = Parcel.obtain();
7539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInterfaceToken(IApplicationThread.descriptor);
7549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeStrongBinder(token);
7559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        info.writeToParcel(data, 0);
756e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn        compatInfo.writeToParcel(data, 0);
7579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRemote.transact(SCHEDULE_CREATE_SERVICE_TRANSACTION, data, null,
7589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                IBinder.FLAG_ONEWAY);
7599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.recycle();
7609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
7619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final void scheduleBindService(IBinder token, Intent intent, boolean rebind)
7639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throws RemoteException {
7649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Parcel data = Parcel.obtain();
7659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInterfaceToken(IApplicationThread.descriptor);
7669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeStrongBinder(token);
7679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        intent.writeToParcel(data, 0);
7689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInt(rebind ? 1 : 0);
7699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRemote.transact(SCHEDULE_BIND_SERVICE_TRANSACTION, data, null,
7709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                IBinder.FLAG_ONEWAY);
7719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.recycle();
7729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
7739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final void scheduleUnbindService(IBinder token, Intent intent)
7759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throws RemoteException {
7769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Parcel data = Parcel.obtain();
7779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInterfaceToken(IApplicationThread.descriptor);
7789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeStrongBinder(token);
7799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        intent.writeToParcel(data, 0);
7809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRemote.transact(SCHEDULE_UNBIND_SERVICE_TRANSACTION, data, null,
7819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                IBinder.FLAG_ONEWAY);
7829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.recycle();
7839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
7849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7850c5001d776d56bae02a5cc2663286a125d99bc5eDianne Hackborn    public final void scheduleServiceArgs(IBinder token, boolean taskRemoved, int startId,
786f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn	    int flags, Intent args) throws RemoteException {
7879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Parcel data = Parcel.obtain();
7889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInterfaceToken(IApplicationThread.descriptor);
7899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeStrongBinder(token);
7900c5001d776d56bae02a5cc2663286a125d99bc5eDianne Hackborn        data.writeInt(taskRemoved ? 1 : 0);
7919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInt(startId);
792f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn        data.writeInt(flags);
793f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn        if (args != null) {
794f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn            data.writeInt(1);
795f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn            args.writeToParcel(data, 0);
796f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn        } else {
797f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn            data.writeInt(0);
798f6f9f2d0256930ce0bb4913b2260b8480914edc2Dianne Hackborn        }
7999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRemote.transact(SCHEDULE_SERVICE_ARGS_TRANSACTION, data, null,
8009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                IBinder.FLAG_ONEWAY);
8019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.recycle();
8029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
8039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final void scheduleStopService(IBinder token)
8059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throws RemoteException {
8069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Parcel data = Parcel.obtain();
8079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInterfaceToken(IApplicationThread.descriptor);
8089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeStrongBinder(token);
8099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRemote.transact(SCHEDULE_STOP_SERVICE_TRANSACTION, data, null,
8109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                IBinder.FLAG_ONEWAY);
8119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.recycle();
8129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
8139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final void bindApplication(String packageName, ApplicationInfo info,
81562f20ecf492d2b29881bba307c79ff55e68760e6Dianne Hackborn            List<ProviderInfo> providers, ComponentName testName, String profileName,
81662f20ecf492d2b29881bba307c79ff55e68760e6Dianne Hackborn            ParcelFileDescriptor profileFd, boolean autoStopProfiler, Bundle testArgs,
8175d927c2d8e832fcfcb0154c8741f896001141ef4Dianne Hackborn            IInstrumentationWatcher testWatcher, int debugMode, boolean restrictedBackupMode,
8185d927c2d8e832fcfcb0154c8741f896001141ef4Dianne Hackborn            boolean persistent, Configuration config, CompatibilityInfo compatInfo,
81954d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov            Map<String, IBinder> services, Bundle coreSettings) throws RemoteException {
8209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Parcel data = Parcel.obtain();
8219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInterfaceToken(IApplicationThread.descriptor);
8229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeString(packageName);
8239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        info.writeToParcel(data, 0);
8249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeTypedList(providers);
8259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (testName == null) {
8269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            data.writeInt(0);
8279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } else {
8289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            data.writeInt(1);
8299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            testName.writeToParcel(data, 0);
8309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
8319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeString(profileName);
83262f20ecf492d2b29881bba307c79ff55e68760e6Dianne Hackborn        if (profileFd != null) {
83362f20ecf492d2b29881bba307c79ff55e68760e6Dianne Hackborn            data.writeInt(1);
83462f20ecf492d2b29881bba307c79ff55e68760e6Dianne Hackborn            profileFd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
83562f20ecf492d2b29881bba307c79ff55e68760e6Dianne Hackborn        } else {
83662f20ecf492d2b29881bba307c79ff55e68760e6Dianne Hackborn            data.writeInt(0);
83762f20ecf492d2b29881bba307c79ff55e68760e6Dianne Hackborn        }
83862f20ecf492d2b29881bba307c79ff55e68760e6Dianne Hackborn        data.writeInt(autoStopProfiler ? 1 : 0);
8399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeBundle(testArgs);
8409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeStrongInterface(testWatcher);
8419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInt(debugMode);
842181fafaf48208978b8ba2022683ffa78aaeddde1Christopher Tate        data.writeInt(restrictedBackupMode ? 1 : 0);
8435d927c2d8e832fcfcb0154c8741f896001141ef4Dianne Hackborn        data.writeInt(persistent ? 1 : 0);
8449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        config.writeToParcel(data, 0);
845e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn        compatInfo.writeToParcel(data, 0);
8469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeMap(services);
84754d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov        data.writeBundle(coreSettings);
8489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRemote.transact(BIND_APPLICATION_TRANSACTION, data, null,
8499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                IBinder.FLAG_ONEWAY);
8509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.recycle();
8519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
8529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final void scheduleExit() throws RemoteException {
8549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Parcel data = Parcel.obtain();
8559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInterfaceToken(IApplicationThread.descriptor);
8569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRemote.transact(SCHEDULE_EXIT_TRANSACTION, data, null,
8579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                IBinder.FLAG_ONEWAY);
8589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.recycle();
8599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
8605e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate
8615e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate    public final void scheduleSuicide() throws RemoteException {
8625e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate        Parcel data = Parcel.obtain();
8635e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate        data.writeInterfaceToken(IApplicationThread.descriptor);
8645e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate        mRemote.transact(SCHEDULE_SUICIDE_TRANSACTION, data, null,
8655e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate                IBinder.FLAG_ONEWAY);
8665e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate        data.recycle();
8675e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate    }
8685e1ab335e6e8fbfa19c64d53880a22f472010953Christopher Tate
8699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final void requestThumbnail(IBinder token)
8709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throws RemoteException {
8719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Parcel data = Parcel.obtain();
8729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInterfaceToken(IApplicationThread.descriptor);
8739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeStrongBinder(token);
8749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRemote.transact(REQUEST_THUMBNAIL_TRANSACTION, data, null,
8759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                IBinder.FLAG_ONEWAY);
8769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.recycle();
8779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
8789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final void scheduleConfigurationChanged(Configuration config)
8809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throws RemoteException {
8819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Parcel data = Parcel.obtain();
8829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInterfaceToken(IApplicationThread.descriptor);
8839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        config.writeToParcel(data, 0);
8849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRemote.transact(SCHEDULE_CONFIGURATION_CHANGED_TRANSACTION, data, null,
8859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                IBinder.FLAG_ONEWAY);
8869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.recycle();
8879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
8889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void updateTimeZone() throws RemoteException {
8909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Parcel data = Parcel.obtain();
8919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInterfaceToken(IApplicationThread.descriptor);
8929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRemote.transact(UPDATE_TIME_ZONE_TRANSACTION, data, null,
8939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                IBinder.FLAG_ONEWAY);
8949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.recycle();
8959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
8969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
89703595d01188d88c169e8c9dd51b357fd545e69ccRobert Greenwalt    public void clearDnsCache() throws RemoteException {
89803595d01188d88c169e8c9dd51b357fd545e69ccRobert Greenwalt        Parcel data = Parcel.obtain();
89903595d01188d88c169e8c9dd51b357fd545e69ccRobert Greenwalt        data.writeInterfaceToken(IApplicationThread.descriptor);
90003595d01188d88c169e8c9dd51b357fd545e69ccRobert Greenwalt        mRemote.transact(CLEAR_DNS_CACHE_TRANSACTION, data, null,
90103595d01188d88c169e8c9dd51b357fd545e69ccRobert Greenwalt                IBinder.FLAG_ONEWAY);
90203595d01188d88c169e8c9dd51b357fd545e69ccRobert Greenwalt        data.recycle();
90303595d01188d88c169e8c9dd51b357fd545e69ccRobert Greenwalt    }
90403595d01188d88c169e8c9dd51b357fd545e69ccRobert Greenwalt
905434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt    public void setHttpProxy(String proxy, String port, String exclList) throws RemoteException {
906434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt        Parcel data = Parcel.obtain();
907434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt        data.writeInterfaceToken(IApplicationThread.descriptor);
908434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt        data.writeString(proxy);
909434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt        data.writeString(port);
910434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt        data.writeString(exclList);
911434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt        mRemote.transact(SET_HTTP_PROXY_TRANSACTION, data, null, IBinder.FLAG_ONEWAY);
912434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt        data.recycle();
913434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt    }
914434203a277cd2f237a71508a3d5a7d1602126cd5Robert Greenwalt
9159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void processInBackground() throws RemoteException {
9169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Parcel data = Parcel.obtain();
9179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInterfaceToken(IApplicationThread.descriptor);
9189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRemote.transact(PROCESS_IN_BACKGROUND_TRANSACTION, data, null,
9199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                IBinder.FLAG_ONEWAY);
9209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.recycle();
9219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
9229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void dumpService(FileDescriptor fd, IBinder token, String[] args)
9249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throws RemoteException {
9259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Parcel data = Parcel.obtain();
9269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInterfaceToken(IApplicationThread.descriptor);
9279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeFileDescriptor(fd);
9289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeStrongBinder(token);
9299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeStringArray(args);
930e17aeb31030cfeed339a39a107912ad5e9178390Dianne Hackborn        mRemote.transact(DUMP_SERVICE_TRANSACTION, data, null, IBinder.FLAG_ONEWAY);
9319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.recycle();
9329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
9339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void scheduleRegisteredReceiver(IIntentReceiver receiver, Intent intent,
93568d881cf2d2b252f6f795cd64d43e316a1d736e5Dianne Hackborn            int resultCode, String dataStr, Bundle extras, boolean ordered, boolean sticky)
9369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throws RemoteException {
9379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Parcel data = Parcel.obtain();
9389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInterfaceToken(IApplicationThread.descriptor);
9399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeStrongBinder(receiver.asBinder());
9409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        intent.writeToParcel(data, 0);
9419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInt(resultCode);
9429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeString(dataStr);
9439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeBundle(extras);
9449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInt(ordered ? 1 : 0);
94568d881cf2d2b252f6f795cd64d43e316a1d736e5Dianne Hackborn        data.writeInt(sticky ? 1 : 0);
9469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRemote.transact(SCHEDULE_REGISTERED_RECEIVER_TRANSACTION, data, null,
9479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                IBinder.FLAG_ONEWAY);
9489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.recycle();
9499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
9509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final void scheduleLowMemory() throws RemoteException {
9529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Parcel data = Parcel.obtain();
9539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInterfaceToken(IApplicationThread.descriptor);
9549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRemote.transact(SCHEDULE_LOW_MEMORY_TRANSACTION, data, null,
9559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                IBinder.FLAG_ONEWAY);
9569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.recycle();
9579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
9589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public final void scheduleActivityConfigurationChanged(
9609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            IBinder token) throws RemoteException {
9619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Parcel data = Parcel.obtain();
9629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeInterfaceToken(IApplicationThread.descriptor);
9639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.writeStrongBinder(token);
9649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRemote.transact(SCHEDULE_ACTIVITY_CONFIGURATION_CHANGED_TRANSACTION, data, null,
9659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                IBinder.FLAG_ONEWAY);
9669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        data.recycle();
9679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
9689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9699c8dd55a9d829c29a3feee9469d8c2f27a9f5516Dianne Hackborn    public void profilerControl(boolean start, String path,
9707eabe55db6b113f83c2cefcd06812648927de877Romain Guy            ParcelFileDescriptor fd, int profileType) throws RemoteException {
971f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project        Parcel data = Parcel.obtain();
972f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project        data.writeInterfaceToken(IApplicationThread.descriptor);
973f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project        data.writeInt(start ? 1 : 0);
9749a8c5cefcab3d5dec6ff63f0e99553e1aa9a4af8Romain Guy        data.writeInt(profileType);
975f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project        data.writeString(path);
9769c8dd55a9d829c29a3feee9469d8c2f27a9f5516Dianne Hackborn        if (fd != null) {
9779c8dd55a9d829c29a3feee9469d8c2f27a9f5516Dianne Hackborn            data.writeInt(1);
9789c8dd55a9d829c29a3feee9469d8c2f27a9f5516Dianne Hackborn            fd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
9799c8dd55a9d829c29a3feee9469d8c2f27a9f5516Dianne Hackborn        } else {
9809c8dd55a9d829c29a3feee9469d8c2f27a9f5516Dianne Hackborn            data.writeInt(0);
9819c8dd55a9d829c29a3feee9469d8c2f27a9f5516Dianne Hackborn        }
982f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project        mRemote.transact(PROFILER_CONTROL_TRANSACTION, data, null,
983f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project                IBinder.FLAG_ONEWAY);
984f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project        data.recycle();
985f5b4b98fada53d91c4c2ebeb5a1d33ccc95c94d2The Android Open Source Project    }
98606de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn
98706de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn    public void setSchedulingGroup(int group) throws RemoteException {
98806de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn        Parcel data = Parcel.obtain();
98906de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn        data.writeInterfaceToken(IApplicationThread.descriptor);
99006de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn        data.writeInt(group);
99106de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn        mRemote.transact(SET_SCHEDULING_GROUP_TRANSACTION, data, null,
99206de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn                IBinder.FLAG_ONEWAY);
99306de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn        data.recycle();
99406de2ea752171f52a4e6e6872cb3a0689e591dcbDianne Hackborn    }
9953025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn
9963025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn    public void getMemoryInfo(Debug.MemoryInfo outInfo) throws RemoteException {
9973025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn        Parcel data = Parcel.obtain();
9983025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn        Parcel reply = Parcel.obtain();
9993025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn        data.writeInterfaceToken(IApplicationThread.descriptor);
10003025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn        mRemote.transact(GET_MEMORY_INFO_TRANSACTION, data, reply, 0);
10013025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn        reply.readException();
10023025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn        outInfo.readFromParcel(reply);
10033025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn        data.recycle();
10043025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn        reply.recycle();
10053025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn    }
10064416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn
10074416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn    public void dispatchPackageBroadcast(int cmd, String[] packages) throws RemoteException {
10084416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn        Parcel data = Parcel.obtain();
10094416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn        data.writeInterfaceToken(IApplicationThread.descriptor);
10104416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn        data.writeInt(cmd);
10114416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn        data.writeStringArray(packages);
10124416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn        mRemote.transact(DISPATCH_PACKAGE_BROADCAST_TRANSACTION, data, null,
10134416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn                IBinder.FLAG_ONEWAY);
10144416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn        data.recycle();
10154416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn
10164416c3d6e4becd9ed39b89a03db0239c8225a135Dianne Hackborn    }
10179d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn
10189d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn    public void scheduleCrash(String msg) throws RemoteException {
10199d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn        Parcel data = Parcel.obtain();
10209d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn        data.writeInterfaceToken(IApplicationThread.descriptor);
10219d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn        data.writeString(msg);
10229d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn        mRemote.transact(SCHEDULE_CRASH_TRANSACTION, data, null,
10239d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn                IBinder.FLAG_ONEWAY);
10249d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn        data.recycle();
10259d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn
10269d39d0cb361c5d3bba04a6bacf299be2162a6e92Dianne Hackborn    }
1027824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden
1028824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden    public void dumpHeap(boolean managed, String path,
1029824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden            ParcelFileDescriptor fd) throws RemoteException {
1030824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden        Parcel data = Parcel.obtain();
1031824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden        data.writeInterfaceToken(IApplicationThread.descriptor);
1032824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden        data.writeInt(managed ? 1 : 0);
1033824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden        data.writeString(path);
1034824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden        if (fd != null) {
1035824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden            data.writeInt(1);
1036824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden            fd.writeToParcel(data, Parcelable.PARCELABLE_WRITE_RETURN_VALUE);
1037824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden        } else {
1038824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden            data.writeInt(0);
1039824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden        }
1040824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden        mRemote.transact(DUMP_HEAP_TRANSACTION, data, null,
1041824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden                IBinder.FLAG_ONEWAY);
1042824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden        data.recycle();
1043824c510752fd6a30cdba5ed7324cb80a5043ce26Andy McFadden    }
1044625ac271f80777668f832a344486a6fcdc06d0aeDianne Hackborn
104530d7189067524000c738c188c4ff91f84f474d25Dianne Hackborn    public void dumpActivity(FileDescriptor fd, IBinder token, String prefix, String[] args)
1046625ac271f80777668f832a344486a6fcdc06d0aeDianne Hackborn            throws RemoteException {
1047625ac271f80777668f832a344486a6fcdc06d0aeDianne Hackborn        Parcel data = Parcel.obtain();
1048625ac271f80777668f832a344486a6fcdc06d0aeDianne Hackborn        data.writeInterfaceToken(IApplicationThread.descriptor);
1049625ac271f80777668f832a344486a6fcdc06d0aeDianne Hackborn        data.writeFileDescriptor(fd);
1050625ac271f80777668f832a344486a6fcdc06d0aeDianne Hackborn        data.writeStrongBinder(token);
105130d7189067524000c738c188c4ff91f84f474d25Dianne Hackborn        data.writeString(prefix);
1052625ac271f80777668f832a344486a6fcdc06d0aeDianne Hackborn        data.writeStringArray(args);
1053e17aeb31030cfeed339a39a107912ad5e9178390Dianne Hackborn        mRemote.transact(DUMP_ACTIVITY_TRANSACTION, data, null, IBinder.FLAG_ONEWAY);
1054625ac271f80777668f832a344486a6fcdc06d0aeDianne Hackborn        data.recycle();
1055625ac271f80777668f832a344486a6fcdc06d0aeDianne Hackborn    }
105654d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov
105754d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov    public void setCoreSettings(Bundle coreSettings) throws RemoteException {
105854d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov        Parcel data = Parcel.obtain();
105954d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov        data.writeInterfaceToken(IApplicationThread.descriptor);
106054d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov        data.writeBundle(coreSettings);
1061e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn        mRemote.transact(SET_CORE_SETTINGS_TRANSACTION, data, null, IBinder.FLAG_ONEWAY);
1062e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn    }
1063e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn
1064e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn    public void updatePackageCompatibilityInfo(String pkg, CompatibilityInfo info)
1065e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn            throws RemoteException {
1066e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn        Parcel data = Parcel.obtain();
1067e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn        data.writeInterfaceToken(IApplicationThread.descriptor);
1068e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn        data.writeString(pkg);
1069e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn        info.writeToParcel(data, 0);
1070e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn        mRemote.transact(UPDATE_PACKAGE_COMPATIBILITY_INFO_TRANSACTION, data, null,
1071e2515eebf42c763c0a2d9f873a153711778cfc17Dianne Hackborn                IBinder.FLAG_ONEWAY);
107254d068ec6af0ee6d261a135400efe6816c6f5ffeSvetoslav Ganov    }
1073ce86ba86df61de8b34b226a4eb6c23ec33e866e0Dianne Hackborn
1074ce86ba86df61de8b34b226a4eb6c23ec33e866e0Dianne Hackborn    public void scheduleTrimMemory(int level) throws RemoteException {
1075ce86ba86df61de8b34b226a4eb6c23ec33e866e0Dianne Hackborn        Parcel data = Parcel.obtain();
1076ce86ba86df61de8b34b226a4eb6c23ec33e866e0Dianne Hackborn        data.writeInterfaceToken(IApplicationThread.descriptor);
1077ce86ba86df61de8b34b226a4eb6c23ec33e866e0Dianne Hackborn        data.writeInt(level);
1078ce86ba86df61de8b34b226a4eb6c23ec33e866e0Dianne Hackborn        mRemote.transact(SCHEDULE_TRIM_MEMORY_TRANSACTION, data, null,
1079ce86ba86df61de8b34b226a4eb6c23ec33e866e0Dianne Hackborn                IBinder.FLAG_ONEWAY);
1080ce86ba86df61de8b34b226a4eb6c23ec33e866e0Dianne Hackborn    }
10810e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn
1082b437e090ec03a2bab10bdfcb9484577a7f34e157Dianne Hackborn    public Debug.MemoryInfo dumpMemInfo(FileDescriptor fd, boolean checkin, boolean all,
1083b437e090ec03a2bab10bdfcb9484577a7f34e157Dianne Hackborn            String[] args) throws RemoteException {
10840e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn        Parcel data = Parcel.obtain();
10850e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn        Parcel reply = Parcel.obtain();
10860e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn        data.writeInterfaceToken(IApplicationThread.descriptor);
10870e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn        data.writeFileDescriptor(fd);
1088b437e090ec03a2bab10bdfcb9484577a7f34e157Dianne Hackborn        data.writeInt(checkin ? 1 : 0);
1089b437e090ec03a2bab10bdfcb9484577a7f34e157Dianne Hackborn        data.writeInt(all ? 1 : 0);
10900e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn        data.writeStringArray(args);
10910e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn        mRemote.transact(DUMP_MEM_INFO_TRANSACTION, data, reply, 0);
10920e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn        reply.readException();
10930e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn        Debug.MemoryInfo info = new Debug.MemoryInfo();
10940e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn        info.readFromParcel(reply);
10950e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn        data.recycle();
10960e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn        reply.recycle();
10970e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn        return info;
10980e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn    }
10990e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn
11000e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn    public void dumpGfxInfo(FileDescriptor fd, String[] args) throws RemoteException {
11010e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn        Parcel data = Parcel.obtain();
11020e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn        data.writeInterfaceToken(IApplicationThread.descriptor);
11030e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn        data.writeFileDescriptor(fd);
11040e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn        data.writeStringArray(args);
11050e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn        mRemote.transact(DUMP_GFX_INFO_TRANSACTION, data, null, IBinder.FLAG_ONEWAY);
11060e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn        data.recycle();
11070e3328fbdd3845b0e2bec364e951498eaee6b079Dianne Hackborn    }
11089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
1109