1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright (c) 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_PROXY_NETWORK_PROXY_RESOURCE_H_
6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#define PPAPI_PROXY_NETWORK_PROXY_RESOURCE_H_
7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi/proxy/plugin_resource.h"
9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi/proxy/ppapi_proxy_export.h"
10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi/thunk/ppb_network_proxy_api.h"
11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace ppapi {
13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace proxy {
14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// The proxy-side resource for PPB_NetworkProxy.
16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass PPAPI_PROXY_EXPORT NetworkProxyResource
17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      : public PluginResource,
18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch        public thunk::PPB_NetworkProxy_API {
19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch public:
20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  NetworkProxyResource(Connection connection, PP_Instance instance);
21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual ~NetworkProxyResource();
22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch private:
24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // Resource implementation.
25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual thunk::PPB_NetworkProxy_API* AsPPB_NetworkProxy_API() OVERRIDE;
26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // PPB_NetworkProxy_API implementation.
28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual int32_t GetProxyForURL(
29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      PP_Instance instance,
30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      PP_Var url,
31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      PP_Var* proxy_string,
32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      scoped_refptr<TrackedCallback> callback) OVERRIDE;
33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  void OnPluginMsgGetProxyForURLReply(PP_Var* proxy_string_out_param,
35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                                      scoped_refptr<TrackedCallback> callback,
36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                                      const ResourceMessageReplyParams& params,
37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                                      const std::string& proxy_string);
38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  DISALLOW_COPY_AND_ASSIGN(NetworkProxyResource);
40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch};
41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}  // namespace proxy
43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}  // namespace ppapi
44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#endif  // PPAPI_PROXY_NETWORK_PROXY_RESOURCE_H_
46