diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/AwComponentUpdateService.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/AwComponentUpdateService.java index 6e638a7aff2b9..5a0e65581dc0a 100644 --- a/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/AwComponentUpdateService.java +++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/AwComponentUpdateService.java @@ -54,7 +54,7 @@ public class AwComponentUpdateService extends JobService { // TODO(http://crbug.com/1179297) look at doing this in a task on a background thread // instead of the main thread. - if (WebViewApkApplication.initializeNative()) { + if (WebViewApkApplication.ensureNativeLoaded()) { setUnexpectedExit(true); final long startTime = SystemClock.uptimeMillis(); // TODO(crbug.com/1171817) Once we can log UMA from native, remove the count parameter. diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/LicenseContentProvider.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/LicenseContentProvider.java index e75d1caca3359..761dccb688ef6 100644 --- a/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/LicenseContentProvider.java +++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/LicenseContentProvider.java @@ -48,7 +48,7 @@ public class LicenseContentProvider @Override public void writeDataToPipe( ParcelFileDescriptor output, Uri uri, String mimeType, Bundle opts, String filename) { - if (WebViewApkApplication.initializeNative()) { + if (WebViewApkApplication.ensureNativeLoaded()) { CreditUtilsJni.get().writeCreditsHtml(output.detachFd()); } else { // Missing native library means we're the webview stub and licenses are stored as an diff --git a/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/WebViewApkApplication.java b/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/WebViewApkApplication.java index 73a9db6e0a7fe..da538236473a0 100644 --- a/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/WebViewApkApplication.java +++ b/android_webview/nonembedded/java/src/org/chromium/android_webview/nonembedded/WebViewApkApplication.java @@ -143,9 +143,11 @@ public class WebViewApkApplication extends Application { * Performs minimal native library initialization required when running as a stand-alone APK. * @return True if the library was loaded, false if running as webview stub. */ - static synchronized boolean initializeNative() { + static synchronized boolean ensureNativeLoaded() { try { - if (LibraryLoader.getInstance().isInitialized()) { + // TODO(https://crbug.com/1220862): Investigate calling LibraryLoader#initialize and + // LibraryLoader#isInitialized instead and document the findings. + if (LibraryLoader.getInstance().isLoaded()) { return true; } // Should not call LibraryLoader.initialize() since this will reset UmaRecorder @@ -153,14 +155,14 @@ public class WebViewApkApplication extends Application { LibraryLoader.getInstance().setLibraryProcessType( LibraryProcessType.PROCESS_WEBVIEW_NONEMBEDDED); LibraryLoader.getInstance().loadNow(); + LibraryLoader.getInstance().switchCommandLineForWebView(); + WebViewApkApplicationJni.get().initializeGlobalsAndResources(); + return true; } catch (Throwable unused) { // Happens for WebView Stub. Throws NoClassDefFoundError because of no // NativeLibraries.java being generated. return false; } - LibraryLoader.getInstance().switchCommandLineForWebView(); - WebViewApkApplicationJni.get().initializeGlobalsAndResources(); - return true; } @NativeMethods diff --git a/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java b/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java index 45ce573bb1f46..dcf2734757b18 100644 --- a/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java +++ b/base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java @@ -498,11 +498,18 @@ public class LibraryLoader { } } + /** + * Checks whether the native library is fully loaded. + */ + public boolean isLoaded() { + return mLoadState == LoadState.LOADED; + } + /** * Checks whether the native library is fully loaded and initialized. */ public boolean isInitialized() { - return mInitialized && mLoadState == LoadState.LOADED; + return mInitialized && isLoaded(); } /**