Revert 168224 - Update V8 to version 3.15.4.
[chromium-blink-merge.git] / ppapi / thunk / ppb_file_io_thunk.cc
blob467958ff5c2c78ecb5ea9039588032246f1018c2
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.
5 #include "ppapi/c/pp_completion_callback.h"
6 #include "ppapi/c/pp_errors.h"
7 #include "ppapi/shared_impl/tracked_callback.h"
8 #include "ppapi/thunk/enter.h"
9 #include "ppapi/thunk/thunk.h"
10 #include "ppapi/thunk/ppb_file_io_api.h"
11 #include "ppapi/thunk/resource_creation_api.h"
13 namespace ppapi {
14 namespace thunk {
16 namespace {
18 typedef EnterResource<PPB_FileIO_API> EnterFileIO;
20 PP_Resource Create(PP_Instance instance) {
21 EnterResourceCreation enter(instance);
22 if (enter.failed())
23 return 0;
24 return enter.functions()->CreateFileIO(instance);
27 PP_Bool IsFileIO(PP_Resource resource) {
28 EnterFileIO enter(resource, false);
29 return PP_FromBool(enter.succeeded());
32 int32_t Open(PP_Resource file_io,
33 PP_Resource file_ref,
34 int32_t open_flags,
35 PP_CompletionCallback callback) {
36 EnterFileIO enter(file_io, callback, true);
37 if (enter.failed())
38 return enter.retval();
39 return enter.SetResult(enter.object()->Open(file_ref, open_flags,
40 enter.callback()));
43 int32_t Query(PP_Resource file_io,
44 PP_FileInfo* info,
45 PP_CompletionCallback callback) {
46 EnterFileIO enter(file_io, callback, true);
47 if (enter.failed())
48 return enter.retval();
49 return enter.SetResult(enter.object()->Query(info, enter.callback()));
52 int32_t Touch(PP_Resource file_io,
53 PP_Time last_access_time,
54 PP_Time last_modified_time,
55 PP_CompletionCallback callback) {
56 EnterFileIO enter(file_io, callback, true);
57 if (enter.failed())
58 return enter.retval();
59 return enter.SetResult(enter.object()->Touch(
60 last_access_time, last_modified_time, enter.callback()));
63 int32_t Read(PP_Resource file_io,
64 int64_t offset,
65 char* buffer,
66 int32_t bytes_to_read,
67 PP_CompletionCallback callback) {
68 EnterFileIO enter(file_io, callback, true);
69 if (enter.failed())
70 return enter.retval();
71 return enter.SetResult(enter.object()->Read(offset, buffer, bytes_to_read,
72 enter.callback()));
75 int32_t ReadToArray(PP_Resource file_io,
76 int64_t offset,
77 int32_t max_read_length,
78 PP_ArrayOutput* buffer,
79 PP_CompletionCallback callback) {
80 EnterFileIO enter(file_io, callback, true);
81 if (enter.failed())
82 return enter.retval();
83 return enter.SetResult(enter.object()->ReadToArray(
84 offset, max_read_length, buffer, enter.callback()));
87 int32_t Write(PP_Resource file_io,
88 int64_t offset,
89 const char* buffer,
90 int32_t bytes_to_write,
91 PP_CompletionCallback callback) {
92 EnterFileIO enter(file_io, callback, true);
93 if (enter.failed())
94 return enter.retval();
95 return enter.SetResult(enter.object()->Write(offset, buffer, bytes_to_write,
96 enter.callback()));
99 int32_t SetLength(PP_Resource file_io,
100 int64_t length,
101 PP_CompletionCallback callback) {
102 EnterFileIO enter(file_io, callback, true);
103 if (enter.failed())
104 return enter.retval();
105 return enter.SetResult(enter.object()->SetLength(length, enter.callback()));
108 int32_t Flush(PP_Resource file_io,
109 PP_CompletionCallback callback) {
110 EnterFileIO enter(file_io, callback, true);
111 if (enter.failed())
112 return enter.retval();
113 return enter.SetResult(enter.object()->Flush(enter.callback()));
116 void Close(PP_Resource file_io) {
117 EnterFileIO enter(file_io, true);
118 if (enter.succeeded())
119 enter.object()->Close();
122 const PPB_FileIO_1_1 g_ppb_file_io_thunk = {
123 &Create,
124 &IsFileIO,
125 &Open,
126 &Query,
127 &Touch,
128 &Read,
129 &Write,
130 &SetLength,
131 &Flush,
132 &Close,
133 &ReadToArray
136 const PPB_FileIO_1_0 g_ppb_file_io_thunk_1_0 = {
137 &Create,
138 &IsFileIO,
139 &Open,
140 &Query,
141 &Touch,
142 &Read,
143 &Write,
144 &SetLength,
145 &Flush,
146 &Close
149 } // namespace
151 const PPB_FileIO_1_1* GetPPB_FileIO_1_1_Thunk() {
152 return &g_ppb_file_io_thunk;
155 const PPB_FileIO_1_0* GetPPB_FileIO_1_0_Thunk() {
156 return &g_ppb_file_io_thunk_1_0;
159 } // namespace thunk
160 } // namespace ppapi