Commit fb85136d authored by dpapad's avatar dpapad Committed by Commit Bot

MD Extensions: Surface ExtensionInfo runtimeWarnings in the UI.

Bug: 800773
Cq-Include-Trybots: master.tryserver.chromium.linux:closure_compilation
Change-Id: I546e25b3748e455449ee3c0a541c5a6658ee2504
Reviewed-on: https://chromium-review.googlesource.com/884847
Commit-Queue: Demetrios Papadopoulos <dpapad@chromium.org>
Reviewed-by: default avatarDevlin <rdevlin.cronin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#532246}
parent 0f6bb090
......@@ -256,6 +256,12 @@
</div>
<template is="dom-if" if="[[hasWarnings_(data.*)]]">
<div id="warnings" >
<div id="runtime-warnings" aria-describedby="a11yAssociation"
hidden$="[[!data.runtimeWarnings.length]]">
<template is="dom-repeat" items="[[data.runtimeWarnings]]">
[[item]]
</template>
</div>
<div id="suspicious-warning" aria-describedby="a11yAssociation"
hidden$="[[!data.disableReasons.suspiciousInstall]]">
$i18n{itemSuspiciousInstall}
......
......@@ -352,7 +352,7 @@ cr.define('extensions', function() {
hasWarnings_: function() {
return this.data.disableReasons.corruptInstall ||
this.data.disableReasons.suspiciousInstall ||
!!this.data.blacklistText;
this.data.runtimeWarnings.length > 0 || !!this.data.blacklistText;
},
/**
......
......@@ -242,6 +242,7 @@ cr.define('extensions', function() {
case EventType.ERROR_ADDED:
case EventType.ERRORS_REMOVED:
case EventType.PREFS_CHANGED:
case EventType.WARNINGS_CHANGED:
// |extensionInfo| can be undefined in the case of an extension
// being unloaded right before uninstallation. There's nothing to do
// here.
......
......@@ -220,50 +220,49 @@ cr.define('extension_item_tests', function() {
});
test(assert(TestNames.Warnings), function() {
var hasCorruptedWarning = function() {
return extension_test_util.isVisible(item, '#corrupted-warning');
};
var hasSuspiciousWarning = function() {
return extension_test_util.isVisible(item, '#suspicious-warning');
};
var hasBlacklistedWarning = function() {
return extension_test_util.isVisible(item, '#blacklisted-warning');
};
const kCorrupt = 1 << 0;
const kSuspicious = 1 << 1;
const kBlacklisted = 1 << 2;
const kRuntime = 1 << 3;
function assertWarnings(mask) {
const isVisible = extension_test_util.isVisible;
assertEquals(
!!(mask & kCorrupt), isVisible(item, '#corrupted-warning'));
assertEquals(
!!(mask & kSuspicious), isVisible(item, '#suspicious-warning'));
assertEquals(
!!(mask & kBlacklisted), isVisible(item, '#blacklisted-warning'));
assertEquals(!!(mask & kRuntime), isVisible(item, '#runtime-warnings'));
}
expectFalse(hasCorruptedWarning());
expectFalse(hasSuspiciousWarning());
expectFalse(hasBlacklistedWarning());
assertWarnings(0);
item.set('data.disableReasons.corruptInstall', true);
Polymer.dom.flush();
expectTrue(hasCorruptedWarning());
expectFalse(hasSuspiciousWarning());
expectFalse(hasBlacklistedWarning());
assertWarnings(kCorrupt);
item.set('data.disableReasons.suspiciousInstall', true);
Polymer.dom.flush();
expectTrue(hasCorruptedWarning());
expectTrue(hasSuspiciousWarning());
expectFalse(hasBlacklistedWarning());
assertWarnings(kCorrupt | kSuspicious);
item.set('data.blacklistText', 'This item is blacklisted');
Polymer.dom.flush();
expectTrue(hasCorruptedWarning());
expectTrue(hasSuspiciousWarning());
expectTrue(hasBlacklistedWarning());
assertWarnings(kCorrupt | kSuspicious | kBlacklisted);
item.set('data.blacklistText', undefined);
Polymer.dom.flush();
expectTrue(hasCorruptedWarning());
expectTrue(hasSuspiciousWarning());
expectFalse(hasBlacklistedWarning());
assertWarnings(kCorrupt | kSuspicious);
item.set('data.runtimeWarnings', ['Dummy warning']);
Polymer.dom.flush();
assertWarnings(kCorrupt | kSuspicious | kRuntime);
item.set('data.disableReasons.corruptInstall', false);
item.set('data.disableReasons.suspiciousInstall', false);
item.set('data.runtimeWarnings', []);
Polymer.dom.flush();
expectFalse(hasCorruptedWarning());
expectFalse(hasSuspiciousWarning());
expectFalse(hasBlacklistedWarning());
assertWarnings(0);
});
test(assert(TestNames.SourceIndicator), function() {
......
......@@ -210,6 +210,7 @@ cr.define('extension_test_util', function() {
manifestErrors: [],
name: 'Wonderful Extension',
runtimeErrors: [],
runtimeWarnings: [],
permissions: [],
state: 'ENABLED',
type: 'EXTENSION',
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment