Apply match spans synchronously to avoid a race condition

Using the match start/end positions from both the main thread (when
updating UI) and the filter thread (when the filter constraint changed)
at the same time can lead into exceptions. Make sure to update the positions used by
the UI thread only from there.

07-11 03:26:18.845: E/AndroidRuntime(12765): Process: com.android.settings, PID: 12765
07-11 03:26:18.845: E/AndroidRuntime(12765): java.lang.IndexOutOfBoundsException: setSpan (-1 ... -1) starts before 0
07-11 03:26:18.845: E/AndroidRuntime(12765): at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1021)
07-11 03:26:18.845: E/AndroidRuntime(12765): at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:592)
07-11 03:26:18.845: E/AndroidRuntime(12765): at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:588)
07-11 03:26:18.845: E/AndroidRuntime(12765): at com.android.settings.search.SettingsSearchFilterAdapter.getView(SettingsSearchFilterAdapter.java:216)
07-11 03:26:18.845: E/AndroidRuntime(12765): at android.widget.AbsListView.obtainView(AbsListView.java:2255)
07-11 03:26:18.845: E/AndroidRuntime(12765): at android.widget.ListPopupWindow.obtainView(ListPopupWindow.java:1585)
07-11 03:26:18.845: E/AndroidRuntime(12765): at android.widget.ListView.measureHeightOfChildren(ListView.java:1263)
07-11 03:26:18.845: E/AndroidRuntime(12765): at android.widget.ListPopupWindow.buildDropDown(ListPopupWindow.java:1167)
07-11 03:26:18.845: E/AndroidRuntime(12765): at android.widget.ListPopupWindow.show(ListPopupWindow.java:554)
07-11 03:26:18.845: E/AndroidRuntime(12765): at android.widget.AutoCompleteTextView.showDropDown(AutoCompleteTextView.java:1096)
07-11 03:26:18.845: E/AndroidRuntime(12765): at android.widget.AutoCompleteTextView.updateDropDownForFilter(AutoCompleteTextView.java:971)
07-11 03:26:18.845: E/AndroidRuntime(12765): at android.widget.AutoCompleteTextView.access00(AutoCompleteTextView.java:91)
07-11 03:26:18.845: E/AndroidRuntime(12765): at android.widget.AutoCompleteTextView.run(AutoCompleteTextView.java:1268)
07-11 03:26:18.845: E/AndroidRuntime(12765): at android.os.Handler.handleCallback(Handler.java:733)
07-11 03:26:18.845: E/AndroidRuntime(12765): at android.os.Handler.dispatchMessage(Handler.java:95)
07-11 03:26:18.845: E/AndroidRuntime(12765): at android.os.Looper.loop(Looper.java:136)
07-11 03:26:18.845: E/AndroidRuntime(12765): at android.app.ActivityThread.main(ActivityThread.java:5140)
07-11 03:26:18.845: E/AndroidRuntime(12765): at java.lang.reflect.Method.invokeNative(Native Method)
07-11 03:26:18.845: E/AndroidRuntime(12765): at java.lang.reflect.Method.invoke(Method.java:515)
07-11 03:26:18.845: E/AndroidRuntime(12765): at com.android.internal.os.ZygoteInit.run(ZygoteInit.java:795)
07-11 03:26:18.845: E/AndroidRuntime(12765): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:611)
07-11 03:26:18.845: E/AndroidRuntime(12765): at dalvik.system.NativeStart.main(Native Method)

Change-Id: I60cff301d3bfb15ea2bbf63fcae524af0ae0b8a6
Merge "Apply match spans synchronously to avoid a race condition" into kitkat3