| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2011 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 | |
| 5 // Definition of helper functions for the Chrome Extensions Proxy Settings API. | |
| 6 | |
| 7 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_PROXY_API_HELPERS_H_ | |
| 8 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_PROXY_API_HELPERS_H_ | |
| 9 #pragma once | |
| 10 | |
| 11 #include <string> | |
| 12 | |
| 13 #include "chrome/browser/prefs/proxy_prefs.h" | |
| 14 #include "net/proxy/proxy_config.h" | |
| 15 | |
| 16 class ProxyConfigDictionary; | |
| 17 | |
| 18 namespace base { | |
| 19 class DictionaryValue; | |
| 20 class ListValue; | |
| 21 } | |
| 22 | |
| 23 namespace extension_proxy_api_helpers { | |
| 24 | |
| 25 // Conversion between PAC scripts and data-encoding URLs containing these | |
| 26 // PAC scripts. Data-encoding URLs consist of a data:// prefix, a mime-type and | |
| 27 // base64 encoded text. The functions return true in case of success. | |
| 28 // CreatePACScriptFromDataURL should only be called on data-encoding urls | |
| 29 // created with CreateDataURLFromPACScript. | |
| 30 bool CreateDataURLFromPACScript(const std::string& pac_script, | |
| 31 std::string* pac_script_url_base64_encoded); | |
| 32 bool CreatePACScriptFromDataURL( | |
| 33 const std::string& pac_script_url_base64_encoded, | |
| 34 std::string* pac_script); | |
| 35 | |
| 36 // Helper functions for extension->browser pref transformation: | |
| 37 | |
| 38 // The following functions extract one piece of data from the |proxy_config| | |
| 39 // each. |proxy_config| is a ProxyConfig dictionary as defined in the | |
| 40 // extension API. All output values conform to the format expected by a | |
| 41 // ProxyConfigDictionary. | |
| 42 // | |
| 43 // - If there are NO entries for the respective pieces of data, the functions | |
| 44 // return true. | |
| 45 // - If there ARE entries and they could be parsed, the functions set |out| | |
| 46 // and return true. | |
| 47 // - If there are entries that could not be parsed, the functions set |error| | |
| 48 // and return false. | |
| 49 // | |
| 50 // The parameter |bad_message| is passed to simulate the behavior of | |
| 51 // EXTENSION_FUNCTION_VALIDATE. It is never NULL. | |
| 52 bool GetProxyModeFromExtensionPref(const base::DictionaryValue* proxy_config, | |
| 53 ProxyPrefs::ProxyMode* out, | |
| 54 std::string* error, | |
| 55 bool* bad_message); | |
| 56 bool GetPacMandatoryFromExtensionPref(const base::DictionaryValue* proxy_config, | |
| 57 bool* out, | |
| 58 std::string* error, | |
| 59 bool* bad_message); | |
| 60 bool GetPacUrlFromExtensionPref(const base::DictionaryValue* proxy_config, | |
| 61 std::string* out, | |
| 62 std::string* error, | |
| 63 bool* bad_message); | |
| 64 bool GetPacDataFromExtensionPref(const base::DictionaryValue* proxy_config, | |
| 65 std::string* out, | |
| 66 std::string* error, | |
| 67 bool* bad_message); | |
| 68 bool GetProxyRulesStringFromExtensionPref( | |
| 69 const base::DictionaryValue* proxy_config, | |
| 70 std::string* out, | |
| 71 std::string* error, | |
| 72 bool* bad_message); | |
| 73 bool GetBypassListFromExtensionPref(const base::DictionaryValue* proxy_config, | |
| 74 std::string* out, | |
| 75 std::string* error, | |
| 76 bool* bad_message); | |
| 77 | |
| 78 // Creates and returns a ProxyConfig dictionary (as defined in the extension | |
| 79 // API) from the given parameters. Ownership is passed to the caller. | |
| 80 // Depending on the value of |mode_enum|, several of the strings may be empty. | |
| 81 base::DictionaryValue* CreateProxyConfigDict( | |
| 82 ProxyPrefs::ProxyMode mode_enum, | |
| 83 bool pac_mandatory, | |
| 84 const std::string& pac_url, | |
| 85 const std::string& pac_data, | |
| 86 const std::string& proxy_rules_string, | |
| 87 const std::string& bypass_list, | |
| 88 std::string* error); | |
| 89 | |
| 90 // Converts a ProxyServer dictionary instance (as defined in the extension API) | |
| 91 // |proxy_server| to a net::ProxyServer. | |
| 92 // |default_scheme| is the default scheme that is filled in, in case the | |
| 93 // caller did not pass one. | |
| 94 // Returns true if successful and sets |error| otherwise. | |
| 95 bool GetProxyServer(const base::DictionaryValue* proxy_server, | |
| 96 net::ProxyServer::Scheme default_scheme, | |
| 97 net::ProxyServer* out, | |
| 98 std::string* error, | |
| 99 bool* bad_message); | |
| 100 | |
| 101 // Joins a list of URLs (stored as StringValues) in |list| with |joiner| | |
| 102 // to |out|. Returns true if successful and sets |error| otherwise. | |
| 103 bool JoinUrlList(base::ListValue* list, | |
| 104 const std::string& joiner, | |
| 105 std::string* out, | |
| 106 std::string* error, | |
| 107 bool* bad_message); | |
| 108 | |
| 109 | |
| 110 // Helper functions for browser->extension pref transformation: | |
| 111 | |
| 112 // Creates and returns a ProxyRules dictionary as defined in the extension API | |
| 113 // with the values of a ProxyConfigDictionary configured for fixed proxy | |
| 114 // servers. Returns NULL in case of failures. Ownership is passed to the caller. | |
| 115 base::DictionaryValue* CreateProxyRulesDict( | |
| 116 const ProxyConfigDictionary& proxy_config); | |
| 117 | |
| 118 // Creates and returns a ProxyServer dictionary as defined in the extension API | |
| 119 // with values from a net::ProxyServer object. Never returns NULL. Ownership is | |
| 120 // passed to the caller. | |
| 121 base::DictionaryValue* CreateProxyServerDict(const net::ProxyServer& proxy); | |
| 122 | |
| 123 // Creates and returns a PacScript dictionary as defined in the extension API | |
| 124 // with the values of a ProxyconfigDictionary configured for pac scripts. | |
| 125 // Returns NULL in case of failures. Ownership is passed to the caller. | |
| 126 base::DictionaryValue* CreatePacScriptDict( | |
| 127 const ProxyConfigDictionary& proxy_config); | |
| 128 | |
| 129 // Tokenizes the |in| at delimiters |delims| and returns a new ListValue with | |
| 130 // StringValues created from the tokens. Ownership is passed to the caller. | |
| 131 base::ListValue* TokenizeToStringList(const std::string& in, | |
| 132 const std::string& delims); | |
| 133 | |
| 134 } // namespace extension_proxy_api_helpers | |
| 135 | |
| 136 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_PROXY_API_HELPERS_H_ | |
| OLD | NEW |