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

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

Issue 20728002: Fix issue: icons for the apps are flickering while launching. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Nit fix. Created 7 years, 5 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 | « no previous file | 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 (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 cr.define('options', function() { 5 cr.define('options', function() {
6 'use strict'; 6 'use strict';
7 7
8 /** 8 /**
9 * A lookup helper function to find the first node that has an id (starting 9 * A lookup helper function to find the first node that has an id (starting
10 * at |node| and going up the parent chain). 10 * at |node| and going up the parent chain).
(...skipping 14 matching lines...) Expand all
25 */ 25 */
26 var ExtensionsList = cr.ui.define('div'); 26 var ExtensionsList = cr.ui.define('div');
27 27
28 /** 28 /**
29 * @type {Object.<string, boolean>} A map from extension id to a boolean 29 * @type {Object.<string, boolean>} A map from extension id to a boolean
30 * indicating whether the incognito warning is showing. This persists 30 * indicating whether the incognito warning is showing. This persists
31 * between calls to decorate. 31 * between calls to decorate.
32 */ 32 */
33 var butterBarVisibility = {}; 33 var butterBarVisibility = {};
34 34
35 /**
36 * @type {Object.<string, string>} A map from extension id to a icon url
37 * with timestamp. The timestamp is a query string to prevent the
38 * icon from caching and is recorded when the user click the 'Reload'
39 * link. It is used to refresh the icon of an unpacked extension.
40 * This persists between calls to decorate.
41 */
42 var extensionReloadedIconURL = {};
43
35 ExtensionsList.prototype = { 44 ExtensionsList.prototype = {
36 __proto__: HTMLDivElement.prototype, 45 __proto__: HTMLDivElement.prototype,
37 46
38 /** @override */ 47 /** @override */
39 decorate: function() { 48 decorate: function() {
40 this.textContent = ''; 49 this.textContent = '';
41 50
42 this.showExtensionNodes_(); 51 this.showExtensionNodes_();
43 }, 52 },
44 53
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 node.classList.add('inactive-extension'); 99 node.classList.add('inactive-extension');
91 100
92 if (!extension.userModifiable) 101 if (!extension.userModifiable)
93 node.classList.add('may-not-disable'); 102 node.classList.add('may-not-disable');
94 103
95 var idToHighlight = this.getIdQueryParam_(); 104 var idToHighlight = this.getIdQueryParam_();
96 if (node.id == idToHighlight) 105 if (node.id == idToHighlight)
97 node.classList.add('extension-highlight'); 106 node.classList.add('extension-highlight');
98 107
99 var item = node.querySelector('.extension-list-item'); 108 var item = node.querySelector('.extension-list-item');
100 var extensionIconUrl = extension.icon; 109 if (extensionReloadedIconURL[extension.id]) {
101 if (extension.allow_reload) 110 item.style.backgroundImage =
102 extensionIconUrl = extension.icon + '?' + Date.now(); 111 'url(' + extensionReloadedIconURL[extension.id] + ')';
103 item.style.backgroundImage = 'url(' + extensionIconUrl + ')'; 112 } else {
113 item.style.backgroundImage = 'url(' + extension.icon + ')';
114 }
104 115
105 var title = node.querySelector('.extension-title'); 116 var title = node.querySelector('.extension-title');
106 title.textContent = extension.name; 117 title.textContent = extension.name;
107 118
108 var version = node.querySelector('.extension-version'); 119 var version = node.querySelector('.extension-version');
109 version.textContent = extension.version; 120 version.textContent = extension.version;
110 121
111 var locationText = node.querySelector('.location-text'); 122 var locationText = node.querySelector('.location-text');
112 locationText.textContent = extension.locationText; 123 locationText.textContent = extension.locationText;
113 124
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 extension.homepageProvided ? 'extensionSettingsVisitWebsite' : 186 extension.homepageProvided ? 'extensionSettingsVisitWebsite' :
176 'extensionSettingsVisitWebStore'); 187 'extensionSettingsVisitWebStore');
177 siteLink.hidden = false; 188 siteLink.hidden = false;
178 } 189 }
179 190
180 if (extension.allow_reload) { 191 if (extension.allow_reload) {
181 // The 'Reload' link. 192 // The 'Reload' link.
182 var reload = node.querySelector('.reload-link'); 193 var reload = node.querySelector('.reload-link');
183 reload.addEventListener('click', function(e) { 194 reload.addEventListener('click', function(e) {
184 chrome.send('extensionSettingsReload', [extension.id]); 195 chrome.send('extensionSettingsReload', [extension.id]);
196 extensionReloadedIconURL[extension.id] = extension.icon + '?' +
197 new Date().getTime();
not at google - send to devlin 2013/07/26 16:48:07 if the icon changes will this assignment happen be
zhchbin 2013/07/29 15:43:59 However, I couldn't make sure I got your meaning o
not at google - send to devlin 2013/07/29 17:26:24 Like this: 1. Extension changes its icon URL in t
185 }); 198 });
186 reload.hidden = false; 199 reload.hidden = false;
187 200
188 if (extension.is_platform_app) { 201 if (extension.is_platform_app) {
189 // The 'Launch' link. 202 // The 'Launch' link.
190 var launch = node.querySelector('.launch-link'); 203 var launch = node.querySelector('.launch-link');
191 launch.addEventListener('click', function(e) { 204 launch.addEventListener('click', function(e) {
192 chrome.send('extensionSettingsLaunch', [extension.id]); 205 chrome.send('extensionSettingsLaunch', [extension.id]);
193 }); 206 });
194 launch.hidden = false; 207 launch.hidden = false;
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 } 331 }
319 332
320 this.appendChild(node); 333 this.appendChild(node);
321 } 334 }
322 }; 335 };
323 336
324 return { 337 return {
325 ExtensionsList: ExtensionsList 338 ExtensionsList: ExtensionsList
326 }; 339 };
327 }); 340 });
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698