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

Unified Diff: ui/file_manager/file_manager/foreground/js/file_manager.js

Issue 667933003: Ensure existence of queried elements. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Make some parameters non-nullable. Created 6 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: ui/file_manager/file_manager/foreground/js/file_manager.js
diff --git a/ui/file_manager/file_manager/foreground/js/file_manager.js b/ui/file_manager/file_manager/foreground/js/file_manager.js
index 4344c58cf4943d463b89628313a186afb675d4aa..e156d073b0eca19ce58892cdff74ead7807027cd 100644
--- a/ui/file_manager/file_manager/foreground/js/file_manager.js
+++ b/ui/file_manager/file_manager/foreground/js/file_manager.js
@@ -232,29 +232,8 @@ function FileManager() {
// Menus.
/**
- * Context menu for files.
- * @type {HTMLMenuElement}
- * @private
- */
- this.fileContextMenu_ = null;
-
- /**
- * Context menu for volumes or shortcuts displayed on left pane.
- * @type {HTMLMenuElement}
- * @private
- */
- this.rootsContextMenu_ = null;
-
- /**
- * Context menu for directory tree items.
- * @type {HTMLMenuElement}
- * @private
- */
- this.directoryTreeContextMenu_ = null;
-
- /**
* Context menu for texts.
- * @type {HTMLMenuElement}
+ * @type {cr.ui.Menu}
* @private
*/
this.textContextMenu_ = null;
@@ -304,7 +283,7 @@ function FileManager() {
/**
* The button to open gear menu.
- * @type {HTMLButtonElement}
+ * @type {cr.ui.MenuButton}
* @private
*/
this.gearButton_ = null;
@@ -997,37 +976,53 @@ var BOTTOM_MARGIN_FOR_PREVIEW_PANEL_PX = 52;
* @private
*/
FileManager.prototype.initContextMenus_ = function() {
- this.fileContextMenu_ = this.dialogDom_.querySelector('#file-context-menu');
- cr.ui.Menu.decorate(this.fileContextMenu_);
-
- cr.ui.contextMenuHandler.setContextMenu(this.grid_, this.fileContextMenu_);
- cr.ui.contextMenuHandler.setContextMenu(this.table_.querySelector('.list'),
- this.fileContextMenu_);
+ assert(this.grid_);
+ assert(this.table_);
+ assert(this.document_);
+ assert(this.dialogDom_);
+
+ // Set up the context menu for the file list.
+ var fileContextMenu = queryRequiredElement(
+ this.dialogDom_, '#file-context-menu');
+ cr.ui.Menu.decorate(fileContextMenu);
+ fileContextMenu = /** @type {!cr.ui.Menu} */ (fileContextMenu);
+
+ cr.ui.contextMenuHandler.setContextMenu(this.grid_, fileContextMenu);
cr.ui.contextMenuHandler.setContextMenu(
- this.document_.querySelector('.drive-welcome.page'),
- this.fileContextMenu_);
-
- this.rootsContextMenu_ =
- this.dialogDom_.querySelector('#roots-context-menu');
- cr.ui.Menu.decorate(this.rootsContextMenu_);
- this.directoryTree_.contextMenuForRootItems = this.rootsContextMenu_;
-
- this.directoryTreeContextMenu_ =
- this.dialogDom_.querySelector('#directory-tree-context-menu');
- cr.ui.Menu.decorate(this.directoryTreeContextMenu_);
- this.directoryTree_.contextMenuForSubitems = this.directoryTreeContextMenu_;
-
- this.textContextMenu_ =
- this.dialogDom_.querySelector('#text-context-menu');
- cr.ui.Menu.decorate(this.textContextMenu_);
-
- this.gearButton_ = this.dialogDom_.querySelector('#gear-button');
- this.gearButton_.addEventListener('menushow',
- this.onShowGearMenu_.bind(this));
-
+ queryRequiredElement(this.table_, '.list'), fileContextMenu);
+ cr.ui.contextMenuHandler.setContextMenu(
+ queryRequiredElement(this.document_, '.drive-welcome.page'),
+ fileContextMenu);
+
+ // Set up the context menu for the volume/shortcut items in directory tree.
+ var rootsContextMenu = queryRequiredElement(
+ this.dialogDom_, '#roots-context-menu');
+ cr.ui.Menu.decorate(rootsContextMenu);
+ rootsContextMenu = /** @type {!cr.ui.Menu} */ (rootsContextMenu);
+
+ this.directoryTree_.contextMenuForRootItems = rootsContextMenu;
+
+ // Set up the context menu for the folder items in directory tree.
+ var directoryTreeContextMenu = queryRequiredElement(
+ this.dialogDom_, '#directory-tree-context-menu');
+ cr.ui.Menu.decorate(directoryTreeContextMenu);
+ directoryTreeContextMenu =
+ /** @type {!cr.ui.Menu} */ (directoryTreeContextMenu);
+
+ this.directoryTree_.contextMenuForSubitems = directoryTreeContextMenu;
+
+ // Set up the context menu for the text editing.
+ var textContextMenu = queryRequiredElement(
+ this.dialogDom_, '#text-context-menu');
+ cr.ui.Menu.decorate(textContextMenu);
+ this.textContextMenu_ = /** @type {!cr.ui.Menu} */ (textContextMenu);
+
+ var gearButton = queryRequiredElement(this.dialogDom_, '#gear-button');
+ gearButton.addEventListener('menushow', this.onShowGearMenu_.bind(this));
this.dialogDom_.querySelector('#gear-menu').menuItemSelector =
'menuitem, hr';
- cr.ui.decorate(this.gearButton_, cr.ui.MenuButton);
+ cr.ui.decorate(gearButton, cr.ui.MenuButton);
+ this.gearButton_ = /** @type {!cr.ui.MenuButton} */ (gearButton);
this.syncButton.checkable = true;
this.hostedButton.checkable = true;
@@ -1068,6 +1063,9 @@ var BOTTOM_MARGIN_FOR_PREVIEW_PANEL_PX = 52;
* @private
*/
FileManager.prototype.initCommands_ = function() {
+ assert(this.textContextMenu_);
+ assert(this.renameInput_);
+
this.commandHandler = new CommandHandler(this);
// TODO(hirono): Move the following block to the UI part.
@@ -1303,22 +1301,28 @@ var BOTTOM_MARGIN_FOR_PREVIEW_PANEL_PX = 52;
// Cache nodes we'll be manipulating.
var dom = this.dialogDom_;
- this.filenameInput_ = dom.querySelector('#filename-input-box input');
- this.taskItems_ = dom.querySelector('#tasks');
+ var filenameInput = queryRequiredElement(dom, '#filename-input-box input');
+ this.filenameInput_ = /** @type {HTMLInputElement} */ (filenameInput);
+
+ var taskItems = queryRequiredElement(dom, '#tasks');
+ this.taskItems_ = /** @type {HTMLButtonElement} */ (taskItems);
- this.table_ = dom.querySelector('.detail-table');
- this.grid_ = dom.querySelector('.thumbnail-grid');
- this.spinner_ = dom.querySelector('#list-container > .spinner-layer');
+ var spinner = queryRequiredElement(dom, '#list-container > .spinner-layer');
+ this.spinner_ = /** @type {HTMLDivElement} */ (spinner);
this.showSpinner_(true);
var fullPage = this.dialogType == DialogType.FULL_PAGE;
+ var table = queryRequiredElement(dom, '.detail-table');
+ var grid = queryRequiredElement(dom, '.thumbnail-grid');
FileTable.decorate(
- this.table_, this.metadataCache_, this.volumeManager_, fullPage);
- FileGrid.decorate(this.grid_, this.metadataCache_, this.volumeManager_);
+ table, this.metadataCache_, this.volumeManager_, fullPage);
+ FileGrid.decorate(grid, this.metadataCache_, this.volumeManager_);
+ this.table_ = /** @type {!FileTable} */ (table);
+ this.grid_ = /** @type {!FileGrid} */ (grid);
this.ui_.locationLine = new LocationLine(
- dom.querySelector('#location-breadcrumbs'),
- dom.querySelector('#location-volume-icon'),
+ queryRequiredElement(dom, '#location-breadcrumbs'),
+ queryRequiredElement(dom, '#location-volume-icon'),
this.metadataCache_,
this.volumeManager_);
this.ui_.locationLine.addEventListener(
@@ -1338,7 +1342,7 @@ var BOTTOM_MARGIN_FOR_PREVIEW_PANEL_PX = 52;
// Initialize progress center panel.
this.progressCenterPanel_ = new ProgressCenterPanel(
- dom.querySelector('#progress-center'));
+ queryRequiredElement(dom, '#progress-center'));
this.backgroundPage_.background.progressCenter.addPanel(
this.progressCenterPanel_);

Powered by Google App Engine
This is Rietveld 408576698