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;
}