Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / net / proxy / proxy_config_service_android.cc
index 4129bf2..d27bc5a 100644 (file)
@@ -159,9 +159,14 @@ std::string GetJavaProperty(const std::string& property) {
       std::string() : ConvertJavaStringToUTF8(env, result.obj());
 }
 
-void CreateStaticProxyConfig(const std::string& host, int port,
+void CreateStaticProxyConfig(const std::string& host,
+                             int port,
+                             const std::string& pac_url,
                              ProxyConfig* config) {
-  if (port != 0) {
+  if (!pac_url.empty()) {
+    config->set_pac_url(GURL(pac_url));
+    config->set_pac_mandatory(false);
+  } else if (port != 0) {
     std::string rules = base::StringPrintf("%s:%d", host.c_str(), port);
     config->proxy_rules().ParseFromString(rules);
   } else {
@@ -174,8 +179,8 @@ void CreateStaticProxyConfig(const std::string& host, int port,
 class ProxyConfigServiceAndroid::Delegate
     : public base::RefCountedThreadSafe<Delegate> {
  public:
-  Delegate(base::SequencedTaskRunner* network_task_runner,
-           base::SequencedTaskRunner* jni_task_runner,
+  Delegate(const scoped_refptr<base::SequencedTaskRunner>& network_task_runner,
+           const scoped_refptr<base::SequencedTaskRunner>& jni_task_runner,
            const GetPropertyCallback& get_property_callback)
       : jni_delegate_(this),
         network_task_runner_(network_task_runner),
@@ -248,10 +253,12 @@ class ProxyConfigServiceAndroid::Delegate
   }
 
   // Called on the JNI thread.
-  void ProxySettingsChangedTo(const std::string& host, int port) {
+  void ProxySettingsChangedTo(const std::string& host,
+                              int port,
+                              const std::string& pac_url) {
     DCHECK(OnJNIThread());
     ProxyConfig proxy_config;
-    CreateStaticProxyConfig(host, port, &proxy_config);
+    CreateStaticProxyConfig(host, port, pac_url, &proxy_config);
     network_task_runner_->PostTask(
         FROM_HERE,
         base::Bind(
@@ -266,10 +273,16 @@ class ProxyConfigServiceAndroid::Delegate
     explicit JNIDelegateImpl(Delegate* delegate) : delegate_(delegate) {}
 
     // ProxyConfigServiceAndroid::JNIDelegate overrides.
-    virtual void ProxySettingsChangedTo(JNIEnv* env, jobject jself,
-                                      jstring jhost, jint jport) OVERRIDE {
+    virtual void ProxySettingsChangedTo(JNIEnv* env,
+                                        jobject jself,
+                                        jstring jhost,
+                                        jint jport,
+                                        jstring jpac_url) OVERRIDE {
       std::string host = ConvertJavaStringToUTF8(env, jhost);
-      delegate_->ProxySettingsChangedTo(host, jport);
+      std::string pac_url;
+      if (jpac_url)
+        ConvertJavaStringToUTF8(env, jpac_url, &pac_url);
+      delegate_->ProxySettingsChangedTo(host, jport, pac_url);
     }
 
     virtual void ProxySettingsChanged(JNIEnv* env, jobject self) OVERRIDE {
@@ -319,8 +332,8 @@ class ProxyConfigServiceAndroid::Delegate
 };
 
 ProxyConfigServiceAndroid::ProxyConfigServiceAndroid(
-    base::SequencedTaskRunner* network_task_runner,
-    base::SequencedTaskRunner* jni_task_runner)
+    const scoped_refptr<base::SequencedTaskRunner>& network_task_runner,
+    const scoped_refptr<base::SequencedTaskRunner>& jni_task_runner)
     : delegate_(new Delegate(
         network_task_runner, jni_task_runner, base::Bind(&GetJavaProperty))) {
   delegate_->SetupJNI();
@@ -350,8 +363,8 @@ ProxyConfigServiceAndroid::GetLatestProxyConfig(ProxyConfig* config) {
 }
 
 ProxyConfigServiceAndroid::ProxyConfigServiceAndroid(
-    base::SequencedTaskRunner* network_task_runner,
-    base::SequencedTaskRunner* jni_task_runner,
+    const scoped_refptr<base::SequencedTaskRunner>& network_task_runner,
+    const scoped_refptr<base::SequencedTaskRunner>& jni_task_runner,
     GetPropertyCallback get_property_callback)
     : delegate_(new Delegate(
         network_task_runner, jni_task_runner, get_property_callback)) {