Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2133)

Unified Diff: chrome/browser/resources/file_manager/js/util.js

Issue 10342010: Add gdata content search to file_manager (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: style nits Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 eb39b1b8a08c5554754f476fb303f15d3efca309..1d5cf3238804c06475497e3a495ec11f54392e60 100644
--- a/chrome/browser/resources/file_manager/js/util.js
+++ b/chrome/browser/resources/file_manager/js/util.js
@@ -499,5 +499,101 @@ 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;
+ },
+
+ /*
+ * 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;
+ }
}
};

Powered by Google App Engine
This is Rietveld 408576698