Revert "Add mechanism for plugins to modify rest api calls"
This reverts commit 92daa33342.
Reason for revert: Chromium's Gerrit instance does not start with this change
Uncaught ReferenceError: GrDomHooksManager is not defined at new Plugin (gr-app.js:1455)
Change-Id: I5cfc9ffaa2a8b6f5969f0d7e50a1694e5f5d5476
This commit is contained in:
@@ -185,30 +185,6 @@ See list of supported link:pg-plugin-endpoints.html[endpoints].
|
||||
|
||||
Note: TODO
|
||||
|
||||
=== registerApiHook
|
||||
`plugin.registerApiHook(apiEndpointName, addParameterFunction)`
|
||||
|
||||
Registers a rest api hook to add plugin params to core rest api calls.
|
||||
The addParameterFunction only needs to return plugin specific params, not the
|
||||
entire params object.
|
||||
|
||||
Supported endpoints are `changes` and `change`.
|
||||
|
||||
```
|
||||
Gerrit.install('my-plugin-name', plugin => {
|
||||
plugin.restApiHooks().registerRestApiParams('changes', params => {
|
||||
return 'my-plugin-option';
|
||||
});
|
||||
});
|
||||
|
||||
// will update the changes query params to be:
|
||||
|
||||
{
|
||||
// existing changes params
|
||||
'my-plugin-name': 'my-plugin-option',
|
||||
}
|
||||
```
|
||||
|
||||
=== registerStyleModule
|
||||
`plugin.registerStyleModule(endpointName, moduleName)`
|
||||
|
||||
|
||||
@@ -38,6 +38,5 @@ limitations under the License.
|
||||
<script src="gr-plugin-endpoints.js"></script>
|
||||
<script src="gr-plugin-action-context.js"></script>
|
||||
<script src="gr-plugin-rest-api.js"></script>
|
||||
<script src="gr-rest-api-hooks.js"></script>
|
||||
<script src="gr-public-js-api.js"></script>
|
||||
</dom-module>
|
||||
|
||||
@@ -319,10 +319,6 @@
|
||||
return new GrSettingsApi(this);
|
||||
};
|
||||
|
||||
Plugin.prototype.restApiHooks = function() {
|
||||
return new GrRestApiHooks(this);
|
||||
};
|
||||
|
||||
/**
|
||||
* To make REST requests for plugin-provided endpoints, use
|
||||
* @example
|
||||
@@ -630,12 +626,6 @@
|
||||
return _allPluginsPromise;
|
||||
};
|
||||
|
||||
// TODO: Remove this. This is a hack to get the tests to pass.
|
||||
// It would be much better to call GrRestApiHooks.pluginParams directly.
|
||||
Gerrit._pluginParams = function(endpointName, initialParams) {
|
||||
return GrRestApiHooks.pluginParams(endpointName, initialParams);
|
||||
};
|
||||
|
||||
Gerrit._pluginLoadingTimeout = function() {
|
||||
console.error(`Failed to load plugins: ${Object.keys(_pluginsPending)}`);
|
||||
Gerrit._setPluginsPending([]);
|
||||
|
||||
@@ -1,92 +0,0 @@
|
||||
/**
|
||||
* @license
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
// Prevent redefinition.
|
||||
if (window.GrRestApiHooks) { return; }
|
||||
|
||||
// Stores a map of endpointNames and api instances to add parameters to
|
||||
// REST API calls.
|
||||
const _apiInstances = {};
|
||||
|
||||
function GrRestApiHooks(plugin) {
|
||||
this.plugin = plugin;
|
||||
// Stores a map of endpointNames and functions to add parameters to REST API
|
||||
// calls.
|
||||
this._addParameterFunctions = {};
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers an api hook for a particular api endpoint.
|
||||
* This is called by a plugin.
|
||||
*
|
||||
* @param {string} endpointName the name of the endpoint.
|
||||
* @param {Function} addParameterFunction the function that returns params
|
||||
* for the plugin. Takes in current params.
|
||||
*/
|
||||
GrRestApiHooks.prototype.registerRestApiParams = function(endpointName,
|
||||
addParameterFunction) {
|
||||
if (this._addParameterFunctions[endpointName]) {
|
||||
console.warn(`Rewriting rest api parameter function for
|
||||
${this.plugin.getPluginName()}`);
|
||||
}
|
||||
this._addParameterFunctions[endpointName] = addParameterFunction;
|
||||
if (!_apiInstances[endpointName]) {
|
||||
_apiInstances[endpointName] = [];
|
||||
}
|
||||
_apiInstances[endpointName].push(this);
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns params for a registered api hook for a particular api endpoint or
|
||||
* null.
|
||||
* This is called by the application, not the plugin.
|
||||
* It will either return params or null if there are no params.
|
||||
* @param {string} endpointName the name of the endpoint.
|
||||
* @param {!Object} initialParams the params of the rest api call.
|
||||
*/
|
||||
GrRestApiHooks.prototype._getRestApiParams = function(endpointName,
|
||||
initialParams) {
|
||||
const addParameterFunction = this._addParameterFunctions[endpointName];
|
||||
if (!addParameterFunction) return null;
|
||||
return addParameterFunction(initialParams);
|
||||
};
|
||||
|
||||
/**
|
||||
* Gets the params for a particular mutation endpoint.
|
||||
*
|
||||
* This is called by the application and should not be called by plugins.
|
||||
*
|
||||
* @param {string} endpointName the name of the endpoint.
|
||||
* @param {!Object} initialParams the params of the rest api call.
|
||||
* @return new parameters to add to a REST API call.
|
||||
*/
|
||||
GrRestApiHooks.pluginParams = function(endpointName, initialParams) {
|
||||
return (_apiInstances[endpointName] || []).reduce((accum, apiInstance) => {
|
||||
const pluginParams = apiInstance._getRestApiParams(
|
||||
endpointName, initialParams);
|
||||
if (pluginParams) {
|
||||
accum[apiInstance.plugin.getPluginName()] =
|
||||
JSON.stringify(pluginParams);
|
||||
}
|
||||
return accum;
|
||||
}, {});
|
||||
};
|
||||
|
||||
window.GrRestApiHooks = GrRestApiHooks;
|
||||
})(window);
|
||||
@@ -30,8 +30,5 @@ limitations under the License.
|
||||
<!-- NB: Order is important, because of namespaced classes. -->
|
||||
<script src="gr-auth.js"></script>
|
||||
<script src="gr-reviewer-updates-parser.js"></script>
|
||||
<script src="../gr-js-api-interface/gr-plugin-endpoints.js"></script>
|
||||
<script src="../gr-js-api-interface/gr-rest-api-hooks.js"></script>
|
||||
<script src="../gr-js-api-interface/gr-public-js-api.js"></script>
|
||||
<script src="gr-rest-api-interface.js"></script>
|
||||
</dom-module>
|
||||
|
||||
@@ -1246,7 +1246,6 @@
|
||||
* changeInfos.
|
||||
*/
|
||||
getChanges(opt_changesPerPage, opt_query, opt_offset, opt_options) {
|
||||
return Gerrit.awaitPluginsLoaded().then(() => {
|
||||
const options = opt_options || this.listChangesOptionsToHex(
|
||||
this.ListChangesOption.LABELS,
|
||||
this.ListChangesOption.DETAILED_ACCOUNTS
|
||||
@@ -1268,7 +1267,6 @@
|
||||
this._maybeInsertInLookup(change);
|
||||
}
|
||||
};
|
||||
Object.assign(params, Gerrit._pluginParams('changes', params));
|
||||
const req = {
|
||||
url: '/changes/',
|
||||
params,
|
||||
@@ -1291,7 +1289,6 @@
|
||||
}
|
||||
return response;
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -1371,15 +1368,9 @@
|
||||
* @param {function()=} opt_cancelCondition
|
||||
*/
|
||||
_getChangeDetail(changeNum, optionsHex, opt_errFn, opt_cancelCondition) {
|
||||
return Promise.all([
|
||||
Gerrit.awaitPluginsLoaded(),
|
||||
this.getChangeActionURL(changeNum, null, '/detail'),
|
||||
]).then(([_, url]) => {
|
||||
return this.getChangeActionURL(changeNum, null, '/detail').then(url => {
|
||||
const urlWithParams = this._urlWithParams(url, optionsHex);
|
||||
|
||||
const params = {O: optionsHex};
|
||||
Object.assign(params, Gerrit._pluginParams('change', params));
|
||||
|
||||
const req = {
|
||||
url,
|
||||
errFn: opt_errFn,
|
||||
|
||||
@@ -55,8 +55,6 @@ limitations under the License.
|
||||
return Promise.resolve(testJSON);
|
||||
},
|
||||
}));
|
||||
sandbox.stub(Gerrit, 'awaitPluginsLoaded').returns(
|
||||
Promise.resolve(true));
|
||||
});
|
||||
|
||||
teardown(() => {
|
||||
@@ -524,13 +522,11 @@ limitations under the License.
|
||||
});
|
||||
});
|
||||
|
||||
test('legacy n,z key in change url is replaced', done => {
|
||||
test('legacy n,z key in change url is replaced', () => {
|
||||
const stub = sandbox.stub(element, '_fetchJSON')
|
||||
.returns(Promise.resolve([]));
|
||||
element.getChanges(1, null, 'n,z').then(() => {
|
||||
element.getChanges(1, null, 'n,z');
|
||||
assert.equal(stub.lastCall.args[0].params.S, 0);
|
||||
done();
|
||||
}, done);
|
||||
});
|
||||
|
||||
test('saveDiffPreferences invalidates cache line', () => {
|
||||
|
||||
Reference in New Issue
Block a user