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:
Ben Rohlfs
2019-04-09 19:25:22 +00:00
parent 92daa33342
commit fb74750e7a
7 changed files with 44 additions and 187 deletions

View File

@@ -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)`

View File

@@ -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>

View File

@@ -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([]);

View File

@@ -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);

View File

@@ -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>

View File

@@ -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,

View File

@@ -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', () => {