Commit 33435f37 authored by Jérémie Boulic's avatar Jérémie Boulic Committed by Chromium LUCI CQ

Files app: Generate JS modules for //u/f/f/f/j/file_tasks.js

In //ui/file_manager/file_manager/foreground/js/:
- file_tasks.js
- file_tasks_unittest.m.js

Bug: 1133186
Change-Id: I9bfc94f7987e52df8135a19ae06355baa1dd8564
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2627201Reviewed-by: default avatarLuciano Pacheco <lucmult@chromium.org>
Commit-Queue: Jeremie Boulic <jboulic@chromium.org>
Cr-Commit-Position: refs/heads/master@{#843473}
parent 74f4a814
......@@ -137,7 +137,7 @@ IN_PROC_BROWSER_TEST_F(FileManagerJsTest, FileTapHandler) {
}
IN_PROC_BROWSER_TEST_F(FileManagerJsTest, FileTasks) {
RunTestURL("foreground/js/file_tasks_unittest_gen.html");
RunTestURL("foreground/js/file_tasks_unittest.m_gen.html");
}
IN_PROC_BROWSER_TEST_F(FileManagerJsTest, FileTransferController) {
......
......@@ -349,6 +349,8 @@ js_library("mock_crostini.m") {
":crostini.m",
"//ui/file_manager/externs/background:crostini.m",
]
visibility +=
[ "//ui/file_manager/file_manager/foreground/js:file_tasks_unittest.m" ]
extra_deps = [ ":modulize" ]
}
......@@ -938,6 +940,8 @@ js_library("mock_progress_center.m") {
"//ui/file_manager/externs/background:progress_center.m",
"//ui/file_manager/file_manager/common/js:progress_center_common.m",
]
visibility +=
[ "//ui/file_manager/file_manager/foreground/js:file_tasks_unittest.m" ]
extra_deps = [ ":modulize" ]
}
......
......@@ -42,6 +42,7 @@ js_type_check("closure_compile_jsmodules") {
":fake_file_selection_handler.m",
":file_list_model.m",
":file_selection.m",
":file_tasks.m",
":file_transfer_controller.m",
":file_type_filters_controller.m",
":file_watcher.m",
......@@ -768,15 +769,66 @@ js_library("file_tasks") {
]
}
js_unittest("file_tasks_unittest") {
js_library("file_tasks.m") {
sources = [
"$root_gen_dir/ui/file_manager/file_manager/foreground/js/file_tasks.m.js",
]
deps = [
":file_tasks",
"metadata:mock_metadata",
"//ui/file_manager/base/js:mock_chrome",
"//ui/file_manager/base/js:test_error_reporting",
"//ui/file_manager/file_manager/background/js:mock_crostini",
"//ui/file_manager/file_manager/background/js:mock_progress_center",
"//ui/file_manager/file_manager/common/js:mock_entry",
":constants.m",
":directory_model.m",
":file_transfer_controller.m",
":naming_controller.m",
":task_history.m",
":web_store_utils.m",
"metadata:metadata_model.m",
"ui:combobutton.m",
"ui:default_task_dialog.m",
"ui:file_manager_ui.m",
"ui:files_confirm_dialog.m",
"ui:files_menu.m",
"ui:multi_menu_button.m",
"ui:suggest_apps_dialog.m",
"//ui/file_manager/base/js:volume_manager_types.m",
"//ui/file_manager/externs:volume_info.m",
"//ui/file_manager/externs:volume_manager.m",
"//ui/file_manager/externs/background:crostini.m",
"//ui/file_manager/externs/background:progress_center.m",
"//ui/file_manager/file_manager/common/js:async_util.m",
"//ui/file_manager/file_manager/common/js:file_type.m",
"//ui/file_manager/file_manager/common/js:metrics.m",
"//ui/file_manager/file_manager/common/js:progress_center_common.m",
"//ui/file_manager/file_manager/common/js:util.m",
"//ui/file_manager/file_manager/foreground/elements:files_password_dialog.m",
"//ui/webui/resources/js:assert.m",
"//ui/webui/resources/js:load_time_data.m",
"//ui/webui/resources/js/cr:ui.m",
"//ui/webui/resources/js/cr/ui:menu.m",
]
extra_deps = [ ":modulize" ]
}
js_unittest("file_tasks_unittest.m") {
deps = [
":directory_model.m",
":file_tasks.m",
":file_transfer_controller.m",
":naming_controller.m",
":task_history.m",
"metadata:metadata_model.m",
"ui:file_manager_ui.m",
"//chrome/test/data/webui:chai_assert",
"//ui/file_manager/base/js:mock_chrome.m",
"//ui/file_manager/base/js:test_error_reporting.m",
"//ui/file_manager/base/js:volume_manager_types.m",
"//ui/file_manager/externs:entry_location.m",
"//ui/file_manager/externs:volume_manager.m",
"//ui/file_manager/externs/background:progress_center.m",
"//ui/file_manager/file_manager/background/js:mock_crostini.m",
"//ui/file_manager/file_manager/background/js:mock_progress_center.m",
"//ui/file_manager/file_manager/common/js:mock_entry.m",
"//ui/file_manager/file_manager/common/js:progress_center_common.m",
"//ui/file_manager/file_manager/foreground/elements:files_password_dialog.m",
]
}
......@@ -1498,10 +1550,12 @@ js_library("webui_command_extender.m") {
}
js_test_gen_html("js_test_gen_html_modules") {
is_polymer3 = true
deps = [
":actions_model_unittest.m",
":directory_contents_unittest.m",
":file_list_model_unittest.m",
":file_tasks_unittest.m",
":file_transfer_controller_unittest.m",
":file_type_filters_controller_unittest.m",
":list_thumbnail_loader_unittest.m",
......@@ -1510,7 +1564,6 @@ js_test_gen_html("js_test_gen_html_modules") {
":spinner_controller_unittest.m",
":thumbnail_loader_unittest.m",
]
js_module = true
closure_flags =
strict_error_checking_closure_args + [
......@@ -1526,7 +1579,6 @@ js_test_gen_html("js_test_gen_html_modules") {
js_test_gen_html("js_test_gen_html") {
deps = [
":file_manager_commands_unittest",
":file_tasks_unittest",
":import_controller_unittest",
":task_controller_unittest",
]
......@@ -1577,10 +1629,13 @@ js_modulizer("modulize") {
"webui_command_extender.js",
"sort_menu_controller.js",
"selection_menu_controller.js",
"file_tasks.js",
]
namespace_rewrites = cr_namespace_rewrites + [
"cr.ui.FilesMenuItem|FilesMenuItem",
"cr.ui.MultiMenu|MultiMenu",
"cr.ui.ComboButton|ComboButton",
"cr.filebrowser.DefaultTaskDialog|DefaultTaskDialog",
]
}
......@@ -2,11 +2,43 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// clang-format off
// #import {Menu} from 'chrome://resources/js/cr/ui/menu.m.js';
// #import {MultiMenuButton} from './ui/multi_menu_button.m.js';
// #import {VolumeInfo} from '../../../externs/volume_info.m.js';
// #import {ProgressCenter} from '../../../externs/background/progress_center.m.js';
// #import {Crostini} from '../../../externs/background/crostini.m.js';
// #import {NamingController} from './naming_controller.m.js';
// #import {TaskHistory} from './task_history.m.js';
// #import {FileManagerUI} from './ui/file_manager_ui.m.js';
// #import {DirectoryModel} from './directory_model.m.js';
// #import {MetadataModel} from './metadata/metadata_model.m.js';
// #import {VolumeManager} from '../../../externs/volume_manager.m.js';
// #import {FilesMenuItem} from './ui/files_menu.m.js';
// #import {decorate} from 'chrome://resources/js/cr/ui.m.js';
// #import {FilesPasswordDialog} from '../elements/files_password_dialog.m.js';
// #import {ProgressCenterItem, ProgressItemType, ProgressItemState} from '../../common/js/progress_center_common.m.js';
// #import {webStoreUtils} from './web_store_utils.m.js';
// #import {FileTransferController} from './file_transfer_controller.m.js';
// #import {FilesConfirmDialog} from './ui/files_confirm_dialog.m.js';
// #import {VolumeManagerCommon} from '../../../base/js/volume_manager_types.m.js';
// #import {FileType} from '../../common/js/file_type.m.js';
// #import {SuggestAppsDialog} from './ui/suggest_apps_dialog.m.js';
// #import {constants} from './constants.m.js';
// #import {util, strf, str} from '../../common/js/util.m.js';
// #import {AsyncUtil} from '../../common/js/async_util.m.js'
// #import {metrics} from '../../common/js/metrics.m.js';
// #import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
// #import {assert} from 'chrome://resources/js/assert.m.js';
// #import {DefaultTaskDialog} from './ui/default_task_dialog.m.js';
// #import {ComboButton} from './ui/combobutton.m.js';
// clang-format on
/**
* Represents a collection of available tasks to execute for a specific list
* of entries.
*/
class FileTasks {
/* #export */ class FileTasks {
/**
* @param {!VolumeManager} volumeManager
* @param {!MetadataModel} metadataModel
......
......@@ -2,11 +2,32 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import {assertArrayEquals, assertEquals, assertFalse, assertTrue} from 'chrome://test/chai_assert.js';
import {installMockChrome} from '../../../base/js/mock_chrome.m.js';
import {reportPromise} from '../../../base/js/test_error_reporting.m.js';
import {VolumeManagerCommon} from '../../../base/js/volume_manager_types.m.js';
import {ProgressCenter} from '../../../externs/background/progress_center.m.js';
import {EntryLocation} from '../../../externs/entry_location.m.js';
import {VolumeManager} from '../../../externs/volume_manager.m.js';
import {createCrostiniForTest} from '../../background/js/mock_crostini.m.js';
import {MockProgressCenter} from '../../background/js/mock_progress_center.m.js';
import {metrics} from '../../common/js/metrics.m.js';
import {MockFileEntry, MockFileSystem} from '../../common/js/mock_entry.m.js';
import {ProgressItemState} from '../../common/js/progress_center_common.m.js';
import {FilesPasswordDialog} from '../elements/files_password_dialog.m.js';
import {DirectoryModel} from './directory_model.m.js';
import {FileTasks} from './file_tasks.m.js';
import {FileTransferController} from './file_transfer_controller.m.js';
import {MetadataModel} from './metadata/metadata_model.m.js';
import {NamingController} from './naming_controller.m.js';
import {TaskHistory} from './task_history.m.js';
import {FileManagerUI} from './ui/file_manager_ui.m.js';
/**
* Utility function that appends value under a given name in the store.
* @param {!Map<string, !Array<string|number>>} store
* @param {string} name
* @param {string|number} value
* @param {!*} value
*/
function record(store, name, value) {
let recorded = store.get(name);
......@@ -28,17 +49,23 @@ const enumMap = new Map();
const countMap = new Map();
/**
* Mock metrics
* @type {!Object}
* Mock metrics.recordEnum.
* @param {string} name
* @param {*} value
* @param {Array<*>|number=} valid
*/
window.metrics = {
recordEnum: (name, value, valid) => {
assertTrue(valid.includes(value));
record(enumMap, name, value);
},
recordSmallCount: (name, value) => {
record(countMap, name, value);
},
metrics.recordEnum = function(name, value, valid) {
assertTrue(valid.includes(value));
record(enumMap, name, value);
};
/**
* Mock metrics.recordSmallCount.
* @param {string} name Short metric name.
* @param {number} value Value to be recorded.
*/
metrics.recordSmallCount = function(name, value) {
record(countMap, name, value);
};
/**
......@@ -93,7 +120,7 @@ const zipMountPanelId = 'Mounting: ' + fakeMountedZipUrl;
const errorZipMountPanelId = 'Cannot mount: ' + fakeMountedZipUrl;
// Set up test components.
function setUp() {
export function setUp() {
// Mock LoadTimeData strings.
window.loadTimeData.getString = id => id;
window.loadTimeData.getBoolean = key => false;
......@@ -324,7 +351,7 @@ function showImportCrostiniImageDialogIsCalled(entries) {
/**
* Tests opening a .exe file.
*/
function testToOpenExeFile(callback) {
export function testToOpenExeFile(callback) {
const mockFileSystem = new MockFileSystem('volumeId');
const mockEntry = MockFileEntry.create(mockFileSystem, '/test.exe');
......@@ -337,7 +364,7 @@ function testToOpenExeFile(callback) {
/**
* Tests opening a .dmg file.
*/
function testToOpenDmgFile(callback) {
export function testToOpenDmgFile(callback) {
const mockFileSystem = new MockFileSystem('volumeId');
const mockEntry = MockFileEntry.create(mockFileSystem, '/test.dmg');
......@@ -349,7 +376,7 @@ function testToOpenDmgFile(callback) {
/**
* Tests opening a .crx file.
*/
function testToOpenCrxFile(callback) {
export function testToOpenCrxFile(callback) {
const mockFileSystem = new MockFileSystem('volumeId');
const mockEntry = MockFileEntry.create(mockFileSystem, '/test.crx');
......@@ -362,7 +389,7 @@ function testToOpenCrxFile(callback) {
/**
* Tests opening a .rtf file.
*/
function testToOpenRtfFile(callback) {
export function testToOpenRtfFile(callback) {
const mockFileSystem = new MockFileSystem('volumeId');
const mockEntry = MockFileEntry.create(mockFileSystem, '/test.rtf');
......@@ -374,7 +401,7 @@ function testToOpenRtfFile(callback) {
/**
* Tests opening an entry that has external metadata type.
*/
function testOpenSuggestAppsDialogWithMetadata(callback) {
export function testOpenSuggestAppsDialogWithMetadata(callback) {
const showByExtensionAndMimeIsCalled = new Promise((resolve, reject) => {
const mockFileSystem = new MockFileSystem('volumeId');
const mockEntry = MockFileEntry.create(mockFileSystem, '/test.rtf');
......@@ -412,7 +439,7 @@ function testOpenSuggestAppsDialogWithMetadata(callback) {
* Tests opening an entry that has no extension. Since the entry extension and
* entry MIME type are required, the onFalure method should be called.
*/
function testOpenSuggestAppsDialogFailure(callback) {
export function testOpenSuggestAppsDialogFailure(callback) {
const onFailureIsCalled = new Promise((resolve, reject) => {
const mockFileSystem = new MockFileSystem('volumeId');
const mockEntry = MockFileEntry.create(mockFileSystem, '/test');
......@@ -437,7 +464,7 @@ function testOpenSuggestAppsDialogFailure(callback) {
* Tests opening the task picker with an entry that does not have a default app
* but there are multiple apps that could open it.
*/
function testOpenTaskPicker(callback) {
export function testOpenTaskPicker(callback) {
window.chrome.fileManagerPrivate.getFileTasks = (entries, callback) => {
setTimeout(
callback.bind(
......@@ -471,7 +498,7 @@ function testOpenTaskPicker(callback) {
* but there are multiple apps that could open it. The app with the most recent
* task execution order should execute.
*/
function testOpenWithMostRecentlyExecuted(callback) {
export function testOpenWithMostRecentlyExecuted(callback) {
const latestTaskId = 'handler-extension-most-recently-executed|app|any';
const oldTaskId = 'handler-extension-executed-before|app|any';
......@@ -555,7 +582,7 @@ function testOpenWithMostRecentlyExecuted(callback) {
/**
* Tests opening a .zip file.
*/
function testOpenZipWithZipArchiver(callback) {
export function testOpenZipWithZipArchiver(callback) {
const zipArchiverTaskId = 'dmboannefpncccogfdikhmhpmdnddgoe|app|open';
window.chrome.fileManagerPrivate.getFileTasks = (entries, callback) => {
......@@ -640,7 +667,7 @@ function setUpInstallLinuxPackage() {
* Tests opening a .deb file. The crostini linux package install dialog should
* be called.
*/
function testOpenInstallLinuxPackageDialog(callback) {
export function testOpenInstallLinuxPackageDialog(callback) {
const fileManager = setUpInstallLinuxPackage();
const mockFileSystem = new MockFileSystem('volumeId');
const mockEntry = MockFileEntry.create(mockFileSystem, '/test.deb');
......@@ -671,7 +698,7 @@ function testOpenInstallLinuxPackageDialog(callback) {
* Tests opening a .tini file. The import crostini image dialog should be
* called.
*/
function testToOpenTiniFileOpensImportCrostiniImageDialog(callback) {
export function testToOpenTiniFileOpensImportCrostiniImageDialog(callback) {
window.chrome.fileManagerPrivate.getFileTasks = (entries, callback) => {
setTimeout(
callback.bind(
......@@ -696,7 +723,7 @@ function testToOpenTiniFileOpensImportCrostiniImageDialog(callback) {
* Checks that the function that returns a file type for file entry handles
* correctly identifies files with known and unknown extensions.
*/
function testGetViewFileType() {
export function testGetViewFileType() {
const mockFileSystem = new MockFileSystem('volumeId');
const testData = [
{extension: 'log', expected: '.log'},
......@@ -713,7 +740,7 @@ function testGetViewFileType() {
/**
* Checks that we are correctly recording UMA about Share action.
*/
function testRecordSharingAction() {
export function testRecordSharingAction() {
// Setup: create a fake metrics object that can be examined for content.
const mockFileSystem = new MockFileSystem('volumeId');
......@@ -746,7 +773,7 @@ function testRecordSharingAction() {
/**
* Checks that file task is correctly recognized as a file sharing task.
*/
function testIsSharingTask() {
export function testIsSharingTask() {
const mockShareTask = /** @type {!chrome.fileManagerPrivate.FileTask} */ ({
verb: chrome.fileManagerPrivate.Verb.SHARE_WITH,
});
......@@ -761,7 +788,7 @@ function testIsSharingTask() {
* Checks that a task sharing files with external apps correctly records
* UMA statistics.
*/
async function testShareWith(done) {
export async function testShareWith(done) {
const fileManager = getMockFileManager();
const mockFileSystem = new MockFileSystem('volumeId');
const entries = [
......@@ -794,7 +821,8 @@ async function testShareWith(done) {
* successfully.
* @suppress {visibility}
*/
async function testMountArchiveAndChangeDirectoryNotificationSuccess(done) {
export async function testMountArchiveAndChangeDirectoryNotificationSuccess(
done) {
const fileManager = getMockFileManager();
// Define FileTasks instance.
......@@ -832,8 +860,8 @@ async function testMountArchiveAndChangeDirectoryNotificationSuccess(done) {
* resolves with an error.
* @suppress {visibility}
*/
async function testMountArchiveAndChangeDirectoryNotificationInvalidArchive(
done) {
export async function
testMountArchiveAndChangeDirectoryNotificationInvalidArchive(done) {
const fileManager = getMockFileManager();
// Define FileTasks instance.
......@@ -866,8 +894,8 @@ async function testMountArchiveAndChangeDirectoryNotificationInvalidArchive(
* for an encrypted archive is canceled.
* @suppress {visibility}
*/
async function testMountArchiveAndChangeDirectoryNotificationCancelPassword(
done) {
export async function
testMountArchiveAndChangeDirectoryNotificationCancelPassword(done) {
const fileManager = getMockFileManager();
// Define FileTasks instance.
......@@ -905,8 +933,8 @@ async function testMountArchiveAndChangeDirectoryNotificationCancelPassword(
* encrypted archive.
* @suppress {visibility}
*/
async function testMountArchiveAndChangeDirectoryNotificationEncryptedArchive(
done) {
export async function
testMountArchiveAndChangeDirectoryNotificationEncryptedArchive(done) {
const fileManager = getMockFileManager();
// Define FileTasks instance.
......
......@@ -926,6 +926,7 @@ js_library("location_line") {
js_library("location_line.m") {
sources = [ "$root_gen_dir/ui/file_manager/file_manager/foreground/js/ui/location_line.m.js" ]
deps = [
":breadcrumb.m",
":list_container.m",
"//ui/file_manager/externs:files_app_entry_interfaces.m",
"//ui/file_manager/externs:volume_manager.m",
......
......@@ -11,6 +11,7 @@
// #import {PathComponent} from '../path_component.m.js';
// #import {NativeEventTarget as EventTarget} from 'chrome://resources/js/cr/event_target.m.js';
// #import {metrics} from '../../../common/js/metrics.m.js';
// #import './breadcrumb.m.js';
// clang-format on
/**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment