// Copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "net/proxy/proxy_config_service_android.h" #include "net/proxy/proxy_config.h" namespace net { void ProxyConfigServiceAndroid::AddObserver(Observer* observer) { observers_.AddObserver(observer); } void ProxyConfigServiceAndroid::RemoveObserver(Observer* observer) { observers_.RemoveObserver(observer); } ProxyConfigService::ConfigAvailability ProxyConfigServiceAndroid::GetLatestProxyConfig(ProxyConfig* config) { if (!config) return ProxyConfigService::CONFIG_UNSET; if (m_proxy.empty()) { *config = ProxyConfig::CreateDirect(); } else { config->proxy_rules().ParseFromString(m_proxy); } return ProxyConfigService::CONFIG_VALID; } void ProxyConfigServiceAndroid::UpdateProxySettings(std::string& proxy, std::string& exList) { if (proxy == m_proxy) return; m_proxy = proxy; ProxyConfig config; config.proxy_rules().ParseFromString(m_proxy); size_t pos; while ( (pos = exList.find(',')) != std::string::npos) { config.proxy_rules().bypass_rules.AddRuleFromString(exList.substr(0, pos)); exList.erase(0, pos + 1); } config.proxy_rules().bypass_rules.AddRuleFromString(exList); FOR_EACH_OBSERVER(Observer, observers_, OnProxyConfigChanged(config, ProxyConfigService::CONFIG_VALID)); } } // namespace net