172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// found in the LICENSE file. 472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#ifndef CHROME_BROWSER_PREFS_PROXY_CONFIG_DICTIONARY_H_ 672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#define CHROME_BROWSER_PREFS_PROXY_CONFIG_DICTIONARY_H_ 772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#pragma once 872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include <string> 1072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 1172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "base/basictypes.h" 12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_ptr.h" 1372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/prefs/proxy_prefs.h" 1472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 1572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenclass DictionaryValue; 1672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 1772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Factory and wrapper for proxy config dictionaries that are stored 1872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// in the user preferences. The dictionary has the following structure: 1972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// { 2072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// mode: string, 2172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// server: string, 2272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// pac_url: string, 2372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// bypass_list: string 2472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// } 2572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// See proxy_config_dictionary.cc for the structure of the respective strings. 2672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenclass ProxyConfigDictionary { 2772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen public: 2872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // Creates a deep copy of |dict| and leaves ownership to caller. 2972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen explicit ProxyConfigDictionary(const DictionaryValue* dict); 3072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ~ProxyConfigDictionary(); 3172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 3272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen bool GetMode(ProxyPrefs::ProxyMode* out) const; 3372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen bool GetPacUrl(std::string* out) const; 3472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen bool GetProxyServer(std::string* out) const; 3572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen bool GetBypassList(std::string* out) const; 3672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen bool HasBypassList() const; 3772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 3872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen static DictionaryValue* CreateDirect(); 3972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen static DictionaryValue* CreateAutoDetect(); 4072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen static DictionaryValue* CreatePacScript(const std::string& pac_url); 4172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen static DictionaryValue* CreateFixedServers( 4272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const std::string& proxy_server, 4372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const std::string& bypass_list); 4472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen static DictionaryValue* CreateSystem(); 4572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen private: 4672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen static DictionaryValue* CreateDictionary(ProxyPrefs::ProxyMode mode, 4772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const std::string& pac_url, 4872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const std::string& proxy_server, 4972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const std::string& bypass_list); 5072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 5172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen scoped_ptr<DictionaryValue> dict_; 5272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 5372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen DISALLOW_COPY_AND_ASSIGN(ProxyConfigDictionary); 5472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen}; 5572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 5672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#endif // CHROME_BROWSER_PREFS_PROXY_CONFIG_DICTIONARY_H_ 57