Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef PPAPI_SHARED_IMPL_VAR_H_ | 5 #ifndef PPAPI_SHARED_IMPL_VAR_H_ |
| 6 #define PPAPI_SHARED_IMPL_VAR_H_ | 6 #define PPAPI_SHARED_IMPL_VAR_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
| 11 #include "base/memory/ref_counted.h" | 11 #include "base/memory/ref_counted.h" |
| 12 #include "base/memory/shared_memory.h" | 12 #include "base/memory/shared_memory.h" |
| 13 #include "base/platform_file.h" | 13 #include "base/platform_file.h" |
| 14 #include "ppapi/c/pp_file_info.h" | |
| 15 #include "ppapi/c/pp_resource.h" | |
| 14 #include "ppapi/c/pp_var.h" | 16 #include "ppapi/c/pp_var.h" |
| 15 #include "ppapi/shared_impl/host_resource.h" | 17 #include "ppapi/shared_impl/host_resource.h" |
| 16 #include "ppapi/shared_impl/ppapi_shared_export.h" | 18 #include "ppapi/shared_impl/ppapi_shared_export.h" |
| 17 | 19 |
| 18 namespace ppapi { | 20 namespace ppapi { |
| 19 | 21 |
| 20 class ArrayBufferVar; | 22 class ArrayBufferVar; |
| 21 class ArrayVar; | 23 class ArrayVar; |
| 22 class DictionaryVar; | 24 class DictionaryVar; |
| 23 class NPObjectVar; | 25 class NPObjectVar; |
| 24 class ProxyObjectVar; | 26 class ProxyObjectVar; |
| 27 class ResourceVar; | |
| 25 class StringVar; | 28 class StringVar; |
| 26 class VarTracker; | 29 class VarTracker; |
| 27 | 30 |
| 28 // Var ------------------------------------------------------------------------- | 31 // Var ------------------------------------------------------------------------- |
| 29 | 32 |
| 30 // Represents a non-POD var. | 33 // Represents a non-POD var. |
| 31 class PPAPI_SHARED_EXPORT Var : public base::RefCounted<Var> { | 34 class PPAPI_SHARED_EXPORT Var : public base::RefCounted<Var> { |
| 32 public: | 35 public: |
| 33 virtual ~Var(); | 36 virtual ~Var(); |
| 34 | 37 |
| 35 // Returns a string representing the given var for logging purposes. | 38 // Returns a string representing the given var for logging purposes. |
| 36 static std::string PPVarToLogString(PP_Var var); | 39 static std::string PPVarToLogString(PP_Var var); |
| 37 | 40 |
| 38 virtual StringVar* AsStringVar(); | 41 virtual StringVar* AsStringVar(); |
| 39 virtual ArrayBufferVar* AsArrayBufferVar(); | 42 virtual ArrayBufferVar* AsArrayBufferVar(); |
| 40 virtual NPObjectVar* AsNPObjectVar(); | 43 virtual NPObjectVar* AsNPObjectVar(); |
| 41 virtual ProxyObjectVar* AsProxyObjectVar(); | 44 virtual ProxyObjectVar* AsProxyObjectVar(); |
| 42 virtual ArrayVar* AsArrayVar(); | 45 virtual ArrayVar* AsArrayVar(); |
| 43 virtual DictionaryVar* AsDictionaryVar(); | 46 virtual DictionaryVar* AsDictionaryVar(); |
| 47 virtual ResourceVar* AsResourceVar(); | |
| 44 | 48 |
| 45 // Creates a PP_Var corresponding to this object. The return value will have | 49 // Creates a PP_Var corresponding to this object. The return value will have |
| 46 // one reference addrefed on behalf of the caller. | 50 // one reference addrefed on behalf of the caller. |
| 47 PP_Var GetPPVar(); | 51 PP_Var GetPPVar(); |
| 48 | 52 |
| 49 // Returns the type of this var. | 53 // Returns the type of this var. |
| 50 virtual PP_VarType GetType() const = 0; | 54 virtual PP_VarType GetType() const = 0; |
| 51 | 55 |
| 52 // Returns the ID corresponing to the string or object if it exists already, | 56 // Returns the ID corresponing to the string or object if it exists already, |
| 53 // or 0 if an ID hasn't been generated for this object (the plugin is holding | 57 // or 0 if an ID hasn't been generated for this object (the plugin is holding |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 180 virtual PP_VarType GetType() const OVERRIDE; | 184 virtual PP_VarType GetType() const OVERRIDE; |
| 181 | 185 |
| 182 // Helper function that converts a PP_Var to an ArrayBufferVar. This will | 186 // Helper function that converts a PP_Var to an ArrayBufferVar. This will |
| 183 // return NULL if the PP_Var is not of ArrayBuffer type. | 187 // return NULL if the PP_Var is not of ArrayBuffer type. |
| 184 static ArrayBufferVar* FromPPVar(PP_Var var); | 188 static ArrayBufferVar* FromPPVar(PP_Var var); |
| 185 | 189 |
| 186 private: | 190 private: |
| 187 DISALLOW_COPY_AND_ASSIGN(ArrayBufferVar); | 191 DISALLOW_COPY_AND_ASSIGN(ArrayBufferVar); |
| 188 }; | 192 }; |
| 189 | 193 |
| 194 // ResourceVar ----------------------------------------------------------------- | |
|
yzshen1
2013/08/26 17:20:46
Please consider a separate file. (Just as array an
Matt Giuca
2013/08/28 07:12:14
Done.
| |
| 195 | |
| 196 // The information about a resource var that is serialized. | |
| 197 struct PPAPI_SHARED_EXPORT ResourceInfo { | |
|
Matt Giuca
2013/08/23 08:41:16
The reason I put this in a separate struct (instea
Matt Giuca
2013/08/28 07:12:14
Gone.
| |
| 198 ResourceInfo(); // Makes a null resource info. | |
| 199 | |
| 200 // Pending host resource ID in the renderer. 0 if there is already a real | |
|
yzshen1
2013/08/26 17:20:46
nit, but better to be consistent: this is a "resou
Matt Giuca
2013/08/28 07:12:14
Gone.
| |
| 201 // resource. | |
| 202 int pending_renderer_id; | |
|
yzshen1
2013/08/26 17:20:46
how about pending_*host*_id or pending_renderer_ho
Matt Giuca
2013/08/28 07:12:14
Gone.
| |
| 203 | |
| 204 // TODO(mgiuca): Also add a pending_browser_id when we create a separate | |
| 205 // pending host resource in the browser. | |
| 206 | |
| 207 // Real resource ID in the plugin. 0 if one has not yet been created | |
| 208 // (indicating that there is a pending host resource). | |
|
yzshen1
2013/08/26 17:20:46
nit, but better to be consistent: pending "resourc
Matt Giuca
2013/08/28 07:12:14
Gone.
| |
| 209 PP_Resource resource_id; | |
| 210 | |
| 211 // Type of the file system (for file system resources only). | |
| 212 PP_FileSystemType file_system_type; | |
|
raymes
2013/08/26 00:06:11
As discussed could this be an IPC::Message which i
yzshen1
2013/08/26 17:20:46
+1 to use some more generic format instead of havi
Matt Giuca
2013/08/28 07:12:14
Done.
| |
| 213 }; | |
| 214 | |
| 215 // Represents a resource Var. | |
| 216 class PPAPI_SHARED_EXPORT ResourceVar : public Var { | |
|
Matt Giuca
2013/08/23 08:41:16
Now I am a bit uncertain about exactly what method
raymes
2013/08/26 00:06:11
I would just have a set/get ResourceInfo. A setter
Matt Giuca
2013/08/28 07:12:14
Done.
| |
| 217 public: | |
| 218 ResourceVar(); // Makes a null resource var. | |
| 219 virtual ~ResourceVar(); | |
| 220 | |
| 221 // Sets the pending host resource ID. | |
| 222 void SetPendingId(int pending_renderer_id); | |
|
yzshen1
2013/08/26 17:20:46
The setters and getters are using different naming
Matt Giuca
2013/08/28 07:12:14
Gone.
| |
| 223 | |
| 224 // Sets the resource ID. | |
| 225 void SetResourceId(int resource_id); | |
| 226 | |
| 227 // Sets the file system type. | |
| 228 void SetFileSystemType(PP_FileSystemType file_system_type); | |
| 229 | |
| 230 // Gets the resource ID associated with this var. | |
|
yzshen1
2013/08/26 17:20:46
"pending host ID", please
Matt Giuca
2013/08/28 07:12:14
Gone.
| |
| 231 // This is 0 if a resource is still pending. | |
| 232 int pending_renderer_id() const { return data_.pending_renderer_id; } | |
| 233 | |
| 234 // Gets the resource ID associated with this var. | |
| 235 // This is 0 if a resource is still pending. | |
| 236 PP_Resource resource_id() const { return data_.resource_id; } | |
| 237 | |
| 238 // Gets the file system type. | |
| 239 // Only valid for file system resources. | |
| 240 PP_FileSystemType file_system_type() const { return data_.file_system_type; } | |
| 241 | |
| 242 // Get the data associated with this resource. | |
| 243 const ResourceInfo& data() const { return data_; } | |
| 244 | |
| 245 // Get the data associated with this resource. | |
| 246 ResourceInfo* mutable_data() { return &data_; } | |
|
yzshen1
2013/08/26 17:20:46
Maybe the following two signatures look more consi
Matt Giuca
2013/08/28 07:12:14
Gone.
But for reference, I'm following the patter
yzshen1
2013/08/28 17:31:58
Okay.
| |
| 247 | |
| 248 // Var override. | |
| 249 virtual ResourceVar* AsResourceVar() OVERRIDE; | |
| 250 virtual PP_VarType GetType() const OVERRIDE; | |
| 251 | |
| 252 // Helper function that converts a PP_Var to a ResourceVar. This will | |
| 253 // return NULL if the PP_Var is not of Resource type. | |
| 254 static ResourceVar* FromPPVar(PP_Var var); | |
| 255 | |
| 256 private: | |
| 257 ResourceInfo data_; | |
| 258 | |
| 259 DISALLOW_COPY_AND_ASSIGN(ResourceVar); | |
| 260 }; | |
| 261 | |
| 190 } // namespace ppapi | 262 } // namespace ppapi |
| 191 | 263 |
| 192 #endif // PPAPI_SHARED_IMPL_VAR_H_ | 264 #endif // PPAPI_SHARED_IMPL_VAR_H_ |
| OLD | NEW |