Index: chrome_proxy_resolver.h |
diff --git a/chrome_proxy_resolver.h b/chrome_proxy_resolver.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1d6cdfcdb4f2cff3a912146a67b1a8b639462a44 |
--- /dev/null |
+++ b/chrome_proxy_resolver.h |
@@ -0,0 +1,66 @@ |
+// Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef CHROMEOS_PLATFORM_UPDATE_ENGINE_CHROME_PROXY_RESOLVER_H__ |
+#define CHROMEOS_PLATFORM_UPDATE_ENGINE_CHROME_PROXY_RESOLVER_H__ |
+ |
+#include <string> |
+#include <vector> |
+ |
+#include <curl/curl.h> |
+#include <gtest/gtest_prod.h> // for FRIEND_TEST |
+ |
+#include "update_engine/dbus_interface.h" |
+#include "update_engine/proxy_resolver.h" |
+ |
+namespace chromeos_update_engine { |
+ |
+extern const char kSessionManagerService[]; |
+extern const char kSessionManagerPath[]; |
+extern const char kSessionManagerInterface[]; |
+extern const char kSessionManagerRetrievePropertyMethod[]; |
+extern const char kSessionManagerProxySettingsKey[]; |
+ |
+// Class to resolve proxy for a url based on Chrome's proxy settings. |
+ |
+// Currently only supports manual settings, not PAC files or autodetected |
+// settings. |
+ |
+class ChromeProxyResolver : public ProxyResolver { |
+ public: |
+ explicit ChromeProxyResolver(DbusGlibInterface* dbus) : dbus_(dbus) {} |
+ virtual ~ChromeProxyResolver() {} |
+ |
+ virtual bool GetProxiesForUrl(const std::string& url, |
+ std::vector<std::string>* out_proxies); |
+ |
+ // Get the curl proxy type for a given proxy url. Returns true on success. |
+ // Note: if proxy is kNoProxy, this will return false. |
+ static bool GetTypeForProxy(const std::string& proxy, |
petkov
2010/11/19 01:09:19
suggestion: GetProxyType
adlr
2010/11/19 02:00:52
Done.
|
+ curl_proxytype* out_type); |
+ |
+ private: |
+ FRIEND_TEST(ChromeProxyResolverTest, GetProxiesForUrlWithSettingsTest); |
+ |
+ // Fetches a dbus proxy to session manager. Returns NULL on failure. |
+ DBusGProxy* DbusProxy(); |
+ |
+ // Fetches the json-encoded proxy settings string from the session manager. |
+ bool GetJsonProxySettings(DBusGProxy* proxy, std::string* out_json); |
+ |
+ // Given a |url| and the json encoded settings |json_settings|, |
+ // returns the proper proxy servers in |out_proxies|. Returns true on |
+ // success. |
+ bool GetProxiesForUrlWithSettings(const std::string& url, |
+ const std::string& json_settings, |
+ std::vector<std::string>* out_proxies); |
+ |
+ DbusGlibInterface* dbus_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(ChromeProxyResolver); |
+}; |
+ |
+} // namespace chromeos_update_engine |
+ |
+#endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_CHROME_PROXY_RESOLVER_H__ |