Index: ui/file_manager/gallery/js/ribbon.js |
diff --git a/ui/file_manager/gallery/js/ribbon.js b/ui/file_manager/gallery/js/ribbon.js |
index acbc4f97f99e9f3c68d139cab310ae669900e20b..6d6e3a066023e025a1cca4b4a5f5fc24082bec1b 100644 |
--- a/ui/file_manager/gallery/js/ribbon.js |
+++ b/ui/file_manager/gallery/js/ribbon.js |
@@ -5,14 +5,17 @@ |
/** |
* Scrollable thumbnail ribbon at the bottom of the Gallery in the Slide mode. |
* |
- * @param {Document} document Document. |
- * @param {cr.ui.ArrayDataModel} dataModel Data model. |
- * @param {cr.ui.ListSelectionModel} selectionModel Selection model. |
- * @return {Element} Ribbon element. |
+ * @param {!Document} document Document. |
+ * @param {!cr.ui.ArrayDataModel} dataModel Data model. |
+ * @param {!cr.ui.ListSelectionModel} selectionModel Selection model. |
+ * @return {!HTMLElement} Ribbon element. |
+ * @extends {HTMLElement} |
* @constructor |
+ * @suppress {checkStructDictInheritance} |
+ * @struct |
*/ |
function Ribbon(document, dataModel, selectionModel) { |
- var self = document.createElement('div'); |
+ var self = assertInstanceof(document.createElement('div'), HTMLElement); |
Ribbon.decorate(self, dataModel, selectionModel); |
return self; |
} |
@@ -25,21 +28,44 @@ Ribbon.prototype.__proto__ = HTMLDivElement.prototype; |
/** |
* Decorate a Ribbon instance. |
* |
- * @param {Ribbon} self Self pointer. |
- * @param {cr.ui.ArrayDataModel} dataModel Data model. |
- * @param {cr.ui.ListSelectionModel} selectionModel Selection model. |
+ * @param {!HTMLElement} self Self pointer. |
+ * @param {!cr.ui.ArrayDataModel} dataModel Data model. |
+ * @param {!cr.ui.ListSelectionModel} selectionModel Selection model. |
*/ |
Ribbon.decorate = function(self, dataModel, selectionModel) { |
self.__proto__ = Ribbon.prototype; |
+ self = /** @type {!Ribbon} */ (self); |
self.dataModel_ = dataModel; |
self.selectionModel_ = selectionModel; |
+ /** @type {!Object} */ |
+ self.renderCache_ = {}; |
+ |
+ /** @type {number} */ |
+ self.firstVisibleIndex_ = 0; |
+ |
+ /** @type {number} */ |
+ self.lastVisibleIndex_ = -1; |
+ |
+ /** @type {?function(!Event)} */ |
+ self.onContentBound_ = null; |
+ |
+ /** @type {?function(!Event)} */ |
+ self.onSpliceBound_ = null; |
+ |
+ /** @type {?function(!Event)} */ |
+ self.onSelectionBound_ = null; |
+ |
+ /** @type {?number} */ |
+ self.removeTimeout_ = null; |
+ |
self.className = 'ribbon'; |
}; |
/** |
* Max number of thumbnails in the ribbon. |
* @type {number} |
+ * @const |
*/ |
Ribbon.ITEMS_COUNT = 5; |
@@ -90,7 +116,7 @@ Ribbon.prototype.disable = function() { |
/** |
* Data model splice handler. |
- * @param {Event} event Event. |
+ * @param {!Event} event Event. |
* @private |
*/ |
Ribbon.prototype.onSplice_ = function(event) { |
@@ -298,7 +324,7 @@ Ribbon.prototype.removeVanishing_ = function() { |
* Create a DOM element for a thumbnail. |
* |
* @param {number} index Item index. |
- * @return {Element} Newly created element. |
+ * @return {!Element} Newly created element. |
* @private |
*/ |
Ribbon.prototype.renderThumbnail_ = function(index) { |
@@ -335,8 +361,8 @@ Ribbon.prototype.renderThumbnail_ = function(index) { |
/** |
* Set the thumbnail image. |
* |
- * @param {Element} thumbnail Thumbnail element. |
- * @param {Gallery.Item} item Gallery item. |
+ * @param {!Element} thumbnail Thumbnail element. |
+ * @param {!Gallery.Item} item Gallery item. |
* @private |
*/ |
Ribbon.prototype.setThumbnailImage_ = function(thumbnail, item) { |
@@ -353,7 +379,7 @@ Ribbon.prototype.setThumbnailImage_ = function(thumbnail, item) { |
/** |
* Content change handler. |
* |
- * @param {Event} event Event. |
+ * @param {!Event} event Event. |
* @private |
*/ |
Ribbon.prototype.onContentChange_ = function(event) { |