Merge "Remove dependency on gr-js-api from gr-diff-builder"
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.html b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.html
index ca2c928..4a98ef3 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.html
@@ -138,6 +138,10 @@
* @type {?Object}
*/
_cancelableRenderPromise: Object,
+ pluginLayers: {
+ type: Array,
+ value: [],
+ },
},
behaviors: [
@@ -223,12 +227,7 @@
this.$.coverageLayerLeft,
this.$.coverageLayerRight,
];
-
- // Get layers from plugins (if any).
- for (const pluginLayer of this.$.jsAPI.getDiffLayers(
- this.diffPath, this.changeNum, this.patchNum)) {
- layers.push(pluginLayer);
- }
+ layers.push(...this.pluginLayers);
this._layers = layers;
},
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder_test.html b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder_test.html
index b917845..325ac05 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder_test.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder_test.html
@@ -36,8 +36,8 @@
<script>void(0);</script>
<test-fixture id="basic">
- <template>
- <gr-diff-builder>
+ <template is="dom-template">
+ <gr-diff-builder plugin-layers="[[pluginLayers]]">
<table id="diffTable"></table>
</gr-diff-builder>
</template>
@@ -593,28 +593,34 @@
suite('layers from plugins', () => {
let element;
let initialLayersCount;
-
+ let withPluginLayerCount;
setup(() => {
- element = fixture('basic');
+ const pluginLayers = [];
+ element = fixture('basic', {pluginLayers});
element._showTrailingWhitespace = true;
element._setupAnnotationLayers();
initialLayersCount = element._layers.length;
});
test('no plugin layers', () => {
- const getDiffLayersStub = sinon.stub(element.$.jsAPI, 'getDiffLayers')
- .returns([]);
element._setupAnnotationLayers();
- assert.isTrue(getDiffLayersStub.called);
assert.equal(element._layers.length, initialLayersCount);
});
- test('with plugin layers', () => {
- const getDiffLayersStub = sinon.stub(element.$.jsAPI, 'getDiffLayers')
- .returns([{}, {}]);
- element._setupAnnotationLayers();
- assert.isTrue(getDiffLayersStub.called);
- assert.equal(element._layers.length, initialLayersCount + 2);
+ suite('with plugin layers', () => {
+ const pluginLayers = [{}, {}];
+ setup(() => {
+ element = fixture('basic', {pluginLayers});
+ element._showTrailingWhitespace = true;
+ element._setupAnnotationLayers();
+ withPluginLayerCount = element._layers.length;
+ });
+ test('with plugin layers', () => {
+ element._setupAnnotationLayers();
+ assert.equal(element._layers.length, withPluginLayerCount);
+ assert.equal(initialLayersCount + pluginLayers.length,
+ withPluginLayerCount);
+ });
});
});
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.html b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.html
index f25d56e..13b2269 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.html
@@ -49,6 +49,7 @@
revision-image=[[_revisionImage]]
coverage-ranges="[[_coverageRanges]]"
blame="[[_blame]]"
+ plugin-layers="[[pluginLayers]]"
diff="[[_diff]]"></gr-diff>
<gr-js-api-interface id="jsAPI"></gr-js-api-interface>
<gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.js b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.js
index bce3d07..79135a7 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.js
@@ -204,6 +204,11 @@
type: Number,
computed: '_computeParentIndex(patchRange.*)',
},
+
+ pluginLayers: {
+ type: Array,
+ value: [],
+ },
},
behaviors: [
@@ -253,6 +258,14 @@
this._errorMessage = null;
const whitespaceLevel = this._getIgnoreWhitespace();
+ const pluginLayers = [];
+ // Get layers from plugins (if any).
+ for (const pluginLayer of this.$.jsAPI.getDiffLayers(
+ this.diffPath, this.changeNum, this.patchNum)) {
+ pluginLayers.push(pluginLayer);
+ }
+ this.push('pluginLayers', ...pluginLayers);
+
this._coverageRanges = [];
const {changeNum, path, patchRange: {basePatchNum, patchNum}} = this;
this.$.jsAPI.getCoverageRanges(changeNum, path, basePatchNum, patchNum).
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.html b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.html
index 104c0c2..db3f4a3 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.html
@@ -51,7 +51,6 @@
time: sandbox.stub(),
timeEnd: sandbox.stub(),
});
-
element = fixture('basic');
});
@@ -59,6 +58,22 @@
sandbox.restore();
});
+
+ suite('plugin layers', () => {
+ const pluginLayers = [{}, {}];
+ setup(() => {
+ stub('gr-js-api-interface', {
+ getDiffLayers() { return pluginLayers; },
+ });
+ element = fixture('basic');
+ });
+ test('plugin layers requested', () => {
+ element.patchRange = {};
+ element.reload();
+ assert(element.$.jsAPI.getDiffLayers.called);
+ });
+ });
+
suite('handle comment-update', () => {
setup(() => {
sandbox.stub(element, '_commentsChanged');
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.html b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.html
index bc8af9d..b30cc5c 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.html
@@ -378,6 +378,7 @@
line-wrapping="[[lineWrapping]]"
is-image-diff="[[isImageDiff]]"
base-image="[[baseImage]]"
+ plugin-layers="[[pluginLayers]]"
revision-image="[[revisionImage]]">
<table
id="diffTable"
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js
index 6787183..16c92b1 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js
@@ -271,6 +271,7 @@
/** Set by Polymer. */
isAttached: Boolean,
+ pluginLayers: Array,
},
behaviors: [