|  | // Copyright 2013 The Chromium 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 PPAPI_CPP_NETWORK_PROXY_H_ | 
|  | #define PPAPI_CPP_NETWORK_PROXY_H_ | 
|  |  | 
|  | #include <stdint.h> | 
|  |  | 
|  | #include <string> | 
|  |  | 
|  | #include "ppapi/cpp/completion_callback.h" | 
|  | #include "ppapi/cpp/instance_handle.h" | 
|  |  | 
|  | namespace pp { | 
|  |  | 
|  | /// This class provides a way to determine the appropriate proxy settings for | 
|  | /// for a given URL. | 
|  | /// | 
|  | /// Permissions: Apps permission <code>socket</code> with subrule | 
|  | /// <code>resolve-proxy</code> is required for using this API. | 
|  | /// For more details about network communication permissions, please see: | 
|  | /// http://developer.chrome.com/apps/app_network.html | 
|  | class NetworkProxy { | 
|  | public: | 
|  | /// Returns true if the browser supports this API, false otherwise. | 
|  | static bool IsAvailable(); | 
|  |  | 
|  | /// Retrieves the proxy that will be used for the given URL. The result will | 
|  | /// be a string in PAC format. For more details about PAC format, please see | 
|  | /// http://en.wikipedia.org/wiki/Proxy_auto-config | 
|  | /// | 
|  | /// @param[in] instance An <code>InstanceHandle</code> identifying one | 
|  | /// instance of a module. | 
|  | /// | 
|  | /// @param[in] url A string <code>Var</code> containing a URL. | 
|  | /// | 
|  | /// @param[in] callback A <code>CompletionCallbackWithOutput</code> to be | 
|  | /// called upon completion. It will be passed a string <code>Var</code> | 
|  | /// containing the appropriate PAC string for <code>url</code>. | 
|  | /// | 
|  | /// @return An int32_t containing an error code from <code>pp_errors.h</code>. | 
|  | static int32_t GetProxyForURL( | 
|  | const InstanceHandle& instance, | 
|  | const Var& url, | 
|  | const pp::CompletionCallbackWithOutput<Var>& callback); | 
|  | }; | 
|  |  | 
|  | }  // namespace pp | 
|  |  | 
|  | #endif  // PPAPI_CPP_NETWORK_PROXY_H_ |