From e34279035acf43e23172960503e6380dc8037e50 Mon Sep 17 00:00:00 2001 From: Chong Zhang Date: Thu, 14 Apr 2016 14:58:53 -0700 Subject: [PATCH] Fix crash due to null uri in ContentObserver.onChange Also make sure we don't respond to unrecognized changes. bug: 27291666 Change-Id: I110445231d15427e1fe9e225ed0520af262f740e --- .../com/android/server/wm/WindowManagerService.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 57dc97a514f50..22f088796400e 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -646,17 +646,24 @@ public class WindowManagerService extends IWindowManager.Stub @Override public void onChange(boolean selfChange, Uri uri) { + if (uri == null) { + return; + } + if (mDisplayInversionEnabledUri.equals(uri)) { updateCircularDisplayMaskIfNeeded(); } else { @UpdateAnimationScaleMode final int mode; - if (uri.equals(mWindowAnimationScaleUri)) { + if (mWindowAnimationScaleUri.equals(uri)) { mode = WINDOW_ANIMATION_SCALE; - } else if (uri.equals(mTransitionAnimationScaleUri)) { + } else if (mTransitionAnimationScaleUri.equals(uri)) { mode = TRANSITION_ANIMATION_SCALE; - } else { // uri.equals(mAnimationDurationScaleUri) + } else if (mAnimationDurationScaleUri.equals(uri)) { mode = ANIMATION_DURATION_SCALE; + } else { + // Ignoring unrecognized content changes + return; } Message m = mH.obtainMessage(H.UPDATE_ANIMATION_SCALE, mode, 0); mH.sendMessage(m);