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

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

Issue 151413002: Files.app: Clean DirectoryModel. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed a test. Created 6 years, 10 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 | « no previous file | chrome/browser/resources/file_manager/foreground/js/directory_model.js » ('j') | 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 * Scanner of the entries. 8 * Scanner of the entries.
9 * @constructor 9 * @constructor
10 */ 10 */
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 254
255 var reader = entry.createReader(); 255 var reader = entry.createReader();
256 reader.readEntries(onSuccess, onError); 256 reader.readEntries(onSuccess, onError);
257 }.bind(this); 257 }.bind(this);
258 258
259 processEntry(this.entry_); 259 processEntry(this.entry_);
260 }; 260 };
261 261
262 /** 262 /**
263 * Scanner of the entries for the metadata search on Drive File System. 263 * Scanner of the entries for the metadata search on Drive File System.
264 * @param {string} query The query of the search.
265 * @param {DriveMetadataSearchContentScanner.SearchType} searchType The option 264 * @param {DriveMetadataSearchContentScanner.SearchType} searchType The option
266 * of the search. 265 * of the search.
267 * @constructor 266 * @constructor
268 * @extends {ContentScanner} 267 * @extends {ContentScanner}
269 */ 268 */
270 function DriveMetadataSearchContentScanner(query, searchType) { 269 function DriveMetadataSearchContentScanner(searchType) {
271 ContentScanner.call(this); 270 ContentScanner.call(this);
272 this.query_ = query;
273 this.searchType_ = searchType; 271 this.searchType_ = searchType;
274 } 272 }
275 273
276 /** 274 /**
277 * Extends ContentScanner. 275 * Extends ContentScanner.
278 */ 276 */
279 DriveMetadataSearchContentScanner.prototype.__proto__ = 277 DriveMetadataSearchContentScanner.prototype.__proto__ =
280 ContentScanner.prototype; 278 ContentScanner.prototype;
281 279
282 /** 280 /**
283 * The search types on the Drive File System. 281 * The search types on the Drive File System.
284 * @enum {string} 282 * @enum {string}
285 */ 283 */
286 DriveMetadataSearchContentScanner.SearchType = Object.freeze({ 284 DriveMetadataSearchContentScanner.SearchType = Object.freeze({
287 SEARCH_ALL: 'ALL', 285 SEARCH_ALL: 'ALL',
288 SEARCH_SHARED_WITH_ME: 'SHARED_WITH_ME', 286 SEARCH_SHARED_WITH_ME: 'SHARED_WITH_ME',
289 SEARCH_RECENT_FILES: 'EXCLUDE_DIRECTORIES', 287 SEARCH_RECENT_FILES: 'EXCLUDE_DIRECTORIES',
290 SEARCH_OFFLINE: 'OFFLINE' 288 SEARCH_OFFLINE: 'OFFLINE'
291 }); 289 });
292 290
293 /** 291 /**
294 * Starts to metadata-search on Drive File System. 292 * Starts to metadata-search on Drive File System.
295 * @override 293 * @override
296 */ 294 */
297 DriveMetadataSearchContentScanner.prototype.scan = function( 295 DriveMetadataSearchContentScanner.prototype.scan = function(
298 entriesCallback, successCallback, errorCallback) { 296 entriesCallback, successCallback, errorCallback) {
299 chrome.fileBrowserPrivate.searchDriveMetadata( 297 chrome.fileBrowserPrivate.searchDriveMetadata(
300 {query: this.query_, types: this.searchType_, maxResults: 500}, 298 {query: '', types: this.searchType_, maxResults: 500},
301 function(results) { 299 function(results) {
302 if (this.cancelled_) { 300 if (this.cancelled_) {
303 errorCallback(util.createDOMError(util.FileError.ABORT_ERR)); 301 errorCallback(util.createDOMError(util.FileError.ABORT_ERR));
304 return; 302 return;
305 } 303 }
306 304
307 if (!results) { 305 if (!results) {
308 console.error('Drive search encountered an error.'); 306 console.error('Drive search encountered an error.');
309 errorCallback(util.createDOMError( 307 errorCallback(util.createDOMError(
310 util.FileError.INVALID_MODIFICATION_ERR)); 308 util.FileError.INVALID_MODIFICATION_ERR));
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 * This class is responsible for scanning directory (or search results), 457 * This class is responsible for scanning directory (or search results),
460 * and filling the fileList. Different descendants handle various types of 458 * and filling the fileList. Different descendants handle various types of
461 * directory contents shown: basic directory, drive search results, local search 459 * directory contents shown: basic directory, drive search results, local search
462 * results. 460 * results.
463 * TODO(hidehiko): Remove EventTarget from this. 461 * TODO(hidehiko): Remove EventTarget from this.
464 * 462 *
465 * @param {FileListContext} context The file list context. 463 * @param {FileListContext} context The file list context.
466 * @param {boolean} isSearch True for search directory contents, otherwise 464 * @param {boolean} isSearch True for search directory contents, otherwise
467 * false. 465 * false.
468 * @param {DirectoryEntry} directoryEntry The entry of the current directory. 466 * @param {DirectoryEntry} directoryEntry The entry of the current directory.
469 * @param {DirectoryEntry} lastNonSearchDirectoryEntry The entry of the last
470 * non-search directory.
471 * @param {function():ContentScanner} scannerFactory The factory to create 467 * @param {function():ContentScanner} scannerFactory The factory to create
472 * ContentScanner instance. 468 * ContentScanner instance.
473 * @constructor 469 * @constructor
474 * @extends {cr.EventTarget} 470 * @extends {cr.EventTarget}
475 */ 471 */
476 function DirectoryContents(context, 472 function DirectoryContents(context,
477 isSearch, 473 isSearch,
478 directoryEntry, 474 directoryEntry,
479 lastNonSearchDirectoryEntry,
480 scannerFactory) { 475 scannerFactory) {
481 this.context_ = context; 476 this.context_ = context;
482 this.fileList_ = context.fileList; 477 this.fileList_ = context.fileList;
483 478
484 this.isSearch_ = isSearch; 479 this.isSearch_ = isSearch;
485 this.directoryEntry_ = directoryEntry; 480 this.directoryEntry_ = directoryEntry;
486 this.lastNonSearchDirectoryEntry_ = lastNonSearchDirectoryEntry;
487 481
488 this.scannerFactory_ = scannerFactory; 482 this.scannerFactory_ = scannerFactory;
489 this.scanner_ = null; 483 this.scanner_ = null;
490 this.prefetchMetadataQueue_ = new AsyncUtil.Queue(); 484 this.prefetchMetadataQueue_ = new AsyncUtil.Queue();
491 this.scanCancelled_ = false; 485 this.scanCancelled_ = false;
492 } 486 }
493 487
494 /** 488 /**
495 * DirectoryContents extends cr.EventTarget. 489 * DirectoryContents extends cr.EventTarget.
496 */ 490 */
497 DirectoryContents.prototype.__proto__ = cr.EventTarget.prototype; 491 DirectoryContents.prototype.__proto__ = cr.EventTarget.prototype;
498 492
499 /** 493 /**
500 * Create the copy of the object, but without scan started. 494 * Create the copy of the object, but without scan started.
501 * @return {DirectoryContents} Object copy. 495 * @return {DirectoryContents} Object copy.
502 */ 496 */
503 DirectoryContents.prototype.clone = function() { 497 DirectoryContents.prototype.clone = function() {
504 return new DirectoryContents( 498 return new DirectoryContents(
505 this.context_, this.isSearch_, this.directoryEntry_, 499 this.context_,
506 this.lastNonSearchDirectoryEntry_, this.scannerFactory_); 500 this.isSearch_,
501 this.directoryEntry_,
502 this.scannerFactory_);
507 }; 503 };
508 504
509 /** 505 /**
510 * Use a given fileList instead of the fileList from the context. 506 * Use a given fileList instead of the fileList from the context.
511 * @param {Array|cr.ui.ArrayDataModel} fileList The new file list. 507 * @param {Array|cr.ui.ArrayDataModel} fileList The new file list.
512 */ 508 */
513 DirectoryContents.prototype.setFileList = function(fileList) { 509 DirectoryContents.prototype.setFileList = function(fileList) {
514 if (fileList instanceof cr.ui.ArrayDataModel) 510 if (fileList instanceof cr.ui.ArrayDataModel)
515 this.fileList_ = fileList; 511 this.fileList_ = fileList;
516 else 512 else
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 545
550 /** 546 /**
551 * @return {DirectoryEntry} A DirectoryEntry for current directory. In case of 547 * @return {DirectoryEntry} A DirectoryEntry for current directory. In case of
552 * search -- the top directory from which search is run. 548 * search -- the top directory from which search is run.
553 */ 549 */
554 DirectoryContents.prototype.getDirectoryEntry = function() { 550 DirectoryContents.prototype.getDirectoryEntry = function() {
555 return this.directoryEntry_; 551 return this.directoryEntry_;
556 }; 552 };
557 553
558 /** 554 /**
559 * @return {DirectoryEntry} A DirectoryEntry for the last non search contents.
560 */
561 DirectoryContents.prototype.getLastNonSearchDirectoryEntry = function() {
562 return this.lastNonSearchDirectoryEntry_;
563 };
564
565 /**
566 * Start directory scan/search operation. Either 'scan-completed' or 555 * Start directory scan/search operation. Either 'scan-completed' or
567 * 'scan-failed' event will be fired upon completion. 556 * 'scan-failed' event will be fired upon completion.
568 */ 557 */
569 DirectoryContents.prototype.scan = function() { 558 DirectoryContents.prototype.scan = function() {
570 // TODO(hidehiko,mtomasz): this scan method must be called at most once. 559 // TODO(hidehiko,mtomasz): this scan method must be called at most once.
571 // Remove such a limitation. 560 // Remove such a limitation.
572 this.scanner_ = this.scannerFactory_(); 561 this.scanner_ = this.scannerFactory_();
573 this.scanner_.scan(this.onNewEntries_.bind(this), 562 this.scanner_.scan(this.onNewEntries_.bind(this),
574 this.onScanCompleted_.bind(this), 563 this.onScanCompleted_.bind(this),
575 this.onScanError_.bind(this)); 564 this.onScanError_.bind(this));
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 * 672 *
684 * @param {FileListContext} context File list context. 673 * @param {FileListContext} context File list context.
685 * @param {DirectoryEntry} directoryEntry The current directory entry. 674 * @param {DirectoryEntry} directoryEntry The current directory entry.
686 * @return {DirectoryContents} Created DirectoryContents instance. 675 * @return {DirectoryContents} Created DirectoryContents instance.
687 */ 676 */
688 DirectoryContents.createForDirectory = function(context, directoryEntry) { 677 DirectoryContents.createForDirectory = function(context, directoryEntry) {
689 return new DirectoryContents( 678 return new DirectoryContents(
690 context, 679 context,
691 false, // Non search. 680 false, // Non search.
692 directoryEntry, 681 directoryEntry,
693 directoryEntry,
694 function() { 682 function() {
695 return new DirectoryContentScanner(directoryEntry); 683 return new DirectoryContentScanner(directoryEntry);
696 }); 684 });
697 }; 685 };
698 686
699 /** 687 /**
700 * Creates a DirectoryContents instance to show the result of the search on 688 * Creates a DirectoryContents instance to show the result of the search on
701 * Drive File System. 689 * Drive File System.
702 * 690 *
703 * @param {FileListContext} context File list context. 691 * @param {FileListContext} context File list context.
704 * @param {DirectoryEntry} directoryEntry The current directory entry. 692 * @param {DirectoryEntry} directoryEntry The current directory entry.
705 * @param {DirectoryEntry} previousDirectoryEntry The DirectoryEntry that was
706 * current before the search.
707 * @param {string} query Search query. 693 * @param {string} query Search query.
708 * @return {DirectoryContents} Created DirectoryContents instance. 694 * @return {DirectoryContents} Created DirectoryContents instance.
709 */ 695 */
710 DirectoryContents.createForDriveSearch = function( 696 DirectoryContents.createForDriveSearch = function(
711 context, directoryEntry, previousDirectoryEntry, query) { 697 context, directoryEntry, query) {
712 return new DirectoryContents( 698 return new DirectoryContents(
713 context, 699 context,
714 true, // Search. 700 true, // Search.
715 directoryEntry, 701 directoryEntry,
716 previousDirectoryEntry,
717 function() { 702 function() {
718 return new DriveSearchContentScanner(query); 703 return new DriveSearchContentScanner(query);
719 }); 704 });
720 }; 705 };
721 706
722 /** 707 /**
723 * Creates a DirectoryContents instance to show the result of the search on 708 * Creates a DirectoryContents instance to show the result of the search on
724 * Local File System. 709 * Local File System.
725 * 710 *
726 * @param {FileListContext} context File list context. 711 * @param {FileListContext} context File list context.
727 * @param {DirectoryEntry} directoryEntry The current directory entry. 712 * @param {DirectoryEntry} directoryEntry The current directory entry.
728 * @param {string} query Search query. 713 * @param {string} query Search query.
729 * @return {DirectoryContents} Created DirectoryContents instance. 714 * @return {DirectoryContents} Created DirectoryContents instance.
730 */ 715 */
731 DirectoryContents.createForLocalSearch = function( 716 DirectoryContents.createForLocalSearch = function(
732 context, directoryEntry, query) { 717 context, directoryEntry, query) {
733 return new DirectoryContents( 718 return new DirectoryContents(
734 context, 719 context,
735 true, // Search. 720 true, // Search.
736 directoryEntry, 721 directoryEntry,
737 directoryEntry,
738 function() { 722 function() {
739 return new LocalSearchContentScanner(directoryEntry, query); 723 return new LocalSearchContentScanner(directoryEntry, query);
740 }); 724 });
741 }; 725 };
742 726
743 /** 727 /**
744 * Creates a DirectoryContents instance to show the result of metadata search 728 * Creates a DirectoryContents instance to show the result of metadata search
745 * on Drive File System. 729 * on Drive File System.
746 * 730 *
747 * @param {FileListContext} context File list context. 731 * @param {FileListContext} context File list context.
748 * @param {DirectoryEntry} fakeDirectoryEntry Fake directory entry representing 732 * @param {DirectoryEntry} fakeDirectoryEntry Fake directory entry representing
749 * the set of result entries. This serves as a top directory for the 733 * the set of result entries. This serves as a top directory for the
750 * search. 734 * search.
751 * @param {DirectoryEntry} driveDirectoryEntry Directory for the actual drive.
752 * @param {string} query Search query.
753 * @param {DriveMetadataSearchContentScanner.SearchType} searchType The type of 735 * @param {DriveMetadataSearchContentScanner.SearchType} searchType The type of
754 * the search. The scanner will restricts the entries based on the given 736 * the search. The scanner will restricts the entries based on the given
755 * type. 737 * type.
756 * @return {DirectoryContents} Created DirectoryContents instance. 738 * @return {DirectoryContents} Created DirectoryContents instance.
757 */ 739 */
758 DirectoryContents.createForDriveMetadataSearch = function( 740 DirectoryContents.createForDriveMetadataSearch = function(
759 context, fakeDirectoryEntry, driveDirectoryEntry, query, searchType) { 741 context, fakeDirectoryEntry, searchType) {
760 return new DirectoryContents( 742 return new DirectoryContents(
761 context, 743 context,
762 true, // Search 744 true, // Search
763 fakeDirectoryEntry, 745 fakeDirectoryEntry,
764 driveDirectoryEntry,
765 function() { 746 function() {
766 return new DriveMetadataSearchContentScanner(query, searchType); 747 return new DriveMetadataSearchContentScanner(searchType);
767 }); 748 });
768 }; 749 };
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/resources/file_manager/foreground/js/directory_model.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698