diff options
32 files changed, 195 insertions, 215 deletions
diff --git a/Android.mk b/Android.mk index 0d02be77c807..6e515751412e 100644 --- a/Android.mk +++ b/Android.mk @@ -391,40 +391,11 @@ LOCAL_INTERMEDIATE_SOURCES := \ LOCAL_NO_STANDARD_LIBRARIES := true LOCAL_JAVA_LIBRARIES := core-libart conscrypt okhttp core-junit bouncycastle ext -LOCAL_MODULE := framework-base - -LOCAL_RMTYPEDEFS := true - -include $(BUILD_STATIC_JAVA_LIBRARY) - -# Make sure that R.java and Manifest.java are built before we build -# the source for this library. -framework_res_R_stamp := \ - $(call intermediates-dir-for,APPS,framework-res,,COMMON)/src/R.stamp -$(full_classes_compiled_jar): $(framework_res_R_stamp) - -# Build part 1 of the framework library. -# ============================================================ -include $(CLEAR_VARS) - LOCAL_MODULE := framework -LOCAL_MODULE_CLASS := JAVA_LIBRARIES -LOCAL_NO_STANDARD_LIBRARIES := true -LOCAL_STATIC_JAVA_LIBRARIES := framework-base -LOCAL_DX_FLAGS := --core-library -# List of packages to include along with their descendants. -LOCAL_JAR_PACKAGES := \ - android +LOCAL_DX_FLAGS := --core-library --multi-dex -# List of packages to exclude along with their descendants. -# Overrides inclusion. -LOCAL_JAR_EXCLUDE_PACKAGES := \ - android.bluetooth \ - android.filterfw \ - android.filterpacks \ - android.hardware \ - android.telephony +LOCAL_RMTYPEDEFS := true # List of classes and interfaces which should be loaded by the Zygote. LOCAL_JAVA_RESOURCE_FILES += $(LOCAL_PATH)/preloaded-classes @@ -432,35 +403,15 @@ LOCAL_JAVA_RESOURCE_FILES += $(LOCAL_PATH)/preloaded-classes include $(BUILD_JAVA_LIBRARY) framework_module := $(LOCAL_INSTALLED_MODULE) -# Build part 2 of the framework library. -# ============================================================ -include $(CLEAR_VARS) - -LOCAL_MODULE := framework2 -LOCAL_MODULE_CLASS := JAVA_LIBRARIES -LOCAL_NO_STANDARD_LIBRARIES := true -LOCAL_STATIC_JAVA_LIBRARIES := framework-base -LOCAL_DX_FLAGS := --core-library - -# List of packages to include along with their descendants. -LOCAL_JAR_PACKAGES := \ - android.bluetooth \ - android.filterfw \ - android.filterpacks \ - android.hardware \ - android.telephony \ - com \ - javax - -include $(BUILD_JAVA_LIBRARY) -framework2_module := $(LOCAL_INSTALLED_MODULE) +# Make sure that R.java and Manifest.java are built before we build +# the source for this library. +framework_res_R_stamp := \ + $(call intermediates-dir-for,APPS,framework-res,,COMMON)/src/R.stamp +$(full_classes_compiled_jar): $(framework_res_R_stamp) -# Make sure that all framework modules are installed when framework is. -# ============================================================ $(framework_module): | $(dir $(framework_module))framework-res.apk -$(framework_module): | $(dir $(framework_module))framework2.jar -framework_built := $(call java-lib-deps,framework framework2) +framework_built := $(call java-lib-deps,framework) # Copy AIDL files to be preprocessed and included in the SDK, # specified relative to the root of the build tree. @@ -636,7 +587,6 @@ framework_docs_LOCAL_API_CHECK_JAVA_LIBRARIES := \ okhttp \ ext \ framework \ - framework2 \ telephony-common \ voip-common @@ -678,7 +628,7 @@ framework_docs_LOCAL_DROIDDOC_OPTIONS := \ -overview $(LOCAL_PATH)/core/java/overview.html framework_docs_LOCAL_API_CHECK_ADDITIONAL_JAVA_DIR:= \ - $(call intermediates-dir-for,JAVA_LIBRARIES,framework-base,,COMMON) + $(call intermediates-dir-for,JAVA_LIBRARIES,framework,,COMMON) framework_docs_LOCAL_ADDITIONAL_JAVA_DIR:= \ $(framework_docs_LOCAL_API_CHECK_ADDITIONAL_JAVA_DIR) \ diff --git a/CleanSpec.mk b/CleanSpec.mk index 2c9ea547ac86..3014e0f4285d 100644 --- a/CleanSpec.mk +++ b/CleanSpec.mk @@ -210,6 +210,8 @@ $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framew $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/ims-common_intermediates) $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework2_intermediates) $(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework-base_intermediates/src/telecomm/java/com/android/internal/telecomm) +$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/framework_intermediates) +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/framework.* $(PRODUCT_OUT)/system/framework2.*) # ****************************************************************** # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST ABOVE THIS BANNER diff --git a/api/current.txt b/api/current.txt index 5de5c8b8fd61..6e25c2a8848a 100644 --- a/api/current.txt +++ b/api/current.txt @@ -5355,7 +5355,7 @@ package android.app.admin { method public boolean installCaCert(android.content.ComponentName, byte[]); method public boolean isActivePasswordSufficient(); method public boolean isAdminActive(android.content.ComponentName); - method public boolean isApplicationBlocked(android.content.ComponentName, java.lang.String); + method public boolean isApplicationHidden(android.content.ComponentName, java.lang.String); method public boolean isDeviceOwnerApp(java.lang.String); method public boolean isLockTaskPermitted(java.lang.String); method public boolean isMasterVolumeMuted(android.content.ComponentName); @@ -5365,9 +5365,9 @@ package android.app.admin { method public boolean removeUser(android.content.ComponentName, android.os.UserHandle); method public boolean resetPassword(java.lang.String, int); method public void setAccountManagementDisabled(android.content.ComponentName, java.lang.String, boolean); - method public boolean setApplicationBlocked(android.content.ComponentName, java.lang.String, boolean); + method public boolean setApplicationHidden(android.content.ComponentName, java.lang.String, boolean); method public void setApplicationRestrictions(android.content.ComponentName, java.lang.String, android.os.Bundle); - method public int setApplicationsBlocked(android.content.ComponentName, android.content.Intent, boolean); + method public int setApplicationsHidden(android.content.ComponentName, android.content.Intent, boolean); method public void setBlockUninstall(android.content.ComponentName, java.lang.String, boolean); method public void setCameraDisabled(android.content.ComponentName, boolean); method public void setCrossProfileCallerIdDisabled(android.content.ComponentName, boolean); @@ -28706,6 +28706,7 @@ package android.telecomm { method public void registerPhoneAccount(android.telecomm.PhoneAccount); method public void unregisterPhoneAccount(android.telecomm.PhoneAccountHandle); field public static final java.lang.String ACTION_CONNECTION_SERVICE_CONFIGURE = "android.intent.action.CONNECTION_SERVICE_CONFIGURE"; + field public static final java.lang.String ACTION_SHOW_CALL_SETTINGS = "android.telecomm.intent.action.SHOW_CALL_SETTINGS"; field public static final char DTMF_CHARACTER_PAUSE = 44; // 0x002c ',' field public static final char DTMF_CHARACTER_WAIT = 59; // 0x003b ';' field public static final java.lang.String EXTRA_CALL_BACK_NUMBER = "android.telecomm.extra.CALL_BACK_NUMBER"; diff --git a/cmds/pm/src/com/android/commands/pm/Pm.java b/cmds/pm/src/com/android/commands/pm/Pm.java index d6c17ae99870..faf5622f38b6 100644 --- a/cmds/pm/src/com/android/commands/pm/Pm.java +++ b/cmds/pm/src/com/android/commands/pm/Pm.java @@ -197,13 +197,13 @@ public final class Pm { return; } - if ("block".equals(op)) { - runSetBlockedSetting(true); + if ("hide".equals(op)) { + runSetHiddenSetting(true); return; } - if ("unblock".equals(op)) { - runSetBlockedSetting(false); + if ("unhide".equals(op)) { + runSetHiddenSetting(false); return; } @@ -1471,7 +1471,7 @@ public final class Pm { } } - private void runSetBlockedSetting(boolean state) { + private void runSetHiddenSetting(boolean state) { int userId = 0; String option = nextOption(); if (option != null && option.equals("--user")) { @@ -1492,9 +1492,9 @@ public final class Pm { return; } try { - mPm.setApplicationBlockedSettingAsUser(pkg, state, userId); - System.err.println("Package " + pkg + " new blocked state: " - + mPm.getApplicationBlockedSettingAsUser(pkg, userId)); + mPm.setApplicationHiddenSettingAsUser(pkg, state, userId); + System.err.println("Package " + pkg + " new hidden state: " + + mPm.getApplicationHiddenSettingAsUser(pkg, userId)); } catch (RemoteException e) { System.err.println(e.toString()); System.err.println(PM_NOT_RUNNING_ERR); @@ -1751,8 +1751,8 @@ public final class Pm { System.err.println(" pm disable [--user USER_ID] PACKAGE_OR_COMPONENT"); System.err.println(" pm disable-user [--user USER_ID] PACKAGE_OR_COMPONENT"); System.err.println(" pm disable-until-used [--user USER_ID] PACKAGE_OR_COMPONENT"); - System.err.println(" pm block [--user USER_ID] PACKAGE_OR_COMPONENT"); - System.err.println(" pm unblock [--user USER_ID] PACKAGE_OR_COMPONENT"); + System.err.println(" pm hide [--user USER_ID] PACKAGE_OR_COMPONENT"); + System.err.println(" pm unhide [--user USER_ID] PACKAGE_OR_COMPONENT"); System.err.println(" pm grant PACKAGE PERMISSION"); System.err.println(" pm revoke PACKAGE PERMISSION"); System.err.println(" pm set-install-location [0/auto] [1/internal] [2/external]"); diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java index 6a513718c119..1cb0fd42608a 100644 --- a/core/java/android/app/ApplicationPackageManager.java +++ b/core/java/android/app/ApplicationPackageManager.java @@ -1452,10 +1452,10 @@ final class ApplicationPackageManager extends PackageManager { } @Override - public boolean setApplicationBlockedSettingAsUser(String packageName, boolean blocked, + public boolean setApplicationHiddenSettingAsUser(String packageName, boolean hidden, UserHandle user) { try { - return mPM.setApplicationBlockedSettingAsUser(packageName, blocked, + return mPM.setApplicationHiddenSettingAsUser(packageName, hidden, user.getIdentifier()); } catch (RemoteException re) { // Should never happen! @@ -1464,9 +1464,9 @@ final class ApplicationPackageManager extends PackageManager { } @Override - public boolean getApplicationBlockedSettingAsUser(String packageName, UserHandle user) { + public boolean getApplicationHiddenSettingAsUser(String packageName, UserHandle user) { try { - return mPM.getApplicationBlockedSettingAsUser(packageName, user.getIdentifier()); + return mPM.getApplicationHiddenSettingAsUser(packageName, user.getIdentifier()); } catch (RemoteException re) { // Should never happen! } diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java index 5f2262b7a568..efeded5f2037 100644 --- a/core/java/android/app/admin/DevicePolicyManager.java +++ b/core/java/android/app/admin/DevicePolicyManager.java @@ -2523,20 +2523,20 @@ public class DevicePolicyManager { } /** - * Called by device or profile owner to block or unblock packages. When a package is blocked it + * Called by device or profile owner to hide or unhide packages. When a package is hidden it * is unavailable for use, but the data and actual package file remain. * * @param admin Which {@link DeviceAdminReceiver} this request is associated with. - * @param packageName The name of the package to block or unblock. - * @param blocked {@code true} if the package should be blocked, {@code false} if it should be - * unblocked. - * @return boolean Whether the blocked setting of the package was successfully updated. + * @param packageName The name of the package to hide or unhide. + * @param hidden {@code true} if the package should be hidden, {@code false} if it should be + * unhidden. + * @return boolean Whether the hidden setting of the package was successfully updated. */ - public boolean setApplicationBlocked(ComponentName admin, String packageName, - boolean blocked) { + public boolean setApplicationHidden(ComponentName admin, String packageName, + boolean hidden) { if (mService != null) { try { - return mService.setApplicationBlocked(admin, packageName, blocked); + return mService.setApplicationHidden(admin, packageName, hidden); } catch (RemoteException e) { Log.w(TAG, "Failed talking with device policy service", e); } @@ -2545,20 +2545,20 @@ public class DevicePolicyManager { } /** - * Called by profile or device owner to block or unblock currently installed packages. This + * Called by profile or device owner to hide or unhide currently installed packages. This * should only be called by a profile or device owner running within a managed profile. * * @param admin Which {@link DeviceAdminReceiver} this request is associated with. * @param intent An intent matching the app(s) to be updated. All apps that resolve for this * intent will be updated in the current profile. - * @param blocked {@code true} if the packages should be blocked, {@code false} if they should - * be unblocked. + * @param hidden {@code true} if the packages should be hidden, {@code false} if they should + * be unhidden. * @return int The number of activities that matched the intent and were updated. */ - public int setApplicationsBlocked(ComponentName admin, Intent intent, boolean blocked) { + public int setApplicationsHidden(ComponentName admin, Intent intent, boolean hidden) { if (mService != null) { try { - return mService.setApplicationsBlocked(admin, intent, blocked); + return mService.setApplicationsHidden(admin, intent, hidden); } catch (RemoteException e) { Log.w(TAG, "Failed talking with device policy service", e); } @@ -2567,16 +2567,16 @@ public class DevicePolicyManager { } /** - * Called by device or profile owner to determine if a package is blocked. + * Called by device or profile owner to determine if a package is hidden. * * @param admin Which {@link DeviceAdminReceiver} this request is associated with. - * @param packageName The name of the package to retrieve the blocked status of. - * @return boolean {@code true} if the package is blocked, {@code false} otherwise. + * @param packageName The name of the package to retrieve the hidden status of. + * @return boolean {@code true} if the package is hidden, {@code false} otherwise. */ - public boolean isApplicationBlocked(ComponentName admin, String packageName) { + public boolean isApplicationHidden(ComponentName admin, String packageName) { if (mService != null) { try { - return mService.isApplicationBlocked(admin, packageName); + return mService.isApplicationHidden(admin, packageName); } catch (RemoteException e) { Log.w(TAG, "Failed talking with device policy service", e); } diff --git a/core/java/android/app/admin/IDevicePolicyManager.aidl b/core/java/android/app/admin/IDevicePolicyManager.aidl index 9b1979f7b732..5fc8c5f49983 100644 --- a/core/java/android/app/admin/IDevicePolicyManager.aidl +++ b/core/java/android/app/admin/IDevicePolicyManager.aidl @@ -132,9 +132,9 @@ interface IDevicePolicyManager { void addCrossProfileIntentFilter(in ComponentName admin, in IntentFilter filter, int flags); void clearCrossProfileIntentFilters(in ComponentName admin); - boolean setApplicationBlocked(in ComponentName admin, in String packageName, boolean blocked); - int setApplicationsBlocked(in ComponentName admin, in Intent intent, boolean blocked); - boolean isApplicationBlocked(in ComponentName admin, in String packageName); + boolean setApplicationHidden(in ComponentName admin, in String packageName, boolean hidden); + int setApplicationsHidden(in ComponentName admin, in Intent intent, boolean hidden); + boolean isApplicationHidden(in ComponentName admin, in String packageName); UserHandle createUser(in ComponentName who, in String name); UserHandle createAndInitializeUser(in ComponentName who, in String name, in String profileOwnerName, in ComponentName profileOwnerComponent, in Bundle adminExtras); diff --git a/core/java/android/content/pm/ApplicationInfo.java b/core/java/android/content/pm/ApplicationInfo.java index 95bd4806a4be..482ad6e267fa 100644 --- a/core/java/android/content/pm/ApplicationInfo.java +++ b/core/java/android/content/pm/ApplicationInfo.java @@ -334,11 +334,11 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { public static final int FLAG_FULL_BACKUP_ONLY = 1<<26; /** - * Value for {@link #flags}: true if the application is blocked via restrictions and for + * Value for {@link #flags}: true if the application is hidden via restrictions and for * most purposes is considered as not installed. * {@hide} */ - public static final int FLAG_BLOCKED = 1<<27; + public static final int FLAG_HIDDEN = 1<<27; /** * Value for {@link #flags}: set to <code>true</code> if the application diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl index eb46cf0452a5..5e55ba72e6a8 100644 --- a/core/java/android/content/pm/IPackageManager.aidl +++ b/core/java/android/content/pm/IPackageManager.aidl @@ -428,8 +428,8 @@ interface IPackageManager { /** Reflects current DeviceStorageMonitorService state */ boolean isStorageLow(); - boolean setApplicationBlockedSettingAsUser(String packageName, boolean blocked, int userId); - boolean getApplicationBlockedSettingAsUser(String packageName, int userId); + boolean setApplicationHiddenSettingAsUser(String packageName, boolean hidden, int userId); + boolean getApplicationHiddenSettingAsUser(String packageName, int userId); IPackageInstaller getPackageInstaller(); diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index b4c02199c5e7..8b6ae41d628c 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -3642,20 +3642,21 @@ public abstract class PackageManager { public abstract int getApplicationEnabledSetting(String packageName); /** - * Puts the package in a blocked state, which is almost like an uninstalled state, + * Puts the package in a hidden state, which is almost like an uninstalled state, * making the package unavailable, but it doesn't remove the data or the actual - * package file. + * package file. Application can be unhidden by either resetting the hidden state + * or by installing it, such as with {@link #installExistingPackage(String)} * @hide */ - public abstract boolean setApplicationBlockedSettingAsUser(String packageName, boolean blocked, + public abstract boolean setApplicationHiddenSettingAsUser(String packageName, boolean hidden, UserHandle userHandle); /** - * Returns the blocked state of a package. - * @see #setApplicationBlockedSettingAsUser(String, boolean, UserHandle) + * Returns the hidden state of a package. + * @see #setApplicationHiddenSettingAsUser(String, boolean, UserHandle) * @hide */ - public abstract boolean getApplicationBlockedSettingAsUser(String packageName, + public abstract boolean getApplicationHiddenSettingAsUser(String packageName, UserHandle userHandle); /** diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index 833dc213c0c1..9866200f80f2 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -382,23 +382,23 @@ public class PackageParser { } /** - * Returns true if the package is installed and not blocked, or if the caller - * explicitly wanted all uninstalled and blocked packages as well. + * Returns true if the package is installed and not hidden, or if the caller + * explicitly wanted all uninstalled and hidden packages as well. */ - private static boolean checkUseInstalledOrBlocked(int flags, PackageUserState state) { - return (state.installed && !state.blocked) + private static boolean checkUseInstalledOrHidden(int flags, PackageUserState state) { + return (state.installed && !state.hidden) || (flags & PackageManager.GET_UNINSTALLED_PACKAGES) != 0; } public static boolean isAvailable(PackageUserState state) { - return checkUseInstalledOrBlocked(0, state); + return checkUseInstalledOrHidden(0, state); } public static PackageInfo generatePackageInfo(PackageParser.Package p, int gids[], int flags, long firstInstallTime, long lastUpdateTime, HashSet<String> grantedPermissions, PackageUserState state, int userId) { - if (!checkUseInstalledOrBlocked(flags, state)) { + if (!checkUseInstalledOrHidden(flags, state)) { return null; } PackageInfo pi = new PackageInfo(); @@ -4533,7 +4533,7 @@ public class PackageParser { return true; } } - if (!state.installed || state.blocked) { + if (!state.installed || state.hidden) { return true; } if (state.stopped) { @@ -4566,10 +4566,10 @@ public class PackageParser { } else { ai.flags &= ~ApplicationInfo.FLAG_INSTALLED; } - if (state.blocked) { - ai.flags |= ApplicationInfo.FLAG_BLOCKED; + if (state.hidden) { + ai.flags |= ApplicationInfo.FLAG_HIDDEN; } else { - ai.flags &= ~ApplicationInfo.FLAG_BLOCKED; + ai.flags &= ~ApplicationInfo.FLAG_HIDDEN; } if (state.enabled == PackageManager.COMPONENT_ENABLED_STATE_ENABLED) { ai.enabled = true; @@ -4585,7 +4585,7 @@ public class PackageParser { public static ApplicationInfo generateApplicationInfo(Package p, int flags, PackageUserState state, int userId) { if (p == null) return null; - if (!checkUseInstalledOrBlocked(flags, state)) { + if (!checkUseInstalledOrHidden(flags, state)) { return null; } if (!copyNeeded(flags, p, state, null, userId) @@ -4673,7 +4673,7 @@ public class PackageParser { public static final ActivityInfo generateActivityInfo(Activity a, int flags, PackageUserState state, int userId) { if (a == null) return null; - if (!checkUseInstalledOrBlocked(flags, state)) { + if (!checkUseInstalledOrHidden(flags, state)) { return null; } if (!copyNeeded(flags, a.owner, state, a.metaData, userId)) { @@ -4714,7 +4714,7 @@ public class PackageParser { public static final ServiceInfo generateServiceInfo(Service s, int flags, PackageUserState state, int userId) { if (s == null) return null; - if (!checkUseInstalledOrBlocked(flags, state)) { + if (!checkUseInstalledOrHidden(flags, state)) { return null; } if (!copyNeeded(flags, s.owner, state, s.metaData, userId)) { @@ -4763,7 +4763,7 @@ public class PackageParser { public static final ProviderInfo generateProviderInfo(Provider p, int flags, PackageUserState state, int userId) { if (p == null) return null; - if (!checkUseInstalledOrBlocked(flags, state)) { + if (!checkUseInstalledOrHidden(flags, state)) { return null; } if (!copyNeeded(flags, p.owner, state, p.metaData, userId) diff --git a/core/java/android/content/pm/PackageUserState.java b/core/java/android/content/pm/PackageUserState.java index f0d4cb1cd901..4dcad6f16195 100644 --- a/core/java/android/content/pm/PackageUserState.java +++ b/core/java/android/content/pm/PackageUserState.java @@ -28,7 +28,7 @@ public class PackageUserState { public boolean stopped; public boolean notLaunched; public boolean installed; - public boolean blocked; // Is the app restricted by owner / admin + public boolean hidden; // Is the app restricted by owner / admin public int enabled; public boolean blockUninstall; @@ -39,7 +39,7 @@ public class PackageUserState { public PackageUserState() { installed = true; - blocked = false; + hidden = false; enabled = COMPONENT_ENABLED_STATE_DEFAULT; } @@ -48,7 +48,7 @@ public class PackageUserState { stopped = o.stopped; notLaunched = o.notLaunched; enabled = o.enabled; - blocked = o.blocked; + hidden = o.hidden; lastDisableAppCaller = o.lastDisableAppCaller; disabledComponents = o.disabledComponents != null ? new HashSet<String>(o.disabledComponents) : null; diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index d9ad1f16accd..671aa10891cd 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -468,13 +468,8 @@ public final class ViewRootImpl implements ViewParent, // Compute surface insets required to draw at specified Z value. // TODO: Use real shadow insets for a constant max Z. - if (view.isHardwareAccelerated()) { - final int surfaceInset = (int) Math.ceil(view.getZ() * 2); - attrs.surfaceInsets.set(surfaceInset, surfaceInset, surfaceInset, surfaceInset); - } else { - // Software accelerated windows can't use insets. - attrs.surfaceInsets.setEmpty(); - } + final int surfaceInset = (int) Math.ceil(view.getZ() * 2); + attrs.surfaceInsets.set(surfaceInset, surfaceInset, surfaceInset, surfaceInset); CompatibilityInfo compatibilityInfo = mDisplayAdjustments.getCompatibilityInfo(); mTranslator = compatibilityInfo.getTranslator(); diff --git a/core/res/res/drawable-hdpi/textfield_activated_mtrl_alpha.9.png b/core/res/res/drawable-hdpi/textfield_activated_mtrl_alpha.9.png Binary files differindex 7c77a45d228b..b9a81bec8047 100644 --- a/core/res/res/drawable-hdpi/textfield_activated_mtrl_alpha.9.png +++ b/core/res/res/drawable-hdpi/textfield_activated_mtrl_alpha.9.png diff --git a/core/res/res/drawable-hdpi/textfield_default_mtrl_alpha.9.png b/core/res/res/drawable-hdpi/textfield_default_mtrl_alpha.9.png Binary files differindex bc6da211f159..368262986ab4 100644 --- a/core/res/res/drawable-hdpi/textfield_default_mtrl_alpha.9.png +++ b/core/res/res/drawable-hdpi/textfield_default_mtrl_alpha.9.png diff --git a/core/res/res/drawable-mdpi/textfield_activated_mtrl_alpha.9.png b/core/res/res/drawable-mdpi/textfield_activated_mtrl_alpha.9.png Binary files differindex 7a722950f8fa..f3d06fe0e386 100644 --- a/core/res/res/drawable-mdpi/textfield_activated_mtrl_alpha.9.png +++ b/core/res/res/drawable-mdpi/textfield_activated_mtrl_alpha.9.png diff --git a/core/res/res/drawable-mdpi/textfield_default_mtrl_alpha.9.png b/core/res/res/drawable-mdpi/textfield_default_mtrl_alpha.9.png Binary files differindex 483931fa6b69..f0e7db873e2d 100644 --- a/core/res/res/drawable-mdpi/textfield_default_mtrl_alpha.9.png +++ b/core/res/res/drawable-mdpi/textfield_default_mtrl_alpha.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_activated_mtrl_alpha.9.png b/core/res/res/drawable-xhdpi/textfield_activated_mtrl_alpha.9.png Binary files differindex 16c376a41e34..7174b67fa42d 100644 --- a/core/res/res/drawable-xhdpi/textfield_activated_mtrl_alpha.9.png +++ b/core/res/res/drawable-xhdpi/textfield_activated_mtrl_alpha.9.png diff --git a/core/res/res/drawable-xhdpi/textfield_default_mtrl_alpha.9.png b/core/res/res/drawable-xhdpi/textfield_default_mtrl_alpha.9.png Binary files differindex e3bd904608f2..46dad22fb87c 100644 --- a/core/res/res/drawable-xhdpi/textfield_default_mtrl_alpha.9.png +++ b/core/res/res/drawable-xhdpi/textfield_default_mtrl_alpha.9.png diff --git a/core/res/res/drawable-xxhdpi/textfield_activated_mtrl_alpha.9.png b/core/res/res/drawable-xxhdpi/textfield_activated_mtrl_alpha.9.png Binary files differindex a22f35203e79..661d5f0a8d57 100644 --- a/core/res/res/drawable-xxhdpi/textfield_activated_mtrl_alpha.9.png +++ b/core/res/res/drawable-xxhdpi/textfield_activated_mtrl_alpha.9.png diff --git a/core/res/res/drawable-xxhdpi/textfield_default_mtrl_alpha.9.png b/core/res/res/drawable-xxhdpi/textfield_default_mtrl_alpha.9.png Binary files differindex b0504e031683..d7696c31404d 100644 --- a/core/res/res/drawable-xxhdpi/textfield_default_mtrl_alpha.9.png +++ b/core/res/res/drawable-xxhdpi/textfield_default_mtrl_alpha.9.png diff --git a/core/res/res/drawable/edit_text_material.xml b/core/res/res/drawable/edit_text_material.xml index 86cec8f7ed57..eaf5e45d6893 100644 --- a/core/res/res/drawable/edit_text_material.xml +++ b/core/res/res/drawable/edit_text_material.xml @@ -14,20 +14,25 @@ limitations under the License. --> -<ripple xmlns:android="http://schemas.android.com/apk/res/android" - android:color="?attr/colorControlActivated"> - <item> - <selector> - <item android:state_enabled="false"> - <nine-patch android:src="@drawable/textfield_default_mtrl_alpha" - android:tint="?attr/colorControlNormal" - android:alpha="?attr/disabledAlpha" /> - </item> - <item> - <nine-patch android:src="@drawable/textfield_default_mtrl_alpha" - android:tint="?attr/colorControlNormal" /> - </item> - </selector> - </item> - <item android:id="@+id/mask" android:drawable="@drawable/textfield_activated_mtrl_alpha" /> -</ripple> +<inset xmlns:android="http://schemas.android.com/apk/res/android" + android:insetLeft="@dimen/control_inset_material" + android:insetTop="@dimen/control_inset_material" + android:insetBottom="@dimen/control_inset_material" + android:insetRight="@dimen/control_inset_material"> + <ripple android:color="?attr/colorControlActivated"> + <item> + <selector> + <item android:state_enabled="false"> + <nine-patch android:src="@drawable/textfield_default_mtrl_alpha" + android:tint="?attr/colorControlNormal" + android:alpha="?attr/disabledAlpha" /> + </item> + <item> + <nine-patch android:src="@drawable/textfield_default_mtrl_alpha" + android:tint="?attr/colorControlNormal" /> + </item> + </selector> + </item> + <item android:id="@+id/mask" android:drawable="@drawable/textfield_activated_mtrl_alpha" /> + </ripple> +</inset> diff --git a/packages/PrintSpooler/Android.mk b/packages/PrintSpooler/Android.mk index a3a1f8c34820..3fbd4d8a4160 100644 --- a/packages/PrintSpooler/Android.mk +++ b/packages/PrintSpooler/Android.mk @@ -22,8 +22,6 @@ LOCAL_SRC_FILES := $(call all-java-files-under, src) LOCAL_PACKAGE_NAME := PrintSpooler -LOCAL_JAVA_LIBRARIES := framework-base - LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 android-support-v7-recyclerview include $(BUILD_PACKAGE) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 77fd409739da..6de8a8b77187 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -7882,7 +7882,7 @@ public class PackageManagerService extends IPackageManager.Stub { } @Override - public boolean setApplicationBlockedSettingAsUser(String packageName, boolean blocked, + public boolean setApplicationHiddenSettingAsUser(String packageName, boolean hidden, int userId) { mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USERS, null); PackageSetting pkgSetting; @@ -7890,11 +7890,11 @@ public class PackageManagerService extends IPackageManager.Stub { if (UserHandle.getUserId(uid) != userId) { mContext.enforceCallingOrSelfPermission( android.Manifest.permission.INTERACT_ACROSS_USERS_FULL, - "setApplicationBlockedSetting for user " + userId); + "setApplicationHiddenSetting for user " + userId); } - if (blocked && isPackageDeviceAdmin(packageName, userId)) { - Slog.w(TAG, "Not blocking package " + packageName + ": has active device admin"); + if (hidden && isPackageDeviceAdmin(packageName, userId)) { + Slog.w(TAG, "Not hiding package " + packageName + ": has active device admin"); return false; } @@ -7908,10 +7908,10 @@ public class PackageManagerService extends IPackageManager.Stub { if (pkgSetting == null) { return false; } - if (pkgSetting.getBlocked(userId) != blocked) { - pkgSetting.setBlocked(blocked, userId); + if (pkgSetting.getHidden(userId) != hidden) { + pkgSetting.setHidden(hidden, userId); mSettings.writePackageRestrictionsLPr(userId); - if (blocked) { + if (hidden) { sendRemoved = true; } else { sendAdded = true; @@ -7924,8 +7924,8 @@ public class PackageManagerService extends IPackageManager.Stub { } if (sendRemoved) { killApplication(packageName, UserHandle.getUid(userId, pkgSetting.appId), - "blocking pkg"); - sendPackageBlockedForUser(packageName, pkgSetting, userId); + "hiding pkg"); + sendApplicationHiddenForUser(packageName, pkgSetting, userId); } } finally { Binder.restoreCallingIdentity(callingId); @@ -7933,7 +7933,7 @@ public class PackageManagerService extends IPackageManager.Stub { return false; } - private void sendPackageBlockedForUser(String packageName, PackageSetting pkgSetting, + private void sendApplicationHiddenForUser(String packageName, PackageSetting pkgSetting, int userId) { final PackageRemovedInfo info = new PackageRemovedInfo(); info.removedPackage = packageName; @@ -7944,13 +7944,13 @@ public class PackageManagerService extends IPackageManager.Stub { /** * Returns true if application is not found or there was an error. Otherwise it returns - * the blocked state of the package for the given user. + * the hidden state of the package for the given user. */ @Override - public boolean getApplicationBlockedSettingAsUser(String packageName, int userId) { + public boolean getApplicationHiddenSettingAsUser(String packageName, int userId) { mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USERS, null); enforceCrossUserPermission(Binder.getCallingUid(), userId, true, - "getApplicationBlocked for user " + userId); + "getApplicationHidden for user " + userId); PackageSetting pkgSetting; long callingId = Binder.clearCallingIdentity(); try { @@ -7960,7 +7960,7 @@ public class PackageManagerService extends IPackageManager.Stub { if (pkgSetting == null) { return true; } - return pkgSetting.getBlocked(userId); + return pkgSetting.getHidden(userId); } } finally { Binder.restoreCallingIdentity(callingId); @@ -7994,7 +7994,7 @@ public class PackageManagerService extends IPackageManager.Stub { } if (!pkgSetting.getInstalled(userId)) { pkgSetting.setInstalled(true, userId); - pkgSetting.setBlocked(false, userId); + pkgSetting.setHidden(false, userId); mSettings.writePackageRestrictionsLPr(userId); sendAdded = true; } @@ -10593,19 +10593,19 @@ public class PackageManagerService extends IPackageManager.Stub { return; } - boolean blocked = false; + boolean uninstallBlocked = false; if ((flags & PackageManager.DELETE_ALL_USERS) != 0) { int[] users = sUserManager.getUserIds(); for (int i = 0; i < users.length; ++i) { if (getBlockUninstallForUser(packageName, users[i])) { - blocked = true; + uninstallBlocked = true; break; } } } else { - blocked = getBlockUninstallForUser(packageName, userId); + uninstallBlocked = getBlockUninstallForUser(packageName, userId); } - if (blocked) { + if (uninstallBlocked) { try { observer.packageDeleted(packageName, PackageManager.DELETE_FAILED_OWNER_BLOCKED); } catch (RemoteException re) { @@ -10613,7 +10613,9 @@ public class PackageManagerService extends IPackageManager.Stub { return; } - if (DEBUG_REMOVE) Slog.d(TAG, "deletePackageAsUser: pkg=" + packageName + " user=" + userId); + if (DEBUG_REMOVE) { + Slog.d(TAG, "deletePackageAsUser: pkg=" + packageName + " user=" + userId); + } // Queue up an async operation since the package deletion may take a little while. mHandler.post(new Runnable() { public void run() { @@ -11032,7 +11034,7 @@ public class PackageManagerService extends IPackageManager.Stub { false, //installed true, //stopped true, //notLaunched - false, //blocked + false, //hidden null, null, null, false // blockUninstall ); diff --git a/services/core/java/com/android/server/pm/PackageSettingBase.java b/services/core/java/com/android/server/pm/PackageSettingBase.java index e164f5f7a7cd..e29332cd249d 100644 --- a/services/core/java/com/android/server/pm/PackageSettingBase.java +++ b/services/core/java/com/android/server/pm/PackageSettingBase.java @@ -281,12 +281,12 @@ class PackageSettingBase extends GrantedPermissions { modifyUserState(userId).notLaunched = stop; } - boolean getBlocked(int userId) { - return readUserState(userId).blocked; + boolean getHidden(int userId) { + return readUserState(userId).hidden; } - void setBlocked(boolean blocked, int userId) { - modifyUserState(userId).blocked = blocked; + void setHidden(boolean hidden, int userId) { + modifyUserState(userId).hidden = hidden; } boolean getBlockUninstall(int userId) { @@ -298,7 +298,7 @@ class PackageSettingBase extends GrantedPermissions { } void setUserState(int userId, int enabled, boolean installed, boolean stopped, - boolean notLaunched, boolean blocked, + boolean notLaunched, boolean hidden, String lastDisableAppCaller, HashSet<String> enabledComponents, HashSet<String> disabledComponents, boolean blockUninstall) { PackageUserState state = modifyUserState(userId); @@ -306,7 +306,7 @@ class PackageSettingBase extends GrantedPermissions { state.installed = installed; state.stopped = stopped; state.notLaunched = notLaunched; - state.blocked = blocked; + state.hidden = hidden; state.lastDisableAppCaller = lastDisableAppCaller; state.enabledComponents = enabledComponents; state.disabledComponents = disabledComponents; diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java index e16894e25f48..d1ea3e19e9d6 100644 --- a/services/core/java/com/android/server/pm/Settings.java +++ b/services/core/java/com/android/server/pm/Settings.java @@ -153,7 +153,10 @@ final class Settings { private static final String ATTR_ENABLED = "enabled"; private static final String ATTR_ENABLED_CALLER = "enabledCaller"; private static final String ATTR_STOPPED = "stopped"; + // Legacy, here for reading older versions of the package-restrictions. private static final String ATTR_BLOCKED = "blocked"; + // New name for the above attribute. + private static final String ATTR_HIDDEN = "hidden"; private static final String ATTR_INSTALLED = "inst"; private static final String ATTR_BLOCK_UNINSTALL = "blockUninstall"; @@ -606,7 +609,7 @@ final class Settings { installed, true, // stopped, true, // notLaunched - false, // blocked + false, // hidden null, null, null, false // blockUninstall ); @@ -1177,7 +1180,7 @@ final class Settings { true, // installed false, // stopped false, // notLaunched - false, // blocked + false, // hidden null, null, null, false // blockUninstall ); @@ -1233,9 +1236,14 @@ final class Settings { final String stoppedStr = parser.getAttributeValue(null, ATTR_STOPPED); final boolean stopped = stoppedStr == null ? false : Boolean.parseBoolean(stoppedStr); + // For backwards compatibility with the previous name of "blocked", which + // now means hidden, read the old attribute as well. final String blockedStr = parser.getAttributeValue(null, ATTR_BLOCKED); - final boolean blocked = blockedStr == null + boolean hidden = blockedStr == null ? false : Boolean.parseBoolean(blockedStr); + final String hiddenStr = parser.getAttributeValue(null, ATTR_HIDDEN); + hidden = hiddenStr == null + ? hidden : Boolean.parseBoolean(hiddenStr); final String notLaunchedStr = parser.getAttributeValue(null, ATTR_NOT_LAUNCHED); final boolean notLaunched = stoppedStr == null ? false : Boolean.parseBoolean(notLaunchedStr); @@ -1263,7 +1271,7 @@ final class Settings { } } - ps.setUserState(userId, enabled, installed, stopped, notLaunched, blocked, + ps.setUserState(userId, enabled, installed, stopped, notLaunched, hidden, enabledCaller, enabledComponents, disabledComponents, blockUninstall); } else if (tagName.equals("preferred-activities")) { readPreferredActivitiesLPw(parser, userId); @@ -1432,7 +1440,7 @@ final class Settings { PackageUserState ustate = pkg.readUserState(userId); if (ustate.stopped || ustate.notLaunched || !ustate.installed || ustate.enabled != COMPONENT_ENABLED_STATE_DEFAULT - || ustate.blocked + || ustate.hidden || (ustate.enabledComponents != null && ustate.enabledComponents.size() > 0) || (ustate.disabledComponents != null @@ -1451,8 +1459,8 @@ final class Settings { if (ustate.notLaunched) { serializer.attribute(null, ATTR_NOT_LAUNCHED, "true"); } - if (ustate.blocked) { - serializer.attribute(null, ATTR_BLOCKED, "true"); + if (ustate.hidden) { + serializer.attribute(null, ATTR_HIDDEN, "true"); } if (ustate.blockUninstall) { serializer.attribute(null, ATTR_BLOCK_UNINSTALL, "true"); @@ -3443,7 +3451,7 @@ final class Settings { pw.print(user.id); pw.print(","); pw.print(ps.getInstalled(user.id) ? "I" : "i"); - pw.print(ps.getBlocked(user.id) ? "B" : "b"); + pw.print(ps.getHidden(user.id) ? "B" : "b"); pw.print(ps.getStopped(user.id) ? "S" : "s"); pw.print(ps.getNotLaunched(user.id) ? "l" : "L"); pw.print(","); @@ -3583,8 +3591,8 @@ final class Settings { pw.print(prefix); pw.print(" User "); pw.print(user.id); pw.print(": "); pw.print(" installed="); pw.print(ps.getInstalled(user.id)); - pw.print(" blocked="); - pw.print(ps.getBlocked(user.id)); + pw.print(" hidden="); + pw.print(ps.getHidden(user.id)); pw.print(" stopped="); pw.print(ps.getStopped(user.id)); pw.print(" notLaunched="); diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index b4cc25238803..33ecc4dc3db8 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -1428,7 +1428,7 @@ public class UserManagerService extends IUserManager.Stub { removeRestrictionsForUser(userHandle, true); } - private void removeRestrictionsForUser(final int userHandle, boolean unblockApps) { + private void removeRestrictionsForUser(final int userHandle, boolean unhideApps) { synchronized (mPackagesLock) { // Remove all user restrictions setUserRestrictions(new Bundle(), userHandle); @@ -1437,12 +1437,12 @@ public class UserManagerService extends IUserManager.Stub { // Remove any app restrictions cleanAppRestrictions(userHandle); } - if (unblockApps) { - unblockAllAppsForUser(userHandle); + if (unhideApps) { + unhideAllInstalledAppsForUser(userHandle); } } - private void unblockAllAppsForUser(final int userHandle) { + private void unhideAllInstalledAppsForUser(final int userHandle) { mHandler.post(new Runnable() { @Override public void run() { @@ -1453,8 +1453,8 @@ public class UserManagerService extends IUserManager.Stub { try { for (ApplicationInfo appInfo : apps) { if ((appInfo.flags & ApplicationInfo.FLAG_INSTALLED) != 0 - && (appInfo.flags & ApplicationInfo.FLAG_BLOCKED) != 0) { - mPm.setApplicationBlockedSettingAsUser(appInfo.packageName, false, + && (appInfo.flags & ApplicationInfo.FLAG_HIDDEN) != 0) { + mPm.setApplicationHiddenSettingAsUser(appInfo.packageName, false, userHandle); } } diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index 12ed920fe32b..c218d3826b8c 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -3708,8 +3708,8 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } @Override - public boolean setApplicationBlocked(ComponentName who, String packageName, - boolean blocked) { + public boolean setApplicationHidden(ComponentName who, String packageName, + boolean hidden) { int callingUserId = UserHandle.getCallingUserId(); synchronized (this) { if (who == null) { @@ -3720,10 +3720,10 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { long id = Binder.clearCallingIdentity(); try { IPackageManager pm = AppGlobals.getPackageManager(); - return pm.setApplicationBlockedSettingAsUser(packageName, blocked, callingUserId); + return pm.setApplicationHiddenSettingAsUser(packageName, hidden, callingUserId); } catch (RemoteException re) { // shouldn't happen - Slog.e(LOG_TAG, "Failed to setApplicationBlockedSetting", re); + Slog.e(LOG_TAG, "Failed to setApplicationHiddenSetting", re); } finally { restoreCallingIdentity(id); } @@ -3732,7 +3732,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } @Override - public int setApplicationsBlocked(ComponentName who, Intent intent, boolean blocked) { + public int setApplicationsHidden(ComponentName who, Intent intent, boolean hidden) { int callingUserId = UserHandle.getCallingUserId(); synchronized (this) { if (who == null) { @@ -3750,20 +3750,20 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { callingUserId); if (DBG) Slog.d(LOG_TAG, "Enabling activities: " + activitiesToEnable); - int numberOfAppsUnblocked = 0; + int numberOfAppsUnhidden = 0; if (activitiesToEnable != null) { for (ResolveInfo info : activitiesToEnable) { if (info.activityInfo != null) { - numberOfAppsUnblocked++; - pm.setApplicationBlockedSettingAsUser(info.activityInfo.packageName, - blocked, callingUserId); + numberOfAppsUnhidden++; + pm.setApplicationHiddenSettingAsUser(info.activityInfo.packageName, + hidden, callingUserId); } } } - return numberOfAppsUnblocked; + return numberOfAppsUnhidden; } catch (RemoteException re) { // shouldn't happen - Slog.e(LOG_TAG, "Failed to setApplicationsBlockedSettingsWithIntent", re); + Slog.e(LOG_TAG, "Failed to setApplicationsHiddenSettingsWithIntent", re); } finally { restoreCallingIdentity(id); } @@ -3772,7 +3772,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } @Override - public boolean isApplicationBlocked(ComponentName who, String packageName) { + public boolean isApplicationHidden(ComponentName who, String packageName) { int callingUserId = UserHandle.getCallingUserId(); synchronized (this) { if (who == null) { @@ -3783,10 +3783,10 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { long id = Binder.clearCallingIdentity(); try { IPackageManager pm = AppGlobals.getPackageManager(); - return pm.getApplicationBlockedSettingAsUser(packageName, callingUserId); + return pm.getApplicationHiddenSettingAsUser(packageName, callingUserId); } catch (RemoteException re) { // shouldn't happen - Slog.e(LOG_TAG, "Failed to getApplicationBlockedSettingAsUser", re); + Slog.e(LOG_TAG, "Failed to getApplicationHiddenSettingAsUser", re); } finally { restoreCallingIdentity(id); } diff --git a/services/usage/java/com/android/server/usage/UsageStatsService.java b/services/usage/java/com/android/server/usage/UsageStatsService.java index 13cbf8a0baad..475824af23f7 100644 --- a/services/usage/java/com/android/server/usage/UsageStatsService.java +++ b/services/usage/java/com/android/server/usage/UsageStatsService.java @@ -16,6 +16,7 @@ package com.android.server.usage; +import android.Manifest; import android.app.AppOpsManager; import android.app.usage.IUsageStatsManager; import android.app.usage.PackageUsageStats; @@ -25,6 +26,7 @@ import android.app.usage.UsageStatsManager; import android.app.usage.UsageStatsManagerInternal; import android.content.ComponentName; import android.content.Context; +import android.content.pm.PackageManager; import android.os.Binder; import android.os.Environment; import android.os.Handler; @@ -381,10 +383,21 @@ public class UsageStatsService extends SystemService { private class BinderService extends IUsageStatsManager.Stub { + private boolean hasPermission(String callingPackage) { + final int mode = mAppOps.checkOp(AppOpsManager.OP_GET_USAGE_STATS, + Binder.getCallingUid(), callingPackage); + if (mode == AppOpsManager.MODE_IGNORED) { + // If AppOpsManager ignores this, still allow if we have the system level + // permission. + return getContext().checkCallingPermission(Manifest.permission.PACKAGE_USAGE_STATS) + == PackageManager.PERMISSION_GRANTED; + } + return mode == AppOpsManager.MODE_ALLOWED; + } + @Override public UsageStats[] getStatsSince(int bucketType, long time, String callingPackage) { - if (mAppOps.checkOp(AppOpsManager.OP_GET_USAGE_STATS, Binder.getCallingUid(), - callingPackage) != AppOpsManager.MODE_ALLOWED) { + if (!hasPermission(callingPackage)) { return UsageStats.EMPTY_STATS; } @@ -398,8 +411,7 @@ public class UsageStatsService extends SystemService { @Override public UsageStats.Event[] getEventsSince(long time, String callingPackage) { - if (mAppOps.checkOp(AppOpsManager.OP_GET_USAGE_STATS, Binder.getCallingUid(), - callingPackage) != AppOpsManager.MODE_ALLOWED) { + if (!hasPermission(callingPackage)) { return UsageStats.Event.EMPTY_EVENTS; } diff --git a/telecomm/java/android/telecomm/TelecommManager.java b/telecomm/java/android/telecomm/TelecommManager.java index c76d670e9adc..ea89a534c3e7 100644 --- a/telecomm/java/android/telecomm/TelecommManager.java +++ b/telecomm/java/android/telecomm/TelecommManager.java @@ -56,6 +56,12 @@ public class TelecommManager { "android.intent.action.CONNECTION_SERVICE_CONFIGURE"; /** + * The {@link android.content.Intent} action used to show the call settings page. + */ + public static final String ACTION_SHOW_CALL_SETTINGS = + "android.telecomm.intent.action.SHOW_CALL_SETTINGS"; + + /** * Optional extra for {@link android.content.Intent#ACTION_CALL} containing a boolean that * determines whether the speakerphone should be automatically turned on for an outgoing call. */ diff --git a/test-runner/src/android/test/mock/MockPackageManager.java b/test-runner/src/android/test/mock/MockPackageManager.java index e38848098c89..36c90f286d8c 100644 --- a/test-runner/src/android/test/mock/MockPackageManager.java +++ b/test-runner/src/android/test/mock/MockPackageManager.java @@ -661,7 +661,7 @@ public class MockPackageManager extends PackageManager { * @hide */ @Override - public boolean setApplicationBlockedSettingAsUser(String packageName, boolean blocked, + public boolean setApplicationHiddenSettingAsUser(String packageName, boolean hidden, UserHandle user) { return false; } @@ -670,7 +670,7 @@ public class MockPackageManager extends PackageManager { * @hide */ @Override - public boolean getApplicationBlockedSettingAsUser(String packageName, UserHandle user) { + public boolean getApplicationHiddenSettingAsUser(String packageName, UserHandle user) { return false; } diff --git a/tools/layoutlib/Android.mk b/tools/layoutlib/Android.mk index ead3b13b01ad..9300401aa2b5 100644 --- a/tools/layoutlib/Android.mk +++ b/tools/layoutlib/Android.mk @@ -27,8 +27,8 @@ LOCAL_JAVACFLAGS := -source 6 -target 6 # We need to process the framework classes.jar file, but we can't # depend directly on it (private vars won't be inherited correctly). # So, we depend on framework's BUILT file. -built_framework_dep := $(call java-lib-deps,framework-base) -built_framework_classes := $(call java-lib-files,framework-base) +built_framework_dep := $(call java-lib-deps,framework) +built_framework_classes := $(call java-lib-files,framework) built_core_dep := $(call java-lib-deps,core-libart) built_core_classes := $(call java-lib-files,core-libart) |