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

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

Merge "Dump the entire state of WebViewUpdateService on demand."

parents 199ab1f1 1eb3820d
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import android.webkit.WebViewProviderResponse;
import com.android.server.SystemService;

import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Arrays;

/**
@@ -259,5 +260,18 @@ public class WebViewUpdateService extends SystemService {
                Binder.restoreCallingIdentity(callingId);
            }
        }

        @Override
        protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
            if (getContext().checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
                    != PackageManager.PERMISSION_GRANTED) {

                pw.println("Permission Denial: can't dump webviewupdate service from pid="
                        + Binder.getCallingPid() + ", uid=" + Binder.getCallingUid());
                return;
            }

            WebViewUpdateService.this.mImpl.dumpState(pw);
        }
    }
}
+32 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import android.webkit.WebViewFactory;
import android.webkit.WebViewProviderInfo;
import android.webkit.WebViewProviderResponse;

import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -673,6 +674,27 @@ public class WebViewUpdateServiceImpl {
            mMinimumVersionCode = minimumVersionCode;
            return mMinimumVersionCode;
        }

        public void dumpState(PrintWriter pw) {
            synchronized (mLock) {
                if (mCurrentWebViewPackage == null) {
                    pw.println("  Current WebView package is null");
                } else {
                    pw.println(String.format("  Current WebView package (name, version): (%s, %s)",
                            mCurrentWebViewPackage.packageName,
                            mCurrentWebViewPackage.versionName));
                }
                pw.println(String.format("  Minimum WebView version code: %d",
                      mMinimumVersionCode));
                pw.println(String.format("  Number of relros started: %d",
                        mNumRelroCreationsStarted));
                pw.println(String.format("  Number of relros finished: %d",
                            mNumRelroCreationsFinished));
                pw.println(String.format("  WebView package dirty: %b", mWebViewPackageDirty));
                pw.println(String.format("  Any WebView package installed: %b",
                        mAnyWebViewInstalled));
            }
        }
    }

    private static boolean providerHasValidSignature(WebViewProviderInfo provider,
@@ -741,4 +763,14 @@ public class WebViewUpdateServiceImpl {
            mSystemInterface.setMultiProcessEnabledFromContext(mContext);
        }
    }

    /**
     * Dump the state of this Service.
     */
    void dumpState(PrintWriter pw) {
        pw.println("Current WebView Update Service state");
        pw.println(String.format("  Fallback logic enabled: %b",
                mSystemInterface.isFallbackLogicEnabled()));
        mWebViewUpdater.dumpState(pw);
    }
}