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#include "ppapi/cpp/network_proxy.h" 6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi/c/ppb_network_proxy.h" 8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi/cpp/module_impl.h" 9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace pp { 11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace { 13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochtemplate <> const char* interface_name<PPB_NetworkProxy_1_0>() { 15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return PPB_NETWORKPROXY_INTERFACE_1_0; 16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} // namespace 19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// static 21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbool NetworkProxy::IsAvailable() { 22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return has_interface<PPB_NetworkProxy_1_0>(); 23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// static 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochint32_t NetworkProxy::GetProxyForURL( 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const InstanceHandle& instance, 28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const Var& url, 29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const CompletionCallbackWithOutput<Var>& callback) { 30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch if (!has_interface<PPB_NetworkProxy_1_0>()) 31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return callback.MayForce(PP_ERROR_NOINTERFACE); 32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return get_interface<PPB_NetworkProxy_1_0>()->GetProxyForURL( 34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch instance.pp_instance(), url.pp_var(), 35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch callback.output(), callback.pp_completion_callback()); 36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} // namespace pp 39