Loading services/java/com/android/server/MountService.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -187,7 +187,7 @@ class MountService extends IMountService.Stub public static final int FstrimCompleted = 700; public static final int FstrimCompleted = 700; } } private Context mContext; private final Context mContext; private NativeDaemonConnector mConnector; private NativeDaemonConnector mConnector; private final Object mVolumesLock = new Object(); private final Object mVolumesLock = new Object(); Loading services/java/com/android/server/SystemServer.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -60,6 +60,7 @@ import com.android.server.media.MediaRouterService; import com.android.server.net.NetworkPolicyManagerService; import com.android.server.net.NetworkPolicyManagerService; import com.android.server.net.NetworkStatsService; import com.android.server.net.NetworkStatsService; import com.android.server.os.SchedulingPolicyService; import com.android.server.os.SchedulingPolicyService; import com.android.server.pm.BackgroundDexOptService; import com.android.server.pm.Installer; import com.android.server.pm.Installer; import com.android.server.pm.PackageManagerService; import com.android.server.pm.PackageManagerService; import com.android.server.pm.UserManagerService; import com.android.server.pm.UserManagerService; Loading Loading @@ -815,6 +816,13 @@ class ServerThread { } catch (Throwable e) { } catch (Throwable e) { reportWtf("starting MediaRouterService", e); reportWtf("starting MediaRouterService", e); } } try { Slog.i(TAG, "BackgroundDexOptService"); new BackgroundDexOptService(context); } catch (Throwable e) { reportWtf("starting BackgroundDexOptService", e); } } } } } Loading services/java/com/android/server/pm/BackgroundDexOptService.java 0 → 100644 +91 −0 Original line number Original line Diff line number Diff line /* * Copyright (C) 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.server.pm; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.ServiceManager; import android.os.UserHandle; import android.util.Log; import java.util.HashSet; import java.util.concurrent.atomic.AtomicBoolean; /** * {@hide} */ public class BackgroundDexOptService { static final String TAG = "BackgroundDexOptService"; private final BroadcastReceiver mIdleMaintenanceReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (Intent.ACTION_IDLE_MAINTENANCE_START.equals(action)) { onIdleStart(); } else if (Intent.ACTION_IDLE_MAINTENANCE_END.equals(action)) { onIdleStop(); } } }; final PackageManagerService mPackageManager; final AtomicBoolean mIdleTime = new AtomicBoolean(false); public BackgroundDexOptService(Context context) { mPackageManager = (PackageManagerService)ServiceManager.getService("package"); IntentFilter idleMaintenanceFilter = new IntentFilter(); idleMaintenanceFilter.addAction(Intent.ACTION_IDLE_MAINTENANCE_START); idleMaintenanceFilter.addAction(Intent.ACTION_IDLE_MAINTENANCE_END); context.registerReceiverAsUser(mIdleMaintenanceReceiver, UserHandle.ALL, idleMaintenanceFilter, null, null); } public boolean onIdleStart() { Log.i(TAG, "onIdleStart"); if (mPackageManager.isStorageLow()) { return false; } final HashSet<String> pkgs = mPackageManager.getPackagesThatNeedDexOpt(); if (pkgs == null) { return false; } mIdleTime.set(true); new Thread("BackgroundDexOptService_DexOpter") { @Override public void run() { for (String pkg : pkgs) { if (!mIdleTime.get()) { break; } mPackageManager.performDexOpt(pkg, false); } } }.start(); return true; } public void onIdleStop() { Log.i(TAG, "onIdleStop"); mIdleTime.set(false); } } services/java/com/android/server/pm/PackageManagerService.java +83 −1 Original line number Original line Diff line number Diff line Loading @@ -614,6 +614,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } if (mBackgroundWriteRunning.compareAndSet(false, true)) { if (mBackgroundWriteRunning.compareAndSet(false, true)) { new Thread("PackageUsage_DiskWriter") { new Thread("PackageUsage_DiskWriter") { @Override public void run() { public void run() { try { try { write(true); write(true); Loading Loading @@ -1688,10 +1689,12 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public boolean isFirstBoot() { public boolean isFirstBoot() { return !mRestoredSettings; return !mRestoredSettings; } } @Override public boolean isOnlyCoreApps() { public boolean isOnlyCoreApps() { return mOnlyCore; return mOnlyCore; } } Loading Loading @@ -1989,6 +1992,7 @@ public class PackageManagerService extends IPackageManager.Stub { state, userId); state, userId); } } @Override public boolean isPackageAvailable(String packageName, int userId) { public boolean isPackageAvailable(String packageName, int userId) { if (!sUserManager.exists(userId)) return false; if (!sUserManager.exists(userId)) return false; enforceCrossUserPermission(Binder.getCallingUid(), userId, false, "is package available"); enforceCrossUserPermission(Binder.getCallingUid(), userId, false, "is package available"); Loading Loading @@ -2026,6 +2030,7 @@ public class PackageManagerService extends IPackageManager.Stub { return null; return null; } } @Override public String[] currentToCanonicalPackageNames(String[] names) { public String[] currentToCanonicalPackageNames(String[] names) { String[] out = new String[names.length]; String[] out = new String[names.length]; // reader // reader Loading @@ -2038,6 +2043,7 @@ public class PackageManagerService extends IPackageManager.Stub { return out; return out; } } @Override public String[] canonicalToCurrentPackageNames(String[] names) { public String[] canonicalToCurrentPackageNames(String[] names) { String[] out = new String[names.length]; String[] out = new String[names.length]; // reader // reader Loading Loading @@ -2098,6 +2104,7 @@ public class PackageManagerService extends IPackageManager.Stub { return pi; return pi; } } @Override public PermissionInfo getPermissionInfo(String name, int flags) { public PermissionInfo getPermissionInfo(String name, int flags) { // reader // reader synchronized (mPackages) { synchronized (mPackages) { Loading @@ -2109,6 +2116,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public List<PermissionInfo> queryPermissionsByGroup(String group, int flags) { public List<PermissionInfo> queryPermissionsByGroup(String group, int flags) { // reader // reader synchronized (mPackages) { synchronized (mPackages) { Loading @@ -2132,6 +2140,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public PermissionGroupInfo getPermissionGroupInfo(String name, int flags) { public PermissionGroupInfo getPermissionGroupInfo(String name, int flags) { // reader // reader synchronized (mPackages) { synchronized (mPackages) { Loading @@ -2140,6 +2149,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public List<PermissionGroupInfo> getAllPermissionGroups(int flags) { public List<PermissionGroupInfo> getAllPermissionGroups(int flags) { // reader // reader synchronized (mPackages) { synchronized (mPackages) { Loading Loading @@ -2225,6 +2235,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } @Override public void freeStorageAndNotify(final long freeStorageSize, final IPackageDataObserver observer) { public void freeStorageAndNotify(final long freeStorageSize, final IPackageDataObserver observer) { mContext.enforceCallingOrSelfPermission( mContext.enforceCallingOrSelfPermission( android.Manifest.permission.CLEAR_APP_CACHE, null); android.Manifest.permission.CLEAR_APP_CACHE, null); Loading @@ -2250,6 +2261,7 @@ public class PackageManagerService extends IPackageManager.Stub { }); }); } } @Override public void freeStorage(final long freeStorageSize, final IntentSender pi) { public void freeStorage(final long freeStorageSize, final IntentSender pi) { mContext.enforceCallingOrSelfPermission( mContext.enforceCallingOrSelfPermission( android.Manifest.permission.CLEAR_APP_CACHE, null); android.Manifest.permission.CLEAR_APP_CACHE, null); Loading Loading @@ -2353,6 +2365,7 @@ public class PackageManagerService extends IPackageManager.Stub { return null; return null; } } @Override public String[] getSystemSharedLibraryNames() { public String[] getSystemSharedLibraryNames() { Set<String> libSet; Set<String> libSet; synchronized (mPackages) { synchronized (mPackages) { Loading @@ -2367,6 +2380,7 @@ public class PackageManagerService extends IPackageManager.Stub { return null; return null; } } @Override public FeatureInfo[] getSystemAvailableFeatures() { public FeatureInfo[] getSystemAvailableFeatures() { Collection<FeatureInfo> featSet; Collection<FeatureInfo> featSet; synchronized (mPackages) { synchronized (mPackages) { Loading @@ -2385,6 +2399,7 @@ public class PackageManagerService extends IPackageManager.Stub { return null; return null; } } @Override public boolean hasSystemFeature(String name) { public boolean hasSystemFeature(String name) { synchronized (mPackages) { synchronized (mPackages) { return mAvailableFeatures.containsKey(name); return mAvailableFeatures.containsKey(name); Loading @@ -2399,6 +2414,7 @@ public class PackageManagerService extends IPackageManager.Stub { + " is not privileged to communicate with user=" + userId); + " is not privileged to communicate with user=" + userId); } } @Override public int checkPermission(String permName, String pkgName) { public int checkPermission(String permName, String pkgName) { synchronized (mPackages) { synchronized (mPackages) { PackageParser.Package p = mPackages.get(pkgName); PackageParser.Package p = mPackages.get(pkgName); Loading @@ -2416,6 +2432,7 @@ public class PackageManagerService extends IPackageManager.Stub { return PackageManager.PERMISSION_DENIED; return PackageManager.PERMISSION_DENIED; } } @Override public int checkUidPermission(String permName, int uid) { public int checkUidPermission(String permName, int uid) { synchronized (mPackages) { synchronized (mPackages) { Object obj = mSettings.getUserIdLPr(UserHandle.getAppId(uid)); Object obj = mSettings.getUserIdLPr(UserHandle.getAppId(uid)); Loading Loading @@ -2561,18 +2578,21 @@ public class PackageManagerService extends IPackageManager.Stub { return added; return added; } } @Override public boolean addPermission(PermissionInfo info) { public boolean addPermission(PermissionInfo info) { synchronized (mPackages) { synchronized (mPackages) { return addPermissionLocked(info, false); return addPermissionLocked(info, false); } } } } @Override public boolean addPermissionAsync(PermissionInfo info) { public boolean addPermissionAsync(PermissionInfo info) { synchronized (mPackages) { synchronized (mPackages) { return addPermissionLocked(info, true); return addPermissionLocked(info, true); } } } } @Override public void removePermission(String name) { public void removePermission(String name) { synchronized (mPackages) { synchronized (mPackages) { checkPermissionTreeLP(name); checkPermissionTreeLP(name); Loading Loading @@ -2617,6 +2637,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public void grantPermission(String packageName, String permissionName) { public void grantPermission(String packageName, String permissionName) { mContext.enforceCallingOrSelfPermission( mContext.enforceCallingOrSelfPermission( android.Manifest.permission.GRANT_REVOKE_PERMISSIONS, null); android.Manifest.permission.GRANT_REVOKE_PERMISSIONS, null); Loading Loading @@ -2646,6 +2667,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public void revokePermission(String packageName, String permissionName) { public void revokePermission(String packageName, String permissionName) { int changedAppId = -1; int changedAppId = -1; Loading Loading @@ -2704,12 +2726,14 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public boolean isProtectedBroadcast(String actionName) { public boolean isProtectedBroadcast(String actionName) { synchronized (mPackages) { synchronized (mPackages) { return mProtectedBroadcasts.contains(actionName); return mProtectedBroadcasts.contains(actionName); } } } } @Override public int checkSignatures(String pkg1, String pkg2) { public int checkSignatures(String pkg1, String pkg2) { synchronized (mPackages) { synchronized (mPackages) { final PackageParser.Package p1 = mPackages.get(pkg1); final PackageParser.Package p1 = mPackages.get(pkg1); Loading @@ -2722,6 +2746,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public int checkUidSignatures(int uid1, int uid2) { public int checkUidSignatures(int uid1, int uid2) { // Map to base uids. // Map to base uids. uid1 = UserHandle.getAppId(uid1); uid1 = UserHandle.getAppId(uid1); Loading Loading @@ -2782,6 +2807,7 @@ public class PackageManagerService extends IPackageManager.Stub { return PackageManager.SIGNATURE_NO_MATCH; return PackageManager.SIGNATURE_NO_MATCH; } } @Override public String[] getPackagesForUid(int uid) { public String[] getPackagesForUid(int uid) { uid = UserHandle.getAppId(uid); uid = UserHandle.getAppId(uid); // reader // reader Loading @@ -2805,6 +2831,7 @@ public class PackageManagerService extends IPackageManager.Stub { return null; return null; } } @Override public String getNameForUid(int uid) { public String getNameForUid(int uid) { // reader // reader synchronized (mPackages) { synchronized (mPackages) { Loading @@ -2820,6 +2847,7 @@ public class PackageManagerService extends IPackageManager.Stub { return null; return null; } } @Override public int getUidForSharedUser(String sharedUserName) { public int getUidForSharedUser(String sharedUserName) { if(sharedUserName == null) { if(sharedUserName == null) { return -1; return -1; Loading @@ -2834,6 +2862,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public int getFlagsForUid(int uid) { public int getFlagsForUid(int uid) { synchronized (mPackages) { synchronized (mPackages) { Object obj = mSettings.getUserIdLPr(UserHandle.getAppId(uid)); Object obj = mSettings.getUserIdLPr(UserHandle.getAppId(uid)); Loading Loading @@ -3618,6 +3647,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public List<ProviderInfo> queryContentProviders(String processName, public List<ProviderInfo> queryContentProviders(String processName, int uid, int flags) { int uid, int flags) { ArrayList<ProviderInfo> finalList = null; ArrayList<ProviderInfo> finalList = null; Loading Loading @@ -3655,6 +3685,7 @@ public class PackageManagerService extends IPackageManager.Stub { return finalList; return finalList; } } @Override public InstrumentationInfo getInstrumentationInfo(ComponentName name, public InstrumentationInfo getInstrumentationInfo(ComponentName name, int flags) { int flags) { // reader // reader Loading @@ -3664,6 +3695,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public List<InstrumentationInfo> queryInstrumentation(String targetPackage, public List<InstrumentationInfo> queryInstrumentation(String targetPackage, int flags) { int flags) { ArrayList<InstrumentationInfo> finalList = ArrayList<InstrumentationInfo> finalList = Loading Loading @@ -4166,6 +4198,10 @@ public class PackageManagerService extends IPackageManager.Stub { @Override @Override public boolean performDexOpt(String packageName) { public boolean performDexOpt(String packageName) { enforceSystemOrRoot("Only the system can request dexopt be performed"); enforceSystemOrRoot("Only the system can request dexopt be performed"); return performDexOpt(packageName, true); } public boolean performDexOpt(String packageName, boolean updateUsage) { PackageParser.Package p; PackageParser.Package p; synchronized (mPackages) { synchronized (mPackages) { Loading @@ -4173,7 +4209,9 @@ public class PackageManagerService extends IPackageManager.Stub { if (p == null) { if (p == null) { return false; return false; } } if (updateUsage) { p.mLastPackageUsageTimeInMills = System.currentTimeMillis(); p.mLastPackageUsageTimeInMills = System.currentTimeMillis(); } mPackageUsage.write(); mPackageUsage.write(); if (!p.mDexOptNeeded) { if (!p.mDexOptNeeded) { return false; return false; Loading @@ -4186,6 +4224,25 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } public HashSet<String> getPackagesThatNeedDexOpt() { HashSet<String> pkgs = null; synchronized (mPackages) { for (PackageParser.Package p : mPackages.values()) { if (DEBUG_DEXOPT) { Log.i(TAG, p.packageName + " mDexOptNeeded=" + p.mDexOptNeeded); } if (!p.mDexOptNeeded) { continue; } if (pkgs == null) { pkgs = new HashSet<String>(); } pkgs.add(p.packageName); } } return pkgs; } public void shutdown() { public void shutdown() { mPackageUsage.write(true); mPackageUsage.write(true); } } Loading Loading @@ -6920,6 +6977,7 @@ public class PackageManagerService extends IPackageManager.Stub { return mMediaMounted || Environment.isExternalStorageEmulated(); return mMediaMounted || Environment.isExternalStorageEmulated(); } } @Override public PackageCleanItem nextPackageToClean(PackageCleanItem lastPackage) { public PackageCleanItem nextPackageToClean(PackageCleanItem lastPackage) { // writer // writer synchronized (mPackages) { synchronized (mPackages) { Loading Loading @@ -7099,6 +7157,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } /* Called when a downloaded package installation has been confirmed by the user */ /* Called when a downloaded package installation has been confirmed by the user */ @Override public void installPackage( public void installPackage( final Uri packageURI, final IPackageInstallObserver observer, final int flags, final Uri packageURI, final IPackageInstallObserver observer, final int flags, final String installerPackageName) { final String installerPackageName) { Loading @@ -7116,6 +7175,7 @@ public class PackageManagerService extends IPackageManager.Stub { installerPackageName, verificationParams, encryptionParams); installerPackageName, verificationParams, encryptionParams); } } @Override public void installPackageWithVerificationAndEncryption(Uri packageURI, public void installPackageWithVerificationAndEncryption(Uri packageURI, IPackageInstallObserver observer, int flags, String installerPackageName, IPackageInstallObserver observer, int flags, String installerPackageName, VerificationParams verificationParams, ContainerEncryptionParams encryptionParams) { VerificationParams verificationParams, ContainerEncryptionParams encryptionParams) { Loading Loading @@ -7482,6 +7542,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public void finishPackageInstall(int token) { public void finishPackageInstall(int token) { enforceSystemOrRoot("Only the system is allowed to finish installs"); enforceSystemOrRoot("Only the system is allowed to finish installs"); Loading Loading @@ -7553,6 +7614,7 @@ public class PackageManagerService extends IPackageManager.Stub { -1); -1); } } @Override public void setInstallerPackageName(String targetPackage, String installerPackageName) { public void setInstallerPackageName(String targetPackage, String installerPackageName) { final int uid = Binder.getCallingUid(); final int uid = Binder.getCallingUid(); // writer // writer Loading Loading @@ -10441,6 +10503,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public void deleteApplicationCacheFiles(final String packageName, public void deleteApplicationCacheFiles(final String packageName, final IPackageDataObserver observer) { final IPackageDataObserver observer) { mContext.enforceCallingOrSelfPermission( mContext.enforceCallingOrSelfPermission( Loading Loading @@ -10493,6 +10556,7 @@ public class PackageManagerService extends IPackageManager.Stub { return true; return true; } } @Override public void getPackageSizeInfo(final String packageName, int userHandle, public void getPackageSizeInfo(final String packageName, int userHandle, final IPackageStatsObserver observer) { final IPackageStatsObserver observer) { mContext.enforceCallingOrSelfPermission( mContext.enforceCallingOrSelfPermission( Loading Loading @@ -10569,14 +10633,17 @@ public class PackageManagerService extends IPackageManager.Stub { } } @Override public void addPackageToPreferred(String packageName) { public void addPackageToPreferred(String packageName) { Slog.w(TAG, "addPackageToPreferred: this is now a no-op"); Slog.w(TAG, "addPackageToPreferred: this is now a no-op"); } } @Override public void removePackageFromPreferred(String packageName) { public void removePackageFromPreferred(String packageName) { Slog.w(TAG, "removePackageFromPreferred: this is now a no-op"); Slog.w(TAG, "removePackageFromPreferred: this is now a no-op"); } } @Override public List<PackageInfo> getPreferredPackages(int flags) { public List<PackageInfo> getPreferredPackages(int flags) { return new ArrayList<PackageInfo>(); return new ArrayList<PackageInfo>(); } } Loading Loading @@ -10604,6 +10671,7 @@ public class PackageManagerService extends IPackageManager.Stub { return Build.VERSION_CODES.CUR_DEVELOPMENT; return Build.VERSION_CODES.CUR_DEVELOPMENT; } } @Override public void addPreferredActivity(IntentFilter filter, int match, public void addPreferredActivity(IntentFilter filter, int match, ComponentName[] set, ComponentName activity, int userId) { ComponentName[] set, ComponentName activity, int userId) { addPreferredActivityInternal(filter, match, set, activity, true, userId); addPreferredActivityInternal(filter, match, set, activity, true, userId); Loading Loading @@ -10640,6 +10708,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public void replacePreferredActivity(IntentFilter filter, int match, public void replacePreferredActivity(IntentFilter filter, int match, ComponentName[] set, ComponentName activity) { ComponentName[] set, ComponentName activity) { if (filter.countActions() != 1) { if (filter.countActions() != 1) { Loading Loading @@ -10696,6 +10765,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public void clearPackagePreferredActivities(String packageName) { public void clearPackagePreferredActivities(String packageName) { final int uid = Binder.getCallingUid(); final int uid = Binder.getCallingUid(); // writer // writer Loading Loading @@ -10759,6 +10829,7 @@ public class PackageManagerService extends IPackageManager.Stub { return changed; return changed; } } @Override public void resetPreferredActivities(int userId) { public void resetPreferredActivities(int userId) { mContext.enforceCallingOrSelfPermission( mContext.enforceCallingOrSelfPermission( android.Manifest.permission.SET_PREFERRED_APPLICATIONS, null); android.Manifest.permission.SET_PREFERRED_APPLICATIONS, null); Loading @@ -10772,6 +10843,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public int getPreferredActivities(List<IntentFilter> outFilters, public int getPreferredActivities(List<IntentFilter> outFilters, List<ComponentName> outActivities, String packageName) { List<ComponentName> outActivities, String packageName) { Loading Loading @@ -10983,6 +11055,7 @@ public class PackageManagerService extends IPackageManager.Stub { new int[] {UserHandle.getUserId(packageUid)}); new int[] {UserHandle.getUserId(packageUid)}); } } @Override public void setPackageStoppedState(String packageName, boolean stopped, int userId) { public void setPackageStoppedState(String packageName, boolean stopped, int userId) { if (!sUserManager.exists(userId)) return; if (!sUserManager.exists(userId)) return; final int uid = Binder.getCallingUid(); final int uid = Binder.getCallingUid(); Loading @@ -10999,6 +11072,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public String getInstallerPackageName(String packageName) { public String getInstallerPackageName(String packageName) { // reader // reader synchronized (mPackages) { synchronized (mPackages) { Loading Loading @@ -11028,6 +11102,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public void enterSafeMode() { public void enterSafeMode() { enforceSystemOrRoot("Only the system can request entering safe mode"); enforceSystemOrRoot("Only the system can request entering safe mode"); Loading @@ -11036,6 +11111,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public void systemReady() { public void systemReady() { mSystemReady = true; mSystemReady = true; Loading Loading @@ -11081,10 +11157,12 @@ public class PackageManagerService extends IPackageManager.Stub { sUserManager.systemReady(); sUserManager.systemReady(); } } @Override public boolean isSafeMode() { public boolean isSafeMode() { return mSafeMode; return mSafeMode; } } @Override public boolean hasSystemUidErrors() { public boolean hasSystemUidErrors() { return mHasSystemUidErrors; return mHasSystemUidErrors; } } Loading Loading @@ -11559,6 +11637,7 @@ public class PackageManagerService extends IPackageManager.Stub { /* /* * Update media status on PackageManager. * Update media status on PackageManager. */ */ @Override public void updateExternalMediaStatus(final boolean mediaStatus, final boolean reportStatus) { public void updateExternalMediaStatus(final boolean mediaStatus, final boolean reportStatus) { int callingUid = Binder.getCallingUid(); int callingUid = Binder.getCallingUid(); if (callingUid != 0 && callingUid != Process.SYSTEM_UID) { if (callingUid != 0 && callingUid != Process.SYSTEM_UID) { Loading Loading @@ -12150,6 +12229,7 @@ public class PackageManagerService extends IPackageManager.Stub { }); }); } } @Override public boolean setInstallLocation(int loc) { public boolean setInstallLocation(int loc) { mContext.enforceCallingOrSelfPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS, mContext.enforceCallingOrSelfPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS, null); null); Loading @@ -12165,6 +12245,7 @@ public class PackageManagerService extends IPackageManager.Stub { return false; return false; } } @Override public int getInstallLocation() { public int getInstallLocation() { return android.provider.Settings.Global.getInt(mContext.getContentResolver(), return android.provider.Settings.Global.getInt(mContext.getContentResolver(), android.provider.Settings.Global.DEFAULT_INSTALL_LOCATION, android.provider.Settings.Global.DEFAULT_INSTALL_LOCATION, Loading Loading @@ -12236,6 +12317,7 @@ public class PackageManagerService extends IPackageManager.Stub { return true; return true; } } @Override public boolean isStorageLow() { public boolean isStorageLow() { final long token = Binder.clearCallingIdentity(); final long token = Binder.clearCallingIdentity(); try { try { Loading
services/java/com/android/server/MountService.java +1 −1 Original line number Original line Diff line number Diff line Loading @@ -187,7 +187,7 @@ class MountService extends IMountService.Stub public static final int FstrimCompleted = 700; public static final int FstrimCompleted = 700; } } private Context mContext; private final Context mContext; private NativeDaemonConnector mConnector; private NativeDaemonConnector mConnector; private final Object mVolumesLock = new Object(); private final Object mVolumesLock = new Object(); Loading
services/java/com/android/server/SystemServer.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -60,6 +60,7 @@ import com.android.server.media.MediaRouterService; import com.android.server.net.NetworkPolicyManagerService; import com.android.server.net.NetworkPolicyManagerService; import com.android.server.net.NetworkStatsService; import com.android.server.net.NetworkStatsService; import com.android.server.os.SchedulingPolicyService; import com.android.server.os.SchedulingPolicyService; import com.android.server.pm.BackgroundDexOptService; import com.android.server.pm.Installer; import com.android.server.pm.Installer; import com.android.server.pm.PackageManagerService; import com.android.server.pm.PackageManagerService; import com.android.server.pm.UserManagerService; import com.android.server.pm.UserManagerService; Loading Loading @@ -815,6 +816,13 @@ class ServerThread { } catch (Throwable e) { } catch (Throwable e) { reportWtf("starting MediaRouterService", e); reportWtf("starting MediaRouterService", e); } } try { Slog.i(TAG, "BackgroundDexOptService"); new BackgroundDexOptService(context); } catch (Throwable e) { reportWtf("starting BackgroundDexOptService", e); } } } } } Loading
services/java/com/android/server/pm/BackgroundDexOptService.java 0 → 100644 +91 −0 Original line number Original line Diff line number Diff line /* * Copyright (C) 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.server.pm; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.ServiceManager; import android.os.UserHandle; import android.util.Log; import java.util.HashSet; import java.util.concurrent.atomic.AtomicBoolean; /** * {@hide} */ public class BackgroundDexOptService { static final String TAG = "BackgroundDexOptService"; private final BroadcastReceiver mIdleMaintenanceReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (Intent.ACTION_IDLE_MAINTENANCE_START.equals(action)) { onIdleStart(); } else if (Intent.ACTION_IDLE_MAINTENANCE_END.equals(action)) { onIdleStop(); } } }; final PackageManagerService mPackageManager; final AtomicBoolean mIdleTime = new AtomicBoolean(false); public BackgroundDexOptService(Context context) { mPackageManager = (PackageManagerService)ServiceManager.getService("package"); IntentFilter idleMaintenanceFilter = new IntentFilter(); idleMaintenanceFilter.addAction(Intent.ACTION_IDLE_MAINTENANCE_START); idleMaintenanceFilter.addAction(Intent.ACTION_IDLE_MAINTENANCE_END); context.registerReceiverAsUser(mIdleMaintenanceReceiver, UserHandle.ALL, idleMaintenanceFilter, null, null); } public boolean onIdleStart() { Log.i(TAG, "onIdleStart"); if (mPackageManager.isStorageLow()) { return false; } final HashSet<String> pkgs = mPackageManager.getPackagesThatNeedDexOpt(); if (pkgs == null) { return false; } mIdleTime.set(true); new Thread("BackgroundDexOptService_DexOpter") { @Override public void run() { for (String pkg : pkgs) { if (!mIdleTime.get()) { break; } mPackageManager.performDexOpt(pkg, false); } } }.start(); return true; } public void onIdleStop() { Log.i(TAG, "onIdleStop"); mIdleTime.set(false); } }
services/java/com/android/server/pm/PackageManagerService.java +83 −1 Original line number Original line Diff line number Diff line Loading @@ -614,6 +614,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } if (mBackgroundWriteRunning.compareAndSet(false, true)) { if (mBackgroundWriteRunning.compareAndSet(false, true)) { new Thread("PackageUsage_DiskWriter") { new Thread("PackageUsage_DiskWriter") { @Override public void run() { public void run() { try { try { write(true); write(true); Loading Loading @@ -1688,10 +1689,12 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public boolean isFirstBoot() { public boolean isFirstBoot() { return !mRestoredSettings; return !mRestoredSettings; } } @Override public boolean isOnlyCoreApps() { public boolean isOnlyCoreApps() { return mOnlyCore; return mOnlyCore; } } Loading Loading @@ -1989,6 +1992,7 @@ public class PackageManagerService extends IPackageManager.Stub { state, userId); state, userId); } } @Override public boolean isPackageAvailable(String packageName, int userId) { public boolean isPackageAvailable(String packageName, int userId) { if (!sUserManager.exists(userId)) return false; if (!sUserManager.exists(userId)) return false; enforceCrossUserPermission(Binder.getCallingUid(), userId, false, "is package available"); enforceCrossUserPermission(Binder.getCallingUid(), userId, false, "is package available"); Loading Loading @@ -2026,6 +2030,7 @@ public class PackageManagerService extends IPackageManager.Stub { return null; return null; } } @Override public String[] currentToCanonicalPackageNames(String[] names) { public String[] currentToCanonicalPackageNames(String[] names) { String[] out = new String[names.length]; String[] out = new String[names.length]; // reader // reader Loading @@ -2038,6 +2043,7 @@ public class PackageManagerService extends IPackageManager.Stub { return out; return out; } } @Override public String[] canonicalToCurrentPackageNames(String[] names) { public String[] canonicalToCurrentPackageNames(String[] names) { String[] out = new String[names.length]; String[] out = new String[names.length]; // reader // reader Loading Loading @@ -2098,6 +2104,7 @@ public class PackageManagerService extends IPackageManager.Stub { return pi; return pi; } } @Override public PermissionInfo getPermissionInfo(String name, int flags) { public PermissionInfo getPermissionInfo(String name, int flags) { // reader // reader synchronized (mPackages) { synchronized (mPackages) { Loading @@ -2109,6 +2116,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public List<PermissionInfo> queryPermissionsByGroup(String group, int flags) { public List<PermissionInfo> queryPermissionsByGroup(String group, int flags) { // reader // reader synchronized (mPackages) { synchronized (mPackages) { Loading @@ -2132,6 +2140,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public PermissionGroupInfo getPermissionGroupInfo(String name, int flags) { public PermissionGroupInfo getPermissionGroupInfo(String name, int flags) { // reader // reader synchronized (mPackages) { synchronized (mPackages) { Loading @@ -2140,6 +2149,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public List<PermissionGroupInfo> getAllPermissionGroups(int flags) { public List<PermissionGroupInfo> getAllPermissionGroups(int flags) { // reader // reader synchronized (mPackages) { synchronized (mPackages) { Loading Loading @@ -2225,6 +2235,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } @Override public void freeStorageAndNotify(final long freeStorageSize, final IPackageDataObserver observer) { public void freeStorageAndNotify(final long freeStorageSize, final IPackageDataObserver observer) { mContext.enforceCallingOrSelfPermission( mContext.enforceCallingOrSelfPermission( android.Manifest.permission.CLEAR_APP_CACHE, null); android.Manifest.permission.CLEAR_APP_CACHE, null); Loading @@ -2250,6 +2261,7 @@ public class PackageManagerService extends IPackageManager.Stub { }); }); } } @Override public void freeStorage(final long freeStorageSize, final IntentSender pi) { public void freeStorage(final long freeStorageSize, final IntentSender pi) { mContext.enforceCallingOrSelfPermission( mContext.enforceCallingOrSelfPermission( android.Manifest.permission.CLEAR_APP_CACHE, null); android.Manifest.permission.CLEAR_APP_CACHE, null); Loading Loading @@ -2353,6 +2365,7 @@ public class PackageManagerService extends IPackageManager.Stub { return null; return null; } } @Override public String[] getSystemSharedLibraryNames() { public String[] getSystemSharedLibraryNames() { Set<String> libSet; Set<String> libSet; synchronized (mPackages) { synchronized (mPackages) { Loading @@ -2367,6 +2380,7 @@ public class PackageManagerService extends IPackageManager.Stub { return null; return null; } } @Override public FeatureInfo[] getSystemAvailableFeatures() { public FeatureInfo[] getSystemAvailableFeatures() { Collection<FeatureInfo> featSet; Collection<FeatureInfo> featSet; synchronized (mPackages) { synchronized (mPackages) { Loading @@ -2385,6 +2399,7 @@ public class PackageManagerService extends IPackageManager.Stub { return null; return null; } } @Override public boolean hasSystemFeature(String name) { public boolean hasSystemFeature(String name) { synchronized (mPackages) { synchronized (mPackages) { return mAvailableFeatures.containsKey(name); return mAvailableFeatures.containsKey(name); Loading @@ -2399,6 +2414,7 @@ public class PackageManagerService extends IPackageManager.Stub { + " is not privileged to communicate with user=" + userId); + " is not privileged to communicate with user=" + userId); } } @Override public int checkPermission(String permName, String pkgName) { public int checkPermission(String permName, String pkgName) { synchronized (mPackages) { synchronized (mPackages) { PackageParser.Package p = mPackages.get(pkgName); PackageParser.Package p = mPackages.get(pkgName); Loading @@ -2416,6 +2432,7 @@ public class PackageManagerService extends IPackageManager.Stub { return PackageManager.PERMISSION_DENIED; return PackageManager.PERMISSION_DENIED; } } @Override public int checkUidPermission(String permName, int uid) { public int checkUidPermission(String permName, int uid) { synchronized (mPackages) { synchronized (mPackages) { Object obj = mSettings.getUserIdLPr(UserHandle.getAppId(uid)); Object obj = mSettings.getUserIdLPr(UserHandle.getAppId(uid)); Loading Loading @@ -2561,18 +2578,21 @@ public class PackageManagerService extends IPackageManager.Stub { return added; return added; } } @Override public boolean addPermission(PermissionInfo info) { public boolean addPermission(PermissionInfo info) { synchronized (mPackages) { synchronized (mPackages) { return addPermissionLocked(info, false); return addPermissionLocked(info, false); } } } } @Override public boolean addPermissionAsync(PermissionInfo info) { public boolean addPermissionAsync(PermissionInfo info) { synchronized (mPackages) { synchronized (mPackages) { return addPermissionLocked(info, true); return addPermissionLocked(info, true); } } } } @Override public void removePermission(String name) { public void removePermission(String name) { synchronized (mPackages) { synchronized (mPackages) { checkPermissionTreeLP(name); checkPermissionTreeLP(name); Loading Loading @@ -2617,6 +2637,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public void grantPermission(String packageName, String permissionName) { public void grantPermission(String packageName, String permissionName) { mContext.enforceCallingOrSelfPermission( mContext.enforceCallingOrSelfPermission( android.Manifest.permission.GRANT_REVOKE_PERMISSIONS, null); android.Manifest.permission.GRANT_REVOKE_PERMISSIONS, null); Loading Loading @@ -2646,6 +2667,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public void revokePermission(String packageName, String permissionName) { public void revokePermission(String packageName, String permissionName) { int changedAppId = -1; int changedAppId = -1; Loading Loading @@ -2704,12 +2726,14 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public boolean isProtectedBroadcast(String actionName) { public boolean isProtectedBroadcast(String actionName) { synchronized (mPackages) { synchronized (mPackages) { return mProtectedBroadcasts.contains(actionName); return mProtectedBroadcasts.contains(actionName); } } } } @Override public int checkSignatures(String pkg1, String pkg2) { public int checkSignatures(String pkg1, String pkg2) { synchronized (mPackages) { synchronized (mPackages) { final PackageParser.Package p1 = mPackages.get(pkg1); final PackageParser.Package p1 = mPackages.get(pkg1); Loading @@ -2722,6 +2746,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public int checkUidSignatures(int uid1, int uid2) { public int checkUidSignatures(int uid1, int uid2) { // Map to base uids. // Map to base uids. uid1 = UserHandle.getAppId(uid1); uid1 = UserHandle.getAppId(uid1); Loading Loading @@ -2782,6 +2807,7 @@ public class PackageManagerService extends IPackageManager.Stub { return PackageManager.SIGNATURE_NO_MATCH; return PackageManager.SIGNATURE_NO_MATCH; } } @Override public String[] getPackagesForUid(int uid) { public String[] getPackagesForUid(int uid) { uid = UserHandle.getAppId(uid); uid = UserHandle.getAppId(uid); // reader // reader Loading @@ -2805,6 +2831,7 @@ public class PackageManagerService extends IPackageManager.Stub { return null; return null; } } @Override public String getNameForUid(int uid) { public String getNameForUid(int uid) { // reader // reader synchronized (mPackages) { synchronized (mPackages) { Loading @@ -2820,6 +2847,7 @@ public class PackageManagerService extends IPackageManager.Stub { return null; return null; } } @Override public int getUidForSharedUser(String sharedUserName) { public int getUidForSharedUser(String sharedUserName) { if(sharedUserName == null) { if(sharedUserName == null) { return -1; return -1; Loading @@ -2834,6 +2862,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public int getFlagsForUid(int uid) { public int getFlagsForUid(int uid) { synchronized (mPackages) { synchronized (mPackages) { Object obj = mSettings.getUserIdLPr(UserHandle.getAppId(uid)); Object obj = mSettings.getUserIdLPr(UserHandle.getAppId(uid)); Loading Loading @@ -3618,6 +3647,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public List<ProviderInfo> queryContentProviders(String processName, public List<ProviderInfo> queryContentProviders(String processName, int uid, int flags) { int uid, int flags) { ArrayList<ProviderInfo> finalList = null; ArrayList<ProviderInfo> finalList = null; Loading Loading @@ -3655,6 +3685,7 @@ public class PackageManagerService extends IPackageManager.Stub { return finalList; return finalList; } } @Override public InstrumentationInfo getInstrumentationInfo(ComponentName name, public InstrumentationInfo getInstrumentationInfo(ComponentName name, int flags) { int flags) { // reader // reader Loading @@ -3664,6 +3695,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public List<InstrumentationInfo> queryInstrumentation(String targetPackage, public List<InstrumentationInfo> queryInstrumentation(String targetPackage, int flags) { int flags) { ArrayList<InstrumentationInfo> finalList = ArrayList<InstrumentationInfo> finalList = Loading Loading @@ -4166,6 +4198,10 @@ public class PackageManagerService extends IPackageManager.Stub { @Override @Override public boolean performDexOpt(String packageName) { public boolean performDexOpt(String packageName) { enforceSystemOrRoot("Only the system can request dexopt be performed"); enforceSystemOrRoot("Only the system can request dexopt be performed"); return performDexOpt(packageName, true); } public boolean performDexOpt(String packageName, boolean updateUsage) { PackageParser.Package p; PackageParser.Package p; synchronized (mPackages) { synchronized (mPackages) { Loading @@ -4173,7 +4209,9 @@ public class PackageManagerService extends IPackageManager.Stub { if (p == null) { if (p == null) { return false; return false; } } if (updateUsage) { p.mLastPackageUsageTimeInMills = System.currentTimeMillis(); p.mLastPackageUsageTimeInMills = System.currentTimeMillis(); } mPackageUsage.write(); mPackageUsage.write(); if (!p.mDexOptNeeded) { if (!p.mDexOptNeeded) { return false; return false; Loading @@ -4186,6 +4224,25 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } public HashSet<String> getPackagesThatNeedDexOpt() { HashSet<String> pkgs = null; synchronized (mPackages) { for (PackageParser.Package p : mPackages.values()) { if (DEBUG_DEXOPT) { Log.i(TAG, p.packageName + " mDexOptNeeded=" + p.mDexOptNeeded); } if (!p.mDexOptNeeded) { continue; } if (pkgs == null) { pkgs = new HashSet<String>(); } pkgs.add(p.packageName); } } return pkgs; } public void shutdown() { public void shutdown() { mPackageUsage.write(true); mPackageUsage.write(true); } } Loading Loading @@ -6920,6 +6977,7 @@ public class PackageManagerService extends IPackageManager.Stub { return mMediaMounted || Environment.isExternalStorageEmulated(); return mMediaMounted || Environment.isExternalStorageEmulated(); } } @Override public PackageCleanItem nextPackageToClean(PackageCleanItem lastPackage) { public PackageCleanItem nextPackageToClean(PackageCleanItem lastPackage) { // writer // writer synchronized (mPackages) { synchronized (mPackages) { Loading Loading @@ -7099,6 +7157,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } /* Called when a downloaded package installation has been confirmed by the user */ /* Called when a downloaded package installation has been confirmed by the user */ @Override public void installPackage( public void installPackage( final Uri packageURI, final IPackageInstallObserver observer, final int flags, final Uri packageURI, final IPackageInstallObserver observer, final int flags, final String installerPackageName) { final String installerPackageName) { Loading @@ -7116,6 +7175,7 @@ public class PackageManagerService extends IPackageManager.Stub { installerPackageName, verificationParams, encryptionParams); installerPackageName, verificationParams, encryptionParams); } } @Override public void installPackageWithVerificationAndEncryption(Uri packageURI, public void installPackageWithVerificationAndEncryption(Uri packageURI, IPackageInstallObserver observer, int flags, String installerPackageName, IPackageInstallObserver observer, int flags, String installerPackageName, VerificationParams verificationParams, ContainerEncryptionParams encryptionParams) { VerificationParams verificationParams, ContainerEncryptionParams encryptionParams) { Loading Loading @@ -7482,6 +7542,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public void finishPackageInstall(int token) { public void finishPackageInstall(int token) { enforceSystemOrRoot("Only the system is allowed to finish installs"); enforceSystemOrRoot("Only the system is allowed to finish installs"); Loading Loading @@ -7553,6 +7614,7 @@ public class PackageManagerService extends IPackageManager.Stub { -1); -1); } } @Override public void setInstallerPackageName(String targetPackage, String installerPackageName) { public void setInstallerPackageName(String targetPackage, String installerPackageName) { final int uid = Binder.getCallingUid(); final int uid = Binder.getCallingUid(); // writer // writer Loading Loading @@ -10441,6 +10503,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public void deleteApplicationCacheFiles(final String packageName, public void deleteApplicationCacheFiles(final String packageName, final IPackageDataObserver observer) { final IPackageDataObserver observer) { mContext.enforceCallingOrSelfPermission( mContext.enforceCallingOrSelfPermission( Loading Loading @@ -10493,6 +10556,7 @@ public class PackageManagerService extends IPackageManager.Stub { return true; return true; } } @Override public void getPackageSizeInfo(final String packageName, int userHandle, public void getPackageSizeInfo(final String packageName, int userHandle, final IPackageStatsObserver observer) { final IPackageStatsObserver observer) { mContext.enforceCallingOrSelfPermission( mContext.enforceCallingOrSelfPermission( Loading Loading @@ -10569,14 +10633,17 @@ public class PackageManagerService extends IPackageManager.Stub { } } @Override public void addPackageToPreferred(String packageName) { public void addPackageToPreferred(String packageName) { Slog.w(TAG, "addPackageToPreferred: this is now a no-op"); Slog.w(TAG, "addPackageToPreferred: this is now a no-op"); } } @Override public void removePackageFromPreferred(String packageName) { public void removePackageFromPreferred(String packageName) { Slog.w(TAG, "removePackageFromPreferred: this is now a no-op"); Slog.w(TAG, "removePackageFromPreferred: this is now a no-op"); } } @Override public List<PackageInfo> getPreferredPackages(int flags) { public List<PackageInfo> getPreferredPackages(int flags) { return new ArrayList<PackageInfo>(); return new ArrayList<PackageInfo>(); } } Loading Loading @@ -10604,6 +10671,7 @@ public class PackageManagerService extends IPackageManager.Stub { return Build.VERSION_CODES.CUR_DEVELOPMENT; return Build.VERSION_CODES.CUR_DEVELOPMENT; } } @Override public void addPreferredActivity(IntentFilter filter, int match, public void addPreferredActivity(IntentFilter filter, int match, ComponentName[] set, ComponentName activity, int userId) { ComponentName[] set, ComponentName activity, int userId) { addPreferredActivityInternal(filter, match, set, activity, true, userId); addPreferredActivityInternal(filter, match, set, activity, true, userId); Loading Loading @@ -10640,6 +10708,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public void replacePreferredActivity(IntentFilter filter, int match, public void replacePreferredActivity(IntentFilter filter, int match, ComponentName[] set, ComponentName activity) { ComponentName[] set, ComponentName activity) { if (filter.countActions() != 1) { if (filter.countActions() != 1) { Loading Loading @@ -10696,6 +10765,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public void clearPackagePreferredActivities(String packageName) { public void clearPackagePreferredActivities(String packageName) { final int uid = Binder.getCallingUid(); final int uid = Binder.getCallingUid(); // writer // writer Loading Loading @@ -10759,6 +10829,7 @@ public class PackageManagerService extends IPackageManager.Stub { return changed; return changed; } } @Override public void resetPreferredActivities(int userId) { public void resetPreferredActivities(int userId) { mContext.enforceCallingOrSelfPermission( mContext.enforceCallingOrSelfPermission( android.Manifest.permission.SET_PREFERRED_APPLICATIONS, null); android.Manifest.permission.SET_PREFERRED_APPLICATIONS, null); Loading @@ -10772,6 +10843,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public int getPreferredActivities(List<IntentFilter> outFilters, public int getPreferredActivities(List<IntentFilter> outFilters, List<ComponentName> outActivities, String packageName) { List<ComponentName> outActivities, String packageName) { Loading Loading @@ -10983,6 +11055,7 @@ public class PackageManagerService extends IPackageManager.Stub { new int[] {UserHandle.getUserId(packageUid)}); new int[] {UserHandle.getUserId(packageUid)}); } } @Override public void setPackageStoppedState(String packageName, boolean stopped, int userId) { public void setPackageStoppedState(String packageName, boolean stopped, int userId) { if (!sUserManager.exists(userId)) return; if (!sUserManager.exists(userId)) return; final int uid = Binder.getCallingUid(); final int uid = Binder.getCallingUid(); Loading @@ -10999,6 +11072,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public String getInstallerPackageName(String packageName) { public String getInstallerPackageName(String packageName) { // reader // reader synchronized (mPackages) { synchronized (mPackages) { Loading Loading @@ -11028,6 +11102,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public void enterSafeMode() { public void enterSafeMode() { enforceSystemOrRoot("Only the system can request entering safe mode"); enforceSystemOrRoot("Only the system can request entering safe mode"); Loading @@ -11036,6 +11111,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } } } @Override public void systemReady() { public void systemReady() { mSystemReady = true; mSystemReady = true; Loading Loading @@ -11081,10 +11157,12 @@ public class PackageManagerService extends IPackageManager.Stub { sUserManager.systemReady(); sUserManager.systemReady(); } } @Override public boolean isSafeMode() { public boolean isSafeMode() { return mSafeMode; return mSafeMode; } } @Override public boolean hasSystemUidErrors() { public boolean hasSystemUidErrors() { return mHasSystemUidErrors; return mHasSystemUidErrors; } } Loading Loading @@ -11559,6 +11637,7 @@ public class PackageManagerService extends IPackageManager.Stub { /* /* * Update media status on PackageManager. * Update media status on PackageManager. */ */ @Override public void updateExternalMediaStatus(final boolean mediaStatus, final boolean reportStatus) { public void updateExternalMediaStatus(final boolean mediaStatus, final boolean reportStatus) { int callingUid = Binder.getCallingUid(); int callingUid = Binder.getCallingUid(); if (callingUid != 0 && callingUid != Process.SYSTEM_UID) { if (callingUid != 0 && callingUid != Process.SYSTEM_UID) { Loading Loading @@ -12150,6 +12229,7 @@ public class PackageManagerService extends IPackageManager.Stub { }); }); } } @Override public boolean setInstallLocation(int loc) { public boolean setInstallLocation(int loc) { mContext.enforceCallingOrSelfPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS, mContext.enforceCallingOrSelfPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS, null); null); Loading @@ -12165,6 +12245,7 @@ public class PackageManagerService extends IPackageManager.Stub { return false; return false; } } @Override public int getInstallLocation() { public int getInstallLocation() { return android.provider.Settings.Global.getInt(mContext.getContentResolver(), return android.provider.Settings.Global.getInt(mContext.getContentResolver(), android.provider.Settings.Global.DEFAULT_INSTALL_LOCATION, android.provider.Settings.Global.DEFAULT_INSTALL_LOCATION, Loading Loading @@ -12236,6 +12317,7 @@ public class PackageManagerService extends IPackageManager.Stub { return true; return true; } } @Override public boolean isStorageLow() { public boolean isStorageLow() { final long token = Binder.clearCallingIdentity(); final long token = Binder.clearCallingIdentity(); try { try {