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