diff --git a/api/current.txt b/api/current.txt index 6063368b475ce..5b719bbc7b820 100644 --- a/api/current.txt +++ b/api/current.txt @@ -7596,6 +7596,7 @@ package android.content { field public static final java.lang.String ACTION_CHOOSER = "android.intent.action.CHOOSER"; field public static final java.lang.String ACTION_CLOSE_SYSTEM_DIALOGS = "android.intent.action.CLOSE_SYSTEM_DIALOGS"; field public static final java.lang.String ACTION_CONFIGURATION_CHANGED = "android.intent.action.CONFIGURATION_CHANGED"; + field public static final java.lang.String ACTION_CONFIRM_DEVICE_CREDENTIAL = "android.intent.action.CONFIRM_DEVICE_CREDENTIAL"; field public static final java.lang.String ACTION_CREATE_DOCUMENT = "android.intent.action.CREATE_DOCUMENT"; field public static final java.lang.String ACTION_CREATE_SHORTCUT = "android.intent.action.CREATE_SHORTCUT"; field public static final java.lang.String ACTION_DATE_CHANGED = "android.intent.action.DATE_CHANGED"; @@ -7738,6 +7739,7 @@ package android.content { field public static final java.lang.String EXTRA_CHANGED_PACKAGE_LIST = "android.intent.extra.changed_package_list"; field public static final java.lang.String EXTRA_CHANGED_UID_LIST = "android.intent.extra.changed_uid_list"; field public static final java.lang.String EXTRA_DATA_REMOVED = "android.intent.extra.DATA_REMOVED"; + field public static final java.lang.String EXTRA_DETAILS = "android.intent.extra.DETAILS"; field public static final java.lang.String EXTRA_DOCK_STATE = "android.intent.extra.DOCK_STATE"; field public static final int EXTRA_DOCK_STATE_CAR = 2; // 0x2 field public static final int EXTRA_DOCK_STATE_DESK = 1; // 0x1 @@ -25539,11 +25541,13 @@ package android.provider { field public static final java.lang.String ACTION_SOUND_SETTINGS = "android.settings.SOUND_SETTINGS"; field public static final java.lang.String ACTION_SYNC_SETTINGS = "android.settings.SYNC_SETTINGS"; field public static final java.lang.String ACTION_USER_DICTIONARY_SETTINGS = "android.settings.USER_DICTIONARY_SETTINGS"; + field public static final java.lang.String ACTION_VOICE_CONTROL_AIRPLANE_MODE = "android.settings.VOICE_CONTROL_AIRPLANE_MODE"; field public static final java.lang.String ACTION_WIFI_IP_SETTINGS = "android.settings.WIFI_IP_SETTINGS"; field public static final java.lang.String ACTION_WIFI_SETTINGS = "android.settings.WIFI_SETTINGS"; field public static final java.lang.String ACTION_WIRELESS_SETTINGS = "android.settings.WIRELESS_SETTINGS"; field public static final java.lang.String AUTHORITY = "settings"; field public static final java.lang.String EXTRA_ACCOUNT_TYPES = "account_types"; + field public static final java.lang.String EXTRA_AIRPLANE_MODE_ENABLED = "airplane_mode_enabled"; field public static final java.lang.String EXTRA_AUTHORITIES = "authorities"; field public static final java.lang.String EXTRA_INPUT_METHOD_ID = "input_method_id"; } diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java index ae6047614a7e9..f224f40610e7c 100644 --- a/core/java/android/content/Intent.java +++ b/core/java/android/content/Intent.java @@ -1414,6 +1414,21 @@ public class Intent implements Parcelable, Cloneable { @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) public static final String ACTION_UNINSTALL_PACKAGE = "android.intent.action.UNINSTALL_PACKAGE"; + /** + * Activity Action: Prompt the user to confirm credentials (pin, pattern or password) + * for the current user of the device. Launch this activity using + * {@link android.app.Activity#startActivityForResult(Intent, int)} and check if the + * result is {@link android.app.Activity#RESULT_OK} for a successful response to the + * challenge.

+ * This intent is handled by the system at a high priority and applications cannot intercept + * it.

+ * You can use {@link android.app.KeyguardManager#isKeyguardSecure()} to determine if the user will be + * prompted. + */ + @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) + public static final String ACTION_CONFIRM_DEVICE_CREDENTIAL = "android.intent.action.CONFIRM_DEVICE_CREDENTIAL"; + + /** * Specify whether the package should be uninstalled for all users. * @hide because these should not be part of normal application flow. @@ -3162,10 +3177,16 @@ public class Intent implements Parcelable, Cloneable { /** * A CharSequence dialog title to provide to the user when used with a - * {@link #ACTION_CHOOSER}. + * {@link #ACTION_CHOOSER} or {@link #ACTION_CONFIRM_DEVICE_CREDENTIAL}. */ public static final String EXTRA_TITLE = "android.intent.extra.TITLE"; + /** + * A CharSequence description to provide to the user when used with + * {@link #ACTION_CONFIRM_DEVICE_CREDENTIAL}. + */ + public static final String EXTRA_DETAILS = "android.intent.extra.DETAILS"; + /** * A Parcelable[] of {@link Intent} or * {@link android.content.pm.LabeledIntent} objects as set with diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 48b763cd19e0c..fe201cdec2aba 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -130,6 +130,31 @@ public final class Settings { public static final String ACTION_AIRPLANE_MODE_SETTINGS = "android.settings.AIRPLANE_MODE_SETTINGS"; + /** + * Activity Action: Modify Airplane mode settings using the users voice. + *

+ * In some cases, a matching Activity may not exist, so ensure you safeguard against this. + *

+ * This intent MUST be started using + * {@link android.service.voice.VoiceInteractionSession#startVoiceActivity + * startVoiceActivity}. + *

+ * To tell which state airplane mode should be set to, add the + * {@link #EXTRA_AIRPLANE_MODE_ENABLED} extra to this Intent with the state specified. + * If there is no extra in this Intent, no changes will be made. + *

+ * The activity should verify that + * {@link android.app.Activity#isVoiceInteraction isVoiceInteraction} returns true before + * modifying the setting. + *

+ * Input: Nothing. + *

+ * Output: Nothing. + */ + @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) + public static final String ACTION_VOICE_CONTROL_AIRPLANE_MODE = + "android.settings.VOICE_CONTROL_AIRPLANE_MODE"; + /** * Activity Action: Show settings for accessibility modules. *

@@ -207,7 +232,6 @@ public final class Settings { /** * Activity Action: Show settings to allow configuration of Wi-Fi. - *

* In some cases, a matching Activity may not exist, so ensure you * safeguard against this. @@ -779,6 +803,33 @@ public final class Settings { @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) public static final String ACTION_ZEN_MODE_SETTINGS = "android.settings.ZEN_MODE_SETTINGS"; + /** + * Activity Action: Modify zen mode settings. + *

+ * In some cases, a matching Activity may not exist, so ensure you safeguard against this. + *

+ * This intent MUST be started using + * {@link android.service.voice.VoiceInteractionSession#startVoiceActivity + * startVoiceActivity}. + *

+ * To tell which state zen mode should be set to, add the + * {@link #EXTRA_ZEN_MODE_INTERRUPTION_STATE} extra to this Intent with the state specified. + * If there is no extra in this Intent, no changes will be made. + *

+ * The Activity should verify that + * {@link android.app.Activity#isVoiceInteraction isVoiceInteraction}. + * returns true before modifying the setting. + *

+ * Input: Nothing. + *

+ * Output: Nothing. + * + * @hide + */ + @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) + public static final String ACTION_VOICE_CONTROL_ZEN_MODE = + "android.settings.VOICE_CONTROL_ZEN_MODE"; + /** * Activity Action: Show the regulatory information screen for the device. *

@@ -891,6 +942,27 @@ public final class Settings { public static final String EXTRA_INPUT_METHOD_ID = "input_method_id"; + /** + * Activity Extra: Enable or disable Airplane Mode. + *

+ * This can be passed as an extra field to the {@link #ACTION_VOICE_CONTROL_AIRPLANE_MODE} + * intent as a boolean. + */ + public static final String EXTRA_AIRPLANE_MODE_ENABLED = "airplane_mode_enabled"; + + /** + * Activity Extra: Modify the zen mode interruption state. + *

+ * This can be passed as an extra field to the {@link #ACTION_VOICE_CONTROL_ZEN_MODE} + * intent as an integer. The value should be one of + * {@link android.provider.Settings.Global#ZEN_MODE_OFF}, + * {@link android.provider.Settings.Global#ZEN_MODE_IMPORTANT_INTERRUPTIONS}, + * {@link android.provider.Settings.Global#ZEN_MODE_NO_INTERRUPTIONS}. + * + * @hide + */ + public static final String EXTRA_ZEN_MODE_INTERRUPTION_STATE = "zen_mode_interruption_state"; + private static final String JID_RESOURCE_PREFIX = "android"; public static final String AUTHORITY = "settings"; diff --git a/core/java/android/webkit/WebViewFactory.java b/core/java/android/webkit/WebViewFactory.java index 2c7b3ebccdaf3..0401fb7729f5c 100644 --- a/core/java/android/webkit/WebViewFactory.java +++ b/core/java/android/webkit/WebViewFactory.java @@ -16,6 +16,9 @@ package android.webkit; +import android.app.AppGlobals; +import android.content.Context; +import android.content.pm.PackageManager; import android.os.Build; import android.os.Process; import android.os.RemoteException; @@ -100,9 +103,14 @@ public final class WebViewFactory { private static Class getFactoryClass() throws ClassNotFoundException { try { - return (Class) Class.forName(CHROMIUM_WEBVIEW_FACTORY); - } catch (ClassNotFoundException e) { - Log.e(LOGTAG, "Chromium WebView does not exist"); + Context webViewContext = AppGlobals.getInitialApplication().createPackageContext( + getWebViewPackageName(), + Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY); + ClassLoader clazzLoader = webViewContext.getClassLoader(); + return (Class) Class.forName(CHROMIUM_WEBVIEW_FACTORY, true, + clazzLoader); + } catch (PackageManager.NameNotFoundException e) { + Log.e(LOGTAG, "Chromium WebView package does not exist"); return (Class) Class.forName(NULL_WEBVIEW_FACTORY); } } diff --git a/core/jni/android_hardware_camera2_DngCreator.cpp b/core/jni/android_hardware_camera2_DngCreator.cpp index 3a3328f75230f..eaadfb205c742 100644 --- a/core/jni/android_hardware_camera2_DngCreator.cpp +++ b/core/jni/android_hardware_camera2_DngCreator.cpp @@ -1173,8 +1173,8 @@ static void DngCreator_init(JNIEnv* env, jobject thiz, jobject characteristicsPt calibrationTransform1[ctr++] = entry1.data.r[i].denominator; } - BAIL_IF_INVALID(writer->addEntry(TAG_CAMERACALIBRATION1, entry1.count, calibrationTransform1, - TIFF_IFD_0), env, TAG_CAMERACALIBRATION1, writer); + BAIL_IF_INVALID(writer->addEntry(TAG_CAMERACALIBRATION1, entry1.count, + calibrationTransform1, TIFF_IFD_0), env, TAG_CAMERACALIBRATION1, writer); if (!singleIlluminant) { camera_metadata_entry entry2 = @@ -1188,8 +1188,8 @@ static void DngCreator_init(JNIEnv* env, jobject thiz, jobject characteristicsPt calibrationTransform2[ctr++] = entry2.data.r[i].denominator; } - BAIL_IF_INVALID(writer->addEntry(TAG_CAMERACALIBRATION2, entry2.count, calibrationTransform1, - TIFF_IFD_0), env, TAG_CAMERACALIBRATION2, writer); + BAIL_IF_INVALID(writer->addEntry(TAG_CAMERACALIBRATION2, entry2.count, + calibrationTransform1, TIFF_IFD_0), env, TAG_CAMERACALIBRATION2, writer); } } @@ -1293,6 +1293,21 @@ static void DngCreator_init(JNIEnv* env, jobject thiz, jobject characteristicsPt TAG_UNIQUECAMERAMODEL, writer); } + { + // Setup sensor noise model + camera_metadata_entry entry = + results.find(ANDROID_SENSOR_NOISE_PROFILE); + + if (entry.count > 0) { + BAIL_IF_INVALID(writer->addEntry(TAG_NOISEPROFILE, entry.count, + entry.data.d, TIFF_IFD_0), env, + TAG_NOISEPROFILE, writer); + } else { + ALOGW("%s: No noise profile found in result metadata. Image quality may be reduced.", + __FUNCTION__); + } + } + { // Setup opcode List 2 camera_metadata_entry entry1 = diff --git a/data/fonts/Android.mk b/data/fonts/Android.mk index 9f6b64cb921f5..80fb1fdd3a8ab 100644 --- a/data/fonts/Android.mk +++ b/data/fonts/Android.mk @@ -47,14 +47,8 @@ extra_font_files := \ DroidSans-Bold.ttf ################################ -# On space-constrained devices, we include a subset of fonts: -ifeq ($(SMALLER_FONT_FOOTPRINT),true) - -droidsans_fallback_src := DroidSansFallback.ttf - -else # !SMALLER_FONT_FOOTPRINT - -droidsans_fallback_src := DroidSansFallbackFull.ttf +# Do not include Motoya on space-constrained devices +ifneq ($(SMALLER_FONT_FOOTPRINT),true) include $(CLEAR_VARS) LOCAL_MODULE := MTLmr3m.ttf @@ -65,24 +59,44 @@ LOCAL_MODULE_PATH := $(TARGET_OUT)/fonts include $(BUILD_PREBUILT) extra_font_files += MTLmr3m.ttf -endif # SMALLER_FONT_FOOTPRINT +endif # !SMALLER_FONT_FOOTPRINT ################################ +# Use DroidSansMono to hang extra_font_files on +include $(CLEAR_VARS) +LOCAL_MODULE := DroidSansMono.ttf +LOCAL_SRC_FILES := $(LOCAL_MODULE) +LOCAL_MODULE_CLASS := ETC +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_PATH := $(TARGET_OUT)/fonts +LOCAL_REQUIRED_MODULES := $(extra_font_files) +include $(BUILD_PREBUILT) +extra_font_files := + +################################ +# Include DroidSansFallback only on non-EXTENDED_FONT_FOOTPRINT builds +ifneq ($(EXTENDED_FONT_FOOTPRINT),true) + +# Include a subset of DroidSansFallback on SMALLER_FONT_FOOTPRINT build +ifeq ($(SMALLER_FONT_FOOTPRINT),true) +droidsans_fallback_src := DroidSansFallback.ttf +else # !SMALLER_FONT_FOOTPRINT +droidsans_fallback_src := DroidSansFallbackFull.ttf +endif # SMALLER_FONT_FOOTPRINT + include $(CLEAR_VARS) LOCAL_MODULE := DroidSansFallback.ttf LOCAL_SRC_FILES := $(droidsans_fallback_src) LOCAL_MODULE_CLASS := ETC LOCAL_MODULE_TAGS := optional LOCAL_MODULE_PATH := $(TARGET_OUT)/fonts -LOCAL_REQUIRED_MODULES := $(extra_font_files) include $(BUILD_PREBUILT) - -font_symlink_src := -font_symlink := droidsans_fallback_src := -extra_font_files := + +endif # !EXTENDED_FONT_FOOTPRINT + ################################ -# Build the rest font files as prebuilt. +# Build the rest of font files as prebuilt. # $(1): The source file name in LOCAL_PATH. # It also serves as the module name and the dest file name. @@ -101,7 +115,6 @@ font_src_files := \ Roboto-Bold.ttf \ Roboto-Italic.ttf \ Roboto-BoldItalic.ttf \ - DroidSansMono.ttf \ Clockopia.ttf \ AndroidClock.ttf \ AndroidClock_Highlight.ttf \ diff --git a/data/fonts/DroidKufi-Bold.ttf b/data/fonts/DroidKufi-Bold.ttf deleted file mode 100644 index 650919e2601de..0000000000000 Binary files a/data/fonts/DroidKufi-Bold.ttf and /dev/null differ diff --git a/data/fonts/DroidKufi-Regular.ttf b/data/fonts/DroidKufi-Regular.ttf deleted file mode 100644 index af859750b6997..0000000000000 Binary files a/data/fonts/DroidKufi-Regular.ttf and /dev/null differ diff --git a/data/fonts/DroidSans-Bold.ttf b/data/fonts/DroidSans-Bold.ttf deleted file mode 100644 index d065b64eb1863..0000000000000 Binary files a/data/fonts/DroidSans-Bold.ttf and /dev/null differ diff --git a/data/fonts/DroidSans.ttf b/data/fonts/DroidSans.ttf deleted file mode 100644 index ad1efca88aed8..0000000000000 Binary files a/data/fonts/DroidSans.ttf and /dev/null differ diff --git a/data/fonts/DroidSansFallbackFull.ttf b/data/fonts/DroidSansFallbackFull.ttf index 135723c682939..1dfcc330ebf86 100644 Binary files a/data/fonts/DroidSansFallbackFull.ttf and b/data/fonts/DroidSansFallbackFull.ttf differ diff --git a/data/fonts/DroidSansJapanese.ttf b/data/fonts/DroidSansJapanese.ttf deleted file mode 100644 index 412fa3de05e84..0000000000000 Binary files a/data/fonts/DroidSansJapanese.ttf and /dev/null differ diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp index 64df6c8c75f7b..41f89c254c14e 100755 --- a/libs/hwui/OpenGLRenderer.cpp +++ b/libs/hwui/OpenGLRenderer.cpp @@ -1934,7 +1934,9 @@ status_t OpenGLRenderer::drawRenderNode(RenderNode* renderNode, Rect& dirty, int return deferredList.flush(*this, dirty) | status; } - return DrawGlInfo::kStatusDone; + // Even if there is no drawing command(Ex: invisible), + // it still needs startFrame to clear buffer and start tiling. + return startFrame(); } void OpenGLRenderer::drawAlphaBitmap(Texture* texture, float left, float top, const SkPaint* paint) { diff --git a/packages/Keyguard/res/values-zh-rCN/strings.xml b/packages/Keyguard/res/values-zh-rCN/strings.xml index 09f521a66a759..1e124b8b1393b 100644 --- a/packages/Keyguard/res/values-zh-rCN/strings.xml +++ b/packages/Keyguard/res/values-zh-rCN/strings.xml @@ -22,9 +22,9 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> "Keyguard" "输入 PIN 码" - "请输入 SIM 卡 PUK 码和新的 PIN 码" - "SIM 卡 PUK 码" - "新 SIM 卡 PIN 码" + "请输入SIM卡PUK码和新的 PIN 码" + "SIM卡PUK码" + "新SIM卡PIN码" "触摸可输入密码" "输入密码以解锁" "输入 PIN 进行解锁" @@ -36,16 +36,16 @@ "请连接充电器。" "按“菜单”键解锁。" "网络已锁定" - "无 SIM 卡" - "平板电脑中没有 SIM 卡。" - "手机中没有 SIM 卡。" - "请插入 SIM 卡。" - "SIM 卡缺失或无法读取,请插入 SIM 卡。" - "SIM 卡无法使用。" - "您的 SIM 卡已永久停用。\n请与您的无线服务提供商联系,以便重新获取一张 SIM 卡。" - "SIM 卡已被锁定。" - "SIM 卡已被 PUK 锁定。" - "正在解锁 SIM 卡..." + "无SIM卡" + "平板电脑中没有SIM卡。" + "手机中没有SIM卡。" + "请插入SIM卡。" + "SIM卡缺失或无法读取,请插入SIM卡。" + "SIM卡无法使用。" + "您的SIM卡已永久停用。\n请与您的无线服务提供商联系,以便重新获取一张SIM卡。" + "SIM卡已被锁定。" + "SIM卡已被PUK码锁定。" + "正在解锁SIM卡..." "%1$s。%3$d的小部件%2$d。" "添加小部件。" "空白" @@ -106,16 +106,16 @@ "PIN 有误" "请在 %d 秒后重试。" "绘制您的图案" - "输入 SIM PIN" + "输入SIM卡PIN码" "输入 PIN" "输入密码" - "SIM 卡已被停用,需要输入 PUK 码才能继续使用。有关详情,请联系您的运营商。" + "SIM卡已被停用,需要输入PUK码才能继续使用。有关详情,请联系您的运营商。" "请输入所需 PIN 码" "请确认所需 PIN 码" - "正在解锁 SIM 卡..." + "正在解锁SIM卡..." "请输入 4 至 8 位数的 PIN。" - "PUK 码应至少包含 8 位数字。" - "请重新输入正确的 PUK 码。如果尝试错误次数过多,SIM 卡将永久停用。" + "PUK码应至少包含8位数字。" + "请重新输入正确的PUK码。如果尝试错误次数过多,SIM卡将永久停用。" "PIN 码不匹配" "图案尝试次数过多" "要解锁,请登录您的 Google 帐户。" @@ -136,18 +136,18 @@ "您已经 %d 次错误地绘制了解锁图案。如果再尝试 %d 次后仍不成功,系统就会要求您使用自己的电子邮件帐户解锁手机。\n\n请在 %d 秒后重试。" " — " "删除" - "SIM 卡 PIN 码不正确,您现在必须联系运营商为您解锁设备。" + "SIM卡PIN码不正确,您现在必须联系运营商为您解锁设备。" - "SIM 卡 PIN 码不正确,您还有%d次尝试机会。如果仍然失败,则必须联系运营商帮您解锁设备。" - "SIM 卡 PIN 码不正确,您还有%d次尝试机会。" + "SIM卡PIN码不正确,您还有%d次尝试机会。如果仍然失败,则必须联系运营商帮您解锁设备。" + "SIM卡PIN码不正确,您还有%d次尝试机会。" - "SIM 卡无法使用,请与您的运营商联系。" + "SIM卡无法使用,请与您的运营商联系。" - "SIM 卡 PUK 码不正确,您还有%d次尝试机会。如果仍然失败,SIM 卡将永远无法使用。" - "SIM 卡 PUK 码不正确,您还有%d次尝试机会。如果仍然失败,SIM 卡将永远无法使用。" + "SIM卡PUK码不正确,您还有%d次尝试机会。如果仍然失败,SIM卡将永远无法使用。" + "SIM卡PUK码不正确,您还有%d次尝试机会。如果仍然失败,SIM卡将永远无法使用。" - "SIM 卡 PIN 码操作失败!" - "SIM 卡 PUK 码操作失败!" + "SIM卡PIN码操作失败!" + "SIM卡PUK码操作失败!" "代码正确!" "“上一曲”按钮" "“下一曲”按钮" diff --git a/packages/SystemUI/res/layout/status_bar.xml b/packages/SystemUI/res/layout/status_bar.xml index 595d731d56d01..19dc36ddda05a 100644 --- a/packages/SystemUI/res/layout/status_bar.xml +++ b/packages/SystemUI/res/layout/status_bar.xml @@ -87,7 +87,8 @@ android:layout_height="match_parent" android:gravity="center_vertical" > - rootActivityNdx; --i ) { ActivityRecord target = activities.get(i); + if (target.frontOfTask) + break; final int flags = target.info.flags; final boolean finishOnTaskLaunch = @@ -2223,6 +2233,8 @@ final class ActivityStack { // Do not operate on or below the effective root Activity. for (int i = numActivities - 1; i > rootActivityNdx; --i) { ActivityRecord target = activities.get(i); + if (target.frontOfTask) + break; final int flags = target.info.flags; boolean finishOnTaskLaunch = (flags & ActivityInfo.FLAG_FINISH_ON_TASK_LAUNCH) != 0; diff --git a/services/core/java/com/android/server/am/BroadcastQueue.java b/services/core/java/com/android/server/am/BroadcastQueue.java index cdcc74b2685bc..4e554eb2c4bba 100644 --- a/services/core/java/com/android/server/am/BroadcastQueue.java +++ b/services/core/java/com/android/server/am/BroadcastQueue.java @@ -424,11 +424,16 @@ public final class BroadcastQueue { Intent intent, int resultCode, String data, Bundle extras, boolean ordered, boolean sticky, int sendingUser) throws RemoteException { // Send the intent to the receiver asynchronously using one-way binder calls. - if (app != null && app.thread != null) { - // If we have an app thread, do the call through that so it is - // correctly ordered with other one-way calls. - app.thread.scheduleRegisteredReceiver(receiver, intent, resultCode, - data, extras, ordered, sticky, sendingUser, app.repProcState); + if (app != null) { + if (app.thread != null) { + // If we have an app thread, do the call through that so it is + // correctly ordered with other one-way calls. + app.thread.scheduleRegisteredReceiver(receiver, intent, resultCode, + data, extras, ordered, sticky, sendingUser, app.repProcState); + } else { + // Application has died. Receiver doesn't exist. + throw new RemoteException("app.thread must not be null"); + } } else { receiver.performReceive(intent, resultCode, data, extras, ordered, sticky, sendingUser); @@ -670,6 +675,7 @@ public final class BroadcastQueue { // (local and remote) isn't kept in the mBroadcastHistory. r.resultTo = null; } catch (RemoteException e) { + r.resultTo = null; Slog.w(TAG, "Failure [" + mQueueName + "] sending broadcast result of " + r.intent, e); diff --git a/services/core/java/com/android/server/trust/TrustManagerService.java b/services/core/java/com/android/server/trust/TrustManagerService.java index 6f72b94563264..14436aad8e1bd 100644 --- a/services/core/java/com/android/server/trust/TrustManagerService.java +++ b/services/core/java/com/android/server/trust/TrustManagerService.java @@ -372,7 +372,7 @@ public class TrustManagerService extends SystemService { private void removeListener(ITrustListener listener) { for (int i = 0; i < mTrustListeners.size(); i++) { if (mTrustListeners.get(i).asBinder() == listener.asBinder()) { - mTrustListeners.get(i); + mTrustListeners.remove(i); return; } } diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java index 70a7be8e1d181..03b5211b362fc 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgeContext.java @@ -619,39 +619,36 @@ public final class BridgeContext extends Context { } if (value != null) { - if ((value.getFirst() == ResourceType.STYLE) - || (value.getFirst() == ResourceType.ATTR)) { - // look for the style in the current theme, and its parent: - ResourceValue item = mRenderResources.findItemInTheme(value.getSecond(), + if ((value.getFirst() == ResourceType.STYLE)) { + // look for the style in all resources: + StyleResourceValue item = mRenderResources.getStyle(value.getSecond(), isFrameworkRes); if (item != null) { - if (item instanceof StyleResourceValue) { - if (defaultPropMap != null) { - defaultPropMap.put("style", item.getName()); - } - - defStyleValues = (StyleResourceValue)item; + if (defaultPropMap != null) { + defaultPropMap.put("style", item.getName()); } + + defStyleValues = item; } else { Bridge.getLog().error(null, String.format( "Style with id 0x%x (resolved to '%s') does not exist.", defStyleRes, value.getSecond()), - null /*data*/); + null); } } else { Bridge.getLog().error(null, String.format( - "Resouce id 0x%x is not of type STYLE (instead %s)", + "Resource id 0x%x is not of type STYLE (instead %s)", defStyleRes, value.getFirst().toString()), - null /*data*/); + null); } } else { Bridge.getLog().error(null, String.format( "Failed to find style with id 0x%x in current theme", defStyleRes), - null /*data*/); + null); } } diff --git a/tools/obbtool/Android.mk b/tools/obbtool/Android.mk index 9ff56d634c21d..99a56710371a9 100644 --- a/tools/obbtool/Android.mk +++ b/tools/obbtool/Android.mk @@ -13,7 +13,7 @@ include $(CLEAR_VARS) LOCAL_SRC_FILES := \ Main.cpp -LOCAL_CFLAGS := -Wall -Werror +LOCAL_CFLAGS := -Wall -Werror -Wno-mismatched-tags #LOCAL_C_INCLUDES += @@ -36,7 +36,7 @@ include $(CLEAR_VARS) LOCAL_MODULE := pbkdf2gen LOCAL_MODULE_TAGS := optional -LOCAL_CFLAGS := -Wall -Werror +LOCAL_CFLAGS := -Wall -Werror -Wno-mismatched-tags LOCAL_SRC_FILES := pbkdf2gen.cpp LOCAL_LDLIBS += -ldl LOCAL_C_INCLUDES := external/openssl/include $(LOCAL_C_INCLUDES)