OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. | 2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 27 matching lines...) Expand all Loading... |
38 class ExceptionState; | 38 class ExceptionState; |
39 class ExecutionContext; | 39 class ExecutionContext; |
40 class FilePropertyBag; | 40 class FilePropertyBag; |
41 class FileMetadata; | 41 class FileMetadata; |
42 class KURL; | 42 class KURL; |
43 | 43 |
44 class CORE_EXPORT File final : public Blob { | 44 class CORE_EXPORT File final : public Blob { |
45 DEFINE_WRAPPERTYPEINFO(); | 45 DEFINE_WRAPPERTYPEINFO(); |
46 | 46 |
47 public: | 47 public: |
48 // AllContentTypes should only be used when the full path/name are trusted; ot
herwise, it could | 48 // AllContentTypes should only be used when the full path/name are trusted; |
49 // allow arbitrary pages to determine what applications an user has installed. | 49 // otherwise, it could allow arbitrary pages to determine what applications an |
| 50 // user has installed. |
50 enum ContentTypeLookupPolicy { | 51 enum ContentTypeLookupPolicy { |
51 WellKnownContentTypes, | 52 WellKnownContentTypes, |
52 AllContentTypes, | 53 AllContentTypes, |
53 }; | 54 }; |
54 | 55 |
55 // The user should not be able to browse to some files, such as the ones | 56 // The user should not be able to browse to some files, such as the ones |
56 // generated by the Filesystem API. | 57 // generated by the Filesystem API. |
57 enum UserVisibility { IsUserVisible, IsNotUserVisible }; | 58 enum UserVisibility { IsUserVisible, IsNotUserVisible }; |
58 | 59 |
59 // Constructor in File.idl | 60 // Constructor in File.idl |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 uint64_t size, | 95 uint64_t size, |
95 double lastModified, | 96 double lastModified, |
96 PassRefPtr<BlobDataHandle> blobDataHandle) { | 97 PassRefPtr<BlobDataHandle> blobDataHandle) { |
97 return new File(path, name, String(), IsNotUserVisible, true, size, | 98 return new File(path, name, String(), IsNotUserVisible, true, size, |
98 lastModified, std::move(blobDataHandle)); | 99 lastModified, std::move(blobDataHandle)); |
99 } | 100 } |
100 | 101 |
101 static File* createWithRelativePath(const String& path, | 102 static File* createWithRelativePath(const String& path, |
102 const String& relativePath); | 103 const String& relativePath); |
103 | 104 |
104 // If filesystem files live in the remote filesystem, the port might pass the
valid metadata (whose length field is non-negative) and cache in the File object
. | 105 // If filesystem files live in the remote filesystem, the port might pass the |
| 106 // valid metadata (whose length field is non-negative) and cache in the File |
| 107 // object. |
105 // | 108 // |
106 // Otherwise calling size(), lastModifiedTime() and slice() will synchronously
query the file metadata. | 109 // Otherwise calling size(), lastModifiedTime() and slice() will synchronously |
| 110 // query the file metadata. |
107 static File* createForFileSystemFile(const String& name, | 111 static File* createForFileSystemFile(const String& name, |
108 const FileMetadata& metadata, | 112 const FileMetadata& metadata, |
109 UserVisibility userVisibility) { | 113 UserVisibility userVisibility) { |
110 return new File(name, metadata, userVisibility); | 114 return new File(name, metadata, userVisibility); |
111 } | 115 } |
112 | 116 |
113 static File* createForFileSystemFile(const KURL& url, | 117 static File* createForFileSystemFile(const KURL& url, |
114 const FileMetadata& metadata, | 118 const FileMetadata& metadata, |
115 UserVisibility userVisibility) { | 119 UserVisibility userVisibility) { |
116 return new File(url, metadata, userVisibility); | 120 return new File(url, metadata, userVisibility); |
117 } | 121 } |
118 | 122 |
119 KURL fileSystemURL() const { | 123 KURL fileSystemURL() const { |
120 ASSERT(hasValidFileSystemURL()); | 124 ASSERT(hasValidFileSystemURL()); |
121 return m_fileSystemURL; | 125 return m_fileSystemURL; |
122 } | 126 } |
123 | 127 |
124 // Create a file with a name exposed to the author (via File.name and associat
ed DOM properties) that differs from the one provided in the path. | 128 // Create a file with a name exposed to the author (via File.name and |
| 129 // associated DOM properties) that differs from the one provided in the path. |
125 static File* createForUserProvidedFile(const String& path, | 130 static File* createForUserProvidedFile(const String& path, |
126 const String& displayName) { | 131 const String& displayName) { |
127 if (displayName.isEmpty()) | 132 if (displayName.isEmpty()) |
128 return new File(path, File::AllContentTypes, File::IsUserVisible); | 133 return new File(path, File::AllContentTypes, File::IsUserVisible); |
129 return new File(path, displayName, File::AllContentTypes, | 134 return new File(path, displayName, File::AllContentTypes, |
130 File::IsUserVisible); | 135 File::IsUserVisible); |
131 } | 136 } |
132 | 137 |
133 static File* createForFileSystemFile( | 138 static File* createForFileSystemFile( |
134 const String& path, | 139 const String& path, |
(...skipping 27 matching lines...) Expand all Loading... |
162 // Getter for the lastModified IDL attribute, | 167 // Getter for the lastModified IDL attribute, |
163 // http://dev.w3.org/2006/webapi/FileAPI/#file-attrs | 168 // http://dev.w3.org/2006/webapi/FileAPI/#file-attrs |
164 long long lastModified() const; | 169 long long lastModified() const; |
165 | 170 |
166 // Getter for the lastModifiedDate IDL attribute, | 171 // Getter for the lastModifiedDate IDL attribute, |
167 // http://www.w3.org/TR/FileAPI/#dfn-lastModifiedDate | 172 // http://www.w3.org/TR/FileAPI/#dfn-lastModifiedDate |
168 double lastModifiedDate() const; | 173 double lastModifiedDate() const; |
169 | 174 |
170 UserVisibility getUserVisibility() const { return m_userVisibility; } | 175 UserVisibility getUserVisibility() const { return m_userVisibility; } |
171 | 176 |
172 // Returns the relative path of this file in the context of a directory select
ion. | 177 // Returns the relative path of this file in the context of a directory |
| 178 // selection. |
173 const String& webkitRelativePath() const { return m_relativePath; } | 179 const String& webkitRelativePath() const { return m_relativePath; } |
174 | 180 |
175 // Note that this involves synchronous file operation. Think twice before call
ing this function. | 181 // Note that this involves synchronous file operation. Think twice before |
| 182 // calling this function. |
176 void captureSnapshot(long long& snapshotSize, | 183 void captureSnapshot(long long& snapshotSize, |
177 double& snapshotModificationTimeMS) const; | 184 double& snapshotModificationTimeMS) const; |
178 | 185 |
179 // Returns true if this has a valid snapshot metadata (i.e. m_snapshotSize >=
0). | 186 // Returns true if this has a valid snapshot metadata |
| 187 // (i.e. m_snapshotSize >= 0). |
180 bool hasValidSnapshotMetadata() const { return m_snapshotSize >= 0; } | 188 bool hasValidSnapshotMetadata() const { return m_snapshotSize >= 0; } |
181 | 189 |
182 // Returns true if the sources (file path, file system URL, or blob handler) o
f the file objects are same or not. | 190 // Returns true if the sources (file path, file system URL, or blob handler) |
| 191 // of the file objects are same or not. |
183 bool hasSameSource(const File& other) const; | 192 bool hasSameSource(const File& other) const; |
184 | 193 |
185 private: | 194 private: |
186 File(const String& path, ContentTypeLookupPolicy, UserVisibility); | 195 File(const String& path, ContentTypeLookupPolicy, UserVisibility); |
187 File(const String& path, | 196 File(const String& path, |
188 const String& name, | 197 const String& name, |
189 ContentTypeLookupPolicy, | 198 ContentTypeLookupPolicy, |
190 UserVisibility); | 199 UserVisibility); |
191 File(const String& path, | 200 File(const String& path, |
192 const String& name, | 201 const String& name, |
(...skipping 23 matching lines...) Expand all Loading... |
216 bool hasValidFilePath() const { return hasBackingFile() || m_path.isEmpty(); } | 225 bool hasValidFilePath() const { return hasBackingFile() || m_path.isEmpty(); } |
217 #endif | 226 #endif |
218 | 227 |
219 bool m_hasBackingFile; | 228 bool m_hasBackingFile; |
220 UserVisibility m_userVisibility; | 229 UserVisibility m_userVisibility; |
221 String m_path; | 230 String m_path; |
222 String m_name; | 231 String m_name; |
223 | 232 |
224 KURL m_fileSystemURL; | 233 KURL m_fileSystemURL; |
225 | 234 |
226 // If m_snapshotSize is negative (initialized to -1 by default), the snapshot
metadata is invalid and we retrieve the latest metadata synchronously in size(),
lastModifiedTime() and slice(). | 235 // If m_snapshotSize is negative (initialized to -1 by default), the snapshot |
| 236 // metadata is invalid and we retrieve the latest metadata synchronously in |
| 237 // size(), lastModifiedTime() and slice(). |
227 // Otherwise, the snapshot metadata are used directly in those methods. | 238 // Otherwise, the snapshot metadata are used directly in those methods. |
228 long long m_snapshotSize; | 239 long long m_snapshotSize; |
229 const double m_snapshotModificationTimeMS; | 240 const double m_snapshotModificationTimeMS; |
230 | 241 |
231 String m_relativePath; | 242 String m_relativePath; |
232 }; | 243 }; |
233 | 244 |
234 DEFINE_TYPE_CASTS(File, Blob, blob, blob->isFile(), blob.isFile()); | 245 DEFINE_TYPE_CASTS(File, Blob, blob, blob->isFile(), blob.isFile()); |
235 | 246 |
236 } // namespace blink | 247 } // namespace blink |
237 | 248 |
238 #endif // File_h | 249 #endif // File_h |
OLD | NEW |