| 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 WEBKIT_FILEAPI_ISOLATED_CONTEXT_H_ | 5 #ifndef WEBKIT_FILEAPI_ISOLATED_CONTEXT_H_ |
| 6 #define WEBKIT_FILEAPI_ISOLATED_CONTEXT_H_ | 6 #define WEBKIT_FILEAPI_ISOLATED_CONTEXT_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <set> | 9 #include <set> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 // The instance is lazily created per browser process. | 29 // The instance is lazily created per browser process. |
| 30 static IsolatedContext* GetInstance(); | 30 static IsolatedContext* GetInstance(); |
| 31 | 31 |
| 32 // Registers a new file isolated filesystem with the given set of files | 32 // Registers a new file isolated filesystem with the given set of files |
| 33 // and returns the new filesystem_id. The files are registered with their | 33 // and returns the new filesystem_id. The files are registered with their |
| 34 // basenames as their keys so that later we can resolve the full paths | 34 // basenames as their keys so that later we can resolve the full paths |
| 35 // for the given file name in the isolated filesystem. We only expose the | 35 // for the given file name in the isolated filesystem. We only expose the |
| 36 // key and the ID for the newly created filesystem to the renderer for | 36 // key and the ID for the newly created filesystem to the renderer for |
| 37 // the sake of security. | 37 // the sake of security. |
| 38 // | 38 // |
| 39 // Note that all the given paths in |fileset| must be absolute paths. |
| 40 // |
| 39 // The renderer will be sending filesystem requests with a virtual path like | 41 // The renderer will be sending filesystem requests with a virtual path like |
| 40 // '/<filesystem_id>/<relative_path_from_the_basename_of_dropped_path>' | 42 // '/<filesystem_id>/<relative_path_from_the_basename_of_dropped_path>' |
| 41 // for which we could crack in the browser by calling CrackIsolatedPath to | 43 // for which we could crack in the browser by calling CrackIsolatedPath to |
| 42 // get the full path. | 44 // get the full path. |
| 43 // | 45 // |
| 44 // For example: if a dropped file has a path like '/a/b/foo' we register | 46 // For example: if a dropped file has a path like '/a/b/foo' we register |
| 45 // the path with the key 'foo' in the newly created filesystem. | 47 // the path with the key 'foo' in the newly created filesystem. |
| 46 // Later if the context is asked to crack a virtual path like '/<fsid>/foo' | 48 // Later if the context is asked to crack a virtual path like '/<fsid>/foo' |
| 47 // it can properly return the original path '/a/b/foo' by looking up the | 49 // it can properly return the original path '/a/b/foo' by looking up the |
| 48 // internal mapping. Similarly if a dropped entry is a directory and its | 50 // internal mapping. Similarly if a dropped entry is a directory and its |
| 49 // path is like '/a/b/dir' a virtual path like '/<fsid>/dir/foo' can be | 51 // path is like '/a/b/dir' a virtual path like '/<fsid>/dir/foo' can be |
| 50 // cracked into '/a/b/dir/foo'. | 52 // cracked into '/a/b/dir/foo'. |
| 51 // | |
| 52 // This may return an empty string (thus invalid as an ID) if the given | |
| 53 // file set contains non absolute paths. | |
| 54 std::string RegisterIsolatedFileSystem(const std::set<FilePath>& fileset); | 53 std::string RegisterIsolatedFileSystem(const std::set<FilePath>& fileset); |
| 55 | 54 |
| 56 // Revokes filesystem specified by the given filesystem_id. | 55 // Revokes filesystem specified by the given filesystem_id. |
| 57 void RevokeIsolatedFileSystem(const std::string& filesystem_id); | 56 void RevokeIsolatedFileSystem(const std::string& filesystem_id); |
| 58 | 57 |
| 59 // Cracks the given |virtual_path| (which should look like | 58 // Cracks the given |virtual_path| (which should look like |
| 60 // "/<filesystem_id>/<relative_path>") and populates the |filesystem_id| | 59 // "/<filesystem_id>/<relative_path>") and populates the |filesystem_id| |
| 61 // and |platform_path| if the embedded <filesystem_id> is registerred | 60 // and |platform_path| if the embedded <filesystem_id> is registerred |
| 62 // to this context. |root_path| is also populated to have the platform | 61 // to this context. |root_path| is also populated to have the platform |
| 63 // root (toplevel) path for the |virtual_path| | 62 // root (toplevel) path for the |virtual_path| |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 // Detailed filesystem permission may be provided by an external | 116 // Detailed filesystem permission may be provided by an external |
| 118 // security policy manager, e.g. ChildProcessSecurityPolicy. | 117 // security policy manager, e.g. ChildProcessSecurityPolicy. |
| 119 std::set<std::string> writable_ids_; | 118 std::set<std::string> writable_ids_; |
| 120 | 119 |
| 121 DISALLOW_COPY_AND_ASSIGN(IsolatedContext); | 120 DISALLOW_COPY_AND_ASSIGN(IsolatedContext); |
| 122 }; | 121 }; |
| 123 | 122 |
| 124 } // namespace fileapi | 123 } // namespace fileapi |
| 125 | 124 |
| 126 #endif // WEBKIT_FILEAPI_ISOLATED_CONTEXT_H_ | 125 #endif // WEBKIT_FILEAPI_ISOLATED_CONTEXT_H_ |
| OLD | NEW |