summaryrefslogtreecommitdiffstats
path: root/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface.js
diff options
context:
space:
mode:
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.js90
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)) {