diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-builder-image.js b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-image.js
similarity index 100%
rename from polygerrit-ui/app/elements/diff/gr-diff/gr-diff-builder-image.js
rename to polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-image.js
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-builder-side-by-side.js b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-side-by-side.js
similarity index 100%
rename from polygerrit-ui/app/elements/diff/gr-diff/gr-diff-builder-side-by-side.js
rename to polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-side-by-side.js
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-builder-unified.js b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-unified.js
similarity index 100%
rename from polygerrit-ui/app/elements/diff/gr-diff/gr-diff-builder-unified.js
rename to polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-unified.js
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
new file mode 100644
index 0000000000..76cb84402f
--- /dev/null
+++ b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.html
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-builder.js b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.js
similarity index 100%
rename from polygerrit-ui/app/elements/diff/gr-diff/gr-diff-builder.js
rename to polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.js
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-builder_test.html b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder_test.html
similarity index 99%
rename from polygerrit-ui/app/elements/diff/gr-diff/gr-diff-builder_test.html
rename to polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder_test.html
index 5905bd991d..c47e05d33b 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-builder_test.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder_test.html
@@ -19,8 +19,8 @@ limitations under the License.
gr-diff-builder
-
-
+
+
-
-
-
-
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 0056808557..ea64581a7d 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js
@@ -27,12 +27,6 @@
Polymer({
is: 'gr-diff',
- /**
- * Fired when the diff is rendered.
- *
- * @event render
- */
-
properties: {
changeNum: String,
patchRange: Object,
@@ -59,7 +53,6 @@
value: DiffViewMode.SIDE_BY_SIDE,
},
_diff: Object,
- _diffBuilder: Object,
_selectionSide: {
type: String,
observer: '_selectionSideChanged',
@@ -195,7 +188,7 @@
var el = Polymer.dom(e).rootTarget;
if (el.classList.contains('showContext')) {
- this._showContext(e.detail.groups, e.detail.section);
+ this.$.diffBuilder.showContext(e.detail.groups, e.detail.section);
} else if (el.classList.contains('lineNum')) {
this.addDraftAtLine(el);
}
@@ -223,8 +216,8 @@
patchNum = this.patchRange.basePatchNum;
}
}
- threadEl = this._builder.createCommentThread(this.changeNum, patchNum,
- this.path, side, this.projectConfig);
+ threadEl = this.$.diffBuilder.createCommentThread(
+ this.changeNum, patchNum, this.path, side, this.projectConfig);
contentEl.appendChild(threadEl);
}
threadEl.addDraft(opt_lineNum);
@@ -363,25 +356,6 @@
return text;
},
- _showContext: function(newGroups, sectionEl) {
- var groups = this._builder._groups;
- // TODO(viktard): Polyfill findIndex for IE10.
- var contextIndex = groups.findIndex(function(group) {
- return group.element == sectionEl;
- });
-
- groups.splice.apply(groups, [contextIndex, 1].concat(newGroups));
-
- newGroups.forEach(function(newGroup) {
- this._builder.emitGroup(newGroup, sectionEl);
- }.bind(this));
- sectionEl.parentNode.removeChild(sectionEl);
-
- this.async(function() {
- this.fire('render', null, {bubbles: false});
- }.bind(this), 1);
- },
-
_prefsChanged: function(prefsChangeRecord) {
var prefs = prefsChangeRecord.base;
this.customStyle['--content-width'] = prefs.line_length + 'ch';
@@ -393,17 +367,7 @@
},
_render: function() {
- this._builder =
- this._getDiffBuilder(this._diff, this._comments, this.prefs);
- this._renderDiff();
- },
-
- _renderDiff: function() {
- this._clearDiffContent();
- this._builder.emitDiff();
- this.async(function() {
- this.fire('render', null, {bubbles: false});
- }, 1);
+ this.$.diffBuilder.render(this._diff, this._comments, this.prefs);
},
_clearDiffContent: function() {
@@ -508,19 +472,6 @@
this.changeNum, this._diff, this.patchRange);
},
- _getDiffBuilder: function(diff, comments, prefs) {
- if (this.isImageDiff) {
- return new GrDiffBuilderImage(diff, comments, prefs, this.$.diffTable,
- this._baseImage, this._revisionImage);
- } else if (this.viewMode === DiffViewMode.SIDE_BY_SIDE) {
- return new GrDiffBuilderSideBySide(diff, comments, prefs,
- this.$.diffTable);
- } else if (this.viewMode === DiffViewMode.UNIFIED) {
- return new GrDiffBuilderUnified(diff, comments, prefs,
- this.$.diffTable);
- }
- throw Error('Unsupported diff view mode: ' + this.viewMode);
- },
_projectConfigChanged: function(projectConfig) {
var threadEls = this._getCommentThreads();
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html
index aec32b6e90..613c7fa66b 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html
@@ -226,8 +226,7 @@ limitations under the License.
var rendered = function() {
// Recognizes that it should be an image diff.
assert.isTrue(element.isImageDiff);
- assert.instanceOf(element._getDiffBuilder(element._diff,
- element._comments, element.prefs), GrDiffBuilderImage);
+ assert.instanceOf(element.$.diffBuilder._builder, GrDiffBuilderImage);
// Left image rendered with the parent commit's version of the file.
var leftInmage = element.$.diffTable.querySelector('td.left img');
@@ -397,30 +396,5 @@ limitations under the License.
});
});
});
-
- suite('renderDiff', function() {
- setup(function(done) {
- sinon.stub(element, 'fire');
- element._builder = {
- emitDiff: sinon.stub(),
- };
- element._renderDiff();
- flush(function() {
- done();
- });
- });
-
- teardown(function() {
- element.fire.restore();
- });
-
- test('fires render', function() {
- assert(element.fire.calledWithExactly(
- 'render', null, {bubbles: false}));
- });
- test('calls emitDiff on builder', function() {
- assert(element._builder.emitDiff.calledOnce);
- });
- });
});