am 89fe1f50: Add a method to work around apps broken by recorrection

* commit '89fe1f50881180730e451cbe6ec4d1f8dc67acf1':
  Add a method to work around apps broken by recorrection
main
Jean Chalard 2013-05-20 21:08:41 -07:00 committed by Android Git Automerger
commit 167ba3459b
3 changed files with 40 additions and 0 deletions

View File

@ -0,0 +1,29 @@
/*
* Copyright (C) 2013 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.inputmethod.compat;
import android.content.pm.PackageInfo;
public class AppWorkaroundsHelper {
private AppWorkaroundsHelper() {
// This helper class is not publicly instantiable.
}
public static boolean evaluateIsBrokenByRecorrection(final PackageInfo info) {
return false;
}
}

View File

@ -24,9 +24,16 @@ import android.os.Build.VERSION_CODES;
*/
public class AppWorkaroundsUtils {
private PackageInfo mPackageInfo; // May be null
private boolean mIsBrokenByRecorrection = false;
public void setPackageInfo(final PackageInfo packageInfo) {
mPackageInfo = packageInfo;
mIsBrokenByRecorrection = AppWorkaroundsHelper.evaluateIsBrokenByRecorrection(
packageInfo);
}
public boolean isBrokenByRecorrection() {
return mIsBrokenByRecorrection;
}
public boolean isBeforeJellyBean() {

View File

@ -2450,6 +2450,10 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
* do nothing.
*/
private void restartSuggestionsOnWordTouchedByCursor() {
// HACK: We may want to special-case some apps that exhibit bad behavior in case of
// recorrection. This is a temporary, stopgap measure that will be removed later.
// TODO: remove this.
if (mAppWorkAroundsUtils.isBrokenByRecorrection()) return;
// If the cursor is not touching a word, or if there is a selection, return right away.
if (mLastSelectionStart != mLastSelectionEnd) return;
// If we don't know the cursor location, return.