Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a2fbfbce authored by Gustav Sennton's avatar Gustav Sennton Committed by Android (Google) Code Review
Browse files

Merge "Load WebView even if WebView relro creation times out." into nyc-dev

parents d954c636 fd07efa4
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -142,13 +142,17 @@ public final class WebViewFactory {
    public static int loadWebViewNativeLibraryFromPackage(String packageName,
                                                          ClassLoader clazzLoader) {
        int ret = waitForProviderAndSetPackageInfo();
        if (ret != LIBLOAD_SUCCESS) {
        if (ret != LIBLOAD_SUCCESS && ret != LIBLOAD_FAILED_WAITING_FOR_RELRO) {
            return ret;
        }
        if (!sPackageInfo.packageName.equals(packageName))
            return LIBLOAD_WRONG_PACKAGE_NAME;

        return loadNativeLibrary(clazzLoader);
        int loadNativeRet = loadNativeLibrary(clazzLoader);
        // If we failed waiting for relro we want to return that fact even if we successfully load
        // the relro file.
        if (loadNativeRet == LIBLOAD_SUCCESS) return ret;
        return loadNativeRet;
    }

    static WebViewFactoryProvider getProvider() {
@@ -240,7 +244,8 @@ public final class WebViewFactory {
            } finally {
                Trace.traceEnd(Trace.TRACE_TAG_WEBVIEW);
            }
            if (response.status != LIBLOAD_SUCCESS) {
            if (response.status != LIBLOAD_SUCCESS
                    && response.status != LIBLOAD_FAILED_WAITING_FOR_RELRO) {
                throw new MissingWebViewPackageException("Failed to load WebView provider: "
                        + getWebViewPreparationErrorReason(response.status));
            }
@@ -599,8 +604,10 @@ public final class WebViewFactory {
        try {
            response =
                getUpdateService().waitForAndGetProvider();
            if (response.status == WebViewFactory.LIBLOAD_SUCCESS)
            if (response.status == LIBLOAD_SUCCESS
                    || response.status == LIBLOAD_FAILED_WAITING_FOR_RELRO) {
                sPackageInfo = response.packageInfo;
            }
        } catch (RemoteException e) {
            Log.e(LOGTAG, "error waiting for relro creation", e);
            return LIBLOAD_FAILED_WAITING_FOR_WEBVIEW_REASON_UNKNOWN;
+5 −1
Original line number Diff line number Diff line
@@ -217,7 +217,7 @@ public class WebViewUpdateServiceImpl {
            mSystemInterface = systemInterface;
        }

        private static final int WAIT_TIMEOUT_MS = 4500; // KEY_DISPATCHING_TIMEOUT is 5000.
        private static final int WAIT_TIMEOUT_MS = 1000; // KEY_DISPATCHING_TIMEOUT is 5000.

        // Keeps track of the number of running relro creations
        private int mNumRelroCreationsStarted = 0;
@@ -487,6 +487,10 @@ public class WebViewUpdateServiceImpl {
                    // Either the current relro creation  isn't done yet, or the new relro creatioin
                    // hasn't kicked off yet (the last relro creation used an out-of-date WebView).
                    webViewStatus = WebViewFactory.LIBLOAD_FAILED_WAITING_FOR_RELRO;
                    Slog.e(TAG, "Timed out waiting for relro creation, relros started "
                            + mNumRelroCreationsStarted
                            + " relros finished " + mNumRelroCreationsFinished
                            + " package dirty? " + mWebViewPackageDirty);
                }
            }
            if (!webViewReady) Slog.w(TAG, "creating relro file timed out");