EMMA Coverage Report (generated Fri Aug 23 16:39:17 PDT 2013)
[all classes][org.chromium.net]

COVERAGE SUMMARY FOR SOURCE FILE [ProxyChangeListener.java]

nameclass, %method, %block, %line, %
ProxyChangeListener.java67%  (2/3)87%  (13/15)77%  (101/132)73%  (31.4/43)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class ProxyChangeListener100% (1/1)83%  (10/12)73%  (82/113)70%  (27.4/39)
stop (): void 0%   (0/1)0%   (0/6)0%   (0/3)
unregisterReceiver (): void 0%   (0/1)0%   (0/13)0%   (0/5)
proxySettingsChanged (): void 100% (1/1)72%  (13/18)75%  (6/8)
start (int): void 100% (1/1)73%  (11/15)89%  (3.6/4)
<static initializer> 100% (1/1)80%  (8/10)90%  (1.8/2)
registerReceiver (): void 100% (1/1)96%  (26/27)86%  (6/7)
ProxyChangeListener (Context): void 100% (1/1)100% (6/6)100% (3/3)
access$000 (ProxyChangeListener): void 100% (1/1)100% (3/3)100% (1/1)
create (Context): ProxyChangeListener 100% (1/1)100% (5/5)100% (1/1)
getProperty (String): String 100% (1/1)100% (3/3)100% (1/1)
setDelegateForTesting (ProxyChangeListener$Delegate): void 100% (1/1)100% (4/4)100% (2/2)
setEnabled (boolean): void 100% (1/1)100% (3/3)100% (2/2)
     
class ProxyChangeListener$10%   (0/1)100% (0/0)100% (0/0)100% (0/0)
     
class ProxyChangeListener$ProxyReceiver100% (1/1)100% (3/3)100% (19/19)100% (4/4)
ProxyChangeListener$ProxyReceiver (ProxyChangeListener): void 100% (1/1)100% (6/6)100% (1/1)
ProxyChangeListener$ProxyReceiver (ProxyChangeListener, ProxyChangeListener$1... 100% (1/1)100% (4/4)100% (1/1)
onReceive (Context, Intent): void 100% (1/1)100% (9/9)100% (3/3)

1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4 
5package org.chromium.net;
6 
7import android.content.BroadcastReceiver;
8import android.content.Context;
9import android.content.Intent;
10import android.content.IntentFilter;
11import android.net.Proxy;
12 
13import org.chromium.base.CalledByNative;
14import org.chromium.base.JNINamespace;
15import org.chromium.base.NativeClassQualifiedName;
16 
17// This class partners with native ProxyConfigServiceAndroid to listen for
18// proxy change notifications from Android.
19@JNINamespace("net")
20public class ProxyChangeListener {
21    private static final String TAG = "ProxyChangeListener";
22    private static boolean sEnabled = true;
23 
24    private int mNativePtr;
25    private Context mContext;
26    private ProxyReceiver mProxyReceiver;
27    private Delegate mDelegate;
28 
29    public interface Delegate {
30        public void proxySettingsChanged();
31    }
32 
33    private ProxyChangeListener(Context context) {
34        mContext = context;
35    }
36 
37    public static void setEnabled(boolean enabled) {
38        sEnabled = enabled;
39    }
40 
41    public void setDelegateForTesting(Delegate delegate) {
42        mDelegate = delegate;
43    }
44 
45    @CalledByNative
46    static public ProxyChangeListener create(Context context) {
47        return new ProxyChangeListener(context);
48    }
49 
50    @CalledByNative
51    static public String getProperty(String property) {
52        return System.getProperty(property);
53    }
54 
55    @CalledByNative
56    public void start(int nativePtr) {
57        assert mNativePtr == 0;
58        mNativePtr = nativePtr;
59        registerReceiver();
60    }
61 
62    @CalledByNative
63    public void stop() {
64        mNativePtr = 0;
65        unregisterReceiver();
66    }
67 
68    private class ProxyReceiver extends BroadcastReceiver {
69        @Override
70        public void onReceive(Context context, Intent intent) {
71            if (intent.getAction().equals(Proxy.PROXY_CHANGE_ACTION)) {
72                proxySettingsChanged();
73            }
74        }
75    }
76 
77    private void proxySettingsChanged() {
78        if (!sEnabled) {
79            return;
80        }
81        if (mDelegate != null) {
82          mDelegate.proxySettingsChanged();
83        }
84        if (mNativePtr == 0) {
85          return;
86        }
87        // Note that this code currently runs on a MESSAGE_LOOP_UI thread, but
88        // the C++ code must run the callbacks on the network thread.
89        nativeProxySettingsChanged(mNativePtr);
90    }
91 
92    private void registerReceiver() {
93        if (mProxyReceiver != null) {
94            return;
95        }
96        IntentFilter filter = new IntentFilter();
97        filter.addAction(Proxy.PROXY_CHANGE_ACTION);
98        mProxyReceiver = new ProxyReceiver();
99        mContext.getApplicationContext().registerReceiver(mProxyReceiver, filter);
100    }
101 
102    private void unregisterReceiver() {
103        if (mProxyReceiver == null) {
104            return;
105        }
106        mContext.unregisterReceiver(mProxyReceiver);
107        mProxyReceiver = null;
108    }
109 
110    /**
111     * See net/proxy/proxy_config_service_android.cc
112     */
113    @NativeClassQualifiedName("ProxyConfigServiceAndroid::JNIDelegate")
114    private native void nativeProxySettingsChanged(int nativePtr);
115}

[all classes][org.chromium.net]
EMMA 2.0.5312 (C) Vladimir Roubtsov