Merge "Specify project in URLs"
diff --git a/polygerrit-ui/app/elements/core/gr-router/gr-router.js b/polygerrit-ui/app/elements/core/gr-router/gr-router.js
index c733ed4..67a8110 100644
--- a/polygerrit-ui/app/elements/core/gr-router/gr-router.js
+++ b/polygerrit-ui/app/elements/core/gr-router/gr-router.js
@@ -583,18 +583,26 @@
} else if (params.view === Gerrit.Nav.View.CHANGE) {
let range = this._getPatchRangeExpression(params);
if (range.length) { range = '/' + range; }
-
- url = `/c/${params.changeNum}${range}`;
+ if (params.project) {
+ url = `/c/${params.project}/+/${params.changeNum}${range}`;
+ } else {
+ url = `/c/${params.changeNum}${range}`;
+ }
} else if (params.view === Gerrit.Nav.View.DIFF) {
let range = this._getPatchRangeExpression(params);
if (range.length) { range = '/' + range; }
- url = `/c/${params.changeNum}${range}/${encode(params.path, true)}`;
-
+ let suffix = `${range}/${encode(params.path, true)}`;
if (params.lineNum) {
- url += '#';
- if (params.leftSide) { url += 'b'; }
- url += params.lineNum;
+ suffix += '#';
+ if (params.leftSide) { suffix += 'b'; }
+ suffix += params.lineNum;
+ }
+
+ if (params.project) {
+ url = `/c/${params.project}/+/${params.changeNum}${suffix}`;
+ } else {
+ url = `/c/${params.changeNum}${suffix}`;
}
} else {
throw new Error('Can\'t generate');
diff --git a/polygerrit-ui/app/elements/core/gr-router/gr-router_test.html b/polygerrit-ui/app/elements/core/gr-router/gr-router_test.html
index 92d0fde..d1392ee 100644
--- a/polygerrit-ui/app/elements/core/gr-router/gr-router_test.html
+++ b/polygerrit-ui/app/elements/core/gr-router/gr-router_test.html
@@ -65,14 +65,15 @@
const params = {
view: Gerrit.Nav.View.CHANGE,
changeNum: '1234',
+ project: 'test',
};
- assert.equal(element._generateUrl(params), '/c/1234');
+ assert.equal(element._generateUrl(params), '/c/test/+/1234');
params.patchNum = 10;
- assert.equal(element._generateUrl(params), '/c/1234/10');
+ assert.equal(element._generateUrl(params), '/c/test/+/1234/10');
params.basePatchNum = 5;
- assert.equal(element._generateUrl(params), '/c/1234/5..10');
+ assert.equal(element._generateUrl(params), '/c/test/+/1234/5..10');
});
test('diff', () => {
@@ -82,24 +83,31 @@
path: 'x+y/path.cpp',
patchNum: 12,
};
- assert.equal(element._generateUrl(params), '/c/42/12/x%252By/path.cpp');
+ assert.equal(element._generateUrl(params),
+ '/c/42/12/x%252By/path.cpp');
+
+ params.project = 'test';
+ assert.equal(element._generateUrl(params),
+ '/c/test/+/42/12/x%252By/path.cpp');
params.basePatchNum = 6;
assert.equal(element._generateUrl(params),
- '/c/42/6..12/x%252By/path.cpp');
+ '/c/test/+/42/6..12/x%252By/path.cpp');
params.path = 'foo bar/my+file.txt%';
params.patchNum = 2;
delete params.basePatchNum;
assert.equal(element._generateUrl(params),
- '/c/42/2/foo+bar/my%252Bfile.txt%2525');
+ '/c/test/+/42/2/foo+bar/my%252Bfile.txt%2525');
params.path = 'file.cpp';
params.lineNum = 123;
- assert.equal(element._generateUrl(params), '/c/42/2/file.cpp#123');
+ assert.equal(element._generateUrl(params),
+ '/c/test/+/42/2/file.cpp#123');
params.leftSide = true;
- assert.equal(element._generateUrl(params), '/c/42/2/file.cpp#b123');
+ assert.equal(element._generateUrl(params),
+ '/c/test/+/42/2/file.cpp#b123');
});
});
});