am f372e331: Merge "NPE when iterating by character and word in Launcher widgets." into jb-dev

* commit 'f372e331e46bb9852520fa76c76f99ad99441893':
  NPE when iterating by character and word in Launcher widgets.
diff --git a/core/java/android/view/AccessibilityIterators.java b/core/java/android/view/AccessibilityIterators.java
index 2a7dc18..17ce4f6 100644
--- a/core/java/android/view/AccessibilityIterators.java
+++ b/core/java/android/view/AccessibilityIterators.java
@@ -70,20 +70,19 @@
             implements ComponentCallbacks {
         private static CharacterTextSegmentIterator sInstance;
 
-        private final Context mAppContext;
+        private Locale mLocale;
 
         protected BreakIterator mImpl;
 
-        public static CharacterTextSegmentIterator getInstance(Context context) {
+        public static CharacterTextSegmentIterator getInstance(Locale locale) {
             if (sInstance == null) {
-                sInstance = new CharacterTextSegmentIterator(context);
+                sInstance = new CharacterTextSegmentIterator(locale);
             }
             return sInstance;
         }
 
-        private CharacterTextSegmentIterator(Context context) {
-            mAppContext = context.getApplicationContext();
-            Locale locale = mAppContext.getResources().getConfiguration().locale;
+        private CharacterTextSegmentIterator(Locale locale) {
+            mLocale = locale;
             onLocaleChanged(locale);
             ViewRootImpl.addConfigCallback(this);
         }
@@ -148,10 +147,9 @@
 
         @Override
         public void onConfigurationChanged(Configuration newConfig) {
-            Configuration oldConfig = mAppContext.getResources().getConfiguration();
-            final int changed = oldConfig.diff(newConfig);
-            if ((changed & ActivityInfo.CONFIG_LOCALE) != 0) {
-                Locale locale = newConfig.locale;
+            Locale locale = newConfig.locale;
+            if (!mLocale.equals(locale)) {
+                mLocale = locale;
                 onLocaleChanged(locale);
             }
         }
@@ -169,15 +167,15 @@
     static class WordTextSegmentIterator extends CharacterTextSegmentIterator {
         private static WordTextSegmentIterator sInstance;
 
-        public static WordTextSegmentIterator getInstance(Context context) {
+        public static WordTextSegmentIterator getInstance(Locale locale) {
             if (sInstance == null) {
-                sInstance = new WordTextSegmentIterator(context);
+                sInstance = new WordTextSegmentIterator(locale);
             }
             return sInstance;
         }
 
-        private WordTextSegmentIterator(Context context) {
-           super(context);
+        private WordTextSegmentIterator(Locale locale) {
+           super(locale);
         }
 
         @Override
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index f005eeb..816b631 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -6957,7 +6957,8 @@
                 CharSequence text = getIterableTextForAccessibility();
                 if (text != null && text.length() > 0) {
                     CharacterTextSegmentIterator iterator =
-                        CharacterTextSegmentIterator.getInstance(mContext);
+                        CharacterTextSegmentIterator.getInstance(
+                                mContext.getResources().getConfiguration().locale);
                     iterator.initialize(text.toString());
                     return iterator;
                 }
@@ -6966,7 +6967,8 @@
                 CharSequence text = getIterableTextForAccessibility();
                 if (text != null && text.length() > 0) {
                     WordTextSegmentIterator iterator =
-                        WordTextSegmentIterator.getInstance(mContext);
+                        WordTextSegmentIterator.getInstance(
+                                mContext.getResources().getConfiguration().locale);
                     iterator.initialize(text.toString());
                     return iterator;
                 }