| Index: ui/file_manager/file_manager/background/js/device_handler.js
|
| diff --git a/ui/file_manager/file_manager/background/js/device_handler.js b/ui/file_manager/file_manager/background/js/device_handler.js
|
| index e0fc0413f9e1e5353aa06665f71d56f2df41f929..04396ef75a0a2e84d2c0e19e6e96ca25a72c34d6 100644
|
| --- a/ui/file_manager/file_manager/background/js/device_handler.js
|
| +++ b/ui/file_manager/file_manager/background/js/device_handler.js
|
| @@ -27,22 +27,12 @@ function DeviceHandler() {
|
| */
|
| this.navigationVolumes_ = {};
|
|
|
| - /**
|
| - * Whether the device is just after starting up or not.
|
| - *
|
| - * @type {boolean}
|
| - * @private
|
| - */
|
| - this.isStartup_ = false;
|
| -
|
| chrome.fileBrowserPrivate.onDeviceChanged.addListener(
|
| this.onDeviceChanged_.bind(this));
|
| chrome.fileBrowserPrivate.onMountCompleted.addListener(
|
| this.onMountCompleted_.bind(this));
|
| chrome.notifications.onButtonClicked.addListener(
|
| this.onNotificationButtonClicked_.bind(this));
|
| - chrome.runtime.onStartup.addListener(
|
| - this.onStartup_.bind(this));
|
| }
|
|
|
| DeviceHandler.prototype = {
|
| @@ -97,13 +87,6 @@ DeviceHandler.Notification = function(prefix, title, message, opt_buttonLabel) {
|
| */
|
| this.queue_ = new AsyncUtil.Queue();
|
|
|
| - /**
|
| - * Timeout ID.
|
| - * @type {number}
|
| - * @private
|
| - */
|
| - this.pendingShowTimerId_ = 0;
|
| -
|
| Object.seal(this);
|
| };
|
|
|
| @@ -199,7 +182,6 @@ DeviceHandler.Notification.FORMAT_FAIL = new DeviceHandler.Notification(
|
| * @return {string} Notification ID.
|
| */
|
| DeviceHandler.Notification.prototype.show = function(devicePath, opt_message) {
|
| - this.clearTimeout_();
|
| var notificationId = this.makeId_(devicePath);
|
| this.queue_.run(function(callback) {
|
| var buttons =
|
| @@ -219,20 +201,10 @@ DeviceHandler.Notification.prototype.show = function(devicePath, opt_message) {
|
| };
|
|
|
| /**
|
| - * Shows the notification after 5 seconds.
|
| - * @param {string} devicePath Device path.
|
| - */
|
| -DeviceHandler.Notification.prototype.showLater = function(devicePath) {
|
| - this.clearTimeout_();
|
| - this.pendingShowTimerId_ = setTimeout(this.show.bind(this, devicePath), 5000);
|
| -};
|
| -
|
| -/**
|
| * Hides the notification for the device path.
|
| * @param {string} devicePath Device path.
|
| */
|
| DeviceHandler.Notification.prototype.hide = function(devicePath) {
|
| - this.clearTimeout_();
|
| this.queue_.run(function(callback) {
|
| chrome.notifications.clear(this.makeId_(devicePath), callback);
|
| }.bind(this));
|
| @@ -249,35 +221,22 @@ DeviceHandler.Notification.prototype.makeId_ = function(devicePath) {
|
| };
|
|
|
| /**
|
| - * Cancels the timeout request.
|
| - * @private
|
| - */
|
| -DeviceHandler.Notification.prototype.clearTimeout_ = function() {
|
| - if (this.pendingShowTimerId_) {
|
| - clearTimeout(this.pendingShowTimerId_);
|
| - this.pendingShowTimerId_ = 0;
|
| - }
|
| -};
|
| -
|
| -/**
|
| * Handles notifications from C++ sides.
|
| * @param {DeviceEvent} event Device event.
|
| * @private
|
| */
|
| DeviceHandler.prototype.onDeviceChanged_ = function(event) {
|
| switch (event.type) {
|
| - case 'added':
|
| - if (!this.isStartup_)
|
| - DeviceHandler.Notification.DEVICE.showLater(event.devicePath);
|
| - this.mountStatus_[event.devicePath] = DeviceHandler.MountStatus.NO_RESULT;
|
| + case 'scan_started':
|
| + DeviceHandler.Notification.DEVICE.show(event.devicePath);
|
| + break;
|
| + case 'scan_cancelled':
|
| + DeviceHandler.Notification.DEVICE.hide(event.devicePath);
|
| break;
|
| case 'disabled':
|
| DeviceHandler.Notification.DEVICE_EXTERNAL_STORAGE_DISABLED.show(
|
| event.devicePath);
|
| break;
|
| - case 'scan_canceled':
|
| - DeviceHandler.Notification.DEVICE.hide(event.devicePath);
|
| - break;
|
| case 'removed':
|
| DeviceHandler.Notification.DEVICE.hide(event.devicePath);
|
| DeviceHandler.Notification.DEVICE_FAIL.hide(event.devicePath);
|
| @@ -286,10 +245,8 @@ DeviceHandler.prototype.onDeviceChanged_ = function(event) {
|
| delete this.mountStatus_[event.devicePath];
|
| break;
|
| case 'hard_unplugged':
|
| - if (!this.isStartup_) {
|
| - DeviceHandler.Notification.DEVICE_HARD_UNPLUGGED.show(
|
| - event.devicePath);
|
| - }
|
| + DeviceHandler.Notification.DEVICE_HARD_UNPLUGGED.show(
|
| + event.devicePath);
|
| break;
|
| case 'format_start':
|
| DeviceHandler.Notification.FORMAT_START.show(event.devicePath);
|
| @@ -302,6 +259,9 @@ DeviceHandler.prototype.onDeviceChanged_ = function(event) {
|
| DeviceHandler.Notification.FORMAT_START.hide(event.devicePath);
|
| DeviceHandler.Notification.FORMAT_FAIL.show(event.devicePath);
|
| break;
|
| + default:
|
| + console.error('Unknown event tyep: ' + event.type);
|
| + break;
|
| }
|
| };
|
|
|
| @@ -334,12 +294,13 @@ DeviceHandler.prototype.onMountCompleted_ = function(event) {
|
| // If this is remounting, which happens when resuming ChromeOS, the device has
|
| // already inserted to the computer. So we suppress the notification.
|
| var volume = event.volumeMetadata;
|
| - if (!volume.deviceType || event.isRemounting)
|
| + if (!volume.deviceType || !event.shouldNotify)
|
| return;
|
|
|
| // If the current volume status is succeed and it should be handled in
|
| // Files.app, show the notification to navigate the volume.
|
| - if (event.status === 'success' && event.shouldNotify) {
|
| + if (event.eventType === 'mount' &&
|
| + event.status === 'success') {
|
| if (this.navigationVolumes_[event.volumeMetadata.devicePath]) {
|
| // The notification has already shown for the device. It seems the device
|
| // has multiple volumes. The order of mount events of volumes are
|
| @@ -352,12 +313,10 @@ DeviceHandler.prototype.onMountCompleted_ = function(event) {
|
| event.volumeMetadata.volumeId;
|
| }
|
| } else {
|
| - if (!this.isStartup_) {
|
| - this.navigationVolumes_[event.volumeMetadata.devicePath] =
|
| - event.volumeMetadata.volumeId;
|
| - DeviceHandler.Notification.DEVICE_NAVIGATION.show(
|
| - event.volumeMetadata.devicePath);
|
| - }
|
| + this.navigationVolumes_[event.volumeMetadata.devicePath] =
|
| + event.volumeMetadata.volumeId;
|
| + DeviceHandler.Notification.DEVICE_NAVIGATION.show(
|
| + event.volumeMetadata.devicePath);
|
| }
|
| } else if (event.status === 'error_unknown_filesystem') {
|
| // The volume id is necessary to navigate when users click start
|
| @@ -381,10 +340,9 @@ DeviceHandler.prototype.onMountCompleted_ = function(event) {
|
| };
|
|
|
| // Update the current status.
|
| + if (!this.mountStatus_[volume.devicePath])
|
| + this.mountStatus_[volume.devicePath] = DeviceHandler.MountStatus.NO_RESULT;
|
| switch (this.mountStatus_[volume.devicePath]) {
|
| - // If there is no related device, do nothing.
|
| - case undefined:
|
| - return;
|
| // If the multipart error message has already shown, do nothing because the
|
| // message does not changed by the following mount results.
|
| case DeviceHandler.MountStatus.MULTIPART_ERROR:
|
| @@ -469,10 +427,3 @@ DeviceHandler.prototype.onNotificationButtonClicked_ = function(id) {
|
| this.dispatchEvent(event);
|
| }
|
| };
|
| -
|
| -DeviceHandler.prototype.onStartup_ = function() {
|
| - this.isStartup_ = true;
|
| - setTimeout(function() {
|
| - this.isStartup_ = false;
|
| - }.bind(this), 5000);
|
| -};
|
|
|