| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package com.android.webview.chromium; | 5 package com.android.webview.chromium; |
| 6 | 6 |
| 7 import android.Manifest; | 7 import android.Manifest; |
| 8 import android.app.ActivityManager; | 8 import android.app.ActivityManager; |
| 9 import android.content.ComponentCallbacks2; | 9 import android.content.ComponentCallbacks2; |
| 10 import android.content.Context; | 10 import android.content.Context; |
| 11 import android.content.Intent; | 11 import android.content.Intent; |
| 12 import android.content.SharedPreferences; | 12 import android.content.SharedPreferences; |
| 13 import android.content.pm.PackageInfo; | 13 import android.content.pm.PackageInfo; |
| 14 import android.content.pm.PackageManager; | 14 import android.content.pm.PackageManager; |
| 15 import android.content.pm.PackageManager.NameNotFoundException; | |
| 16 import android.net.Uri; | 15 import android.net.Uri; |
| 17 import android.os.Build; | 16 import android.os.Build; |
| 18 import android.os.Looper; | 17 import android.os.Looper; |
| 19 import android.os.Process; | 18 import android.os.Process; |
| 20 import android.os.StrictMode; | 19 import android.os.StrictMode; |
| 21 import android.os.UserManager; | 20 import android.os.UserManager; |
| 22 import android.provider.Settings; | 21 import android.provider.Settings; |
| 23 import android.util.Log; | 22 import android.util.Log; |
| 24 import android.webkit.CookieManager; | 23 import android.webkit.CookieManager; |
| 25 import android.webkit.GeolocationPermissions; | 24 import android.webkit.GeolocationPermissions; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 44 import org.chromium.android_webview.AwNetworkChangeNotifierRegistrationPolicy; | 43 import org.chromium.android_webview.AwNetworkChangeNotifierRegistrationPolicy; |
| 45 import org.chromium.android_webview.AwQuotaManagerBridge; | 44 import org.chromium.android_webview.AwQuotaManagerBridge; |
| 46 import org.chromium.android_webview.AwResource; | 45 import org.chromium.android_webview.AwResource; |
| 47 import org.chromium.android_webview.AwSettings; | 46 import org.chromium.android_webview.AwSettings; |
| 48 import org.chromium.android_webview.HttpAuthDatabase; | 47 import org.chromium.android_webview.HttpAuthDatabase; |
| 49 import org.chromium.android_webview.ResourcesContextWrapperFactory; | 48 import org.chromium.android_webview.ResourcesContextWrapperFactory; |
| 50 import org.chromium.base.BuildConfig; | 49 import org.chromium.base.BuildConfig; |
| 51 import org.chromium.base.CommandLine; | 50 import org.chromium.base.CommandLine; |
| 52 import org.chromium.base.ContextUtils; | 51 import org.chromium.base.ContextUtils; |
| 53 import org.chromium.base.MemoryPressureListener; | 52 import org.chromium.base.MemoryPressureListener; |
| 53 import org.chromium.base.PackageUtils; |
| 54 import org.chromium.base.PathService; | 54 import org.chromium.base.PathService; |
| 55 import org.chromium.base.PathUtils; | 55 import org.chromium.base.PathUtils; |
| 56 import org.chromium.base.ThreadUtils; | 56 import org.chromium.base.ThreadUtils; |
| 57 import org.chromium.base.TraceEvent; | 57 import org.chromium.base.TraceEvent; |
| 58 import org.chromium.base.annotations.SuppressFBWarnings; | 58 import org.chromium.base.annotations.SuppressFBWarnings; |
| 59 import org.chromium.base.library_loader.LibraryLoader; | 59 import org.chromium.base.library_loader.LibraryLoader; |
| 60 import org.chromium.base.library_loader.LibraryProcessType; | 60 import org.chromium.base.library_loader.LibraryProcessType; |
| 61 import org.chromium.base.library_loader.ProcessInitException; | 61 import org.chromium.base.library_loader.ProcessInitException; |
| 62 import org.chromium.content.browser.ContentViewStatics; | 62 import org.chromium.content.browser.ContentViewStatics; |
| 63 import org.chromium.net.NetworkChangeNotifier; | 63 import org.chromium.net.NetworkChangeNotifier; |
| (...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 522 } | 522 } |
| 523 } | 523 } |
| 524 return mStaticMethods; | 524 return mStaticMethods; |
| 525 } | 525 } |
| 526 | 526 |
| 527 @Override | 527 @Override |
| 528 public WebViewProvider createWebView(WebView webView, WebView.PrivateAccess
privateAccess) { | 528 public WebViewProvider createWebView(WebView webView, WebView.PrivateAccess
privateAccess) { |
| 529 return new WebViewChromium(this, webView, privateAccess, mShouldDisableT
hreadChecking); | 529 return new WebViewChromium(this, webView, privateAccess, mShouldDisableT
hreadChecking); |
| 530 } | 530 } |
| 531 | 531 |
| 532 // Check this as a workaround for https://crbug.com/622151. | 532 // Check this as a workaround for crash issues. |
| 533 private boolean shouldDisableThreadChecking(Context context) { | 533 private boolean shouldDisableThreadChecking(Context context) { |
| 534 // crbug.com/651706 |
| 535 final String lgeMailPackageId = "com.lge.email"; |
| 536 if (lgeMailPackageId.equals(context.getPackageName())) { |
| 537 if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M + 1) return false; |
| 538 int versionCode = PackageUtils.getPackageVersion(context, lgeMailPac
kageId); |
| 539 // The version code is provided by LGE. |
| 540 if (versionCode == -1 || versionCode >= 67700000) return false; |
| 541 Log.w(TAG, "Disabling thread check in WebView (http://crbug.com/6517
06). " |
| 542 + "APK name: " + lgeMailPackageId + ", versionCode: " + vers
ionCode); |
| 543 return true; |
| 544 } |
| 545 |
| 546 // crbug.com/622151 |
| 534 if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) return false; | 547 if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) return false; |
| 535 final String htcMailPackageId = "com.htc.android.mail"; | 548 final String htcMailPackageId = "com.htc.android.mail"; |
| 536 if (!htcMailPackageId.equals(context.getPackageName())) return false; | 549 if (!htcMailPackageId.equals(context.getPackageName())) return false; |
| 537 try { | 550 int versionCode = PackageUtils.getPackageVersion(context, htcMailPackage
Id); |
| 538 PackageInfo packageInfo = | 551 if (versionCode == -1) return false; |
| 539 context.getPackageManager().getPackageInfo(htcMailPackageId,
0); | 552 // These values are provided by HTC. |
| 540 if (packageInfo == null) return false; | 553 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M && versionCode >= 8640
21756) return false; |
| 554 if (Build.VERSION.SDK_INT == Build.VERSION_CODES.M && versionCode >= 866
001861) { |
| 555 return false; |
| 556 } |
| 541 | 557 |
| 542 // These values are provided by HTC. | 558 Log.w(TAG, "Disabling thread check in WebView (http://crbug.com/622151).
" |
| 543 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M | 559 + "APK name: " + htcMailPackageId + ", versionCode: " + versionC
ode); |
| 544 && packageInfo.versionCode >= 864021756) return false; | 560 return true; |
| 545 if (Build.VERSION.SDK_INT == Build.VERSION_CODES.M | |
| 546 && packageInfo.versionCode >= 866001861) return false; | |
| 547 | |
| 548 Log.w(TAG, "Disabling thread check in WebView (http://crbug.com/6221
51). " | |
| 549 + "APK name: " + htcMailPackageId + ", versionCode: " | |
| 550 + packageInfo.versionCode); | |
| 551 return true; | |
| 552 } catch (NameNotFoundException e) { | |
| 553 // Ignore this exception and return false. | |
| 554 } | |
| 555 return false; | |
| 556 } | 561 } |
| 557 | 562 |
| 558 @Override | 563 @Override |
| 559 public GeolocationPermissions getGeolocationPermissions() { | 564 public GeolocationPermissions getGeolocationPermissions() { |
| 560 synchronized (mLock) { | 565 synchronized (mLock) { |
| 561 if (mGeolocationPermissions == null) { | 566 if (mGeolocationPermissions == null) { |
| 562 ensureChromiumStartedLocked(true); | 567 ensureChromiumStartedLocked(true); |
| 563 } | 568 } |
| 564 } | 569 } |
| 565 return mGeolocationPermissions; | 570 return mGeolocationPermissions; |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 624 this, HttpAuthDatabase.newInstance(context, HTTP_AUTH_DA
TABASE_FILE)); | 629 this, HttpAuthDatabase.newInstance(context, HTTP_AUTH_DA
TABASE_FILE)); |
| 625 } | 630 } |
| 626 } | 631 } |
| 627 return mWebViewDatabase; | 632 return mWebViewDatabase; |
| 628 } | 633 } |
| 629 | 634 |
| 630 WebViewDelegate getWebViewDelegate() { | 635 WebViewDelegate getWebViewDelegate() { |
| 631 return mWebViewDelegate; | 636 return mWebViewDelegate; |
| 632 } | 637 } |
| 633 } | 638 } |
| OLD | NEW |