| Index: chrome_proxy_resolver.h
|
| diff --git a/chrome_proxy_resolver.h b/chrome_proxy_resolver.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..796f8fbd15aa9b8ec34f96191e7416bf5428e17c
|
| --- /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 GetProxyType(const std::string& proxy,
|
| + 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__
|
|
|