| Index: android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java
|
| diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java
|
| index 3ed2346e531f2761de9e523c5a7dc2d6d1916d79..1702959373b77181bab9340098712955fe6e3dcb 100644
|
| --- a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java
|
| +++ b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java
|
| @@ -12,7 +12,6 @@ import android.content.Intent;
|
| import android.content.SharedPreferences;
|
| import android.content.pm.PackageInfo;
|
| import android.content.pm.PackageManager;
|
| -import android.content.pm.PackageManager.NameNotFoundException;
|
| import android.net.Uri;
|
| import android.os.Build;
|
| import android.os.Looper;
|
| @@ -51,6 +50,7 @@ import org.chromium.base.BuildConfig;
|
| import org.chromium.base.CommandLine;
|
| import org.chromium.base.ContextUtils;
|
| import org.chromium.base.MemoryPressureListener;
|
| +import org.chromium.base.PackageUtils;
|
| import org.chromium.base.PathService;
|
| import org.chromium.base.PathUtils;
|
| import org.chromium.base.ThreadUtils;
|
| @@ -529,30 +529,35 @@ public class WebViewChromiumFactoryProvider implements WebViewFactoryProvider {
|
| return new WebViewChromium(this, webView, privateAccess, mShouldDisableThreadChecking);
|
| }
|
|
|
| - // Check this as a workaround for https://crbug.com/622151.
|
| + // Check this as a workaround for crash issues.
|
| private boolean shouldDisableThreadChecking(Context context) {
|
| + // crbug.com/651706
|
| + final String lgeMailPackageId = "com.lge.email";
|
| + if (lgeMailPackageId.equals(context.getPackageName())) {
|
| + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M + 1) return false;
|
| + int versionCode = PackageUtils.getPackageVersion(context, lgeMailPackageId);
|
| + // The version code is provided by LGE.
|
| + if (versionCode == -1 || versionCode >= 67700000) return false;
|
| + Log.w(TAG, "Disabling thread check in WebView (http://crbug.com/651706). "
|
| + + "APK name: " + lgeMailPackageId + ", versionCode: " + versionCode);
|
| + return true;
|
| + }
|
| +
|
| + // crbug.com/622151
|
| if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) return false;
|
| final String htcMailPackageId = "com.htc.android.mail";
|
| if (!htcMailPackageId.equals(context.getPackageName())) return false;
|
| - try {
|
| - PackageInfo packageInfo =
|
| - context.getPackageManager().getPackageInfo(htcMailPackageId, 0);
|
| - if (packageInfo == null) return false;
|
| -
|
| - // These values are provided by HTC.
|
| - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M
|
| - && packageInfo.versionCode >= 864021756) return false;
|
| - if (Build.VERSION.SDK_INT == Build.VERSION_CODES.M
|
| - && packageInfo.versionCode >= 866001861) return false;
|
| -
|
| - Log.w(TAG, "Disabling thread check in WebView (http://crbug.com/622151). "
|
| - + "APK name: " + htcMailPackageId + ", versionCode: "
|
| - + packageInfo.versionCode);
|
| - return true;
|
| - } catch (NameNotFoundException e) {
|
| - // Ignore this exception and return false.
|
| + int versionCode = PackageUtils.getPackageVersion(context, htcMailPackageId);
|
| + if (versionCode == -1) return false;
|
| + // These values are provided by HTC.
|
| + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M && versionCode >= 864021756) return false;
|
| + if (Build.VERSION.SDK_INT == Build.VERSION_CODES.M && versionCode >= 866001861) {
|
| + return false;
|
| }
|
| - return false;
|
| +
|
| + Log.w(TAG, "Disabling thread check in WebView (http://crbug.com/622151). "
|
| + + "APK name: " + htcMailPackageId + ", versionCode: " + versionCode);
|
| + return true;
|
| }
|
|
|
| @Override
|
|
|