Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(482)

Unified Diff: ppapi/proxy/ppb_file_ref_proxy.cc

Issue 7706021: Convert FileRefImpl and URLRequestInfo to shared_impl. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Tests fixed Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);

Powered by Google App Engine
This is Rietveld 408576698