Chromium Code Reviews| Index: chrome/browser/resources/file_manager/js/util.js |
| diff --git a/chrome/browser/resources/file_manager/js/util.js b/chrome/browser/resources/file_manager/js/util.js |
| index c279c95c95e40b6435f1a700c9498623175b28d3..319c17adff1ff76665f5151ad31a33261bc0ac43 100644 |
| --- a/chrome/browser/resources/file_manager/js/util.js |
| +++ b/chrome/browser/resources/file_manager/js/util.js |
| @@ -514,5 +514,112 @@ var util = { |
| */ |
| isOffline: function() { |
| return !navigator.onLine; |
| + }, |
| + |
| + /* |
| + * Tests if |path| references special, internaly used directory in which |
| + * creating new entries is not allowed. |
| + * Currently, only paths used for gdata content search match this description |
| + * (gdata content search root directory and directories that contain gdata |
| + * content search results). |
| + * |
| + * @param {string} path Path which is being tested. |
| + * @return {boolean} Test result. |
| + */ |
| + isSpecialReadonlyDirectory: function(path) { |
| + // If the path is not search root or it's child, we're fine. |
| + if (path.search(util.GDATA_SEARCH_ROOT_PATH) != 0 && |
| + path + '/' != util.GDATA_SEARCH_ROOT_PATH) { |
| + return false; |
| + } |
| + |
| + var pathComponents = path.split('/'); |
| + |
| + // We should not create entries on path if it's either gdata search root, |
| + // or its immediate child. |
| + var lengthDifference = |
| + pathComponents.length - util.GDATA_SEARCH_ROOT_COMPONENTS.length; |
| + return lengthDifference == 0 || lengthDifference == 1; |
| + }, |
| + |
| + /** |
| + * Checks if the provided path is under gdata search. |
| + * |
| + * @param {string} path Path to be tested. |
| + * @return {boolean} Is the path gdata search path. |
| + */ |
| + isGDataSearchPath: function(path) { |
|
SeRya
2012/05/10 08:44:16
Most of code for analyzing file paths placed into
tbarzic
2012/05/10 23:28:02
Done.
|
| + return path == util.GDATA_SEARCH_ROOT_PATH || |
| + path.search(util.GDATA_SEARCH_ROOT_PATH + '/') == 0; |
| + }, |
| + |
| + /* |
| + * Root path used for displaying gdata content search results. |
| + * Search results will be shown in directory 'GDATA_SEARCH_ROOT_PATH/query'. |
| + * |
| + * @const |
| + * @type {string} |
| + */ |
| + GDATA_SEARCH_ROOT_PATH: '/gdata/.search', |
| + |
| + /* |
| + * @const |
| + * @type {Array.<string>} |
| + */ |
| + GDATA_SEARCH_ROOT_COMPONENTS: ['', 'gdata', '.search'], |
| + |
| + /* |
| + * Creates directory path in which gdata content search results for |query| |
| + * should be displayed. |
| + * |
| + * @param {string} query Search query. |
| + * @return {string} Virtual directory path for search results. |
| + */ |
| + createGDataSearchPath: function(query) { |
| + return util.GDATA_SEARCH_ROOT_PATH + '/' + query; |
| + }, |
| + |
| + /* |
| + * Tests if the given path is a gdata search result path, and if it is, |
| + * returns file's fileName in virtual search file system, its gdata resourceId |
| + * and the display name that should be used when the file is shown in file |
| + * browser. |
| + * |
| + * @param {string} path The potential gdata search result path. |
| + * @return {object.<string, stringi, string>} Object that will contain file's |
| + * fileName, displayName and resourceId; or null if the path is not gdata |
| + * search result path. |
| + */ |
| + getFileAndDisplayNameForGDataSearchResult: function(path) { |
| + // Nothing to do if the path is not under gdata search root path. |
| + if (path.search(util.GDATA_SEARCH_ROOT_PATH) != 0) |
| + return null; |
| + |
| + var pathComponents = path.split('/'); |
| + |
| + // Search result should be formatted like: |
| + // gdataSearchRoot/query/result |
| + if (pathComponents.length != util.GDATA_SEARCH_ROOT_COMPONENTS.length + 2) |
| + return null; |
| + for (var i = 0; i < util.GDATA_SEARCH_ROOT_COMPONENTS.length; i++) { |
| + if (pathComponents[i] != util.GDATA_SEARCH_ROOT_COMPONENTS[i]) |
| + return null; |
| + } |
| + |
| + // Search result file name should be formatted like: |
| + // resource_id.referenced_file_name |
| + // We should display referenced file name only. |
| + var result = {}; |
| + result.fileName = pathComponents.pop(); |
| + result.displayName = |
| + result.fileName.slice(result.fileName.indexOf('.') + 1); |
| + result.resourceId = |
| + result.fileName.substr(0, result.fileName.indexOf('.')); |
| + |
| + if (result.fileName.length > 0 && result.displayName.length > 0) { |
| + return result; |
| + } else { |
| + return null; |
| + } |
| } |
| }; |