Commit 501d93e2 authored by Hector Carmona's avatar Hector Carmona Committed by Commit Bot

MD Extensions: Error Console: Move code section closer to stack trace.

This will make the code/error association very explicit by keeping the
code snippet near the stack trace inside the error that is being
investigated.

See bug for screenshots/video.

Bug: 800994
Cq-Include-Trybots: master.tryserver.chromium.linux:closure_compilation
Change-Id: I7a781bd304b498edf2a5b19d58635824a54a575b
Reviewed-on: https://chromium-review.googlesource.com/861915
Commit-Queue: Hector Carmona <hcarmona@chromium.org>
Reviewed-by: default avatarScott Chen <scottchen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#530354}
parent 2b30b243
...@@ -72,7 +72,7 @@ ...@@ -72,7 +72,7 @@
margin: 0 10px; margin: 0 10px;
} }
#errors-list { #errorsList {
min-height: 100px; min-height: 100px;
} }
...@@ -131,7 +131,7 @@ ...@@ -131,7 +131,7 @@
background: var(--google-blue-100); background: var(--google-blue-100);
} }
.dev-tool-button { .devtool-button {
margin-bottom: 20px; margin-bottom: 20px;
max-width: 300px; max-width: 300px;
} }
...@@ -139,6 +139,7 @@ ...@@ -139,6 +139,7 @@
extensions-code-section { extensions-code-section {
background: white; background: white;
height: 200px; height: 200px;
margin-bottom: 20px;
} }
/* TODO(scottchen): extract to shared location from settings. */ /* TODO(scottchen): extract to shared location from settings. */
...@@ -184,10 +185,7 @@ ...@@ -184,10 +185,7 @@
</paper-button> </paper-button>
</div> </div>
<div class="section"> <div class="section">
<extensions-code-section id="code-section" <div id="errorsList">
could-not-display-code="$i18n{noErrorsToShow}">
</extensions-code-section>
<div id="errors-list">
<template is="dom-repeat" items="[[entries_]]"> <template is="dom-repeat" items="[[entries_]]">
<div class="item-container"> <div class="item-container">
<div class$="error-item <div class$="error-item
...@@ -201,8 +199,7 @@ ...@@ -201,8 +199,7 @@
<div id$="[[item.id]]" class="error-message"> <div id$="[[item.id]]" class="error-message">
[[item.message]] [[item.message]]
</div> </div>
<div class$="cr-icon [[iconName_(index, selectedEntry_)]]" <div class$="cr-icon [[iconName_(index, selectedEntry_)]]">
hidden="[[!computeIsRuntimeError_(item)]]">
</div> </div>
</div> </div>
<div class="separator"></div> <div class="separator"></div>
...@@ -213,9 +210,10 @@ ...@@ -213,9 +210,10 @@
on-keydown="onDeleteErrorAction_"> on-keydown="onDeleteErrorAction_">
</button> </button>
</div> </div>
<template is="dom-if" if="[[computeIsRuntimeError_(item)]]"> <iron-collapse opened="[[isOpened_(index, selectedEntry_)]]">
<iron-collapse opened="[[isOpened_(index, selectedEntry_)]]"> <div class="devtools-controls">
<div class="devtools-controls"> <template is="dom-if"
if="[[computeIsRuntimeError_(item)]]">
<div class="details-heading"> <div class="details-heading">
$i18n{errorContext} $i18n{errorContext}
</div> </div>
...@@ -236,14 +234,21 @@ ...@@ -236,14 +234,21 @@
</li> </li>
</template> </template>
</ul> </ul>
<paper-button class="devtool-button action-button" </template>
disabled="[[!item.canInspect]]" <template is="dom-if"
on-tap="onDevToolButtonTap_"> if="[[isOpened_(index, selectedEntry_)]]">
$i18n{openInDevtool} <extensions-code-section code="[[code_]]"
</paper-button> could-not-display-code="$i18n{noErrorsToShow}">
</div> </extensions-code-section>
</iron-collapse> </template>
</template> <paper-button class="devtool-button action-button"
hidden$="[[!computeIsRuntimeError_(item)]]"
disabled="[[!item.canInspect]]"
on-tap="onDevToolButtonTap_">
$i18n{openInDevtool}
</paper-button>
</div>
</iron-collapse>
</div> </div>
</template> </template>
</div> </div>
......
...@@ -84,6 +84,9 @@ cr.define('extensions', function() { ...@@ -84,6 +84,9 @@ cr.define('extensions', function() {
/** @private {!Array<!(ManifestError|RuntimeError)>} */ /** @private {!Array<!(ManifestError|RuntimeError)>} */
entries_: Array, entries_: Array,
/** @private {?chrome.developerPrivate.RequestFileSourceResponse} */
code_: Object,
/** /**
* Index into |entries_|. * Index into |entries_|.
* @private * @private
...@@ -191,10 +194,10 @@ cr.define('extensions', function() { ...@@ -191,10 +194,10 @@ cr.define('extensions', function() {
* @private * @private
*/ */
onSelectedErrorChanged_: function() { onSelectedErrorChanged_: function() {
if (this.selectedEntry_ < 0) { this.code_ = null;
this.$['code-section'].code = null;
if (this.selectedEntry_ < 0)
return; return;
}
const error = this.getSelectedError(); const error = this.getSelectedError();
const args = { const args = {
...@@ -218,9 +221,7 @@ cr.define('extensions', function() { ...@@ -218,9 +221,7 @@ cr.define('extensions', function() {
null; null;
break; break;
} }
this.delegate.requestFileSource(args).then(code => { this.delegate.requestFileSource(args).then(code => this.code_ = code);
this.$['code-section'].code = code;
});
}, },
/** /**
...@@ -296,9 +297,7 @@ cr.define('extensions', function() { ...@@ -296,9 +297,7 @@ cr.define('extensions', function() {
pathSuffix: getRelativeUrl(frame.url, selectedError), pathSuffix: getRelativeUrl(frame.url, selectedError),
lineNumber: frame.lineNumber, lineNumber: frame.lineNumber,
}) })
.then(code => { .then(code => this.code_ = code);
this.$['code-section'].code = code;
});
}, },
/** @private */ /** @private */
...@@ -345,7 +344,7 @@ cr.define('extensions', function() { ...@@ -345,7 +344,7 @@ cr.define('extensions', function() {
}, },
/** /**
* @param {!{model: !{index: number}}} e * @param {!{type: string, code: string, model: !{index: number}}} e
* @private * @private
*/ */
onErrorItemAction_: function(e) { onErrorItemAction_: function(e) {
......
...@@ -226,7 +226,7 @@ AccessibilityTest.define('CrExtensionsErrorConsoleA11yTest', { ...@@ -226,7 +226,7 @@ AccessibilityTest.define('CrExtensionsErrorConsoleA11yTest', {
/** @override */ /** @override */
tests: { tests: {
'Accessible Error Console': function() { 'Accessible Error Console': function() {
assertTrue(!!document.querySelector('* /deep/ #errors-list')); assertTrue(!!document.querySelector('* /deep/ #errorsList'));
}, },
}, },
}); });
...@@ -94,7 +94,7 @@ cr.define('extension_error_page_tests', function() { ...@@ -94,7 +94,7 @@ cr.define('extension_error_page_tests', function() {
var testIsVisible = extension_test_util.isVisible.bind(null, errorPage); var testIsVisible = extension_test_util.isVisible.bind(null, errorPage);
expectTrue(testIsVisible('#close-button')); expectTrue(testIsVisible('#close-button'));
expectTrue(testIsVisible('#heading')); expectTrue(testIsVisible('#heading'));
expectTrue(testIsVisible('#errors-list')); expectTrue(testIsVisible('#errorsList'));
var errorElements = errorPage.querySelectorAll('* /deep/ .error-item'); var errorElements = errorPage.querySelectorAll('* /deep/ .error-item');
expectEquals(1, errorElements.length); expectEquals(1, errorElements.length);
......
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