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

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

Issue 7583041: Adding a format device button to UI. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: fix Created 9 years, 4 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 // Setting the src of an img to an empty string can crash the browser, so we 5 // Setting the src of an img to an empty string can crash the browser, so we
6 // use an empty 1x1 gif instead. 6 // use an empty 1x1 gif instead.
7 const EMPTY_IMAGE_URI = 'data:image/gif;base64,' 7 const EMPTY_IMAGE_URI = 'data:image/gif;base64,'
8 + 'R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw%3D%3D'; 8 + 'R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw%3D%3D';
9 9
10 var g_slideshow_data = null; 10 var g_slideshow_data = null;
(...skipping 1498 matching lines...) Expand 10 before | Expand all | Expand 10 after
1509 if (pendingFiles.length) { 1509 if (pendingFiles.length) {
1510 cacheEntrySize(pendingFiles.pop(), cacheNextFile); 1510 cacheEntrySize(pendingFiles.pop(), cacheNextFile);
1511 } else { 1511 } else {
1512 self.dispatchEvent(new cr.Event('selection-summarized')); 1512 self.dispatchEvent(new cr.Event('selection-summarized'));
1513 } 1513 }
1514 }; 1514 };
1515 1515
1516 if (this.dialogType_ == FileManager.DialogType.FULL_PAGE) { 1516 if (this.dialogType_ == FileManager.DialogType.FULL_PAGE) {
1517 // Since unmount task cannot be defined in terms of file patterns, 1517 // Since unmount task cannot be defined in terms of file patterns,
1518 // we manually include it here, if all selected items are mount points. 1518 // we manually include it here, if all selected items are mount points.
1519 this.taskButtons_.innerHTML = '';
1519 chrome.fileBrowserPrivate.getFileTasks( 1520 chrome.fileBrowserPrivate.getFileTasks(
1520 selection.urls, 1521 selection.urls,
1521 this.onTasksFound_.bind(this, 1522 this.onTasksFound_.bind(this,
1522 this.shouldShowUnmount_(selection.urls))); 1523 this.shouldShowUnmount_(selection.urls)));
1523 } 1524 }
1524 1525
1525 cacheNextFile(); 1526 cacheNextFile();
1526 }; 1527 };
1527 1528
1528 FileManager.prototype.onMetadataResult_ = function(fileURL, metadata) { 1529 FileManager.prototype.onMetadataResult_ = function(fileURL, metadata) {
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1587 * @param {Array.<Task>} tasksList The tasks list. 1588 * @param {Array.<Task>} tasksList The tasks list.
1588 */ 1589 */
1589 FileManager.prototype.onTasksFound_ = function(unmount, tasksList) { 1590 FileManager.prototype.onTasksFound_ = function(unmount, tasksList) {
1590 if (unmount) { 1591 if (unmount) {
1591 tasksList.push({ 1592 tasksList.push({
1592 taskId: this.getExtensionId_() + '|unmount-archive', 1593 taskId: this.getExtensionId_() + '|unmount-archive',
1593 iconUrl: '', 1594 iconUrl: '',
1594 title: '' 1595 title: ''
1595 }); 1596 });
1596 } 1597 }
1597
1598 this.taskButtons_.innerHTML = '';
1599 for (var i = 0; i < tasksList.length; i++) { 1598 for (var i = 0; i < tasksList.length; i++) {
1600 var task = tasksList[i]; 1599 var task = tasksList[i];
1601 1600
1602 // Tweak images, titles of internal tasks. 1601 // Tweak images, titles of internal tasks.
1603 var task_parts = task.taskId.split('|'); 1602 var task_parts = task.taskId.split('|');
1604 if (task_parts[0] == this.getExtensionId_()) { 1603 if (task_parts[0] == this.getExtensionId_()) {
1605 if (task_parts[1] == 'preview') { 1604 if (task_parts[1] == 'preview') {
1606 // TODO(serya): This hack needed until task.iconUrl get working 1605 // TODO(serya): This hack needed until task.iconUrl get working
1607 // (see GetFileTasksFileBrowserFunction::RunImpl). 1606 // (see GetFileTasksFileBrowserFunction::RunImpl).
1608 task.iconUrl = 1607 task.iconUrl =
(...skipping 15 matching lines...) Expand all
1624 } else if (task_parts[1] == 'mount-archive') { 1623 } else if (task_parts[1] == 'mount-archive') {
1625 task.iconUrl = 1624 task.iconUrl =
1626 chrome.extension.getURL('images/icon_mount_archive_16x16.png'); 1625 chrome.extension.getURL('images/icon_mount_archive_16x16.png');
1627 task.title = str('MOUNT_ARCHIVE'); 1626 task.title = str('MOUNT_ARCHIVE');
1628 } else if (task_parts[1] == 'unmount-archive') { 1627 } else if (task_parts[1] == 'unmount-archive') {
1629 task.iconUrl = 1628 task.iconUrl =
1630 chrome.extension.getURL('images/icon_unmount_archive_16x16.png'); 1629 chrome.extension.getURL('images/icon_unmount_archive_16x16.png');
1631 task.title = str('UNMOUNT_ARCHIVE'); 1630 task.title = str('UNMOUNT_ARCHIVE');
1632 } 1631 }
1633 } 1632 }
1633 this.renderTaskButton_(task);
1634 }
1635 // This needs to be done in sparate function, as check requires
1636 // asynchronous function calls.
1637 this.maybeRenderFormattingTask_();
1638 };
1634 1639
1635 var button = this.document_.createElement('button'); 1640 FileManager.prototype.renderTaskButton_ = function(task) {
1636 button.addEventListener('click', this.onTaskButtonClicked_.bind(this)); 1641 var button = this.document_.createElement('button');
1637 button.className = 'task-button'; 1642 button.addEventListener('click', this.onTaskButtonClicked_.bind(this));
1638 button.task = task; 1643 button.className = 'task-button';
1644 button.task = task;
1639 1645
1640 var img = this.document_.createElement('img'); 1646 var img = this.document_.createElement('img');
1641 img.src = task.iconUrl; 1647 img.src = task.iconUrl;
1642 1648
1643 button.appendChild(img); 1649 button.appendChild(img);
1644 button.appendChild(this.document_.createTextNode(task.title)); 1650 button.appendChild(this.document_.createTextNode(task.title));
1645 1651
1646 this.taskButtons_.appendChild(button); 1652 this.taskButtons_.appendChild(button);
1653 };
1654
1655 /**
1656 * Checks whether formatting task should be displayed and if the answer is
1657 * affirmative renders it. Includes asynchronous calls, so it's splitted into
1658 * three parts.
1659 */
1660 FileManager.prototype.maybeRenderFormattingTask_ = function() {
1661 // Not to make unnecesary getMountPoints() call we doublecheck if there is
1662 // only one selected entry.
1663 if (this.selection.entries.length != 1)
1664 return;
1665 var self = this;
1666 function onMountPointsFound(mountPoints) {
1667 self.mountPoints_ = mountPoints;
1668
1669 function normalize(x) {
1670 if (x[0] == '/')
1671 return x.slice(1);
1672 else
1673 return x;
1674 }
1675
1676 function onVolumeMetadataFound(volumeMetadata) {
1677 if (volumeMetadata.deviceType == "flash") {
1678 if (self.selection.entries.length != 1 ||
1679 normalize(self.selection.entries[0].fullPath) !=
1680 normalize(volumeMetadata.mountPath)) {
1681 return;
1682 }
1683 var task = {
1684 taskId: self.getExtensionId_() + '|format-device',
1685 iconUrl: chrome.extension.getURL('images/filetype_generic.png'),
1686 title: str('FORMAT_DEVICE')
1687 };
1688 self.renderTaskButton_(task);
1689 }
1690 }
1691
1692 if (self.selection.entries.length != 1)
1693 return;
1694 var selectedPath = self.selection.entries[0].fullPath;
1695 for (var i = 0; i < mountPoints.length; i++) {
1696 if (mountPoints[i].mountType == "device" &&
1697 normalize(mountPoints[i].mountPath) == normalize(selectedPath)) {
1698 chrome.fileBrowserPrivate.getVolumeMetadata(mountPoints[i].sourceUrl,
1699 onVolumeMetadataFound);
1700 return;
1701 }
1702 }
1647 } 1703 }
1704
1705 chrome.fileBrowserPrivate.getMountPoints(onMountPointsFound);
1648 }; 1706 };
1649 1707
1650 FileManager.prototype.getExtensionId_ = function() { 1708 FileManager.prototype.getExtensionId_ = function() {
1651 return chrome.extension.getURL('').split('/')[2]; 1709 return chrome.extension.getURL('').split('/')[2];
1652 }; 1710 };
1653 1711
1654 FileManager.prototype.onTaskButtonClicked_ = function(event) { 1712 FileManager.prototype.onTaskButtonClicked_ = function(event) {
1655 chrome.fileBrowserPrivate.executeTask(event.srcElement.task.taskId, 1713 chrome.fileBrowserPrivate.executeTask(event.srcElement.task.taskId,
1656 this.selection.urls); 1714 this.selection.urls);
1657 }; 1715 };
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1713 chrome.fileBrowserPrivate.viewFiles(urls, id); 1771 chrome.fileBrowserPrivate.viewFiles(urls, id);
1714 } else if (id == 'mount-archive') { 1772 } else if (id == 'mount-archive') {
1715 for (var index = 0; index < urls.length; ++index) { 1773 for (var index = 0; index < urls.length; ++index) {
1716 this.mountRequests_.push(urls[index]); 1774 this.mountRequests_.push(urls[index]);
1717 chrome.fileBrowserPrivate.addMount(urls[index], 'file', {}); 1775 chrome.fileBrowserPrivate.addMount(urls[index], 'file', {});
1718 } 1776 }
1719 } else if (id == 'unmount-archive') { 1777 } else if (id == 'unmount-archive') {
1720 for (var index = 0; index < urls.length; ++index) { 1778 for (var index = 0; index < urls.length; ++index) {
1721 chrome.fileBrowserPrivate.removeMount(urls[index]); 1779 chrome.fileBrowserPrivate.removeMount(urls[index]);
1722 } 1780 }
1781 } else if (id == 'format-device') {
1782 this.confirm.show(str('FORMATTING_WARNING'), function() {
1783 chrome.fileBrowserPrivate.formatDevice(urls[0]);
1784 });
1723 } 1785 }
1724 }; 1786 };
1725 1787
1726 /** 1788 /**
1727 * Determines whether unmount task should present for selected files. 1789 * Determines whether unmount task should present for selected files.
1728 */ 1790 */
1729 FileManager.prototype.shouldShowUnmount_ = function(urls) { 1791 FileManager.prototype.shouldShowUnmount_ = function(urls) {
1730 for (var index = 0; index < urls.length; ++index) { 1792 for (var index = 0; index < urls.length; ++index) {
1731 // Each url should be a mount point. 1793 // Each url should be a mount point.
1732 var path = urls[index]; 1794 var path = urls[index];
(...skipping 1337 matching lines...) Expand 10 before | Expand all | Expand 10 after
3070 3132
3071 if (msg) { 3133 if (msg) {
3072 console.log('no no no'); 3134 console.log('no no no');
3073 this.alert.show(msg, onAccept); 3135 this.alert.show(msg, onAccept);
3074 return false; 3136 return false;
3075 } 3137 }
3076 3138
3077 return true; 3139 return true;
3078 }; 3140 };
3079 })(); 3141 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698