diff options
Diffstat (limited to 'polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface.js')
-rw-r--r-- | polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface.js | 90 |
1 files changed, 67 insertions, 23 deletions
diff --git a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface.js b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface.js index 420d4afc85..820d2c0afd 100644 --- a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface.js +++ b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface.js @@ -1,16 +1,19 @@ -// Copyright (C) 2016 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. +/** + * @license + * Copyright (C) 2016 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'; @@ -23,6 +26,8 @@ COMMENT: 'comment', REVERT: 'revert', POST_REVERT: 'postrevert', + ANNOTATE_DIFF: 'annotatediff', + ADMIN_MENU_LINKS: 'admin-menu-links', }; const Element = { @@ -119,18 +124,34 @@ }, _handleShowChange(detail) { - for (const cb of this._getEventCallbacks(EventType.SHOW_CHANGE)) { - const change = detail.change; - const patchNum = detail.patchNum; - let revision; - for (const rev of Object.values(change.revisions || {})) { - if (this.patchNumEquals(rev._number, patchNum)) { - revision = rev; - break; - } + // Note (issue 8221) Shallow clone the change object and add a mergeable + // getter with deprecation warning. This makes the change detail appear as + // though SKIP_MERGEABLE was not set, so that plugins that expect it can + // still access. + // + // This clone and getter can be removed after plugins migrate to use + // info.mergeable. + const change = Object.assign({ + get mergeable() { + console.warn('Accessing change.mergeable from SHOW_CHANGE is ' + + 'deprecated! Use info.mergeable instead.'); + return detail.info.mergeable; + }, + }, detail.change); + const patchNum = detail.patchNum; + const info = detail.info; + + let revision; + for (const rev of Object.values(change.revisions || {})) { + if (this.patchNumEquals(rev._number, patchNum)) { + revision = rev; + break; } + } + + for (const cb of this._getEventCallbacks(EventType.SHOW_CHANGE)) { try { - cb(change, revision); + cb(change, revision, info); } catch (err) { console.error(err); } @@ -178,6 +199,29 @@ return revertMsg; }, + getDiffLayers(path, changeNum, patchNum) { + const layers = []; + for (const annotationApi of + this._getEventCallbacks(EventType.ANNOTATE_DIFF)) { + try { + const layer = annotationApi.getLayer(path, changeNum, patchNum); + layers.push(layer); + } catch (err) { + console.error(err); + } + } + return layers; + }, + + getAdminMenuLinks() { + const links = []; + for (const adminApi of + this._getEventCallbacks(EventType.ADMIN_MENU_LINKS)) { + links.push(...adminApi.getMenuLinks()); + } + return links; + }, + getLabelValuesPostRevert(change) { let labels = {}; for (const cb of this._getEventCallbacks(EventType.POST_REVERT)) { |