diff options
22 files changed, 99 insertions, 66 deletions
diff --git a/api/current.txt b/api/current.txt index 4967b52139af..1ad43777d5af 100644 --- a/api/current.txt +++ b/api/current.txt @@ -19368,12 +19368,6 @@ package android.print { method public android.print.PrintDocumentInfo.Builder setPageCount(int); } - public class PrintFileDocumentAdapter extends android.print.PrintDocumentAdapter { - ctor public PrintFileDocumentAdapter(android.content.Context, java.io.File, android.print.PrintDocumentInfo); - method public void onLayout(android.print.PrintAttributes, android.print.PrintAttributes, android.os.CancellationSignal, android.print.PrintDocumentAdapter.LayoutResultCallback, android.os.Bundle); - method public void onWrite(android.print.PageRange[], android.os.ParcelFileDescriptor, android.os.CancellationSignal, android.print.PrintDocumentAdapter.WriteResultCallback); - } - public final class PrintJob { method public void cancel(); method public android.print.PrintJobId getId(); @@ -19403,10 +19397,8 @@ package android.print { method public android.print.PageRange[] getPages(); method public android.print.PrinterId getPrinterId(); method public int getState(); - method public java.lang.String getTag(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator CREATOR; - field public static final int PRINT_JOB_ID_UNDEFINED = -1; // 0xffffffff field public static final int STATE_BLOCKED = 4; // 0x4 field public static final int STATE_CANCELED = 7; // 0x7 field public static final int STATE_COMPLETED = 5; // 0x5 @@ -19501,6 +19493,7 @@ package android.printservice { method public android.printservice.PrintDocument getDocument(); method public android.print.PrintJobId getId(); method public android.print.PrintJobInfo getInfo(); + method public java.lang.String getTag(); method public boolean isBlocked(); method public boolean isCancelled(); method public boolean isCompleted(); diff --git a/core/java/android/print/PrintFileDocumentAdapter.java b/core/java/android/print/PrintFileDocumentAdapter.java index c3a23a53e426..5d655bfe5bc2 100644 --- a/core/java/android/print/PrintFileDocumentAdapter.java +++ b/core/java/android/print/PrintFileDocumentAdapter.java @@ -41,6 +41,8 @@ import java.io.OutputStream; * spooling the data, so you can delete the file if it is a * temporary one. To achieve this one must override {@link #onFinish()} * and delete the file yourself. + * + * @hide */ public class PrintFileDocumentAdapter extends PrintDocumentAdapter { diff --git a/core/java/android/print/PrintJobInfo.java b/core/java/android/print/PrintJobInfo.java index e5d06a2e534d..ccb4f440df05 100644 --- a/core/java/android/print/PrintJobInfo.java +++ b/core/java/android/print/PrintJobInfo.java @@ -26,9 +26,6 @@ import java.util.Arrays; */ public final class PrintJobInfo implements Parcelable { - /** Undefined print job id. */ - public static final int PRINT_JOB_ID_UNDEFINED = -1; - /** * Constant for matching any print job state. * @@ -356,6 +353,8 @@ public final class PrintJobInfo implements Parcelable { * Gets the optional tag assigned by a print service. * * @return The tag. + * + * @hide */ public String getTag() { return mTag; diff --git a/core/java/android/printservice/PrintJob.java b/core/java/android/printservice/PrintJob.java index 721e31e09da8..d1dbedf9ef63 100644 --- a/core/java/android/printservice/PrintJob.java +++ b/core/java/android/printservice/PrintJob.java @@ -301,6 +301,18 @@ public final class PrintJob { return false; } + /** + * Gets the print job tag. + * + * @return tag The tag or null. + * + * @see #setTag(String) + */ + public String getTag() { + PrintService.throwIfNotCalledOnMainThread(); + return getInfo().getTag(); + } + @Override public boolean equals(Object obj) { if (this == obj) { diff --git a/core/jni/android/graphics/TextLayoutCache.cpp b/core/jni/android/graphics/TextLayoutCache.cpp index 73f3639b2040..a0c50fae558d 100644 --- a/core/jni/android/graphics/TextLayoutCache.cpp +++ b/core/jni/android/graphics/TextLayoutCache.cpp @@ -868,6 +868,7 @@ size_t TextLayoutShaper::shapeFontRun(const SkPaint* paint) { hb_shape(font, mBuffer, NULL, 0); hb_font_destroy(font); + mShapingPaint.setTypeface(paint->getTypeface()); return baseGlyphCount; } diff --git a/packages/PrintSpooler/res/drawable-hdpi/ic_restart.png b/packages/PrintSpooler/res/drawable-hdpi/ic_restart.png Binary files differnew file mode 100644 index 000000000000..bb9d855f7769 --- /dev/null +++ b/packages/PrintSpooler/res/drawable-hdpi/ic_restart.png diff --git a/packages/PrintSpooler/res/drawable-mdpi/ic_restart.png b/packages/PrintSpooler/res/drawable-mdpi/ic_restart.png Binary files differnew file mode 100644 index 000000000000..bd611e8e24d2 --- /dev/null +++ b/packages/PrintSpooler/res/drawable-mdpi/ic_restart.png diff --git a/packages/PrintSpooler/res/drawable-xhdpi/ic_restart.png b/packages/PrintSpooler/res/drawable-xhdpi/ic_restart.png Binary files differnew file mode 100644 index 000000000000..a7fdc0dfcb1d --- /dev/null +++ b/packages/PrintSpooler/res/drawable-xhdpi/ic_restart.png diff --git a/packages/PrintSpooler/res/values/strings.xml b/packages/PrintSpooler/res/values/strings.xml index 5b947baca31c..3a888a83b5a4 100644 --- a/packages/PrintSpooler/res/values/strings.xml +++ b/packages/PrintSpooler/res/values/strings.xml @@ -56,7 +56,7 @@ <string name="printing_app_crashed">Printing app crashed</string> <!-- Title if the number of pages in a printed document is unknown. [CHAR LIMIT=20] --> - <string name="page_count_unknown">unavailable</string> + <string name="page_count_unknown">Pages</string> <!-- Title for the temporary dialog show while an app is generating a print job. [CHAR LIMIT=30] --> <string name="generating_print_job">Generating print job</string> diff --git a/packages/PrintSpooler/src/com/android/printspooler/NotificationController.java b/packages/PrintSpooler/src/com/android/printspooler/NotificationController.java index dae7770eec69..2bd0443dd9e8 100644 --- a/packages/PrintSpooler/src/com/android/printspooler/NotificationController.java +++ b/packages/PrintSpooler/src/com/android/printspooler/NotificationController.java @@ -110,7 +110,7 @@ public class NotificationController { printJob.getLabel())) .addAction(R.drawable.stat_notify_cancelling, mContext.getString(R.string.cancel), createCancelIntent(printJob)) - .addAction(android.R.drawable.ic_secure, mContext.getString(R.string.restart), + .addAction(R.drawable.ic_restart, mContext.getString(R.string.restart), createRestartIntent(printJob.getId())) .setContentText(printJob.getPrinterName()) .setWhen(System.currentTimeMillis()) diff --git a/packages/PrintSpooler/src/com/android/printspooler/PrintJobConfigActivity.java b/packages/PrintSpooler/src/com/android/printspooler/PrintJobConfigActivity.java index 293be1b2c1c7..f1678ff3d88c 100644 --- a/packages/PrintSpooler/src/com/android/printspooler/PrintJobConfigActivity.java +++ b/packages/PrintSpooler/src/com/android/printspooler/PrintJobConfigActivity.java @@ -1862,18 +1862,17 @@ public class PrintJobConfigActivity extends Activity { } } final int pageCount = mDocument.info.getPageCount(); - mRangeOptionsTitle.setText(getString(R.string.label_pages, - (pageCount == PrintDocumentInfo.PAGE_COUNT_UNKNOWN) - ? getString(R.string.page_count_unknown) - : String.valueOf(pageCount))); + String title = (pageCount != PrintDocumentInfo.PAGE_COUNT_UNKNOWN) + ? getString(R.string.label_pages, String.valueOf(pageCount)) + : getString(R.string.page_count_unknown); + mRangeOptionsTitle.setText(title); } else { if (mRangeOptionsSpinner.getSelectedItemPosition() != 0) { mIgnoreNextRangeOptionChange = true; mRangeOptionsSpinner.setSelection(0); } mRangeOptionsSpinner.setEnabled(false); - mRangeOptionsTitle.setText(getString(R.string.label_pages, - getString(R.string.page_count_unknown))); + mRangeOptionsTitle.setText(getString(R.string.page_count_unknown)); mPageRangeEditText.setEnabled(false); mPageRangeEditText.setVisibility(View.INVISIBLE); mPageRangeTitle.setVisibility(View.INVISIBLE); diff --git a/packages/SystemUI/res/drawable-hdpi/search_light.png b/packages/SystemUI/res/drawable-hdpi/search_light.png Binary files differindex c8b5a2ec9295..c64ae19777f8 100644 --- a/packages/SystemUI/res/drawable-hdpi/search_light.png +++ b/packages/SystemUI/res/drawable-hdpi/search_light.png diff --git a/packages/SystemUI/res/drawable-mdpi/search_light.png b/packages/SystemUI/res/drawable-mdpi/search_light.png Binary files differindex 4b5b2a495a14..fb990617d032 100644 --- a/packages/SystemUI/res/drawable-mdpi/search_light.png +++ b/packages/SystemUI/res/drawable-mdpi/search_light.png diff --git a/packages/SystemUI/res/drawable-xhdpi/search_light.png b/packages/SystemUI/res/drawable-xhdpi/search_light.png Binary files differindex 3aa890fdfa8b..438970767456 100644 --- a/packages/SystemUI/res/drawable-xhdpi/search_light.png +++ b/packages/SystemUI/res/drawable-xhdpi/search_light.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/search_light.png b/packages/SystemUI/res/drawable-xxhdpi/search_light.png Binary files differindex 74ad3c832485..b4fa29777916 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/search_light.png +++ b/packages/SystemUI/res/drawable-xxhdpi/search_light.png diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java index 04885f0b076f..6e5336384d44 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java @@ -391,7 +391,7 @@ public class NavigationBarView extends LinearLayout { final AccessibilityManager accessibilityManager = (AccessibilityManager) mContext.getSystemService(Context.ACCESSIBILITY_SERVICE); - if (accessibilityManager.isEnabled()) { + if (accessibilityManager.isEnabled() && accessibilityManager.isTouchExplorationEnabled()) { // In accessibility mode, we add a simple click handler since swipe is tough to // trigger near screen edges. View camera = getCameraButton(); diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index f23bcba6f04a..7c15abc7ca8a 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -15818,9 +15818,11 @@ public final class ActivityManagerService extends ActivityManagerNative } } - boolean haveActivities = mStackSupervisor.switchUserLocked(userId, uss); - if (!haveActivities) { + boolean homeInFront = mStackSupervisor.switchUserLocked(userId, uss); + if (homeInFront) { startHomeActivityLocked(userId); + } else { + mStackSupervisor.resumeTopActivitiesLocked(); } EventLogTags.writeAmSwitchUser(userId); @@ -16146,6 +16148,8 @@ public final class ActivityManagerService extends ActivityManagerNative } catch (RemoteException e) { } } + + mStackSupervisor.removeUserLocked(userId); } @Override diff --git a/services/java/com/android/server/am/ActivityRecord.java b/services/java/com/android/server/am/ActivityRecord.java index 2c0b83bef0b8..cf686672a2a3 100644 --- a/services/java/com/android/server/am/ActivityRecord.java +++ b/services/java/com/android/server/am/ActivityRecord.java @@ -572,8 +572,8 @@ final class ActivityRecord { } boolean isRootActivity() { - ArrayList<ActivityRecord> activities = task.mActivities; - return activities.size() == 0 || this == task.mActivities.get(0); + final ArrayList<ActivityRecord> activities = task.mActivities; + return activities.size() == 0 || this == activities.get(0); } UriPermissionOwner getUriPermissionsLocked() { diff --git a/services/java/com/android/server/am/ActivityStack.java b/services/java/com/android/server/am/ActivityStack.java index 45b30f1cf60a..10145024a74e 100644 --- a/services/java/com/android/server/am/ActivityStack.java +++ b/services/java/com/android/server/am/ActivityStack.java @@ -549,31 +549,26 @@ final class ActivityStack { /* * Move the activities around in the stack to bring a user to the foreground. - * @return whether there are any activities for the specified user. */ - final boolean switchUserLocked(int userId) { + final void switchUserLocked(int userId) { if (VALIDATE_TOKENS) { validateAppTokensLocked(); } if (mCurrentUser == userId) { - return true; + return; } mCurrentUser = userId; // Move userId's tasks to the top. - boolean haveActivities = false; int index = mTaskHistory.size(); for (int i = 0; i < index; ++i) { TaskRecord task = mTaskHistory.get(i); if (task.userId == userId) { - haveActivities = true; mTaskHistory.remove(i); mTaskHistory.add(task); --index; } } - - return haveActivities; } void minimalResumeActivityLocked(ActivityRecord r) { @@ -1623,6 +1618,12 @@ final class ActivityStack { } private void insertTaskAtTop(TaskRecord task) { + // If this is being moved to the top by another activity or being launched from the home + // activity, set mOnTopOfHome accordingly. + final boolean fromHome = mStackSupervisor.getLastStack().isHomeStack(); + if (!isHomeStack() && (fromHome || topTask() != task)) { + task.mOnTopOfHome = fromHome; + } mTaskHistory.remove(task); // Now put task at top. int stackNdx = mTaskHistory.size(); diff --git a/services/java/com/android/server/am/ActivityStackSupervisor.java b/services/java/com/android/server/am/ActivityStackSupervisor.java index 2b69a4e16978..dc9036f16745 100644 --- a/services/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/java/com/android/server/am/ActivityStackSupervisor.java @@ -70,6 +70,7 @@ import android.util.EventLog; import android.util.Slog; import android.util.SparseArray; +import android.util.SparseBooleanArray; import com.android.internal.app.HeavyWeightSwitcherActivity; import com.android.internal.os.TransferPipe; import com.android.server.am.ActivityManagerService.PendingActivityLaunch; @@ -203,6 +204,9 @@ public final class ActivityStackSupervisor { */ final PowerManager.WakeLock mGoingToSleep; + /** State of the stacks when user switched, indexed by userId. */ + SparseBooleanArray mUserHomeInFront = new SparseBooleanArray(2); + public ActivityStackSupervisor(ActivityManagerService service, Context context, Looper looper) { mService = service; @@ -288,22 +292,6 @@ public final class ActivityStackSupervisor { return mService.startHomeActivityLocked(mCurrentUser); } - final void setLaunchHomeTaskNextFlag(ActivityRecord sourceRecord, ActivityRecord r, - ActivityStack stack) { - if (stack == mHomeStack) { - return; - } - if ((sourceRecord == null && getLastStack() == mHomeStack) || - (sourceRecord != null && sourceRecord.isHomeActivity())) { - if (r == null) { - r = stack.topRunningActivityLocked(null); - } - if (r != null && !r.isHomeActivity() && r.isRootActivity()) { - r.task.mOnTopOfHome = true; - } - } - } - void setDismissKeyguard(boolean dismiss) { if (ActivityManagerService.DEBUG_LOCKSCREEN) mService.logLockScreen(" dismiss=" + dismiss); mDismissKeyguardOnNextActivity = dismiss; @@ -1479,7 +1467,6 @@ public final class ActivityStackSupervisor { // is the case, so this is it! And for paranoia, make // sure we have correctly resumed the top activity. if (doResume) { - setLaunchHomeTaskNextFlag(sourceRecord, null, targetStack); resumeTopActivitiesLocked(targetStack, null, options); } else { ActivityOptions.abort(options); @@ -1575,9 +1562,6 @@ public final class ActivityStackSupervisor { // don't use that intent!) And for paranoia, make // sure we have correctly resumed the top activity. if (doResume) { - // Reset flag so it gets correctly reevaluated. - intentActivity.task.mOnTopOfHome = false; - setLaunchHomeTaskNextFlag(sourceRecord, intentActivity, targetStack); targetStack.resumeTopActivityLocked(null, options); } else { ActivityOptions.abort(options); @@ -1615,7 +1599,6 @@ public final class ActivityStackSupervisor { // resumed the top activity. topStack.mLastPausedActivity = null; if (doResume) { - setLaunchHomeTaskNextFlag(sourceRecord, null, topStack); resumeTopActivitiesLocked(); } ActivityOptions.abort(options); @@ -1694,7 +1677,6 @@ public final class ActivityStackSupervisor { // resumed the top activity. targetStack.mLastPausedActivity = null; if (doResume) { - setLaunchHomeTaskNextFlag(sourceRecord, null, targetStack); targetStack.resumeTopActivityLocked(null); } ActivityOptions.abort(options); @@ -1717,7 +1699,6 @@ public final class ActivityStackSupervisor { top.deliverNewIntentLocked(callingUid, r.intent); targetStack.mLastPausedActivity = null; if (doResume) { - setLaunchHomeTaskNextFlag(sourceRecord, null, targetStack); targetStack.resumeTopActivityLocked(null); } return ActivityManager.START_DELIVERED_TO_TOP; @@ -1751,7 +1732,6 @@ public final class ActivityStackSupervisor { EventLog.writeEvent(EventLogTags.AM_CREATE_TASK, r.userId, r.task.taskId); } ActivityStack.logStartActivity(EventLogTags.AM_CREATE_ACTIVITY, r, r.task); - setLaunchHomeTaskNextFlag(sourceRecord, r, targetStack); targetStack.mLastPausedActivity = null; targetStack.startActivityLocked(r, newTask, doResume, keepCurTransition, options); mService.setFocusedActivityLocked(r); @@ -1960,6 +1940,10 @@ public final class ActivityStackSupervisor { } } + void removeUserLocked(int userId) { + mUserHomeInFront.delete(userId); + } + /** * @return true if some activity was finished (or would have finished if doit were true). */ @@ -2278,17 +2262,17 @@ public final class ActivityStackSupervisor { } boolean switchUserLocked(int userId, UserStartedState uss) { + mUserHomeInFront.put(mCurrentUser, isFrontStack(mHomeStack)); + final boolean homeInFront = mUserHomeInFront.get(userId, true); mCurrentUser = userId; mStartingUsers.add(uss); - boolean haveActivities = false; for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) { - haveActivities |= mStacks.get(stackNdx).switchUserLocked(userId); + mStacks.get(stackNdx).switchUserLocked(userId); } - resumeTopActivitiesLocked(); - - return haveActivities; + moveHomeStack(homeInFront); + return homeInFront; } final ArrayList<ActivityRecord> processStoppingActivitiesLocked(boolean remove) { @@ -2381,6 +2365,7 @@ public final class ActivityStackSupervisor { pw.print(prefix); pw.print("mStackState="); pw.println(stackStateToString(mStackState)); pw.print(prefix); pw.println("mSleepTimeout: " + mSleepTimeout); pw.print(prefix); pw.println("mCurTaskId: " + mCurTaskId); + pw.print(prefix); pw.println("mUserHomeInFront: " + mUserHomeInFront); } ArrayList<ActivityRecord> getDumpActivitiesLocked(String name) { diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java index f093f2bd2690..d239be7574be 100755 --- a/services/java/com/android/server/pm/PackageManagerService.java +++ b/services/java/com/android/server/pm/PackageManagerService.java @@ -850,6 +850,19 @@ public class PackageManagerService extends IPackageManager.Stub { sendPackageBroadcast(Intent.ACTION_MY_PACKAGE_REPLACED, null, null, res.pkg.applicationInfo.packageName, null, updateUsers); + + // treat asec-hosted packages like removable media on upgrade + if (isForwardLocked(res.pkg) || isExternal(res.pkg)) { + if (DEBUG_INSTALL) { + Slog.i(TAG, "upgrading pkg " + res.pkg + + " is ASEC-hosted -> AVAILABLE"); + } + int[] uidArray = new int[] { res.pkg.applicationInfo.uid }; + ArrayList<String> pkgList = new ArrayList<String>(1); + pkgList.add(res.pkg.applicationInfo.packageName); + sendResourcesChangedBroadcast(true, false, + pkgList,uidArray, null); + } } if (res.removedInfo.args != null) { // Remove the replaced package's older resources safely now @@ -4643,6 +4656,20 @@ public class PackageManagerService extends IPackageManager.Stub { // so that we do not end up in a confused state while the user is still using the older // version of the application while the new one gets installed. if ((parseFlags & PackageManager.INSTALL_REPLACE_EXISTING) != 0) { + // If the package lives in an asec, tell everyone that the container is going + // away so they can clean up any references to its resources (which would prevent + // vold from being able to unmount the asec) + if (isForwardLocked(pkg) || isExternal(pkg)) { + if (DEBUG_INSTALL) { + Slog.i(TAG, "upgrading pkg " + pkg + " is ASEC-hosted -> UNAVAILABLE"); + } + final int[] uidArray = new int[] { pkg.applicationInfo.uid }; + final ArrayList<String> pkgList = new ArrayList<String>(1); + pkgList.add(pkg.applicationInfo.packageName); + sendResourcesChangedBroadcast(false, true, pkgList, uidArray, null); + } + + // Post the request that it be killed now that the going-away broadcast is en route killApplication(pkg.applicationInfo.packageName, pkg.applicationInfo.uid, "update pkg"); } @@ -10731,8 +10758,8 @@ public class PackageManagerService extends IPackageManager.Stub { } } - private void sendResourcesChangedBroadcast(boolean mediaStatus, ArrayList<String> pkgList, - int uidArr[], IIntentReceiver finishedReceiver) { + private void sendResourcesChangedBroadcast(boolean mediaStatus, boolean replacing, + ArrayList<String> pkgList, int uidArr[], IIntentReceiver finishedReceiver) { int size = pkgList.size(); if (size > 0) { // Send broadcasts here @@ -10742,6 +10769,9 @@ public class PackageManagerService extends IPackageManager.Stub { if (uidArr != null) { extras.putIntArray(Intent.EXTRA_CHANGED_UID_LIST, uidArr); } + if (replacing && !mediaStatus) { + extras.putBoolean(Intent.EXTRA_REPLACING, replacing); + } String action = mediaStatus ? Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE : Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE; sendPackageBroadcast(action, null, extras, null, finishedReceiver, null); @@ -10844,7 +10874,7 @@ public class PackageManagerService extends IPackageManager.Stub { } // Send a broadcast to let everyone know we are done processing if (pkgList.size() > 0) { - sendResourcesChangedBroadcast(true, pkgList, uidArr, null); + sendResourcesChangedBroadcast(true, false, pkgList, uidArr, null); } // Force gc to avoid any stale parser references that we might have. if (doGc) { @@ -10921,7 +10951,8 @@ public class PackageManagerService extends IPackageManager.Stub { // broadcast when packages get disabled, force a gc to clean things up. // and unload all the containers. if (pkgList.size() > 0) { - sendResourcesChangedBroadcast(false, pkgList, uidArr, new IIntentReceiver.Stub() { + sendResourcesChangedBroadcast(false, false, pkgList, uidArr, + new IIntentReceiver.Stub() { public void performReceive(Intent intent, int resultCode, String data, Bundle extras, boolean ordered, boolean sticky, int sendingUser) throws RemoteException { @@ -11041,7 +11072,7 @@ public class PackageManagerService extends IPackageManager.Stub { } if (returnCode == PackageManager.MOVE_SUCCEEDED) { // Send resources unavailable broadcast - sendResourcesChangedBroadcast(false, pkgList, uidArr, null); + sendResourcesChangedBroadcast(false, true, pkgList, uidArr, null); // Update package code and resource paths synchronized (mInstallLock) { synchronized (mPackages) { @@ -11119,7 +11150,7 @@ public class PackageManagerService extends IPackageManager.Stub { } } // Send resources available broadcast - sendResourcesChangedBroadcast(true, pkgList, uidArr, null); + sendResourcesChangedBroadcast(true, false, pkgList, uidArr, null); } } if (returnCode != PackageManager.MOVE_SUCCEEDED) { diff --git a/services/java/com/android/server/print/UserState.java b/services/java/com/android/server/print/UserState.java index 3b0ee24faa43..b3f003639c1b 100644 --- a/services/java/com/android/server/print/UserState.java +++ b/services/java/com/android/server/print/UserState.java @@ -205,6 +205,10 @@ final class UserState implements PrintSpoolerCallbacks, PrintServiceCallbacks { for (int i = 0; i < cachedPrintJobCount; i++) { PrintJobInfo cachedPrintJob = cachedPrintJobs.get(i); result.put(cachedPrintJob.getId(), cachedPrintJob); + // Strip out the tag - it is visible only to print services. + // Also the cached print jobs are delivered only to apps, so + // stripping the tag of a cached print job is fine. + cachedPrintJob.setTag(null); } // Add everything else the spooler knows about. @@ -215,6 +219,8 @@ final class UserState implements PrintSpoolerCallbacks, PrintServiceCallbacks { for (int i = 0; i < printJobCount; i++) { PrintJobInfo printJob = printJobs.get(i); result.put(printJob.getId(), printJob); + // Strip out the tag - it is visible only to print services. + printJob.setTag(null); } } |