Commit faaa0f8c authored by bttk's avatar bttk Committed by Commit Bot

metrics: Refactor CachedMetrics in android_webview/

Bug: 1046181
Change-Id: I0c269a5991701027702fd5011586d66de6192273
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2017912
Commit-Queue: bttk <bttk@chromium.org>
Reviewed-by: default avatarBo <boliu@chromium.org>
Reviewed-by: default avatarEnder <ender@google.com>
Cr-Commit-Position: refs/heads/master@{#743423}
parent 3a05759a
......@@ -66,8 +66,7 @@ import org.chromium.android_webview.gfx.AwDrawFnImpl;
import org.chromium.android_webview.renderer_priority.RendererPriority;
import org.chromium.base.BuildInfo;
import org.chromium.base.ThreadUtils;
import org.chromium.base.metrics.CachedMetrics.EnumeratedHistogramSample;
import org.chromium.base.metrics.CachedMetrics.TimesHistogramSample;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.ScopedSysTraceEvent;
import org.chromium.base.task.PostTask;
import org.chromium.components.autofill.AutofillProvider;
......@@ -243,8 +242,9 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
int COUNT = 78;
}
private static final EnumeratedHistogramSample sWebViewApiCallSample =
new EnumeratedHistogramSample("WebView.ApiCall", ApiCall.COUNT);
private static void recordWebViewApiCall(@ApiCall int sample) {
RecordHistogram.recordEnumeratedHistogram("WebView.ApiCall", sample, ApiCall.COUNT);
}
// This does not touch any global / non-threadsafe state, but note that
// init is ofter called right after and is NOT threadsafe.
......@@ -365,10 +365,15 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
// If initialization hasn't been deferred, record a startup time histogram entry.
if (mFactory.hasStarted()) {
TimesHistogramSample histogram = new TimesHistogramSample(
"Android.WebView.Startup.CreationTime.Stage2.ProviderInit."
+ (isFirstWebViewInit ? "Cold" : "Warm"));
histogram.record(SystemClock.elapsedRealtime() - startTime);
if (isFirstWebViewInit) {
RecordHistogram.recordTimesHistogram(
"Android.WebView.Startup.CreationTime.Stage2.ProviderInit.Cold",
SystemClock.elapsedRealtime() - startTime);
} else {
RecordHistogram.recordTimesHistogram(
"Android.WebView.Startup.CreationTime.Stage2.ProviderInit.Warm",
SystemClock.elapsedRealtime() - startTime);
}
}
}
......@@ -456,7 +461,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.SET_HORIZONTAL_SCROLLBAR_OVERLAY);
recordWebViewApiCall(ApiCall.SET_HORIZONTAL_SCROLLBAR_OVERLAY);
mAwContents.setHorizontalScrollbarOverlay(overlay);
}
......@@ -471,7 +476,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.SET_VERTICAL_SCROLLBAR_OVERLAY);
recordWebViewApiCall(ApiCall.SET_VERTICAL_SCROLLBAR_OVERLAY);
mAwContents.setVerticalScrollbarOverlay(overlay);
}
......@@ -487,7 +492,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return ret;
}
sWebViewApiCallSample.record(ApiCall.OVERLAY_HORIZONTAL_SCROLLBAR);
recordWebViewApiCall(ApiCall.OVERLAY_HORIZONTAL_SCROLLBAR);
return mAwContents.overlayHorizontalScrollbar();
}
......@@ -503,7 +508,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return ret;
}
sWebViewApiCallSample.record(ApiCall.OVERLAY_VERTICAL_SCROLLBAR);
recordWebViewApiCall(ApiCall.OVERLAY_VERTICAL_SCROLLBAR);
return mAwContents.overlayVerticalScrollbar();
}
......@@ -525,7 +530,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return ret;
}
sWebViewApiCallSample.record(ApiCall.GET_CERTIFICATE);
recordWebViewApiCall(ApiCall.GET_CERTIFICATE);
return mAwContents.getCertificate();
}
......@@ -551,7 +556,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.SET_HTTP_AUTH_USERNAME_PASSWORD);
recordWebViewApiCall(ApiCall.SET_HTTP_AUTH_USERNAME_PASSWORD);
((WebViewDatabaseAdapter) mFactory.getWebViewDatabase(mContext))
.setHttpAuthUsernamePassword(host, realm, username, password);
}
......@@ -568,7 +573,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return ret;
}
sWebViewApiCallSample.record(ApiCall.GET_HTTP_AUTH_USERNAME_PASSWORD);
recordWebViewApiCall(ApiCall.GET_HTTP_AUTH_USERNAME_PASSWORD);
return ((WebViewDatabaseAdapter) mFactory.getWebViewDatabase(mContext))
.getHttpAuthUsernamePassword(host, realm);
}
......@@ -608,7 +613,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.SET_NETWORK_AVAILABLE);
recordWebViewApiCall(ApiCall.SET_NETWORK_AVAILABLE);
mAwContents.setNetworkAvailable(networkUp);
}
......@@ -625,7 +630,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return ret;
}
sWebViewApiCallSample.record(ApiCall.SAVE_STATE);
recordWebViewApiCall(ApiCall.SAVE_STATE);
if (outState == null) return null;
if (!mAwContents.saveState(outState)) return null;
return copyBackForwardList();
......@@ -656,7 +661,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return ret;
}
sWebViewApiCallSample.record(ApiCall.RESTORE_STATE);
recordWebViewApiCall(ApiCall.RESTORE_STATE);
if (inState == null) return null;
if (!mAwContents.restoreState(inState)) return null;
return copyBackForwardList();
......@@ -705,13 +710,13 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
mFactory.addTask(new Runnable() {
@Override
public void run() {
sWebViewApiCallSample.record(ApiCall.POST_URL);
recordWebViewApiCall(ApiCall.POST_URL);
mAwContents.postUrl(url, postData);
}
});
return;
}
sWebViewApiCallSample.record(ApiCall.POST_URL);
recordWebViewApiCall(ApiCall.POST_URL);
mAwContents.postUrl(url, postData);
}
......@@ -724,13 +729,13 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
mFactory.addTask(new Runnable() {
@Override
public void run() {
sWebViewApiCallSample.record(ApiCall.LOAD_DATA);
recordWebViewApiCall(ApiCall.LOAD_DATA);
mAwContents.loadData(data, mimeType, encoding);
}
});
return;
}
sWebViewApiCallSample.record(ApiCall.LOAD_DATA);
recordWebViewApiCall(ApiCall.LOAD_DATA);
mAwContents.loadData(data, mimeType, encoding);
}
......@@ -744,13 +749,13 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
mFactory.addTask(new Runnable() {
@Override
public void run() {
sWebViewApiCallSample.record(ApiCall.LOAD_DATA_WITH_BASE_URL);
recordWebViewApiCall(ApiCall.LOAD_DATA_WITH_BASE_URL);
mAwContents.loadDataWithBaseURL(baseUrl, data, mimeType, encoding, historyUrl);
}
});
return;
}
sWebViewApiCallSample.record(ApiCall.LOAD_DATA_WITH_BASE_URL);
recordWebViewApiCall(ApiCall.LOAD_DATA_WITH_BASE_URL);
mAwContents.loadDataWithBaseURL(baseUrl, data, mimeType, encoding, historyUrl);
}
......@@ -762,13 +767,13 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
mFactory.addTask(new Runnable() {
@Override
public void run() {
sWebViewApiCallSample.record(ApiCall.EVALUATE_JAVASCRIPT);
recordWebViewApiCall(ApiCall.EVALUATE_JAVASCRIPT);
mAwContents.evaluateJavaScript(
script, CallbackConverter.fromValueCallback(resultCallback));
}
});
} else {
sWebViewApiCallSample.record(ApiCall.EVALUATE_JAVASCRIPT);
recordWebViewApiCall(ApiCall.EVALUATE_JAVASCRIPT);
checkThread();
mAwContents.evaluateJavaScript(
script, CallbackConverter.fromValueCallback(resultCallback));
......@@ -808,7 +813,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
return;
}
sWebViewApiCallSample.record(ApiCall.STOP_LOADING);
recordWebViewApiCall(ApiCall.STOP_LOADING);
mAwContents.stopLoading();
}
......@@ -823,7 +828,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.RELOAD);
recordWebViewApiCall(ApiCall.RELOAD);
mAwContents.reload();
}
......@@ -839,7 +844,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return ret;
}
sWebViewApiCallSample.record(ApiCall.CAN_GO_BACK);
recordWebViewApiCall(ApiCall.CAN_GO_BACK);
return mAwContents.canGoBack();
}
......@@ -854,7 +859,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.GO_BACK);
recordWebViewApiCall(ApiCall.GO_BACK);
mAwContents.goBack();
}
......@@ -870,7 +875,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return ret;
}
sWebViewApiCallSample.record(ApiCall.CAN_GO_FORWARD);
recordWebViewApiCall(ApiCall.CAN_GO_FORWARD);
return mAwContents.canGoForward();
}
......@@ -885,7 +890,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.GO_FORWARD);
recordWebViewApiCall(ApiCall.GO_FORWARD);
mAwContents.goForward();
}
......@@ -901,7 +906,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return ret;
}
sWebViewApiCallSample.record(ApiCall.CAN_GO_BACK_OR_FORWARD);
recordWebViewApiCall(ApiCall.CAN_GO_BACK_OR_FORWARD);
return mAwContents.canGoBackOrForward(steps);
}
......@@ -916,14 +921,14 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.GO_BACK_OR_FORWARD);
recordWebViewApiCall(ApiCall.GO_BACK_OR_FORWARD);
mAwContents.goBackOrForward(steps);
}
@Override
public boolean isPrivateBrowsingEnabled() {
// Not supported in this WebView implementation.
sWebViewApiCallSample.record(ApiCall.IS_PRIVATE_BROWSING_ENABLED);
recordWebViewApiCall(ApiCall.IS_PRIVATE_BROWSING_ENABLED);
return false;
}
......@@ -939,7 +944,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return ret;
}
sWebViewApiCallSample.record(ApiCall.PAGE_UP);
recordWebViewApiCall(ApiCall.PAGE_UP);
return mAwContents.pageUp(top);
}
......@@ -955,7 +960,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return ret;
}
sWebViewApiCallSample.record(ApiCall.PAGE_DOWN);
recordWebViewApiCall(ApiCall.PAGE_DOWN);
return mAwContents.pageDown(bottom);
}
......@@ -963,7 +968,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
@TargetApi(Build.VERSION_CODES.M)
public void insertVisualStateCallback(
final long requestId, final VisualStateCallback callback) {
sWebViewApiCallSample.record(ApiCall.INSERT_VISUAL_STATE_CALLBACK);
recordWebViewApiCall(ApiCall.INSERT_VISUAL_STATE_CALLBACK);
mSharedWebViewChromium.insertVisualStateCallback(
requestId, callback == null ? null : new AwContents.VisualStateCallback() {
@Override
......@@ -984,7 +989,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.CLEAR_VIEW);
recordWebViewApiCall(ApiCall.CLEAR_VIEW);
mAwContents.clearView();
}
......@@ -1000,13 +1005,13 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return ret;
}
sWebViewApiCallSample.record(ApiCall.CAPTURE_PICTURE);
recordWebViewApiCall(ApiCall.CAPTURE_PICTURE);
return mAwContents.capturePicture();
}
@Override
public float getScale() {
sWebViewApiCallSample.record(ApiCall.GET_SCALE);
recordWebViewApiCall(ApiCall.GET_SCALE);
// No checkThread() as it is mostly thread safe (workaround for b/10652991).
mFactory.startYourEngines(true);
return mAwContents.getScale();
......@@ -1014,7 +1019,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
@Override
public void setInitialScale(final int scaleInPercent) {
sWebViewApiCallSample.record(ApiCall.SET_INITIAL_SCALE);
recordWebViewApiCall(ApiCall.SET_INITIAL_SCALE);
// No checkThread() as it is thread safe
mWebSettings.getAwSettings().setInitialPageScale(scaleInPercent);
}
......@@ -1030,7 +1035,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.INVOKE_ZOOM_PICKER);
recordWebViewApiCall(ApiCall.INVOKE_ZOOM_PICKER);
mAwContents.invokeZoomPicker();
}
......@@ -1047,7 +1052,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return ret;
}
sWebViewApiCallSample.record(ApiCall.GET_HIT_TEST_RESULT);
recordWebViewApiCall(ApiCall.GET_HIT_TEST_RESULT);
AwContents.HitTestData data = mAwContents.getLastHitTestResult();
mHitTestResult.setType(data.hitTestResultType);
mHitTestResult.setExtra(data.hitTestResultExtraData);
......@@ -1065,7 +1070,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.REQUEST_FOCUS_NODE_HREF);
recordWebViewApiCall(ApiCall.REQUEST_FOCUS_NODE_HREF);
mAwContents.requestFocusNodeHref(hrefMsg);
}
......@@ -1080,7 +1085,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.REQUEST_IMAGE_REF);
recordWebViewApiCall(ApiCall.REQUEST_IMAGE_REF);
mAwContents.requestImageRef(msg);
}
......@@ -1096,7 +1101,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return ret;
}
sWebViewApiCallSample.record(ApiCall.GET_URL);
recordWebViewApiCall(ApiCall.GET_URL);
GURL url = mAwContents.getUrl();
return url == null ? null : url.getSpec();
}
......@@ -1113,7 +1118,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return ret;
}
sWebViewApiCallSample.record(ApiCall.GET_ORIGINAL_URL);
recordWebViewApiCall(ApiCall.GET_ORIGINAL_URL);
return mAwContents.getOriginalUrl();
}
......@@ -1129,7 +1134,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return ret;
}
sWebViewApiCallSample.record(ApiCall.GET_TITLE);
recordWebViewApiCall(ApiCall.GET_TITLE);
return mAwContents.getTitle();
}
......@@ -1145,7 +1150,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return ret;
}
sWebViewApiCallSample.record(ApiCall.GET_FAVICON);
recordWebViewApiCall(ApiCall.GET_FAVICON);
return mAwContents.getFavicon();
}
......@@ -1157,7 +1162,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
@Override
public int getProgress() {
sWebViewApiCallSample.record(ApiCall.GET_PROGRESS);
recordWebViewApiCall(ApiCall.GET_PROGRESS);
if (mAwContents == null) return 100;
// No checkThread() because the value is cached java side (workaround for b/10533304).
return mAwContents.getMostRecentProgress();
......@@ -1165,7 +1170,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
@Override
public int getContentHeight() {
sWebViewApiCallSample.record(ApiCall.GET_CONTENT_HEIGHT);
recordWebViewApiCall(ApiCall.GET_CONTENT_HEIGHT);
if (mAwContents == null) return 0;
// No checkThread() as it is mostly thread safe (workaround for b/10594869).
return mAwContents.getContentHeightCss();
......@@ -1173,7 +1178,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
@Override
public int getContentWidth() {
sWebViewApiCallSample.record(ApiCall.GET_CONTENT_WIDTH);
recordWebViewApiCall(ApiCall.GET_CONTENT_WIDTH);
if (mAwContents == null) return 0;
// No checkThread() as it is mostly thread safe (workaround for b/10594869).
return mAwContents.getContentWidthCss();
......@@ -1190,7 +1195,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.PAUSE_TIMERS);
recordWebViewApiCall(ApiCall.PAUSE_TIMERS);
mAwContents.pauseTimers();
}
......@@ -1205,7 +1210,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.RESUME_TIMERS);
recordWebViewApiCall(ApiCall.RESUME_TIMERS);
mAwContents.resumeTimers();
}
......@@ -1220,7 +1225,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.ON_PAUSE);
recordWebViewApiCall(ApiCall.ON_PAUSE);
mAwContents.onPause();
}
......@@ -1235,7 +1240,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.ON_RESUME);
recordWebViewApiCall(ApiCall.ON_RESUME);
mAwContents.onResume();
}
......@@ -1251,7 +1256,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return ret;
}
sWebViewApiCallSample.record(ApiCall.IS_PAUSED);
recordWebViewApiCall(ApiCall.IS_PAUSED);
return mAwContents.isPaused();
}
......@@ -1271,7 +1276,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.CLEAR_CACHE);
recordWebViewApiCall(ApiCall.CLEAR_CACHE);
mAwContents.clearCache(includeDiskFiles);
}
......@@ -1289,7 +1294,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.CLEAR_FORM_DATA);
recordWebViewApiCall(ApiCall.CLEAR_FORM_DATA);
mAwContents.hideAutofillPopup();
}
......@@ -1304,7 +1309,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.CLEAR_HISTORY);
recordWebViewApiCall(ApiCall.CLEAR_HISTORY);
mAwContents.clearHistory();
}
......@@ -1319,7 +1324,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.CLEAR_SSL_PREFERENCES);
recordWebViewApiCall(ApiCall.CLEAR_SSL_PREFERENCES);
mAwContents.clearSslPreferences();
}
......@@ -1336,7 +1341,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return ret;
}
sWebViewApiCallSample.record(ApiCall.COPY_BACK_FORWARD_LIST);
recordWebViewApiCall(ApiCall.COPY_BACK_FORWARD_LIST);
// mAwContents.getNavigationHistory() can be null here if mAwContents has been destroyed,
// and we do not handle passing null to the WebBackForwardListChromium constructor.
NavigationHistory navHistory = mAwContents.getNavigationHistory();
......@@ -1346,7 +1351,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
@Override
public void setFindListener(WebView.FindListener listener) {
sWebViewApiCallSample.record(ApiCall.SET_FIND_LISTENER);
recordWebViewApiCall(ApiCall.SET_FIND_LISTENER);
mContentsClientAdapter.setFindListener(listener);
}
......@@ -1361,7 +1366,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.FIND_NEXT);
recordWebViewApiCall(ApiCall.FIND_NEXT);
mAwContents.findNext(forwards);
}
......@@ -1387,7 +1392,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
@Override
public boolean showFindDialog(final String text, final boolean showIme) {
sWebViewApiCallSample.record(ApiCall.SHOW_FIND_DIALOG);
recordWebViewApiCall(ApiCall.SHOW_FIND_DIALOG);
mFactory.startYourEngines(false);
if (checkNeedsPost()) {
return false;
......@@ -1426,7 +1431,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.NOTIFY_FIND_DIALOG_DISMISSED);
recordWebViewApiCall(ApiCall.NOTIFY_FIND_DIALOG_DISMISSED);
clearMatches();
}
......@@ -1441,7 +1446,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.CLEAR_MATCHES);
recordWebViewApiCall(ApiCall.CLEAR_MATCHES);
mAwContents.clearMatches();
}
......@@ -1456,20 +1461,20 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.DOCUMENT_HAS_IMAGES);
recordWebViewApiCall(ApiCall.DOCUMENT_HAS_IMAGES);
mAwContents.documentHasImages(response);
}
@Override
public void setWebViewClient(WebViewClient client) {
sWebViewApiCallSample.record(ApiCall.SET_WEBVIEW_CLIENT);
recordWebViewApiCall(ApiCall.SET_WEBVIEW_CLIENT);
mSharedWebViewChromium.setWebViewClient(client);
mContentsClientAdapter.setWebViewClient(mSharedWebViewChromium.getWebViewClient());
}
@Override
public WebViewClient getWebViewClient() {
sWebViewApiCallSample.record(ApiCall.GET_WEBVIEW_CLIENT);
recordWebViewApiCall(ApiCall.GET_WEBVIEW_CLIENT);
return mSharedWebViewChromium.getWebViewClient();
}
......@@ -1504,13 +1509,13 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
@Override
public void setDownloadListener(DownloadListener listener) {
sWebViewApiCallSample.record(ApiCall.SET_DOWNLOAD_LISTENER);
recordWebViewApiCall(ApiCall.SET_DOWNLOAD_LISTENER);
mContentsClientAdapter.setDownloadListener(listener);
}
@Override
public void setWebChromeClient(WebChromeClient client) {
sWebViewApiCallSample.record(ApiCall.SET_WEBCHROME_CLIENT);
recordWebViewApiCall(ApiCall.SET_WEBCHROME_CLIENT);
mWebSettings.getAwSettings().setFullscreenSupported(doesSupportFullscreen(client));
mSharedWebViewChromium.setWebChromeClient(client);
mContentsClientAdapter.setWebChromeClient(mSharedWebViewChromium.getWebChromeClient());
......@@ -1518,7 +1523,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
@Override
public WebChromeClient getWebChromeClient() {
sWebViewApiCallSample.record(ApiCall.GET_WEBCHROME_CLIENT);
recordWebViewApiCall(ApiCall.GET_WEBCHROME_CLIENT);
return mSharedWebViewChromium.getWebChromeClient();
}
......@@ -1529,7 +1534,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
* and {@link WebChromeClient#onHideCustomView()} are required.
*/
private boolean doesSupportFullscreen(WebChromeClient client) {
sWebViewApiCallSample.record(ApiCall.DOES_SUPPORT_FULLSCREEN);
recordWebViewApiCall(ApiCall.DOES_SUPPORT_FULLSCREEN);
if (client == null) {
return false;
}
......@@ -1572,7 +1577,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.SET_PICTURE_LISTENER);
recordWebViewApiCall(ApiCall.SET_PICTURE_LISTENER);
boolean invalidateOnly = mAppTargetSdkVersion >= Build.VERSION_CODES.JELLY_BEAN_MR2;
mContentsClientAdapter.setPictureListener(listener, invalidateOnly);
mAwContents.enableOnNewPicture(listener != null, invalidateOnly);
......@@ -1589,7 +1594,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.ADD_JAVASCRIPT_INTERFACE);
recordWebViewApiCall(ApiCall.ADD_JAVASCRIPT_INTERFACE);
mAwContents.addJavascriptInterface(obj, interfaceName);
}
......@@ -1604,13 +1609,13 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.REMOVE_JAVASCRIPT_INTERFACE);
recordWebViewApiCall(ApiCall.REMOVE_JAVASCRIPT_INTERFACE);
mAwContents.removeJavascriptInterface(interfaceName);
}
@Override
public WebMessagePort[] createWebMessageChannel() {
sWebViewApiCallSample.record(ApiCall.CREATE_WEBMESSAGE_CHANNEL);
recordWebViewApiCall(ApiCall.CREATE_WEBMESSAGE_CHANNEL);
return WebMessagePortAdapter.fromMessagePorts(
mSharedWebViewChromium.createWebMessageChannel());
}
......@@ -1618,14 +1623,14 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
@Override
@TargetApi(Build.VERSION_CODES.M)
public void postMessageToMainFrame(final WebMessage message, final Uri targetOrigin) {
sWebViewApiCallSample.record(ApiCall.POST_MESSAGE_TO_MAIN_FRAME);
recordWebViewApiCall(ApiCall.POST_MESSAGE_TO_MAIN_FRAME);
mSharedWebViewChromium.postMessageToMainFrame(message.getData(), targetOrigin.toString(),
WebMessagePortAdapter.toMessagePorts(message.getPorts()));
}
@Override
public WebSettings getSettings() {
sWebViewApiCallSample.record(ApiCall.GET_SETTINGS);
recordWebViewApiCall(ApiCall.GET_SETTINGS);
return mWebSettings;
}
......@@ -1663,7 +1668,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
@Override
public boolean canZoomIn() {
sWebViewApiCallSample.record(ApiCall.CAN_ZOOM_IN);
recordWebViewApiCall(ApiCall.CAN_ZOOM_IN);
if (checkNeedsPost()) {
return false;
}
......@@ -1672,7 +1677,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
@Override
public boolean canZoomOut() {
sWebViewApiCallSample.record(ApiCall.CAN_ZOOM_OUT);
recordWebViewApiCall(ApiCall.CAN_ZOOM_OUT);
if (checkNeedsPost()) {
return false;
}
......@@ -1773,13 +1778,13 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
@Override
public void setTextClassifier(TextClassifier textClassifier) {
sWebViewApiCallSample.record(ApiCall.SET_TEXT_CLASSIFIER);
recordWebViewApiCall(ApiCall.SET_TEXT_CLASSIFIER);
mAwContents.setTextClassifier(textClassifier);
}
@Override
public TextClassifier getTextClassifier() {
sWebViewApiCallSample.record(ApiCall.GET_TEXT_CLASSIFIER);
recordWebViewApiCall(ApiCall.GET_TEXT_CLASSIFIER);
return mAwContents.getTextClassifier();
}
......@@ -1794,7 +1799,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
}
});
}
sWebViewApiCallSample.record(ApiCall.AUTOFILL);
recordWebViewApiCall(ApiCall.AUTOFILL);
mAwContents.autofill(values);
}
......@@ -1810,7 +1815,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
});
return;
}
sWebViewApiCallSample.record(ApiCall.ON_PROVIDE_AUTOFILL_VIRTUAL_STRUCTURE);
recordWebViewApiCall(ApiCall.ON_PROVIDE_AUTOFILL_VIRTUAL_STRUCTURE);
mAwContents.onProvideAutoFillVirtualStructure(structure, flags);
}
......@@ -2520,7 +2525,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
@Override
public PrintDocumentAdapter createPrintDocumentAdapter(String documentName) {
sWebViewApiCallSample.record(ApiCall.CREATE_PRINT_DOCUMENT_ADAPTER);
recordWebViewApiCall(ApiCall.CREATE_PRINT_DOCUMENT_ADAPTER);
checkThread();
return new AwPrintDocumentAdapter(mAwContents.getPdfExporter(), documentName);
}
......@@ -2617,7 +2622,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
// Implements SmartClipProvider
@Override
public void extractSmartClipData(int x, int y, int width, int height) {
sWebViewApiCallSample.record(ApiCall.EXTRACT_SMART_CLIP_DATA);
recordWebViewApiCall(ApiCall.EXTRACT_SMART_CLIP_DATA);
checkThread();
mAwContents.extractSmartClipData(x, y, width, height);
}
......@@ -2625,7 +2630,7 @@ class WebViewChromium implements WebViewProvider, WebViewProvider.ScrollDelegate
// Implements SmartClipProvider
@Override
public void setSmartClipResultHandler(final Handler resultHandler) {
sWebViewApiCallSample.record(ApiCall.SET_SMART_CLIP_RESULT_HANDLER);
recordWebViewApiCall(ApiCall.SET_SMART_CLIP_RESULT_HANDLER);
checkThread();
mAwContents.setSmartClipResultHandler(resultHandler);
}
......
......@@ -50,9 +50,6 @@ import org.chromium.base.PathService;
import org.chromium.base.ThreadUtils;
import org.chromium.base.TraceEvent;
import org.chromium.base.library_loader.LibraryLoader;
import org.chromium.base.metrics.CachedMetrics;
import org.chromium.base.metrics.CachedMetrics.BooleanHistogramSample;
import org.chromium.base.metrics.CachedMetrics.Count100HistogramSample;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.ScopedSysTraceEvent;
import org.chromium.base.task.PostTask;
......@@ -183,9 +180,8 @@ public class WebViewChromiumAwInit {
String webViewPackageName = AwBrowserProcess.getWebViewPackageName();
boolean isDeveloperModeEnabled =
DeveloperModeUtils.isDeveloperModeEnabled(webViewPackageName);
final BooleanHistogramSample developerModeSample =
new BooleanHistogramSample("Android.WebView.DevUi.DeveloperModeEnabled");
developerModeSample.record(isDeveloperModeEnabled);
RecordHistogram.recordBooleanHistogram(
"Android.WebView.DevUi.DeveloperModeEnabled", isDeveloperModeEnabled);
if (isDeveloperModeEnabled) {
long start = SystemClock.elapsedRealtime();
try {
......@@ -195,9 +191,8 @@ public class WebViewChromiumAwInit {
DeveloperModeUtils.getFlagOverrides(webViewPackageName);
helper.applyFlagOverrides(flagOverrides);
final Count100HistogramSample flagOverrideSample =
new Count100HistogramSample("Android.WebView.DevUi.ToggledFlagCount");
flagOverrideSample.record(flagOverrides.size());
RecordHistogram.recordCount100Histogram(
"Android.WebView.DevUi.ToggledFlagCount", flagOverrides.size());
} finally {
long end = SystemClock.elapsedRealtime();
RecordHistogram.recordTimesHistogram(
......@@ -223,10 +218,6 @@ public class WebViewChromiumAwInit {
mStarted = true;
// Make sure to record any cached metrics, now that we know that the native
// library has been loaded and initialized.
CachedMetrics.commitCachedMetrics();
RecordHistogram.recordSparseHistogram("Android.WebView.TargetSdkVersion",
context.getApplicationInfo().targetSdkVersion);
......
......@@ -48,7 +48,7 @@ import org.chromium.base.ThreadUtils;
import org.chromium.base.annotations.VerifiesOnN;
import org.chromium.base.annotations.VerifiesOnP;
import org.chromium.base.library_loader.NativeLibraries;
import org.chromium.base.metrics.CachedMetrics.TimesHistogramSample;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.ScopedSysTraceEvent;
import org.chromium.components.autofill.AutofillProvider;
import org.chromium.components.autofill.AutofillProviderImpl;
......@@ -339,9 +339,9 @@ public class WebViewChromiumFactoryProvider implements WebViewFactoryProvider {
setSingleton(this);
}
TimesHistogramSample histogram =
new TimesHistogramSample("Android.WebView.Startup.CreationTime.Stage1.FactoryInit");
histogram.record(SystemClock.elapsedRealtime() - startTime);
RecordHistogram.recordTimesHistogram(
"Android.WebView.Startup.CreationTime.Stage1.FactoryInit",
SystemClock.elapsedRealtime() - startTime);
}
/* package */ static void checkStorageIsNotDeviceProtected(Context context) {
......
......@@ -15,7 +15,7 @@ import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
import org.chromium.base.PathUtils;
import org.chromium.base.StrictModeContext;
import org.chromium.base.metrics.CachedMetrics.LinearCountHistogramSample;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.ScopedSysTraceEvent;
import java.io.File;
......@@ -33,8 +33,6 @@ abstract class AwDataDirLock {
private static final String EXCLUSIVE_LOCK_FILE = "webview_data.lock";
private static final int LOCK_RETRIES = 5;
private static final int LOCK_SLEEP_MS = 100;
private static final String LOCK_ATTEMPTS_HISTOGRAM_NAME =
"Android.WebView.Startup.DataDirLockAttempts";
private static RandomAccessFile sLockFile;
private static FileLock sExclusiveFileLock;
......@@ -111,9 +109,8 @@ abstract class AwDataDirLock {
// We log values from [0, LOCK_RETRIES]. Histogram samples are expected to be [0, max).
// 0 just goes to the underflow bucket, so min=1 and max=LOCK_RETRIES+1.
// To get bucket width 1, buckets must be max-min+2
LinearCountHistogramSample histogram = new LinearCountHistogramSample(
LOCK_ATTEMPTS_HISTOGRAM_NAME, 1, LOCK_RETRIES + 1, LOCK_RETRIES + 2);
histogram.record(attempts);
RecordHistogram.recordLinearCountHistogram("Android.WebView.Startup.DataDirLockAttempts",
attempts, 1, LOCK_RETRIES + 1, LOCK_RETRIES + 2);
}
private static String getLockFailureReason(final RandomAccessFile file) {
......
......@@ -26,9 +26,6 @@ import org.chromium.android_webview.common.variations.VariationsServiceMetricsHe
import org.chromium.android_webview.common.variations.VariationsUtils;
import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
import org.chromium.base.metrics.CachedMetrics.CustomCountHistogramSample;
import org.chromium.base.metrics.CachedMetrics.EnumeratedHistogramSample;
import org.chromium.base.metrics.CachedMetrics.TimesHistogramSample;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.components.variations.LoadSeedResult;
import org.chromium.components.variations.firstrun.VariationsSeedFetcher.SeedInfo;
......@@ -122,30 +119,26 @@ public class VariationsSeedLoader {
int NUM_ENTRIES = 4;
}
private static void recordLoadSeedResult(int result) {
EnumeratedHistogramSample histogram = new EnumeratedHistogramSample(
SEED_LOAD_RESULT_HISTOGRAM_NAME, LoadSeedResult.ENUM_SIZE);
histogram.record(result);
private static void recordLoadSeedResult(@LoadSeedResult int result) {
RecordHistogram.recordEnumeratedHistogram(
SEED_LOAD_RESULT_HISTOGRAM_NAME, result, LoadSeedResult.ENUM_SIZE);
}
private static void recordSeedLoadBlockingTime(long timeMs) {
TimesHistogramSample histogram =
new TimesHistogramSample(SEED_LOAD_BLOCKING_TIME_HISTOGRAM_NAME);
histogram.record(timeMs);
RecordHistogram.recordTimesHistogram(SEED_LOAD_BLOCKING_TIME_HISTOGRAM_NAME, timeMs);
}
private static void recordSeedRequestState(@AppSeedRequestState int state) {
EnumeratedHistogramSample histogram = new EnumeratedHistogramSample(
APP_SEED_REQUEST_STATE_HISTOGRAM_NAME, AppSeedRequestState.NUM_ENTRIES);
histogram.record(state);
RecordHistogram.recordEnumeratedHistogram(
APP_SEED_REQUEST_STATE_HISTOGRAM_NAME, state, AppSeedRequestState.NUM_ENTRIES);
}
private static void recordAppSeedFreshness(long freshnessMinutes) {
// Bucket parameters should match Variations.SeedFreshness.
// See variations::RecordSeedFreshness.
CustomCountHistogramSample histogram = new CustomCountHistogramSample(
APP_SEED_FRESHNESS_HISTOGRAM_NAME, 1, (int) TimeUnit.DAYS.toMinutes(30), 50);
histogram.record((int) freshnessMinutes);
RecordHistogram.recordCustomCountHistogram(APP_SEED_FRESHNESS_HISTOGRAM_NAME,
(int) freshnessMinutes, /*min=*/1, /*max=*/(int) TimeUnit.DAYS.toMinutes(30),
/*numBuckets=*/50);
}
private static boolean shouldThrottleRequests(long now) {
......
......@@ -18,7 +18,7 @@ import com.android.webview.chromium.WebViewChromiumAwInit;
import com.android.webview.chromium.WebkitToSharedGlueConverter;
import org.chromium.android_webview.AwDebug;
import org.chromium.base.metrics.CachedMetrics.EnumeratedHistogramSample;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.support_lib_boundary.StaticsBoundaryInterface;
import org.chromium.support_lib_boundary.WebViewProviderFactoryBoundaryInterface;
import org.chromium.support_lib_boundary.util.BoundaryInterfaceReflectionUtil;
......@@ -192,11 +192,9 @@ class SupportLibWebViewChromiumFactory implements WebViewProviderFactoryBoundary
}
// clang-format on
private static final EnumeratedHistogramSample sApiCallSample =
new EnumeratedHistogramSample("Android.WebView.AndroidX.ApiCall", ApiCall.COUNT);
public static void recordApiCall(@ApiCall int apiCall) {
sApiCallSample.record(apiCall);
RecordHistogram.recordEnumeratedHistogram(
"Android.WebView.AndroidX.ApiCall", apiCall, ApiCall.COUNT);
}
// Initialization guarded by mAwInit.getLock()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment