Stop holding mProxyLock while downloading PAC script data.
Holding PacManager#mProxyLock for long time eventually causes ANR when
launching new applications.
1. ActivityThread#handleBindApplication blocks until
ActivityThread#handleBindApplication
-> ConnectivityService#getProxyForNetwork()
-> ConnectivityService#getDefaultProxy()
obtains the lock of ConnectivityService#mProxyLock
2. ConnectivityService#mProxyLock can be held by
ConnectivityService#setGlobalProxy() running on another thread until
ConnectivityService#setGlobalProxy()
-> ConnectivityService#sendProxyBroadcast()
-> PacManager#setCurrentProxyScriptUrl()
obtains the lock of PacManager#mProxyLock
3. Before the CL, PacManager#mProxyLock could be held by
mPacDownloader#run() on mNetThread until downloading a PAC script
completed.
The CL fixes the step 3 so that mPacDownloader#run does not keep the
lock of PacManager#mProxyLock. It eventually fixes long blocking at
ActivityThread#handleBindApplication and ANR when launching an
application.
Bug: 36317236
Test: Build succeeded
Merged-In: I864e41e1142178681f8f1b4fb7750d37e3ab2076
Change-Id: I864e41e1142178681f8f1b4fb7750d37e3ab2076
1 file changed