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/extensions/extension_list.js

Issue 1016413004: [Extensions] Update Error Console UI (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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="extension_error.js"> 5 <include src="extension_error.js">
6 6
7 /////////////////////////////////////////////////////////////////////////////// 7 ///////////////////////////////////////////////////////////////////////////////
8 // ExtensionFocusRow: 8 // ExtensionFocusRow:
9 9
10 /** 10 /**
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 chrome.developerPrivate.onItemStateChanged.addListener( 238 chrome.developerPrivate.onItemStateChanged.addListener(
239 function(eventData) { 239 function(eventData) {
240 var EventType = chrome.developerPrivate.EventType; 240 var EventType = chrome.developerPrivate.EventType;
241 switch (eventData.event_type) { 241 switch (eventData.event_type) {
242 case EventType.VIEW_REGISTERED: 242 case EventType.VIEW_REGISTERED:
243 case EventType.VIEW_UNREGISTERED: 243 case EventType.VIEW_UNREGISTERED:
244 case EventType.INSTALLED: 244 case EventType.INSTALLED:
245 case EventType.LOADED: 245 case EventType.LOADED:
246 case EventType.UNLOADED: 246 case EventType.UNLOADED:
247 case EventType.ERROR_ADDED: 247 case EventType.ERROR_ADDED:
248 case EventType.ERRORS_REMOVED:
248 case EventType.PREFS_CHANGED: 249 case EventType.PREFS_CHANGED:
249 if (eventData.extensionInfo) 250 if (eventData.extensionInfo)
250 this.updateExtension_(eventData.extensionInfo); 251 this.updateExtension_(eventData.extensionInfo);
251 break; 252 break;
252 case EventType.UNINSTALLED: 253 case EventType.UNINSTALLED:
253 var childNode = $(eventData.item_id); 254 var childNode = $(eventData.item_id);
254 childNode.parentNode.removeChild(childNode); 255 childNode.parentNode.removeChild(childNode);
255 break; 256 break;
256 default: 257 default:
257 assertNotReached(); 258 assertNotReached();
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 row.setupColumn('.reload-link', 'localReload', 'click', function(e) { 482 row.setupColumn('.reload-link', 'localReload', 'click', function(e) {
482 chrome.developerPrivate.reload(extension.id, {failQuietly: true}); 483 chrome.developerPrivate.reload(extension.id, {failQuietly: true});
483 extensionReloadedTimestamp[extension.id] = Date.now(); 484 extensionReloadedTimestamp[extension.id] = Date.now();
484 }); 485 });
485 486
486 // The 'Launch' link. 487 // The 'Launch' link.
487 row.setupColumn('.launch-link', 'launch', 'click', function(e) { 488 row.setupColumn('.launch-link', 'launch', 'click', function(e) {
488 chrome.management.launchApp(extension.id); 489 chrome.management.launchApp(extension.id);
489 }); 490 });
490 491
492 row.setupColumn('.errors-link', 'errors', 'click', function(e) {
493 var extensionId = extension.id;
494 assert(this.extensions_.length > 0);
495 var newEx = this.extensions_.filter(function(e) {
496 return e.state == chrome.developerPrivate.ExtensionState.ENABLED &&
497 e.id == extensionId;
498 })[0];
499 var errors = newEx.manifestErrors.concat(newEx.runtimeErrors);
500 extensions.ExtensionErrorOverlay.getInstance().setErrorsAndShowOverlay(
501 errors, extensionId, newEx.name);
502 }.bind(this));
503
491 // The 'Reload' terminated link. 504 // The 'Reload' terminated link.
492 row.setupColumn('.terminated-reload-link', 'terminatedReload', 'click', 505 row.setupColumn('.terminated-reload-link', 'terminatedReload', 'click',
493 function(e) { 506 function(e) {
494 chrome.developerPrivate.reload(extension.id, {failQuietly: true}); 507 chrome.developerPrivate.reload(extension.id, {failQuietly: true});
495 }); 508 });
496 509
497 // The 'Repair' corrupted link. 510 // The 'Repair' corrupted link.
498 row.setupColumn('.corrupted-repair-button', 'repair', 'click', 511 row.setupColumn('.corrupted-repair-button', 'repair', 'click',
499 function(e) { 512 function(e) {
500 chrome.developerPrivate.repairExtension(extension.id); 513 chrome.developerPrivate.repairExtension(extension.id);
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
681 extension.location == chrome.developerPrivate.Location.UNPACKED; 694 extension.location == chrome.developerPrivate.Location.UNPACKED;
682 // The 'Reload' link. 695 // The 'Reload' link.
683 this.updateVisibility_(row, '.reload-link', isUnpacked); 696 this.updateVisibility_(row, '.reload-link', isUnpacked);
684 697
685 // The 'Launch' link. 698 // The 'Launch' link.
686 this.updateVisibility_( 699 this.updateVisibility_(
687 row, '.launch-link', 700 row, '.launch-link',
688 isUnpacked && extension.type == 701 isUnpacked && extension.type ==
689 chrome.developerPrivate.ExtensionType.PLATFORM_APP); 702 chrome.developerPrivate.ExtensionType.PLATFORM_APP);
690 703
704 // The 'Errors' link.
705 var hasErrors = extension.runtimeErrors.length ||
706 extension.manifestErrors.length;
707 this.updateVisibility_(row, '.errors-link', hasErrors, function(item) {
708 var Level = chrome.developerPrivate.ErrorLevel;
709 var map = {};
710 map[Level.LOG] = {weight: 0, name: 'extension-error-info-icon'};
711 map[Level.WARN] = {weight: 1, name: 'extension-error-warning-icon'};
712 map[Level.ERROR] = {weight: 2, name: 'extension-error-fatal-icon'};
713
714 // Find the highest severity of all the errors; manifest errors all have
715 // a 'warning' level severity.
716 var highSeverity = extension.runtimeErrors.reduce(
717 function(prev, error) {
718 return map[error.severity].weight > map[prev].weight ?
719 error.severity : prev;
720 }, extension.manifestErrors.length ? Level.WARN : Level.LOG);
721
722 // Adjust the class on the icon.
723 var icon = item.querySelector('.extension-error-icon');
724 icon.className = 'extension-error-icon';
725 icon.classList.add(map[highSeverity].name);
726 });
727
691 // The 'Reload' terminated link. 728 // The 'Reload' terminated link.
692 var isTerminated = 729 var isTerminated =
693 extension.state == chrome.developerPrivate.ExtensionState.TERMINATED; 730 extension.state == chrome.developerPrivate.ExtensionState.TERMINATED;
694 this.updateVisibility_(row, '.terminated-reload-link', isTerminated); 731 this.updateVisibility_(row, '.terminated-reload-link', isTerminated);
695 732
696 // The 'Repair' corrupted link. 733 // The 'Repair' corrupted link.
697 var canRepair = !isTerminated && 734 var canRepair = !isTerminated &&
698 extension.disableReasons.corruptInstall && 735 extension.disableReasons.corruptInstall &&
699 extension.location == 736 extension.location ==
700 chrome.developerPrivate.Location.FROM_STORE; 737 chrome.developerPrivate.Location.FROM_STORE;
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
866 extension.runtimeWarnings.length > 0, 903 extension.runtimeWarnings.length > 0,
867 function(item) { 904 function(item) {
868 var warningList = item.querySelector('ul'); 905 var warningList = item.querySelector('ul');
869 warningList.textContent = ''; 906 warningList.textContent = '';
870 extension.runtimeWarnings.forEach(function(warning) { 907 extension.runtimeWarnings.forEach(function(warning) {
871 var li = document.createElement('li'); 908 var li = document.createElement('li');
872 warningList.appendChild(li).innerText = warning; 909 warningList.appendChild(li).innerText = warning;
873 }); 910 });
874 }); 911 });
875 912
876 // If the ErrorConsole is enabled, we should have manifest and/or runtime
877 // errors. Otherwise, we may have install warnings. We should not have
878 // both ErrorConsole errors and install warnings.
879 // Errors.
880 this.updateErrors_(row.querySelector('.manifest-errors'),
881 'dev-manifestErrors', extension.manifestErrors);
882 this.updateErrors_(row.querySelector('.runtime-errors'),
883 'dev-runtimeErrors', extension.runtimeErrors);
884
885 // Install warnings. 913 // Install warnings.
886 this.updateVisibility_(row, '.install-warnings', 914 this.updateVisibility_(row, '.install-warnings',
887 extension.installWarnings.length > 0, 915 extension.installWarnings.length > 0,
888 function(item) { 916 function(item) {
889 var installWarningList = item.querySelector('ul'); 917 var installWarningList = item.querySelector('ul');
890 installWarningList.textContent = ''; 918 installWarningList.textContent = '';
891 if (extension.installWarnings) { 919 if (extension.installWarnings) {
892 extension.installWarnings.forEach(function(warning) { 920 extension.installWarnings.forEach(function(warning) {
893 var li = document.createElement('li'); 921 var li = document.createElement('li');
894 li.innerText = warning; 922 li.innerText = warning;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
934 * @private 962 * @private
935 */ 963 */
936 updateVisibility_: function(node, query, visible, opt_shownCallback) { 964 updateVisibility_: function(node, query, visible, opt_shownCallback) {
937 var item = assert(node.querySelector(query)); 965 var item = assert(node.querySelector(query));
938 item.hidden = !visible; 966 item.hidden = !visible;
939 if (visible && opt_shownCallback) 967 if (visible && opt_shownCallback)
940 opt_shownCallback(item); 968 opt_shownCallback(item);
941 }, 969 },
942 970
943 /** 971 /**
944 * Updates an element to show a list of errors.
945 * @param {Element} panel An element to hold the errors.
946 * @param {string} columnType A tag used to identify the column when
947 * changing focus.
948 * @param {Array<RuntimeError|ManifestError>|undefined} errors The errors
949 * to be displayed.
950 * @private
951 */
952 updateErrors_: function(panel, columnType, errors) {
953 // TODO(hcarmona): Look into updating the ExtensionErrorList rather than
954 // rebuilding it every time.
955 panel.hidden = !errors || errors.length == 0;
956 panel.textContent = '';
957
958 if (panel.hidden)
959 return;
960
961 var errorList =
962 new extensions.ExtensionErrorList(assertInstanceof(errors, Array));
963
964 panel.appendChild(errorList);
965
966 var list = errorList.getErrorListElement();
967 if (list)
968 list.setAttribute('column-type', columnType + 'list');
969
970 var button = errorList.getToggleElement();
971 if (button)
972 button.setAttribute('column-type', columnType + 'button');
973 },
974
975 /**
976 * Opens the extension options overlay for the extension with the given id. 972 * Opens the extension options overlay for the extension with the given id.
977 * @param {string} extensionId The id of extension whose options page should 973 * @param {string} extensionId The id of extension whose options page should
978 * be displayed. 974 * be displayed.
979 * @param {boolean} scroll Whether the page should scroll to the extension 975 * @param {boolean} scroll Whether the page should scroll to the extension
980 * @private 976 * @private
981 */ 977 */
982 showEmbeddedExtensionOptions_: function(extensionId, scroll) { 978 showEmbeddedExtensionOptions_: function(extensionId, scroll) {
983 if (this.optionsShown_) 979 if (this.optionsShown_)
984 return; 980 return;
985 981
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
1056 var nextExt = this.extensions_[this.extensions_.indexOf(extension) + 1]; 1052 var nextExt = this.extensions_[this.extensions_.indexOf(extension) + 1];
1057 this.createNode_(extension, nextExt ? $(nextExt.id) : null); 1053 this.createNode_(extension, nextExt ? $(nextExt.id) : null);
1058 } 1054 }
1059 } 1055 }
1060 }; 1056 };
1061 1057
1062 return { 1058 return {
1063 ExtensionList: ExtensionList 1059 ExtensionList: ExtensionList
1064 }; 1060 };
1065 }); 1061 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698