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

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

Issue 1025703003: [Extensions Page] Fix the flicker of "No extensions" before extension data loads (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <include src="../../../../ui/webui/resources/js/cr/ui/focus_row.js"> 5 <include src="../../../../ui/webui/resources/js/cr/ui/focus_row.js">
6 <include src="../../../../ui/webui/resources/js/cr/ui/focus_grid.js"> 6 <include src="../../../../ui/webui/resources/js/cr/ui/focus_grid.js">
7 <include src="../uber/uber_utils.js"> 7 <include src="../uber/uber_utils.js">
8 <include src="extension_code.js"> 8 <include src="extension_code.js">
9 <include src="extension_commands_overlay.js"> 9 <include src="extension_commands_overlay.js">
10 <include src="extension_error_overlay.js"> 10 <include src="extension_error_overlay.js">
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 * Perform initial setup. 126 * Perform initial setup.
127 */ 127 */
128 initialize: function() { 128 initialize: function() {
129 uber.onContentFrameLoaded(); 129 uber.onContentFrameLoaded();
130 cr.ui.FocusOutlineManager.forDocument(document); 130 cr.ui.FocusOutlineManager.forDocument(document);
131 measureCheckboxStrings(); 131 measureCheckboxStrings();
132 132
133 // Set the title. 133 // Set the title.
134 uber.setTitle(loadTimeData.getString('extensionSettings')); 134 uber.setTitle(loadTimeData.getString('extensionSettings'));
135 135
136 var extensionList = $('extension-settings-list');
137 ExtensionList.decorate(extensionList);
138
136 // This will request the data to show on the page and will get a response 139 // This will request the data to show on the page and will get a response
137 // back in returnExtensionsData. 140 // back in returnExtensionsData.
138 chrome.send('extensionSettingsRequestExtensionsData'); 141 chrome.send('extensionSettingsRequestExtensionsData');
139 142
140 var extensionLoader = extensions.ExtensionLoader.getInstance(); 143 var extensionLoader = extensions.ExtensionLoader.getInstance();
141 144
142 $('toggle-dev-on').addEventListener('change', function(e) { 145 $('toggle-dev-on').addEventListener('change', function(e) {
143 this.updateDevControlsVisibility_(true); 146 this.updateDevControlsVisibility_(true);
144 $('extension-settings-list').updateFocusableElements(); 147 extensionList.updateFocusableElements();
145 chrome.send('extensionSettingsToggleDeveloperMode', 148 chrome.send('extensionSettingsToggleDeveloperMode',
146 [$('toggle-dev-on').checked]); 149 [$('toggle-dev-on').checked]);
147 }.bind(this)); 150 }.bind(this));
148 151
149 window.addEventListener('resize', function() { 152 window.addEventListener('resize', function() {
150 this.updateDevControlsVisibility_(false); 153 this.updateDevControlsVisibility_(false);
151 }.bind(this)); 154 }.bind(this));
152 155
153 // Set up the three dev mode buttons (load unpacked, pack and update). 156 // Set up the three dev mode buttons (load unpacked, pack and update).
154 $('load-unpacked').addEventListener('click', function(e) { 157 $('load-unpacked').addEventListener('click', function(e) {
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 }.bind(this)); 294 }.bind(this));
292 }, 295 },
293 }; 296 };
294 297
295 /** 298 /**
296 * Called by the dom_ui_ to re-populate the page with data representing 299 * Called by the dom_ui_ to re-populate the page with data representing
297 * the current state of installed extensions. 300 * the current state of installed extensions.
298 * @param {ExtensionDataResponse} extensionsData 301 * @param {ExtensionDataResponse} extensionsData
299 */ 302 */
300 ExtensionSettings.returnExtensionsData = function(extensionsData) { 303 ExtensionSettings.returnExtensionsData = function(extensionsData) {
301 // We can get called many times in short order, thus we need to
302 // be careful to remove the 'finished loading' timeout.
303 if (this.loadingTimeout_)
304 window.clearTimeout(this.loadingTimeout_);
305 document.documentElement.classList.add('loading');
306 this.loadingTimeout_ = window.setTimeout(function() {
307 document.documentElement.classList.remove('loading');
308 }, 0);
309
310 webuiResponded = true; 304 webuiResponded = true;
311 305
312 var supervised = extensionsData.profileIsSupervised; 306 var supervised = extensionsData.profileIsSupervised;
313 307
314 var pageDiv = $('extension-settings'); 308 var pageDiv = $('extension-settings');
315 pageDiv.classList.toggle('profile-is-supervised', supervised); 309 pageDiv.classList.toggle('profile-is-supervised', supervised);
316 pageDiv.classList.toggle('showing-banner', supervised); 310 pageDiv.classList.toggle('showing-banner', supervised);
317 311
318 var devControlsCheckbox = $('toggle-dev-on'); 312 var devControlsCheckbox = $('toggle-dev-on');
319 devControlsCheckbox.checked = extensionsData.developerMode; 313 devControlsCheckbox.checked = extensionsData.developerMode;
320 devControlsCheckbox.disabled = supervised; 314 devControlsCheckbox.disabled = supervised;
321 315
322 var instance = ExtensionSettings.getInstance(); 316 var instance = ExtensionSettings.getInstance();
323 instance.displayPromo_ = extensionsData.promoteAppsDevTools; 317 instance.displayPromo_ = extensionsData.promoteAppsDevTools;
324 instance.updateDevControlsVisibility_(false); 318 instance.updateDevControlsVisibility_(false);
325 319
326 $('load-unpacked').disabled = extensionsData.loadUnpackedDisabled; 320 $('load-unpacked').disabled = extensionsData.loadUnpackedDisabled;
327 321 var extensionList = $('extension-settings-list');
328 ExtensionList.prototype.data_ = extensionsData; 322 extensionList.updateExtensionsData(
329 ExtensionList.decorate($('extension-settings-list')); 323 extensionsData.incognitoAvailable,
324 extensionsData.enableAppInfoDialog).then(function() {
325 var hasExtensions = extensionList.getNumExtensions() != 0;
326 extensionList.hidden = !hasExtensions;
327 $('no-extensions').hidden = hasExtensions;
328 $('footer-section').hidden = !hasExtensions;
329 });
330 }; 330 };
331 331
332 /** 332 /**
333 * Returns the current overlay or null if one does not exist. 333 * Returns the current overlay or null if one does not exist.
334 * @return {Element} The overlay element. 334 * @return {Element} The overlay element.
335 */ 335 */
336 ExtensionSettings.getCurrentOverlay = function() { 336 ExtensionSettings.getCurrentOverlay = function() {
337 return document.querySelector('#overlay .page.showing'); 337 return document.querySelector('#overlay .page.showing');
338 }; 338 };
339 339
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 427
428 // Export 428 // Export
429 return { 429 return {
430 ExtensionSettings: ExtensionSettings 430 ExtensionSettings: ExtensionSettings
431 }; 431 };
432 }); 432 });
433 433
434 window.addEventListener('load', function(e) { 434 window.addEventListener('load', function(e) {
435 extensions.ExtensionSettings.getInstance().initialize(); 435 extensions.ExtensionSettings.getInstance().initialize();
436 }); 436 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698