Skip to content

Commit a4de463

Browse files
committed
Wait for redirects before showing main webview
The onPageFinished callback fires when a page is redirected to another one. We can detect if a new page load is started before the previous page is finished, and wait for that new page load to finish. https://phabricator.endlessm.com/T34576
1 parent b3c326e commit a4de463

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

pythonforandroid/bootstraps/webview/build/src/main/java/org/kivy/android/PythonActivity.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -221,22 +221,27 @@ public boolean shouldOverrideUrlLoading(WebView view, String url) {
221221
mWebView.getSettings().setAllowUniversalAccessFromFileURLs(true);
222222
mWebView.getSettings().setMediaPlaybackRequiresUserGesture(false);
223223
mWebView.setWebViewClient(new WebViewClient() {
224+
boolean isRedirected = false;
225+
226+
@Override
227+
public void onPageStarted(WebView view, String url, Bitmap favicon) {
228+
isRedirected = false;
229+
}
230+
224231
@Override
225232
public boolean shouldOverrideUrlLoading(WebView view, String url) {
233+
isRedirected = true;
226234
return tryOpenExternalLink(url);
227235
}
228236

229237
@Override
230238
public void onPageFinished(WebView view, String url) {
231-
Log.i(TAG, "MainPythonWebViewClient onPageFinished");
239+
if (isRedirected) {
240+
return;
241+
}
242+
243+
Log.v(TAG, "MainPythonWebViewClient loading finished");
232244
displayMainWebView();
233-
// FIXME: We should use postVisualStateCallback here...
234-
// mWebView.postVisualStateCallback(123, new WebView.VisualStateCallback() {
235-
// @Override
236-
// public void onComplete(long requestId) {
237-
// displayMainWebView();
238-
// }
239-
// });
240245
}
241246
});
242247
mWebViewSwitcher.addView(mWebView, 1);

0 commit comments

Comments
 (0)