Pepper_47_C++_interfaces
file_system.cc
Go to the documentation of this file.
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
3 // found in the LICENSE file.
4 
6 
7 #include "ppapi/c/pp_errors.h"
8 #include "ppapi/c/ppb_file_system.h"
10 #include "ppapi/cpp/file_ref.h"
12 #include "ppapi/cpp/logging.h"
13 #include "ppapi/cpp/module.h"
14 #include "ppapi/cpp/module_impl.h"
15 
16 namespace pp {
17 
18 namespace {
19 
20 template <> const char* interface_name<PPB_FileSystem_1_0>() {
21  return PPB_FILESYSTEM_INTERFACE_1_0;
22 }
23 
24 } // namespace
25 
27 }
28 
29 FileSystem::FileSystem(const FileSystem& other) : Resource(other) {
30 }
31 
32 FileSystem::FileSystem(const Resource& resource) : Resource(resource) {
33  if (!IsFileSystem(resource)) {
34  PP_NOTREACHED();
35 
36  // On release builds, set this to null.
37  Clear();
38  }
39 }
40 
42  : Resource(PASS_REF, resource) {
43 }
44 
46  PP_FileSystemType type) {
47  if (!has_interface<PPB_FileSystem_1_0>())
48  return;
49  PassRefFromConstructor(get_interface<PPB_FileSystem_1_0>()->Create(
50  instance.pp_instance(), type));
51 }
52 
53 int32_t FileSystem::Open(int64_t expected_size,
54  const CompletionCallback& cc) {
55  if (!has_interface<PPB_FileSystem_1_0>())
56  return cc.MayForce(PP_ERROR_NOINTERFACE);
57  return get_interface<PPB_FileSystem_1_0>()->Open(
58  pp_resource(), expected_size, cc.pp_completion_callback());
59 }
60 
61 // static
62 bool FileSystem::IsFileSystem(const Resource& resource) {
63  if (!has_interface<PPB_FileSystem_1_0>())
64  return false;
65  return get_interface<PPB_FileSystem_1_0>()->IsFileSystem(
66  resource.pp_resource()) == PP_TRUE;
67 }
68 
69 } // namespace pp
void PassRefFromConstructor(PP_Resource resource)
Definition: resource.cc:50
#define PP_NOTREACHED()
Definition: logging.h:32
int32_t MayForce(int32_t result) const
const PP_CompletionCallback & pp_completion_callback() const
PassRef
Definition: pass_ref.h:17
PP_Resource pp_resource() const
Definition: resource.h:47
PP_Instance pp_instance() const
A reference counted module resource.
Definition: resource.h:20
static bool IsFileSystem(const Resource &resource)
Definition: file_system.cc:62
int32_t Open(int64_t expected_size, const CompletionCallback &cc)
Definition: file_system.cc:53
void Clear()
Sets this resource to null. This releases ownership of the resource.
Definition: resource.cc:55