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
5// IPC messages for the file system.
6// Multiply-included message file, hence no include guard.
7
8#include "ipc/ipc_message_macros.h"
9#include "ipc/ipc_platform_file.h"
10#include "url/gurl.h"
11#include "webkit/common/fileapi/directory_entry.h"
12#include "webkit/common/fileapi/file_system_info.h"
13#include "webkit/common/fileapi/file_system_types.h"
14#include "webkit/common/quota/quota_types.h"
15
16#undef IPC_MESSAGE_EXPORT
17#define IPC_MESSAGE_EXPORT CONTENT_EXPORT
18#define IPC_MESSAGE_START FileSystemMsgStart
19
20IPC_STRUCT_TRAITS_BEGIN(fileapi::DirectoryEntry)
21  IPC_STRUCT_TRAITS_MEMBER(name)
22  IPC_STRUCT_TRAITS_MEMBER(is_directory)
23IPC_STRUCT_TRAITS_END()
24
25IPC_STRUCT_TRAITS_BEGIN(fileapi::FileSystemInfo)
26  IPC_STRUCT_TRAITS_MEMBER(name)
27  IPC_STRUCT_TRAITS_MEMBER(root_url)
28  IPC_STRUCT_TRAITS_MEMBER(mount_type)
29IPC_STRUCT_TRAITS_END()
30
31IPC_ENUM_TRAITS(fileapi::FileSystemType)
32IPC_ENUM_TRAITS(quota::QuotaLimitType)
33
34// File system messages sent from the browser to the child process.
35
36// WebFrameClient::openFileSystem response messages.
37IPC_MESSAGE_CONTROL3(FileSystemMsg_DidOpenFileSystem,
38                     int /* request_id */,
39                     std::string /* name */,
40                     GURL /* root_url */)
41
42// WebFileSystem response messages.
43IPC_MESSAGE_CONTROL4(FileSystemMsg_DidResolveURL,
44                     int /* request_id */,
45                     fileapi::FileSystemInfo /* filesystem_info */,
46                     base::FilePath /* file_path */,
47                     bool /* is_directory */)
48IPC_MESSAGE_CONTROL1(FileSystemMsg_DidSucceed,
49                     int /* request_id */)
50IPC_MESSAGE_CONTROL2(FileSystemMsg_DidReadMetadata,
51                     int /* request_id */,
52                     base::File::Info)
53IPC_MESSAGE_CONTROL3(FileSystemMsg_DidCreateSnapshotFile,
54                     int /* request_id */,
55                     base::File::Info,
56                     base::FilePath /* true platform path */)
57IPC_MESSAGE_CONTROL3(FileSystemMsg_DidReadDirectory,
58                     int /* request_id */,
59                     std::vector<fileapi::DirectoryEntry> /* entries */,
60                     bool /* has_more */)
61IPC_MESSAGE_CONTROL3(FileSystemMsg_DidWrite,
62                     int /* request_id */,
63                     int64 /* byte count */,
64                     bool /* complete */)
65IPC_MESSAGE_CONTROL4(FileSystemMsg_DidOpenFile,
66                     int /* request_id */,
67                     IPC::PlatformFileForTransit,
68                     int /* file_open_id */,
69                     quota::QuotaLimitType /* quota_policy */)
70IPC_MESSAGE_CONTROL2(FileSystemMsg_DidFail,
71                     int /* request_id */,
72                     base::File::Error /* error_code */)
73
74// File system messages sent from the child process to the browser.
75
76// WebFrameClient::openFileSystem() message.
77IPC_MESSAGE_CONTROL3(FileSystemHostMsg_OpenFileSystem,
78                     int /* request_id */,
79                     GURL /* origin_url */,
80                     fileapi::FileSystemType /* type */)
81
82// WevFrameClient::resolveURL() message.
83IPC_MESSAGE_CONTROL2(FileSystemHostMsg_ResolveURL,
84                     int /* request_id */,
85                     GURL /* filesystem_url */)
86
87// WebFrameClient::deleteFileSystem() message.
88IPC_MESSAGE_CONTROL3(FileSystemHostMsg_DeleteFileSystem,
89                     int /* request_id */,
90                     GURL /* origin_url */,
91                     fileapi::FileSystemType /* type */)
92
93// WebFileSystem::move() message.
94IPC_MESSAGE_CONTROL3(FileSystemHostMsg_Move,
95                     int /* request_id */,
96                     GURL /* src path */,
97                     GURL /* dest path */)
98
99// WebFileSystem::copy() message.
100IPC_MESSAGE_CONTROL3(FileSystemHostMsg_Copy,
101                     int /* request_id */,
102                     GURL /* src path */,
103                     GURL /* dest path */)
104
105// WebFileSystem::remove() message.
106IPC_MESSAGE_CONTROL3(FileSystemHostMsg_Remove,
107                     int /* request_id */,
108                     GURL /* path */,
109                     bool /* recursive */)
110
111// WebFileSystem::readMetadata() message.
112IPC_MESSAGE_CONTROL2(FileSystemHostMsg_ReadMetadata,
113                     int /* request_id */,
114                     GURL /* path */)
115
116// WebFileSystem::create() message.
117IPC_MESSAGE_CONTROL5(FileSystemHostMsg_Create,
118                     int /* request_id */,
119                     GURL /* path */,
120                     bool /* exclusive */,
121                     bool /* is_directory */,
122                     bool /* recursive */)
123
124// WebFileSystem::exists() messages.
125IPC_MESSAGE_CONTROL3(FileSystemHostMsg_Exists,
126                     int /* request_id */,
127                     GURL /* path */,
128                     bool /* is_directory */)
129
130// WebFileSystem::readDirectory() message.
131IPC_MESSAGE_CONTROL2(FileSystemHostMsg_ReadDirectory,
132                     int /* request_id */,
133                     GURL /* path */)
134
135// WebFileWriter::write() message.
136IPC_MESSAGE_CONTROL4(FileSystemHostMsg_Write,
137                     int /* request id */,
138                     GURL /* file path */,
139                     std::string /* blob uuid */,
140                     int64 /* position */)
141
142// WebFileWriter::truncate() message.
143IPC_MESSAGE_CONTROL3(FileSystemHostMsg_Truncate,
144                     int /* request id */,
145                     GURL /* file path */,
146                     int64 /* length */)
147
148// Pepper's Touch() message.
149IPC_MESSAGE_CONTROL4(FileSystemHostMsg_TouchFile,
150                     int /* request_id */,
151                     GURL /* path */,
152                     base::Time /* last_access_time */,
153                     base::Time /* last_modified_time */)
154
155// WebFileWriter::cancel() message.
156IPC_MESSAGE_CONTROL2(FileSystemHostMsg_CancelWrite,
157                     int /* request id */,
158                     int /* id of request to cancel */)
159
160// WebFileSystem::createSnapshotFileAndReadMetadata() message.
161IPC_MESSAGE_CONTROL2(FileSystemHostMsg_CreateSnapshotFile,
162                     int /* request_id */,
163                     GURL /* file_path */)
164
165// Renderers are expected to send this message after having processed
166// the FileSystemMsg_DidCreateSnapshotFile message. In particular,
167// after having created a BlobDataHandle backed by the snapshot file.
168IPC_MESSAGE_CONTROL1(FileSystemHostMsg_DidReceiveSnapshotFile,
169                     int /* request_id */)
170
171// For Pepper's URL loader.
172IPC_SYNC_MESSAGE_CONTROL1_1(FileSystemHostMsg_SyncGetPlatformPath,
173                            GURL /* file path */,
174                            base::FilePath /* platform_path */)
175