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

Side by Side Diff: chrome/browser/resources/md_downloads/manager.js

Issue 1303363004: MD Downloads: remove per-item scrollbarWidth handling (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: thank you, ojan! Created 5 years, 3 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
« no previous file with comments | « chrome/browser/resources/md_downloads/manager.css ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 cr.define('downloads', function() { 5 cr.define('downloads', function() {
6 var Manager = Polymer({ 6 var Manager = Polymer({
7 is: 'downloads-manager', 7 is: 'downloads-manager',
8 8
9 created: function() { 9 created: function() {
10 /** @private {!downloads.ActionService} */ 10 /** @private {!downloads.ActionService} */
11 this.actionService_ = new downloads.ActionService; 11 this.actionService_ = new downloads.ActionService;
12 }, 12 },
13 13
14 properties: { 14 properties: {
15 hasDownloads_: { 15 hasDownloads_: {
16 type: Boolean, 16 type: Boolean,
17 value: false, 17 value: false,
18 }, 18 },
19 }, 19 },
20 20
21 ready: function() {
22 window.addEventListener('resize', this.onResize_.bind(this));
23 // onResize_() doesn't need to be called immediately here because it's
24 // guaranteed to be called again shortly when items are received.
25 },
26
27 /** 21 /**
28 * @return {number} A guess at how many items could be visible at once. 22 * @return {number} A guess at how many items could be visible at once.
29 * @private 23 * @private
30 */ 24 */
31 guesstimateNumberOfVisibleItems_: function() { 25 guesstimateNumberOfVisibleItems_: function() {
32 var toolbarHeight = this.$.toolbar.offsetHeight; 26 var toolbarHeight = this.$.toolbar.offsetHeight;
33 return Math.floor((window.innerHeight - toolbarHeight) / 46) + 1; 27 return Math.floor((window.innerHeight - toolbarHeight) / 46) + 1;
34 }, 28 },
35 29
36 /** 30 /**
(...skipping 29 matching lines...) Expand all
66 60
67 cr.ui.decorate('command', cr.ui.Command); 61 cr.ui.decorate('command', cr.ui.Command);
68 document.addEventListener('canExecute', this.onCanExecute_.bind(this)); 62 document.addEventListener('canExecute', this.onCanExecute_.bind(this));
69 document.addEventListener('command', this.onCommand_.bind(this)); 63 document.addEventListener('command', this.onCommand_.bind(this));
70 64
71 // Shows all downloads. 65 // Shows all downloads.
72 this.actionService_.search(''); 66 this.actionService_.search('');
73 }, 67 },
74 68
75 /** @private */ 69 /** @private */
76 onResize_: function() {
77 // TODO(dbeam): expose <paper-header-panel>'s #mainContainer in Polymer.
78 var container = this.$.panel.$.mainContainer;
79 var scrollbarWidth = container.offsetWidth - container.clientWidth;
80 this.items_.forEach(function(item) {
81 item.scrollbarWidth = scrollbarWidth;
82 });
83 },
84
85 /** @private */
86 rebuildFocusGrid_: function() { 70 rebuildFocusGrid_: function() {
87 var activeElement = this.shadowRoot.activeElement; 71 var activeElement = this.shadowRoot.activeElement;
88 72
89 var activeItem; 73 var activeItem;
90 if (activeElement && activeElement.tagName == 'download-item') 74 if (activeElement && activeElement.tagName == 'download-item')
91 activeItem = activeElement; 75 activeItem = activeElement;
92 76
93 var activeControl = activeItem && activeItem.shadowRoot.activeElement; 77 var activeControl = activeItem && activeItem.shadowRoot.activeElement;
94 78
95 /** @private {!cr.ui.FocusGrid} */ 79 /** @private {!cr.ui.FocusGrid} */
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 } 163 }
180 // If |before| is null, |item| will just get added at the end. 164 // If |before| is null, |item| will just get added at the end.
181 this.$['downloads-list'].insertBefore(item, before); 165 this.$['downloads-list'].insertBefore(item, before);
182 } 166 }
183 167
184 this.hasDownloads_ = this.size_() > 0; 168 this.hasDownloads_ = this.size_() > 0;
185 169
186 if (loadTimeData.getBoolean('allowDeletingHistory')) 170 if (loadTimeData.getBoolean('allowDeletingHistory'))
187 this.$.toolbar.downloadsShowing = this.hasDownloads_; 171 this.$.toolbar.downloadsShowing = this.hasDownloads_;
188 172
189 this.onResize_();
190 this.$.panel.classList.remove('loading'); 173 this.$.panel.classList.remove('loading');
191 174
192 var allReady = this.items_.map(function(i) { return i.readyPromise; }); 175 var allReady = this.items_.map(function(i) { return i.readyPromise; });
193 Promise.all(allReady).then(this.rebuildFocusGrid_.bind(this)); 176 Promise.all(allReady).then(this.rebuildFocusGrid_.bind(this));
194 }, 177 },
195 178
196 /** 179 /**
197 * @param {!downloads.Data} data 180 * @param {!downloads.Data} data
198 * @private 181 * @private
199 */ 182 */
200 updateItem_: function(data) { 183 updateItem_: function(data) {
201 var item = this.idMap_[data.id]; 184 var item = this.idMap_[data.id];
202 185
203 var activeControl = this.shadowRoot.activeElement == item ? 186 var activeControl = this.shadowRoot.activeElement == item ?
204 item.shadowRoot.activeElement : null; 187 item.shadowRoot.activeElement : null;
205 188
206 item.update(data); 189 item.update(data);
207 190
208 if (activeControl && !cr.ui.FocusRow.isFocusable(activeControl)) { 191 if (activeControl && !cr.ui.FocusRow.isFocusable(activeControl)) {
209 var focusRow = this.focusGrid_.getRowForRoot(item.content); 192 var focusRow = this.focusGrid_.getRowForRoot(item.content);
210 focusRow.getEquivalentElement(activeControl).focus(); 193 focusRow.getEquivalentElement(activeControl).focus();
211 } 194 }
212
213 this.onResize_();
214 }, 195 },
215 }); 196 });
216 197
217 Manager.size = function() { 198 Manager.size = function() {
218 return document.querySelector('downloads-manager').size_(); 199 return document.querySelector('downloads-manager').size_();
219 }; 200 };
220 201
221 Manager.updateAll = function(list) { 202 Manager.updateAll = function(list) {
222 document.querySelector('downloads-manager').updateAll_(list); 203 document.querySelector('downloads-manager').updateAll_(list);
223 }; 204 };
224 205
225 Manager.updateItem = function(item) { 206 Manager.updateItem = function(item) {
226 document.querySelector('downloads-manager').updateItem_(item); 207 document.querySelector('downloads-manager').updateItem_(item);
227 }; 208 };
228 209
229 Manager.onLoad = function() { 210 Manager.onLoad = function() {
230 document.querySelector('downloads-manager').onLoad_(); 211 document.querySelector('downloads-manager').onLoad_();
231 }; 212 };
232 213
233 return {Manager: Manager}; 214 return {Manager: Manager};
234 }); 215 });
235 216
236 window.addEventListener('load', downloads.Manager.onLoad); 217 window.addEventListener('load', downloads.Manager.onLoad);
OLDNEW
« no previous file with comments | « chrome/browser/resources/md_downloads/manager.css ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698