Commit a0349cbe authored by Changwan Ryu's avatar Changwan Ryu Committed by Commit Bot

Add sys trace for WebViewContentsClientAdapter

In the startup trace log from perf dashboard, there is some empty space
(~8 ms) between WebViewChromiumFactoryProvider.startYourEngines() and
WebViewChromium.ContentSettingsAdapter().

https://chromeperf.appspot.com/report?sid=5ae87c41efb3d436419396e0551577a6e5bb1dc9544c55bf0e2881db28ed54be

This is not reproducible in a local trace benchmark run.

checkThread() and WebViewContentsClientAdapter's constructor seem to be
the only methods that are called in between, but checkThread() doesn't
look like a culprit, so adding trace to the constructor to verify it.

BUG=817644

Change-Id: I80da1b0ea74e2c7f005398a0a54bde1d38296222
Reviewed-on: https://chromium-review.googlesource.com/1038225Reviewed-by: default avatarBo <boliu@chromium.org>
Commit-Queue: Changwan Ryu <changwan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#555227}
parent ed480969
...@@ -52,6 +52,7 @@ import org.chromium.android_webview.AwWebResourceResponse; ...@@ -52,6 +52,7 @@ import org.chromium.android_webview.AwWebResourceResponse;
import org.chromium.android_webview.JsPromptResultReceiver; import org.chromium.android_webview.JsPromptResultReceiver;
import org.chromium.android_webview.JsResultReceiver; import org.chromium.android_webview.JsResultReceiver;
import org.chromium.android_webview.SafeBrowsingAction; import org.chromium.android_webview.SafeBrowsingAction;
import org.chromium.android_webview.ScopedSysTraceEvent;
import org.chromium.android_webview.permission.AwPermissionRequest; import org.chromium.android_webview.permission.AwPermissionRequest;
import org.chromium.android_webview.permission.Resource; import org.chromium.android_webview.permission.Resource;
import org.chromium.base.Callback; import org.chromium.base.Callback;
...@@ -142,35 +143,39 @@ class WebViewContentsClientAdapter extends AwContentsClient { ...@@ -142,35 +143,39 @@ class WebViewContentsClientAdapter extends AwContentsClient {
mContext = context; mContext = context;
mWebView = webView; mWebView = webView;
mWebViewDelegate = webViewDelegate; mWebViewDelegate = webViewDelegate;
mSupportLibClient = new SupportLibWebViewContentsClientAdapter(); try (ScopedSysTraceEvent event =
setWebViewClient(null); ScopedSysTraceEvent.scoped("WebViewContentsClientAdapter.constructor")) {
mSupportLibClient = new SupportLibWebViewContentsClientAdapter();
setWebViewClient(null);
mUiThreadHandler = new Handler() { mUiThreadHandler = new Handler() {
@Override @Override
public void handleMessage(Message msg) { public void handleMessage(Message msg) {
switch (msg.what) { switch (msg.what) {
case NEW_WEBVIEW_CREATED: case NEW_WEBVIEW_CREATED:
WebView.WebViewTransport t = (WebView.WebViewTransport) msg.obj; WebView.WebViewTransport t = (WebView.WebViewTransport) msg.obj;
WebView newWebView = t.getWebView(); WebView newWebView = t.getWebView();
if (newWebView == mWebView) { if (newWebView == mWebView) {
throw new IllegalArgumentException( throw new IllegalArgumentException(
"Parent WebView cannot host it's own popup window. Please " "Parent WebView cannot host it's own popup window. Please "
+ "use WebSettings.setSupportMultipleWindows(false)"); + "use WebSettings.setSupportMultipleWindows(false)");
} }
if (newWebView != null && newWebView.copyBackForwardList().getSize() != 0) { if (newWebView != null
throw new IllegalArgumentException( && newWebView.copyBackForwardList().getSize() != 0) {
"New WebView for popup window must not have been previously " throw new IllegalArgumentException(
+ "navigated."); "New WebView for popup window must not have been "
} + " previously navigated.");
}
WebViewChromium.completeWindowCreation(mWebView, newWebView);
break; WebViewChromium.completeWindowCreation(mWebView, newWebView);
default: break;
throw new IllegalStateException(); default:
throw new IllegalStateException();
}
} }
} };
}; }
} }
void setWebViewClient(WebViewClient client) { void setWebViewClient(WebViewClient client) {
......
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