1e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown// Use of this source code is governed by a BSD-style license that can be 3e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown// found in the LICENSE file. 4e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown 5e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown#ifndef CONTENT_BROWSER_RENDERER_HOST_PEPPER_PEPPER_FLASH_FILE_MESSAGE_FILTER_H_ 6e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown#define CONTENT_BROWSER_RENDERER_HOST_PEPPER_PEPPER_FLASH_FILE_MESSAGE_FILTER_H_ 7e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown 8e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown#include "base/callback_forward.h" 9e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown#include "base/compiler_specific.h" 10e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown#include "base/files/file_path.h" 11e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown#include "base/memory/ref_counted.h" 12e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown#include "base/process/process.h" 13e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown#include "ppapi/c/pp_instance.h" 14e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown#include "ppapi/host/resource_host.h" 15e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown#include "ppapi/host/resource_message_filter.h" 16e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown 17e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brownnamespace content { 18e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brownclass BrowserPpapiHost; 19e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown} 20e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown 21e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brownnamespace ppapi { 22e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brownclass PepperFilePath; 23e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown} 24e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown 25e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brownnamespace ppapi { 26e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brownnamespace host { 27e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brownstruct HostMessageContext; 28e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown} 29e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown} 30e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown 31e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brownnamespace content { 32e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown 33e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brownclass BrowserPpapiHost; 34e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown 35e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown// All file messages are handled by BrowserThread's blocking pool. 36e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brownclass PepperFlashFileMessageFilter : public ppapi::host::ResourceMessageFilter { 37e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown public: 38e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown PepperFlashFileMessageFilter(PP_Instance instance, BrowserPpapiHost* host); 39e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown 40e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown static base::FilePath GetDataDirName(const base::FilePath& profile_path); 41e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown 42e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown private: 43e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown typedef base::Callback<bool(int, const base::FilePath&)> 44e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown CheckPermissionsCallback; 45e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown 46e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown virtual ~PepperFlashFileMessageFilter(); 47e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown 48e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown // ppapi::host::ResourceMessageFilter overrides. 49e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown virtual scoped_refptr<base::TaskRunner> OverrideTaskRunnerForMessage( 50e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown const IPC::Message& msg) OVERRIDE; 51e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown virtual int32_t OnResourceMessageReceived( 52e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown const IPC::Message& msg, 53e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown ppapi::host::HostMessageContext* context) OVERRIDE; 54e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown 55e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown int32_t OnOpenFile(ppapi::host::HostMessageContext* context, 56e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown const ppapi::PepperFilePath& path, 57e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown int pp_open_flags); 58e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown int32_t OnRenameFile(ppapi::host::HostMessageContext* context, 59e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown const ppapi::PepperFilePath& from_path, 60559d0645ac8f80491671fa5d3c63e8f296f2909eJeff Brown const ppapi::PepperFilePath& to_path); 61559d0645ac8f80491671fa5d3c63e8f296f2909eJeff Brown int32_t OnDeleteFileOrDir(ppapi::host::HostMessageContext* context, 62559d0645ac8f80491671fa5d3c63e8f296f2909eJeff Brown const ppapi::PepperFilePath& path, 63559d0645ac8f80491671fa5d3c63e8f296f2909eJeff Brown bool recursive); 64559d0645ac8f80491671fa5d3c63e8f296f2909eJeff Brown int32_t OnCreateDir(ppapi::host::HostMessageContext* context, 65e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown const ppapi::PepperFilePath& path); 66e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown int32_t OnQueryFile(ppapi::host::HostMessageContext* context, 67e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown const ppapi::PepperFilePath& path); 68e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown int32_t OnGetDirContents(ppapi::host::HostMessageContext* context, 69e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown const ppapi::PepperFilePath& path); 70e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown int32_t OnCreateTemporaryFile(ppapi::host::HostMessageContext* context); 71e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown 72e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown base::FilePath ValidateAndConvertPepperFilePath( 73e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown const ppapi::PepperFilePath& pepper_path, 74e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown const CheckPermissionsCallback& check_permissions_callback) const; 75e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown 76e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown base::FilePath plugin_data_directory_; 77e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown int render_process_id_; 78e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown base::ProcessHandle plugin_process_handle_; 79e5360fbf3efe85427f7e7f59afe7bbeddb4949acJeff Brown 8096496adb611ced49ed1c2c778c616d1f8a5d0e6bJeff Brown DISALLOW_COPY_AND_ASSIGN(PepperFlashFileMessageFilter); 8196496adb611ced49ed1c2c778c616d1f8a5d0e6bJeff Brown}; 8296496adb611ced49ed1c2c778c616d1f8a5d0e6bJeff Brown 8396496adb611ced49ed1c2c778c616d1f8a5d0e6bJeff Brown} // namespace content 8496496adb611ced49ed1c2c778c616d1f8a5d0e6bJeff Brown 8596496adb611ced49ed1c2c778c616d1f8a5d0e6bJeff Brown#endif // CONTENT_BROWSER_RENDERER_HOST_PEPPER_PEPPER_FLASH_FILE_MESSAGE_FILTER_H_ 8696496adb611ced49ed1c2c778c616d1f8a5d0e6bJeff Brown