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

Side by Side Diff: chrome/browser/resources/file_manager/foreground/js/metadata/metadata_cache.js

Issue 130663002: Get rid of fullPath in the metadata cache. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed. Created 6 years, 11 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
« no previous file with comments | « chrome/browser/resources/file_manager/foreground/js/media/video_player.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 'use strict'; 5 'use strict';
6 6
7 /** 7 /**
8 * MetadataCache is a map from Entry to an object containing properties. 8 * MetadataCache is a map from Entry to an object containing properties.
9 * Properties are divided by types, and all properties of one type are accessed 9 * Properties are divided by types, and all properties of one type are accessed
10 * at once. 10 * at once.
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 * of the observer Entry. 101 * of the observer Entry.
102 */ 102 */
103 MetadataCache.DESCENDANTS = 2; 103 MetadataCache.DESCENDANTS = 2;
104 104
105 /** 105 /**
106 * Minimum number of items in cache to start eviction. 106 * Minimum number of items in cache to start eviction.
107 */ 107 */
108 MetadataCache.EVICTION_NUMBER = 1000; 108 MetadataCache.EVICTION_NUMBER = 1000;
109 109
110 /** 110 /**
111 * @param {VolumeManagerWrapper} volumeManager Volume manager instance.
111 * @return {MetadataCache!} The cache with all providers. 112 * @return {MetadataCache!} The cache with all providers.
112 */ 113 */
113 MetadataCache.createFull = function() { 114 MetadataCache.createFull = function(volumeManager) {
114 var cache = new MetadataCache(); 115 var cache = new MetadataCache();
115 cache.providers_.push(new FilesystemProvider()); 116 cache.providers_.push(new FilesystemProvider());
116 cache.providers_.push(new DriveProvider()); 117 cache.providers_.push(new DriveProvider(volumeManager));
117 cache.providers_.push(new ContentProvider()); 118 cache.providers_.push(new ContentProvider());
118 return cache; 119 return cache;
119 }; 120 };
120 121
121 /** 122 /**
122 * Clones metadata entry. Metadata entries may contain scalars, arrays, 123 * Clones metadata entry. Metadata entries may contain scalars, arrays,
123 * hash arrays and Date object. Other objects are not supported. 124 * hash arrays and Date object. Other objects are not supported.
124 * @param {Object} metadata Metadata object. 125 * @param {Object} metadata Metadata object.
125 * @return {Object} Cloned entry. 126 * @return {Object} Cloned entry.
126 */ 127 */
(...skipping 537 matching lines...) Expand 10 before | Expand all | Expand 10 after
664 665
665 entry.getMetadata(onMetadata.bind(null, entry), onError); 666 entry.getMetadata(onMetadata.bind(null, entry), onError);
666 }; 667 };
667 668
668 /** 669 /**
669 * Provider of drive metadata. 670 * Provider of drive metadata.
670 * This provider returns the following objects: 671 * This provider returns the following objects:
671 * drive: { pinned, hosted, present, customIconUrl, etc. } 672 * drive: { pinned, hosted, present, customIconUrl, etc. }
672 * thumbnail: { url, transform } 673 * thumbnail: { url, transform }
673 * streaming: { } 674 * streaming: { }
675 * @param {VolumeManagerWrapper} volumeManager Volume manager instance.
674 * @constructor 676 * @constructor
675 */ 677 */
676 function DriveProvider() { 678 function DriveProvider(volumeManager) {
677 MetadataProvider.call(this); 679 MetadataProvider.call(this);
678 680
681 /**
682 * @type {VolumeManagerWrapper}
683 * @private
684 */
685 this.volumeManager_ = volumeManager;
686
679 // We batch metadata fetches into single API call. 687 // We batch metadata fetches into single API call.
680 this.entries_ = []; 688 this.entries_ = [];
681 this.callbacks_ = []; 689 this.callbacks_ = [];
682 this.scheduled_ = false; 690 this.scheduled_ = false;
683 691
684 this.callApiBound_ = this.callApi_.bind(this); 692 this.callApiBound_ = this.callApi_.bind(this);
685 } 693 }
686 694
687 DriveProvider.prototype = { 695 DriveProvider.prototype = {
688 __proto__: MetadataProvider.prototype 696 __proto__: MetadataProvider.prototype
689 }; 697 };
690 698
691 /** 699 /**
692 * @param {Entry} entry The entry. 700 * @param {Entry} entry The entry.
693 * @return {boolean} Whether this provider supports the entry. 701 * @return {boolean} Whether this provider supports the entry.
694 */ 702 */
695 DriveProvider.prototype.supportsEntry = function(entry) { 703 DriveProvider.prototype.supportsEntry = function(entry) {
696 // TODO(mtomasz): Use Entry instead of paths. 704 var locationInfo = this.volumeManager_.getLocationInfo(entry);
697 return PathUtil.isDriveBasedPath(entry.fullPath); 705 return locationInfo && locationInfo.isDriveBased;
698 }; 706 };
699 707
700 /** 708 /**
701 * @param {string} type The metadata type. 709 * @param {string} type The metadata type.
702 * @return {boolean} Whether this provider provides this metadata. 710 * @return {boolean} Whether this provider provides this metadata.
703 */ 711 */
704 DriveProvider.prototype.providesType = function(type) { 712 DriveProvider.prototype.providesType = function(type) {
705 return type === 'drive' || type === 'thumbnail' || 713 return type === 'drive' || type === 'thumbnail' ||
706 type === 'streaming' || type === 'media'; 714 type === 'streaming' || type === 'media';
707 }; 715 };
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after
1012 1020
1013 /** 1021 /**
1014 * Handles the 'log' message from the worker. 1022 * Handles the 'log' message from the worker.
1015 * @param {Array.<*>} arglist Log arguments. 1023 * @param {Array.<*>} arglist Log arguments.
1016 * @private 1024 * @private
1017 */ 1025 */
1018 ContentProvider.prototype.onLog_ = function(arglist) { 1026 ContentProvider.prototype.onLog_ = function(arglist) {
1019 if (MetadataCache.log) // Avoid log spam by default. 1027 if (MetadataCache.log) // Avoid log spam by default.
1020 console.log.apply(console, ['metadata:'].concat(arglist)); 1028 console.log.apply(console, ['metadata:'].concat(arglist));
1021 }; 1029 };
OLDNEW
« no previous file with comments | « chrome/browser/resources/file_manager/foreground/js/media/video_player.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698