Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1127)

Unified Diff: net/android/java/src/org/chromium/net/ProxyChangeListener.java

Issue 2812963002: [Cronet] Move initialization to a new thread rather than the UI thread. (Closed)
Patch Set: mostly renaming Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/android/java/src/org/chromium/net/ProxyChangeListener.java
diff --git a/net/android/java/src/org/chromium/net/ProxyChangeListener.java b/net/android/java/src/org/chromium/net/ProxyChangeListener.java
index f1362d35f1abfffa42386d1ee8487c9297843c35..b1aa4ddc8d7415d76abbd9b488c6550ff0352eec 100644
--- a/net/android/java/src/org/chromium/net/ProxyChangeListener.java
+++ b/net/android/java/src/org/chromium/net/ProxyChangeListener.java
@@ -11,9 +11,12 @@ import android.content.IntentFilter;
import android.net.Proxy;
import android.net.Uri;
import android.os.Build;
+import android.os.Handler;
+import android.os.Looper;
import android.text.TextUtils;
import android.util.Log;
+import org.chromium.base.BuildConfig;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeClassQualifiedName;
@@ -30,8 +33,11 @@ public class ProxyChangeListener {
private static final String TAG = "ProxyChangeListener";
private static boolean sEnabled = true;
+ private final Context mContext;
+ private final Looper mLooper;
+ private final Handler mHandler;
+
private long mNativePtr;
- private Context mContext;
private ProxyReceiver mProxyReceiver;
private Delegate mDelegate;
@@ -57,6 +63,8 @@ public class ProxyChangeListener {
private ProxyChangeListener(Context context) {
mContext = context;
+ mLooper = Looper.myLooper();
+ mHandler = new Handler(mLooper);
}
public static void setEnabled(boolean enabled) {
@@ -79,6 +87,7 @@ public class ProxyChangeListener {
@CalledByNative
public void start(long nativePtr) {
+ assertOnThread();
assert mNativePtr == 0;
mNativePtr = nativePtr;
registerReceiver();
@@ -86,15 +95,21 @@ public class ProxyChangeListener {
@CalledByNative
public void stop() {
+ assertOnThread();
mNativePtr = 0;
unregisterReceiver();
}
private class ProxyReceiver extends BroadcastReceiver {
@Override
- public void onReceive(Context context, Intent intent) {
+ public void onReceive(Context context, final Intent intent) {
if (intent.getAction().equals(Proxy.PROXY_CHANGE_ACTION)) {
- proxySettingsChanged(extractNewProxy(intent));
+ runOnThread(new Runnable() {
+ @Override
+ public void run() {
+ proxySettingsChanged(ProxyReceiver.this, extractNewProxy(intent));
+ }
+ });
}
}
@@ -175,8 +190,8 @@ public class ProxyChangeListener {
}
}
- private void proxySettingsChanged(ProxyConfig cfg) {
- if (!sEnabled) {
+ private void proxySettingsChanged(ProxyReceiver proxyReceiver, ProxyConfig cfg) {
+ if (!sEnabled || proxyReceiver != mProxyReceiver) {
xunjieli 2017/04/13 18:44:54 Same here. Maybe add a comment on we need this ext
pauljensen 2017/05/01 15:35:53 Done.
return;
}
if (mDelegate != null) {
@@ -213,6 +228,25 @@ public class ProxyChangeListener {
mProxyReceiver = null;
}
+ private boolean onThread() {
+ return mLooper == Looper.myLooper();
+ }
+
+ private void assertOnThread() {
+ if (BuildConfig.DCHECK_IS_ON && !onThread()) {
+ throw new IllegalStateException(
+ "Must be called on NetworkChangeNotifierAutoDetect thread.");
xunjieli 2017/04/13 18:44:54 nit: s/NetworkChangeNotifierAutoDetect/ProxyChange
pauljensen 2017/05/01 15:35:53 Done.
+ }
+ }
+
+ private void runOnThread(Runnable r) {
+ if (onThread()) {
+ r.run();
+ } else {
+ mHandler.post(r);
+ }
+ }
+
/**
* See net/proxy/proxy_config_service_android.cc
*/

Powered by Google App Engine
This is Rietveld 408576698