Commit c5816ebb authored by Eric Roman's avatar Eric Roman Committed by Commit Bot

Document some Android-specific quirks with PAC evaluation in Chrome and WebView.

Bug: 993499
Change-Id: I0d2f535ca6958d6e77ee9f854f30519a73ba57d9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1912823
Commit-Queue: Eric Roman <eroman@chromium.org>
Reviewed-by: default avatarMatt Menke <mmenke@chromium.org>
Cr-Commit-Position: refs/heads/master@{#714989}
parent 56d15ada
...@@ -808,3 +808,33 @@ after finding the first candidate IP, so multiple IPs may be returned. ...@@ -808,3 +808,33 @@ after finding the first candidate IP, so multiple IPs may be returned.
Note that short-circuiting happens whenever steps 1-3 find a candidate IP. So Note that short-circuiting happens whenever steps 1-3 find a candidate IP. So
for example if at least one IP address was discovered by checking routes to for example if at least one IP address was discovered by checking routes to
public Internet, only those IPs will be returned, and steps 2-3 will not run. public Internet, only those IPs will be returned, and steps 2-3 will not run.
## Android quirks
Proxy resolving via PAC works differently on Android than other desktop Chrome
platforms:
* Android Chrome uses the same Chromium PAC resolver, however does not run it
out-of-process as on Desktop Chrome. This architectural difference is
due to the higher process cost on Android, and means Android Chrome is more
susceptible to malicious PAC scripts. The other consequence is that Android
Chrome can have distinct regressions from Desktop Chrome as the service setup
is quite different (and most `browser_tests` are not run on Android either).
* [WebView does not use Chrome's PAC
resolver](https://bugs.chromium.org/p/chromium/issues/detail?id=989667).
Instead Android WebView uses the Android system's PAC resolver, which is less
optimized and uses an old build of V8. When the system is configured to use
PAC, Android WebView's net code will see the proxy settings as being a
single HTTP proxy on `localhost`. The system localhost proxy will in turn
evaluate the PAC script and forward the HTTP request on to the resolved
proxy. This translation has a number of effects, including what proxy
schemes are supported, the maximum connection limits, how proxy fallback
works, and overall performance (the current Android PAC evaluator blocks on
DNS).
* Android system log messages for `PacProcessor` are not related to Chrome or
its PAC evaluator. Rather, these are log messages generated by the Android
system's PAC implementation. This confusion can arise when users add
`alert()` to debug PAC script logic, and then refer to output in `logcat` to
try and diagnose a resolving issue in Android Chrome.
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