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

Side by Side 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: . Created 8 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 /** 5 /**
6 * Namespace for utility functions. 6 * Namespace for utility functions.
7 */ 7 */
8 var util = { 8 var util = {
9 /** 9 /**
10 * Returns a function that console.log's its arguments, prefixed by |msg|. 10 * Returns a function that console.log's its arguments, prefixed by |msg|.
(...skipping 496 matching lines...) Expand 10 before | Expand all | Expand 10 after
507 (event.shiftKey ? 'Shift-' : '') + 507 (event.shiftKey ? 'Shift-' : '') +
508 (event.metaKey ? 'Meta-' : ''); 508 (event.metaKey ? 'Meta-' : '');
509 }, 509 },
510 510
511 /** 511 /**
512 * A wrapper for navigator.onLine that allows for easy debug override. 512 * A wrapper for navigator.onLine that allows for easy debug override.
513 * @return {boolean} True if offline. 513 * @return {boolean} True if offline.
514 */ 514 */
515 isOffline: function() { 515 isOffline: function() {
516 return !navigator.onLine; 516 return !navigator.onLine;
517 },
518
519 /*
520 * Tests if |path| references special, internaly used directory in which
521 * creating new entries is not allowed.
522 * Currently, only paths used for gdata content search match this description
523 * (gdata content search root directory and directories that contain gdata
524 * content search results).
525 *
526 * @param {string} path Path which is being tested.
527 * @return {boolean} Test result.
528 */
529 isSpecialReadonlyDirectory: function(path) {
530 // If the path is not search root or it's child, we're fine.
531 if (path.search(util.GDATA_SEARCH_ROOT_PATH) != 0 &&
532 path + '/' != util.GDATA_SEARCH_ROOT_PATH) {
533 return false;
534 }
535
536 var pathComponents = path.split('/');
537
538 // We should not create entries on path if it's either gdata search root,
539 // or its immediate child.
540 var lengthDifference =
541 pathComponents.length - util.GDATA_SEARCH_ROOT_COMPONENTS.length;
542 return lengthDifference == 0 || lengthDifference == 1;
543 },
544
545 /**
546 * Checks if the provided path is under gdata search.
547 *
548 * @param {string} path Path to be tested.
549 * @return {boolean} Is the path gdata search path.
550 */
551 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.
552 return path == util.GDATA_SEARCH_ROOT_PATH ||
553 path.search(util.GDATA_SEARCH_ROOT_PATH + '/') == 0;
554 },
555
556 /*
557 * Root path used for displaying gdata content search results.
558 * Search results will be shown in directory 'GDATA_SEARCH_ROOT_PATH/query'.
559 *
560 * @const
561 * @type {string}
562 */
563 GDATA_SEARCH_ROOT_PATH: '/gdata/.search',
564
565 /*
566 * @const
567 * @type {Array.<string>}
568 */
569 GDATA_SEARCH_ROOT_COMPONENTS: ['', 'gdata', '.search'],
570
571 /*
572 * Creates directory path in which gdata content search results for |query|
573 * should be displayed.
574 *
575 * @param {string} query Search query.
576 * @return {string} Virtual directory path for search results.
577 */
578 createGDataSearchPath: function(query) {
579 return util.GDATA_SEARCH_ROOT_PATH + '/' + query;
580 },
581
582 /*
583 * Tests if the given path is a gdata search result path, and if it is,
584 * returns file's fileName in virtual search file system, its gdata resourceId
585 * and the display name that should be used when the file is shown in file
586 * browser.
587 *
588 * @param {string} path The potential gdata search result path.
589 * @return {object.<string, stringi, string>} Object that will contain file's
590 * fileName, displayName and resourceId; or null if the path is not gdata
591 * search result path.
592 */
593 getFileAndDisplayNameForGDataSearchResult: function(path) {
594 // Nothing to do if the path is not under gdata search root path.
595 if (path.search(util.GDATA_SEARCH_ROOT_PATH) != 0)
596 return null;
597
598 var pathComponents = path.split('/');
599
600 // Search result should be formatted like:
601 // gdataSearchRoot/query/result
602 if (pathComponents.length != util.GDATA_SEARCH_ROOT_COMPONENTS.length + 2)
603 return null;
604 for (var i = 0; i < util.GDATA_SEARCH_ROOT_COMPONENTS.length; i++) {
605 if (pathComponents[i] != util.GDATA_SEARCH_ROOT_COMPONENTS[i])
606 return null;
607 }
608
609 // Search result file name should be formatted like:
610 // resource_id.referenced_file_name
611 // We should display referenced file name only.
612 var result = {};
613 result.fileName = pathComponents.pop();
614 result.displayName =
615 result.fileName.slice(result.fileName.indexOf('.') + 1);
616 result.resourceId =
617 result.fileName.substr(0, result.fileName.indexOf('.'));
618
619 if (result.fileName.length > 0 && result.displayName.length > 0) {
620 return result;
621 } else {
622 return null;
623 }
517 } 624 }
518 }; 625 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698