1d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)// found in the LICENSE file.
4d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
5d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#ifndef CONTENT_RENDERER_PEPPER_PEPPER_FILE_REF_RENDERER_HOST_H_
6d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#define CONTENT_RENDERER_PEPPER_PEPPER_FILE_REF_RENDERER_HOST_H_
7d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
8d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include <string>
9d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
10d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "base/basictypes.h"
11d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "base/files/file_path.h"
12d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "base/memory/weak_ptr.h"
13d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "content/public/renderer/renderer_ppapi_host.h"
14d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "content/renderer/pepper/pepper_file_system_host.h"
15d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "ipc/ipc_message.h"
16d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "ppapi/c/pp_file_info.h"
17d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "ppapi/c/pp_instance.h"
18d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "ppapi/c/pp_resource.h"
19d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "ppapi/host/host_message_context.h"
20d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "ppapi/host/resource_host.h"
21d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "url/gurl.h"
22d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
23d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)namespace content {
24d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
25a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass PepperFileRefRendererHost : public ppapi::host::ResourceHost {
26d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) public:
27d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  PepperFileRefRendererHost(RendererPpapiHost* host,
28d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)                            PP_Instance instance,
29d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)                            PP_Resource resource,
30d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)                            PP_Resource file_system,
31d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)                            const std::string& internal_path);
32d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
33d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  PepperFileRefRendererHost(RendererPpapiHost* host,
34d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)                            PP_Instance instance,
35d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)                            PP_Resource resource,
36d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)                            const base::FilePath& external_path);
37d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
38d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  virtual ~PepperFileRefRendererHost();
39d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
40d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  PP_FileSystemType GetFileSystemType() const;
41d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  GURL GetFileSystemURL() const;
42d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  base::FilePath GetExternalFilePath() const;
43d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
44d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  // ppapi::host::ResourceHost override.
45d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  virtual int32_t OnResourceMessageReceived(
46d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)      const IPC::Message& msg,
47d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)      ppapi::host::HostMessageContext* context) OVERRIDE;
48d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  virtual bool IsFileRefHost() OVERRIDE;
49d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
50d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) private:
51d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  PP_FileSystemType file_system_type_;
52d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  std::string internal_path_;
53d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  base::FilePath external_path_;
54d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  base::WeakPtr<PepperFileSystemHost> fs_host_;
55d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
56d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(PepperFileRefRendererHost);
57d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)};
58d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
59d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)}  // namespace content
60d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
61d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#endif  // CONTENT_RENDERER_PEPPER_PEPPER_FILE_REF_RENDERER_HOST_H_
62