Revert "Revert "Fix plugin .url() calculation when loaded from bundle""
This reverts commit 3d27e0ce8ab0194473e6a477f7e8a60e19a32a37.
Change-Id: If7b54d7ed60a95293ffae73b73acf3161bb79ad1
diff --git a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface_test.html b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface_test.html
index e0c7c37..54c283d 100644
--- a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface_test.html
+++ b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface_test.html
@@ -441,28 +441,32 @@
test('installing preloaded plugin', () => {
let plugin;
- window.ASSETS_PATH = 'http://blips.com/chitz/';
+ window.ASSETS_PATH = 'http://blips.com/chitz';
Gerrit.install(p => { plugin = p; }, '0.1', 'preloaded:foo');
assert.strictEqual(plugin.getPluginName(), 'foo');
assert.strictEqual(plugin.url('/some/thing.html'),
- 'http://blips.com/plugins/foo/some/thing.html');
+ 'http://blips.com/chitz/plugins/foo/some/thing.html');
delete window.ASSETS_PATH;
});
suite('test plugin with base url', () => {
+ let baseUrlPlugin;
+
setup(() => {
sandbox.stub(Gerrit.BaseUrlBehavior, 'getBaseUrl').returns('/r');
Gerrit._setPluginsCount(1);
- Gerrit.install(p => { plugin = p; }, '0.1',
- 'http://test.com/r/plugins/testplugin/static/test.js');
+ Gerrit.install(p => { baseUrlPlugin = p; }, '0.1',
+ 'http://test.com/r/plugins/baseurlplugin/static/test.js');
});
test('url', () => {
- assert.notEqual(plugin.url(), 'http://test.com/plugins/testplugin/');
- assert.equal(plugin.url(), 'http://test.com/r/plugins/testplugin/');
- assert.equal(plugin.url('/static/test.js'),
- 'http://test.com/r/plugins/testplugin/static/test.js');
+ assert.notEqual(baseUrlPlugin.url(),
+ 'http://test.com/plugins/baseurlplugin/');
+ assert.equal(baseUrlPlugin.url(),
+ 'http://test.com/r/plugins/baseurlplugin/');
+ assert.equal(baseUrlPlugin.url('/static/test.js'),
+ 'http://test.com/r/plugins/baseurlplugin/static/test.js');
});
});
diff --git a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-public-js-api.js b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-public-js-api.js
index 36a428d..8bf4a2d 100644
--- a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-public-js-api.js
+++ b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-public-js-api.js
@@ -217,9 +217,14 @@
};
Plugin.prototype.url = function(opt_path) {
- const base = Gerrit.BaseUrlBehavior.getBaseUrl();
- return this._url.origin + base + '/plugins/' +
- this._name + (opt_path || '/');
+ const relPath = '/plugins/' + this._name + (opt_path || '/');
+ if (window.location.origin === this._url.origin) {
+ // Plugin loaded from the same origin as gr-app, getBaseUrl in effect.
+ return this._url.origin + Gerrit.BaseUrlBehavior.getBaseUrl() + relPath;
+ } else {
+ // Plugin loaded from assets bundle, expect assets placed along with it.
+ return this._url.href.split('/plugins/' + this._name)[0] + relPath;
+ }
};
Plugin.prototype.screenUrl = function(opt_screenName) {