Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(632)

Unified Diff: chrome_browser_proxy_resolver.h

Issue 6594025: AU: Full proxy support (Closed) Base URL: http://git.chromium.org/git/update_engine.git@master
Patch Set: fixes for review Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « UpdateEngine.conf ('k') | chrome_browser_proxy_resolver.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome_browser_proxy_resolver.h
diff --git a/chrome_browser_proxy_resolver.h b/chrome_browser_proxy_resolver.h
new file mode 100644
index 0000000000000000000000000000000000000000..429c7729d75235fad850e971bac6260b90ea4a70
--- /dev/null
+++ b/chrome_browser_proxy_resolver.h
@@ -0,0 +1,86 @@
+// Copyright (c) 2011 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_BROWSER_PROXY_RESOLVER_H__
+#define CHROMEOS_PLATFORM_UPDATE_ENGINE_CHROME_BROWSER_PROXY_RESOLVER_H__
+
+#include <map>
+#include <string>
+
+#include <dbus/dbus-glib.h>
+#include <dbus/dbus-glib-lowlevel.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 kLibCrosServiceName[];
+extern const char kLibCrosServicePath[];
+extern const char kLibCrosServiceInterface[];
+extern const char kLibCrosServiceResolveNetworkProxyMethodName[];
+extern const char kLibCrosProxyResolveName[];
+extern const char kLibCrosProxyResolveSignalInterface[];
+extern const char kLibCrosProxyResolveSignalFilter[];
+
+class ChromeBrowserProxyResolver : public ProxyResolver {
+ public:
+ explicit ChromeBrowserProxyResolver(DbusGlibInterface* dbus);
+ virtual ~ChromeBrowserProxyResolver();
+ bool Init();
+
+ virtual bool GetProxiesForUrl(const std::string& url,
+ ProxiesResolvedFn callback,
+ void* data);
+ void set_timeout(int seconds) { timeout_ = seconds; }
+
+ // Public for test
+ static DBusHandlerResult StaticFilterMessage(
+ DBusConnection* connection,
+ DBusMessage* message,
+ void* data) {
+ return reinterpret_cast<ChromeBrowserProxyResolver*>(data)->FilterMessage(
+ connection, message);
+ }
+
+ private:
+ FRIEND_TEST(ChromeBrowserProxyResolverTest, ParseTest);
+ FRIEND_TEST(ChromeBrowserProxyResolverTest, SuccessTest);
+ typedef std::multimap<std::string, std::pair<ProxiesResolvedFn, void*> >
+ CallbacksMap;
+ typedef std::multimap<std::string, GSource*> TimeoutsMap;
+
+ // Handle a reply from Chrome:
+ void HandleReply(const std::string& source_url,
+ const std::string& proxy_list);
+ DBusHandlerResult FilterMessage(
+ DBusConnection* connection,
+ DBusMessage* message);
+ // Handle no reply:
+ void HandleTimeout(std::string source_url);
+
+ // Parses a string-encoded list of proxies and returns a deque
+ // of individual proxies. The last one will always be kNoProxy.
+ static std::deque<std::string> ParseProxyString(const std::string& input);
+
+ // Deletes internal state for the first instance of url in the state.
+ // If delete_timer is set, calls g_source_destroy on the timer source.
+ // Returns the callback in an out parameter. Returns true on success.
+ bool DeleteUrlState(const std::string& url,
+ bool delete_timer,
+ std::pair<ProxiesResolvedFn, void*>* callback);
+
+ DbusGlibInterface* dbus_;
+ DBusGProxy* proxy_;
+ DBusGProxy* peer_proxy_;
+ int timeout_;
+ TimeoutsMap timers_;
+ CallbacksMap callbacks_;
+ DISALLOW_COPY_AND_ASSIGN(ChromeBrowserProxyResolver);
+};
+
+} // namespace chromeos_update_engine
+
+#endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_CHROME_BROWSER_PROXY_RESOLVER_H__
« no previous file with comments | « UpdateEngine.conf ('k') | chrome_browser_proxy_resolver.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698