1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// found in the LICENSE file. 4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#ifndef PPAPI_CPP_NETWORK_PROXY_H_ 6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#define PPAPI_CPP_NETWORK_PROXY_H_ 7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include <string> 9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi/cpp/completion_callback.h" 11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi/cpp/instance_handle.h" 12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace pp { 14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch/// This class provides a way to determine the appropriate proxy settings for 16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch/// for a given URL. 17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch/// 18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch/// Permissions: Apps permission <code>socket</code> with subrule 19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch/// <code>resolve-proxy</code> is required for using this API. 20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch/// For more details about network communication permissions, please see: 21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch/// http://developer.chrome.com/apps/app_network.html 22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass NetworkProxy { 23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch public: 24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /// Returns true if the browser supports this API, false otherwise. 25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch static bool IsAvailable(); 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /// Retrieves the proxy that will be used for the given URL. The result will 28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /// be a string in PAC format. For more details about PAC format, please see 29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /// http://en.wikipedia.org/wiki/Proxy_auto-config 30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /// 31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /// @param[in] instance An <code>InstanceHandle</code> identifying one 32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /// instance of a module. 33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /// 34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /// @param[in] url A string <code>Var</code> containing a URL. 35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /// 36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /// @param[in] callback A <code>CompletionCallbackWithOutput</code> to be 37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /// called upon completion. It will be passed a string <code>Var</code> 38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /// containing the appropriate PAC string for <code>url</code>. 39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /// 40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /// @return An int32_t containing an error code from <code>pp_errors.h</code>. 41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch static int32_t GetProxyForURL( 42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const InstanceHandle& instance, 43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const Var& url, 44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const pp::CompletionCallbackWithOutput<Var>& callback); 45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}; 46eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 47eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} // namespace pp 48eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#endif // PPAPI_CPP_NETWORK_PROXY_H_ 50