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
	 Ben Rohlfs
					Ben Rohlfs