101ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen// Copyright (c) 2010 The Chromium Authors. All rights reserved. 201ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 301ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen// found in the LICENSE file. 401ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen 501ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen#include "net/proxy/proxy_config_service_android.h" 601ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen 701ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen#include "net/proxy/proxy_config.h" 801ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen 901ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsennamespace net { 1001ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen 1101ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsenvoid ProxyConfigServiceAndroid::AddObserver(Observer* observer) { 1201ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen observers_.AddObserver(observer); 1301ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen} 1401ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen 1501ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsenvoid ProxyConfigServiceAndroid::RemoveObserver(Observer* observer) { 1601ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen observers_.RemoveObserver(observer); 1701ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen} 1801ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen 19a628b56b8b7c7f9a8730b0e43c6e04fcf3619b7eKristian MonsenProxyConfigService::ConfigAvailability ProxyConfigServiceAndroid::GetLatestProxyConfig(ProxyConfig* config) { 2001ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen if (!config) 21a628b56b8b7c7f9a8730b0e43c6e04fcf3619b7eKristian Monsen return ProxyConfigService::CONFIG_UNSET; 2201ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen 2301ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen if (m_proxy.empty()) { 2401ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen *config = ProxyConfig::CreateDirect(); 2501ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen } else { 2601ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen config->proxy_rules().ParseFromString(m_proxy); 2701ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen } 28a628b56b8b7c7f9a8730b0e43c6e04fcf3619b7eKristian Monsen return ProxyConfigService::CONFIG_VALID; 2901ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen} 3001ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen 31eae0084084f68c82733e5d9d4dea8e14eba66cc9Kristian Monsenvoid ProxyConfigServiceAndroid::UpdateProxySettings(std::string& proxy, 32eae0084084f68c82733e5d9d4dea8e14eba66cc9Kristian Monsen std::string& exList) { 3301ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen if (proxy == m_proxy) 3401ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen return; 3501ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen 3601ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen m_proxy = proxy; 3701ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen ProxyConfig config; 3801ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen config.proxy_rules().ParseFromString(m_proxy); 39eae0084084f68c82733e5d9d4dea8e14eba66cc9Kristian Monsen 40eae0084084f68c82733e5d9d4dea8e14eba66cc9Kristian Monsen size_t pos; 41eae0084084f68c82733e5d9d4dea8e14eba66cc9Kristian Monsen while ( (pos = exList.find(',')) != std::string::npos) { 42eae0084084f68c82733e5d9d4dea8e14eba66cc9Kristian Monsen config.proxy_rules().bypass_rules.AddRuleFromString(exList.substr(0, pos)); 43eae0084084f68c82733e5d9d4dea8e14eba66cc9Kristian Monsen exList.erase(0, pos + 1); 44eae0084084f68c82733e5d9d4dea8e14eba66cc9Kristian Monsen } 45eae0084084f68c82733e5d9d4dea8e14eba66cc9Kristian Monsen config.proxy_rules().bypass_rules.AddRuleFromString(exList); 46eae0084084f68c82733e5d9d4dea8e14eba66cc9Kristian Monsen 47a628b56b8b7c7f9a8730b0e43c6e04fcf3619b7eKristian Monsen FOR_EACH_OBSERVER(Observer, observers_, 48a628b56b8b7c7f9a8730b0e43c6e04fcf3619b7eKristian Monsen OnProxyConfigChanged(config, 49a628b56b8b7c7f9a8730b0e43c6e04fcf3619b7eKristian Monsen ProxyConfigService::CONFIG_VALID)); 5001ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen} 5101ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen 5201ba86dc3bae37426ebafbdd93640dc50c45e3e0Kristian Monsen} // namespace net 53