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

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

Issue 39123003: [Files.app] Split the JavaScript files into subdirectories: common, background, and foreground (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixed test failure. Created 7 years, 2 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/file_watcher.js
diff --git a/chrome/browser/resources/file_manager/js/file_watcher.js b/chrome/browser/resources/file_manager/js/file_watcher.js
deleted file mode 100644
index 267e217aad7b0767323833f3e345bdcc5f32007d..0000000000000000000000000000000000000000
--- a/chrome/browser/resources/file_manager/js/file_watcher.js
+++ /dev/null
@@ -1,227 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-'use strict';
-
-/**
- * Watches for changes in the tracked directory, including local metadata
- * changes.
- *
- * @param {MetadataCache} metadataCache Instance of MetadataCache.
- * @extends {cr.EventTarget}
- * @constructor
- */
-function FileWatcher(metadataCache) {
- this.queue_ = new AsyncUtil.Queue();
- this.metadataCache_ = metadataCache;
- this.watchedDirectoryEntry_ = null;
-
- this.onDirectoryChangedBound_ = this.onDirectoryChanged_.bind(this);
- chrome.fileBrowserPrivate.onDirectoryChanged.addListener(
- this.onDirectoryChangedBound_);
-
- this.filesystemMetadataObserverId_ = null;
- this.thumbnailMetadataObserverId_ = null;
- this.driveMetadataObserverId_ = null;
-}
-
-/**
- * FileWatcher extends cr.EventTarget.
- */
-FileWatcher.prototype.__proto__ = cr.EventTarget.prototype;
-
-/**
- * Stops watching (must be called before page unload).
- */
-FileWatcher.prototype.dispose = function() {
- chrome.fileBrowserPrivate.onDirectoryChanged.removeListener(
- this.onDirectoryChangedBound_);
- if (this.watchedDirectoryEntry_)
- this.resetWatchedEntry_(function() {}, function() {});
-};
-
-/**
- * Called when a file in the watched directory is changed.
- * @param {Event} event Change event.
- * @private
- */
-FileWatcher.prototype.onDirectoryChanged_ = function(event) {
- if (this.watchedDirectoryEntry_ &&
- event.directoryUrl == this.watchedDirectoryEntry_.toURL()) {
- var e = new Event('watcher-directory-changed');
- this.dispatchEvent(e);
- }
-};
-
-/**
- * Called when general metadata in the watched directory has been changed.
- *
- * @param {Array.<string>} urls Array of urls.
- * @param {Object.<string, Object>} properties Map from entry URLs to metadata
- * properties.
- * @private
- */
-FileWatcher.prototype.onFilesystemMetadataChanged_ = function(
- urls, properties) {
- this.dispatchMetadataEvent_('filesystem', urls, properties);
-};
-
-/**
- * Called when thumbnail metadata in the watched directory has been changed.
- *
- * @param {Array.<string>} urls Array of urls.
- * @param {Object.<string, Object>} properties Map from entry URLs to metadata
- * properties.
- * @private
- */
-FileWatcher.prototype.onThumbnailMetadataChanged_ = function(
- urls, properties) {
- this.dispatchMetadataEvent_('thumbnail', urls, properties);
-};
-
-/**
- * Called when drive metadata in the watched directory has been changed.
- *
- * @param {Array.<string>} urls Array of urls.
- * @param {Object.<string, Object>} properties Map from entry URLs to metadata
- * properties.
- * @private
- */
-FileWatcher.prototype.onDriveMetadataChanged_ = function(
- urls, properties) {
- this.dispatchMetadataEvent_('drive', urls, properties);
-};
-
-/**
- * Dispatches an event about detected change in metadata within the tracked
- * directory.
- *
- * @param {string} type Type of the metadata change.
- * @param {Array.<string>} urls Array of urls.
- * @param {Object.<string, Object>} properties Map from entry URLs to metadata
- * properties.
- * @private
- */
-FileWatcher.prototype.dispatchMetadataEvent_ = function(
- type, urls, properties) {
- var e = new Event('watcher-metadata-changed');
- e.metadataType = type;
- e.urls = urls;
- e.properties = properties;
- this.dispatchEvent(e);
-};
-
-/**
- * Changes the watched directory. In case of a fake entry, the watch is
- * just released, since there is no reason to track a fake directory.
- *
- * @param {!DirectoryEntry|!Object} entry Directory entry to be tracked, or the
- * fake entry.
- * @param {function()} callback Completion callback.
- */
-FileWatcher.prototype.changeWatchedDirectory = function(entry, callback) {
- if (entry && entry.toURL) {
- this.changeWatchedEntry_(
- entry,
- callback,
- function() {
- console.error(
- 'Unable to change the watched directory to: ' + entry.toURL());
- callback();
- });
- } else {
- this.resetWatchedEntry_(
- callback,
- function() {
- console.error('Unable to reset the watched directory.');
- callback();
- });
- }
-};
-
-/**
- * Resets the watched entry to the passed directory.
- *
- * @param {function()} onSuccess Success callback.
- * @param {function()} onError Error callback.
- * @private
- */
-FileWatcher.prototype.resetWatchedEntry_ = function(onSuccess, onError) {
- // Run the tasks in the queue to avoid races.
- this.queue_.run(function(callback) {
- // Release the watched directory.
- if (this.watchedDirectoryEntry_) {
- chrome.fileBrowserPrivate.removeFileWatch(
- this.watchedDirectoryEntry_.toURL(),
- function(result) {
- this.watchedDirectoryEntry_ = null;
- if (result)
- onSuccess();
- else
- onError();
- callback();
- }.bind(this));
- this.metadataCache_.removeObserver(this.filesystemMetadataObserverId_);
- this.metadataCache_.removeObserver(this.thumbnailMetadataObserverId_);
- this.metadataCache_.removeObserver(this.driveMetadataObserverId_);
- } else {
- onSuccess();
- callback();
- }
- }.bind(this));
-};
-
-/**
- * Sets the watched entry to the passed directory.
- *
- * @param {!DirectoryEntry} entry Directory to be watched.
- * @param {function()} onSuccess Success callback.
- * @param {function()} onError Error callback.
- * @private
- */
-FileWatcher.prototype.changeWatchedEntry_ = function(
- entry, onSuccess, onError) {
- var setEntryClosure = function() {
- // Run the tasks in the queue to avoid races.
- this.queue_.run(function(callback) {
- chrome.fileBrowserPrivate.addFileWatch(
- entry.toURL(),
- function(result) {
- if (!result) {
- this.watchedDirectoryEntry_ = null;
- onError();
- } else {
- this.watchedDirectoryEntry_ = entry;
- onSuccess();
- }
- callback();
- }.bind(this));
- this.filesystemMetadataObserverId_ = this.metadataCache_.addObserver(
- entry,
- MetadataCache.CHILDREN,
- 'filesystem',
- this.onFilesystemMetadataChanged_.bind(this));
- this.thumbnailMetadataObserverId_ = this.metadataCache_.addObserver(
- entry,
- MetadataCache.CHILDREN,
- 'thumbnail',
- this.onThumbnailMetadataChanged_.bind(this));
- this.driveMetadataObserverId_ = this.metadataCache_.addObserver(
- entry,
- MetadataCache.CHILDREN,
- 'drive',
- this.onDriveMetadataChanged_.bind(this));
- }.bind(this));
- }.bind(this);
-
- // Reset the watched directory first, then set the new watched directory.
- this.resetWatchedEntry_(setEntryClosure, onError);
-};
-
-/**
- * @return {DirectoryEntry} Current watched directory entry.
- */
-FileWatcher.prototype.getWatchedDirectoryEntry = function() {
- return this.watchedDirectoryEntry_;
-};

Powered by Google App Engine
This is Rietveld 408576698