| Index: ppapi/proxy/ppb_file_ref_proxy.cc
|
| diff --git a/ppapi/proxy/ppb_file_ref_proxy.cc b/ppapi/proxy/ppb_file_ref_proxy.cc
|
| index 9ad0635b331d19701f578b0f1baf8ee8e367b405..0cf26bdbe318aa3b86246b35799b352def2eac79 100644
|
| --- a/ppapi/proxy/ppb_file_ref_proxy.cc
|
| +++ b/ppapi/proxy/ppb_file_ref_proxy.cc
|
| @@ -12,7 +12,7 @@
|
| #include "ppapi/proxy/plugin_dispatcher.h"
|
| #include "ppapi/proxy/ppapi_messages.h"
|
| #include "ppapi/proxy/serialized_var.h"
|
| -#include "ppapi/thunk/ppb_file_ref_api.h"
|
| +#include "ppapi/shared_impl/file_ref_impl.h"
|
| #include "ppapi/thunk/resource_creation_api.h"
|
| #include "ppapi/thunk/thunk.h"
|
|
|
| @@ -33,18 +33,12 @@ InterfaceProxy* CreateFileRefProxy(Dispatcher* dispatcher,
|
|
|
| } // namespace
|
|
|
| -class FileRef : public Resource, public PPB_FileRef_API {
|
| +class FileRef : public FileRefImpl {
|
| public:
|
| - explicit FileRef(const PPBFileRef_CreateInfo& info);
|
| + explicit FileRef(const PPB_FileRef_CreateInfo& info);
|
| virtual ~FileRef();
|
|
|
| - // Resource overrides.
|
| - virtual PPB_FileRef_API* AsPPB_FileRef_API() OVERRIDE;
|
| -
|
| - // PPB_FileRef_API implementation.
|
| - virtual PP_FileSystemType GetFileSystemType() const OVERRIDE;
|
| - virtual PP_Var GetName() const OVERRIDE;
|
| - virtual PP_Var GetPath() const OVERRIDE;
|
| + // PPB_FileRef_API implementation (not provided by FileRefImpl).
|
| virtual PP_Resource GetParent() OVERRIDE;
|
| virtual int32_t MakeDirectory(PP_Bool make_ancestors,
|
| PP_CompletionCallback callback) OVERRIDE;
|
| @@ -60,50 +54,18 @@ class FileRef : public Resource, public PPB_FileRef_API {
|
| return PluginDispatcher::GetForResource(this);
|
| }
|
|
|
| - PP_FileSystemType file_system_type_;
|
| - PP_Var path_;
|
| - PP_Var name_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(FileRef);
|
| + DISALLOW_IMPLICIT_CONSTRUCTORS(FileRef);
|
| };
|
|
|
| -FileRef::FileRef(const PPBFileRef_CreateInfo& info)
|
| - : Resource(info.resource) {
|
| - Dispatcher* dispatcher = PluginDispatcher::GetForResource(this);
|
| -
|
| - file_system_type_ = static_cast<PP_FileSystemType>(info.file_system_type);
|
| -
|
| - name_ = ReceiveSerializedVarReturnValue(info.name).Return(dispatcher);
|
| - path_ = ReceiveSerializedVarReturnValue(info.path).Return(dispatcher);
|
| +FileRef::FileRef(const PPB_FileRef_CreateInfo& info)
|
| + : FileRefImpl(FileRefImpl::InitAsProxy(), info) {
|
| }
|
|
|
| FileRef::~FileRef() {
|
| - PluginVarTracker& var_tracker =
|
| - PluginResourceTracker::GetInstance()->var_tracker();
|
| - var_tracker.ReleaseVar(path_);
|
| - var_tracker.ReleaseVar(name_);
|
| -}
|
| -
|
| -PPB_FileRef_API* FileRef::AsPPB_FileRef_API() {
|
| - return this;
|
| -}
|
| -
|
| -PP_FileSystemType FileRef::GetFileSystemType() const {
|
| - return file_system_type_;
|
| -}
|
| -
|
| -PP_Var FileRef::GetName() const {
|
| - PluginResourceTracker::GetInstance()->var_tracker().AddRefVar(name_);
|
| - return name_;
|
| -}
|
| -
|
| -PP_Var FileRef::GetPath() const {
|
| - PluginResourceTracker::GetInstance()->var_tracker().AddRefVar(path_);
|
| - return path_;
|
| }
|
|
|
| PP_Resource FileRef::GetParent() {
|
| - PPBFileRef_CreateInfo create_info;
|
| + PPB_FileRef_CreateInfo create_info;
|
| GetDispatcher()->Send(new PpapiHostMsg_PPBFileRef_GetParent(
|
| INTERFACE_ID_PPB_FILE_REF, host_resource(), &create_info));
|
| return PPB_FileRef_Proxy::DeserializeFileRef(create_info);
|
| @@ -176,7 +138,7 @@ PP_Resource PPB_FileRef_Proxy::CreateProxyResource(PP_Resource file_system,
|
| if (!file_system_object)
|
| return 0;
|
|
|
| - PPBFileRef_CreateInfo create_info;
|
| + PPB_FileRef_CreateInfo create_info;
|
| PluginDispatcher::GetForResource(file_system_object)->Send(
|
| new PpapiHostMsg_PPBFileRef_Create(
|
| INTERFACE_ID_PPB_FILE_REF, file_system_object->host_resource(),
|
| @@ -200,35 +162,15 @@ bool PPB_FileRef_Proxy::OnMessageReceived(const IPC::Message& msg) {
|
| }
|
|
|
| void PPB_FileRef_Proxy::SerializeFileRef(PP_Resource file_ref,
|
| - PPBFileRef_CreateInfo* result) {
|
| + PPB_FileRef_CreateInfo* result) {
|
| EnterResourceNoLock<PPB_FileRef_API> enter(file_ref, false);
|
| - if (enter.failed()) {
|
| - NOTREACHED();
|
| - return;
|
| - }
|
| -
|
| - // We need the instance out of the resource for serializing back to the
|
| - // plugin. This code can only run in the host.
|
| - if (dispatcher()->IsPlugin()) {
|
| - NOTREACHED();
|
| - return;
|
| - }
|
| - HostDispatcher* host_dispatcher = static_cast<HostDispatcher*>(dispatcher());
|
| - PP_Instance instance =
|
| - host_dispatcher->ppb_proxy()->GetInstanceForResource(file_ref);
|
| -
|
| - result->resource.SetHostResource(instance, file_ref);
|
| - result->file_system_type =
|
| - static_cast<int>(enter.object()->GetFileSystemType());
|
| - result->path = SerializedVarReturnValue::Convert(dispatcher(),
|
| - enter.object()->GetPath());
|
| - result->name = SerializedVarReturnValue::Convert(dispatcher(),
|
| - enter.object()->GetName());
|
| + if (enter.succeeded())
|
| + *result = enter.object()->GetCreateInfo();
|
| }
|
|
|
| // static
|
| PP_Resource PPB_FileRef_Proxy::DeserializeFileRef(
|
| - const PPBFileRef_CreateInfo& serialized) {
|
| + const PPB_FileRef_CreateInfo& serialized) {
|
| if (serialized.resource.is_null())
|
| return 0; // Resource invalid.
|
| return (new FileRef(serialized))->GetReference();
|
| @@ -236,7 +178,7 @@ PP_Resource PPB_FileRef_Proxy::DeserializeFileRef(
|
|
|
| void PPB_FileRef_Proxy::OnMsgCreate(const HostResource& file_system,
|
| const std::string& path,
|
| - PPBFileRef_CreateInfo* result) {
|
| + PPB_FileRef_CreateInfo* result) {
|
| EnterFunctionNoLock<ResourceCreationAPI> enter(file_system.instance(), true);
|
| if (enter.failed())
|
| return;
|
| @@ -248,7 +190,7 @@ void PPB_FileRef_Proxy::OnMsgCreate(const HostResource& file_system,
|
| }
|
|
|
| void PPB_FileRef_Proxy::OnMsgGetParent(const HostResource& host_resource,
|
| - PPBFileRef_CreateInfo* result) {
|
| + PPB_FileRef_CreateInfo* result) {
|
| EnterHostFromHostResource<PPB_FileRef_API> enter(host_resource);
|
| if (enter.succeeded())
|
| SerializeFileRef(enter.object()->GetParent(), result);
|
|
|