Skip to content

Commit 2203cf3

Browse files
author
clchen
committed
Reducing WebView navigation timeout for accessibility.
Reducing the amount of time that WebView will wait before treating a navigation attempt as failed. This is needed to recover from cases where the user is attempting to linearly navigate a WebView that is immediately switched out right as it starts to read. A good example of this problem is AdMob's WebViews which are continuously being swapped. Change-Id: Ib9b4a9b99a35d42920e34e0acbe8ab45e1d47871
1 parent 4cce397 commit 2203cf3

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

core/java/android/webkit/AccessibilityInjector.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -710,7 +710,18 @@ private static class CallbackHandler {
710710
"javascript:(function() { %s.onResult(%d, %s); })();";
711711

712712
// Time in milliseconds to wait for a result before failing.
713-
private static final long RESULT_TIMEOUT = 5000;
713+
// Based on recorded times, we have found that in a complex real-world
714+
// web app (such as the desktop version of Gmail), there can be spikes
715+
// of ~2600ms in the worst case. These are temporary spikes and are not
716+
// repeatable; GMail eventually settles down to around ~60ms. The
717+
// longest duration that is consistently repeatable is ~300ms when
718+
// loading extremely large plain text documents in WebView.
719+
// If this timeout hits, the navigation is considered to have "failed",
720+
// meaning there is no content. Since the longer spikes are one-off
721+
// events triggered by the page loading and itself running a large
722+
// amount of JS, subsequent runs would succeed, so the worst impact
723+
// is that the first run will look like it had not loaded yet.
724+
private static final long RESULT_TIMEOUT = 1500;
714725

715726
private final AtomicInteger mResultIdCounter = new AtomicInteger();
716727
private final Object mResultLock = new Object();

0 commit comments

Comments
 (0)