Use imported AccessBehavior
This change removes usage of global Gerrit.AccessBehavior and
replace it with direct import. Also, the AccessMixin is removed,
because it was introduced as a workaround for polylint tests and is no
longer needed.
Change-Id: Ib484e7f4a46d7a61d5727cb9dbc0d972bfad0d22
diff --git a/polygerrit-ui/app/behaviors/gr-access-behavior/gr-access-behavior.js b/polygerrit-ui/app/behaviors/gr-access-behavior/gr-access-behavior.js
index 18cd356..0899d4c 100644
--- a/polygerrit-ui/app/behaviors/gr-access-behavior/gr-access-behavior.js
+++ b/polygerrit-ui/app/behaviors/gr-access-behavior/gr-access-behavior.js
@@ -14,164 +14,142 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-(function(window) {
- 'use strict';
- window.Gerrit = window.Gerrit || {};
-
- /** @polymerBehavior Gerrit.AccessBehavior */
- Gerrit.AccessBehavior = {
- properties: {
- permissionValues: {
- type: Object,
- readOnly: true,
- value: {
- abandon: {
- id: 'abandon',
- name: 'Abandon',
- },
- addPatchSet: {
- id: 'addPatchSet',
- name: 'Add Patch Set',
- },
- create: {
- id: 'create',
- name: 'Create Reference',
- },
- createTag: {
- id: 'createTag',
- name: 'Create Annotated Tag',
- },
- createSignedTag: {
- id: 'createSignedTag',
- name: 'Create Signed Tag',
- },
- delete: {
- id: 'delete',
- name: 'Delete Reference',
- },
- deleteChanges: {
- id: 'deleteChanges',
- name: 'Delete Changes',
- },
- deleteOwnChanges: {
- id: 'deleteOwnChanges',
- name: 'Delete Own Changes',
- },
- editAssignee: {
- id: 'editAssignee',
- name: 'Edit Assignee',
- },
- editHashtags: {
- id: 'editHashtags',
- name: 'Edit Hashtags',
- },
- editTopicName: {
- id: 'editTopicName',
- name: 'Edit Topic Name',
- },
- forgeAuthor: {
- id: 'forgeAuthor',
- name: 'Forge Author Identity',
- },
- forgeCommitter: {
- id: 'forgeCommitter',
- name: 'Forge Committer Identity',
- },
- forgeServerAsCommitter: {
- id: 'forgeServerAsCommitter',
- name: 'Forge Server Identity',
- },
- owner: {
- id: 'owner',
- name: 'Owner',
- },
- publishDrafts: {
- id: 'publishDrafts',
- name: 'Publish Drafts',
- },
- push: {
- id: 'push',
- name: 'Push',
- },
- pushMerge: {
- id: 'pushMerge',
- name: 'Push Merge Commit',
- },
- read: {
- id: 'read',
- name: 'Read',
- },
- rebase: {
- id: 'rebase',
- name: 'Rebase',
- },
- removeReviewer: {
- id: 'removeReviewer',
- name: 'Remove Reviewer',
- },
- submit: {
- id: 'submit',
- name: 'Submit',
- },
- submitAs: {
- id: 'submitAs',
- name: 'Submit (On Behalf Of)',
- },
- toggleWipState: {
- id: 'toggleWipState',
- name: 'Toggle Work In Progress State',
- },
- viewPrivateChanges: {
- id: 'viewPrivateChanges',
- name: 'View Private Changes',
- },
+/** @polymerBehavior Gerrit.AccessBehavior */
+export const AccessBehavior = {
+ properties: {
+ permissionValues: {
+ type: Object,
+ readOnly: true,
+ value: {
+ abandon: {
+ id: 'abandon',
+ name: 'Abandon',
+ },
+ addPatchSet: {
+ id: 'addPatchSet',
+ name: 'Add Patch Set',
+ },
+ create: {
+ id: 'create',
+ name: 'Create Reference',
+ },
+ createTag: {
+ id: 'createTag',
+ name: 'Create Annotated Tag',
+ },
+ createSignedTag: {
+ id: 'createSignedTag',
+ name: 'Create Signed Tag',
+ },
+ delete: {
+ id: 'delete',
+ name: 'Delete Reference',
+ },
+ deleteChanges: {
+ id: 'deleteChanges',
+ name: 'Delete Changes',
+ },
+ deleteOwnChanges: {
+ id: 'deleteOwnChanges',
+ name: 'Delete Own Changes',
+ },
+ editAssignee: {
+ id: 'editAssignee',
+ name: 'Edit Assignee',
+ },
+ editHashtags: {
+ id: 'editHashtags',
+ name: 'Edit Hashtags',
+ },
+ editTopicName: {
+ id: 'editTopicName',
+ name: 'Edit Topic Name',
+ },
+ forgeAuthor: {
+ id: 'forgeAuthor',
+ name: 'Forge Author Identity',
+ },
+ forgeCommitter: {
+ id: 'forgeCommitter',
+ name: 'Forge Committer Identity',
+ },
+ forgeServerAsCommitter: {
+ id: 'forgeServerAsCommitter',
+ name: 'Forge Server Identity',
+ },
+ owner: {
+ id: 'owner',
+ name: 'Owner',
+ },
+ publishDrafts: {
+ id: 'publishDrafts',
+ name: 'Publish Drafts',
+ },
+ push: {
+ id: 'push',
+ name: 'Push',
+ },
+ pushMerge: {
+ id: 'pushMerge',
+ name: 'Push Merge Commit',
+ },
+ read: {
+ id: 'read',
+ name: 'Read',
+ },
+ rebase: {
+ id: 'rebase',
+ name: 'Rebase',
+ },
+ removeReviewer: {
+ id: 'removeReviewer',
+ name: 'Remove Reviewer',
+ },
+ submit: {
+ id: 'submit',
+ name: 'Submit',
+ },
+ submitAs: {
+ id: 'submitAs',
+ name: 'Submit (On Behalf Of)',
+ },
+ toggleWipState: {
+ id: 'toggleWipState',
+ name: 'Toggle Work In Progress State',
+ },
+ viewPrivateChanges: {
+ id: 'viewPrivateChanges',
+ name: 'View Private Changes',
},
},
},
+ },
- /**
- * @param {!Object} obj
- * @return {!Array} returns a sorted array sorted by the id of the original
- * object.
- */
- toSortedArray(obj) {
- if (!obj) { return []; }
- return Object.keys(obj)
- .map(key => {
- return {
- id: key,
- value: obj[key],
- };
- })
- .sort((a, b) =>
- // Since IDs are strings, use localeCompare.
- a.id.localeCompare(b.id)
- );
- },
- };
-
- // eslint-disable-next-line no-unused-vars
- function defineEmptyMixin() {
- // This is a temporary function.
- // Polymer linter doesn't process correctly the following code:
- // class MyElement extends Polymer.mixinBehaviors([legacyBehaviors], ...) {...}
- // To workaround this issue, the mock mixin is declared in this method.
- // In the following changes, legacy behaviors will be converted to mixins.
-
- /**
- * @polymer
- * @mixinFunction
- */
- Gerrit.AccessMixin = base =>
- class extends base {
- static get properties() {
+ /**
+ * @param {!Object} obj
+ * @return {!Array} returns a sorted array sorted by the id of the original
+ * object.
+ */
+ toSortedArray(obj) {
+ if (!obj) { return []; }
+ return Object.keys(obj)
+ .map(key => {
return {
- permissionValues: {
- type: Object,
- },
+ id: key,
+ value: obj[key],
};
- }
- };
- }
-})(window);
+ })
+ .sort((a, b) =>
+ // Since IDs are strings, use localeCompare.
+ a.id.localeCompare(b.id)
+ );
+ },
+};
+
+// TODO(dmfilippov) Remove the following lines with assignments
+// Plugins can use the behavior because it was accessible with
+// the global Gerrit... variable. To avoid breaking changes in plugins
+// temporary assign global variables.
+window.Gerrit = window.Gerrit || {};
+window.Gerrit.AccessBehavior = AccessBehavior;
diff --git a/polygerrit-ui/app/behaviors/gr-access-behavior/gr-access-behavior_test.html b/polygerrit-ui/app/behaviors/gr-access-behavior/gr-access-behavior_test.html
index 4f80b2b..aa16261 100644
--- a/polygerrit-ui/app/behaviors/gr-access-behavior/gr-access-behavior_test.html
+++ b/polygerrit-ui/app/behaviors/gr-access-behavior/gr-access-behavior_test.html
@@ -31,8 +31,8 @@
<script type="module">
import '../../test/common-test-setup.js';
-import './gr-access-behavior.js';
import {Polymer} from '@polymer/polymer/lib/legacy/polymer-fn.js';
+import {AccessBehavior} from './gr-access-behavior.js';
suite('gr-access-behavior tests', () => {
let element;
@@ -40,7 +40,7 @@
// Define a Polymer element that uses this behavior.
Polymer({
is: 'test-element',
- behaviors: [Gerrit.AccessBehavior],
+ behaviors: [AccessBehavior],
});
});
diff --git a/polygerrit-ui/app/elements/admin/gr-access-section/gr-access-section.js b/polygerrit-ui/app/elements/admin/gr-access-section/gr-access-section.js
index 250f349..c79d842 100644
--- a/polygerrit-ui/app/elements/admin/gr-access-section/gr-access-section.js
+++ b/polygerrit-ui/app/elements/admin/gr-access-section/gr-access-section.js
@@ -15,7 +15,6 @@
* limitations under the License.
*/
import '../../../scripts/bundled-polymer.js';
-import '../../../behaviors/gr-access-behavior/gr-access-behavior.js';
import '@polymer/iron-input/iron-input.js';
import '../../../styles/gr-form-styles.js';
import '../../../styles/shared-styles.js';
@@ -30,6 +29,7 @@
import {GestureEventListeners} from '@polymer/polymer/lib/mixins/gesture-event-listeners.js';
import {LegacyElementMixin} from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';
import {htmlTemplate} from './gr-access-section_html.js';
+import {AccessBehavior} from '../../../behaviors/gr-access-behavior/gr-access-behavior.js';
/**
* Fired when the section has been modified or removed.
@@ -52,11 +52,10 @@
const LABEL = 'Label';
/**
- * @appliesMixin Gerrit.AccessMixin
* @extends Polymer.Element
*/
class GrAccessSection extends mixinBehaviors( [
- Gerrit.AccessBehavior,
+ AccessBehavior,
], GestureEventListeners(
LegacyElementMixin(
PolymerElement))) {
diff --git a/polygerrit-ui/app/elements/admin/gr-permission/gr-permission.js b/polygerrit-ui/app/elements/admin/gr-permission/gr-permission.js
index 3ab024f..9fac11e 100644
--- a/polygerrit-ui/app/elements/admin/gr-permission/gr-permission.js
+++ b/polygerrit-ui/app/elements/admin/gr-permission/gr-permission.js
@@ -16,7 +16,6 @@
*/
import '../../../scripts/bundled-polymer.js';
-import '../../../behaviors/gr-access-behavior/gr-access-behavior.js';
import '@polymer/paper-toggle-button/paper-toggle-button.js';
import '../../../styles/gr-form-styles.js';
import '../../../styles/gr-menu-page-styles.js';
@@ -31,6 +30,7 @@
import {LegacyElementMixin} from '@polymer/polymer/lib/legacy/legacy-element-mixin.js';
import {PolymerElement} from '@polymer/polymer/polymer-element.js';
import {htmlTemplate} from './gr-permission_html.js';
+import {AccessBehavior} from '../../../behaviors/gr-access-behavior/gr-access-behavior.js';
const MAX_AUTOCOMPLETE_RESULTS = 20;
@@ -47,12 +47,11 @@
/**
* Fired when a permission that was previously added was removed.
*
- * @appliesMixin Gerrit.AccessMixin
* @event added-permission-removed
* @extends Polymer.Element
*/
class GrPermission extends mixinBehaviors( [
- Gerrit.AccessBehavior,
+ AccessBehavior,
], GestureEventListeners(
LegacyElementMixin(
PolymerElement))) {
diff --git a/polygerrit-ui/app/elements/admin/gr-repo-access/gr-repo-access.js b/polygerrit-ui/app/elements/admin/gr-repo-access/gr-repo-access.js
index 022ff70..6f7f323 100644
--- a/polygerrit-ui/app/elements/admin/gr-repo-access/gr-repo-access.js
+++ b/polygerrit-ui/app/elements/admin/gr-repo-access/gr-repo-access.js
@@ -16,7 +16,6 @@
*/
import '../../../scripts/bundled-polymer.js';
-import '../../../behaviors/gr-access-behavior/gr-access-behavior.js';
import '../../../behaviors/gr-url-encoding-behavior/gr-url-encoding-behavior.js';
import '../../../styles/gr-menu-page-styles.js';
import '../../../styles/gr-subpage-styles.js';
@@ -32,6 +31,7 @@
import {PolymerElement} from '@polymer/polymer/polymer-element.js';
import {htmlTemplate} from './gr-repo-access_html.js';
import {BaseUrlBehavior} from '../../../behaviors/base-url-behavior/base-url-behavior.js';
+import {AccessBehavior} from '../../../behaviors/gr-access-behavior/gr-access-behavior.js';
const Defs = {};
@@ -84,12 +84,11 @@
Defs.projectAccessInput;
/**
- * @appliesMixin Gerrit.AccessMixin
* @appliesMixin Gerrit.URLEncodingMixin
* @extends Polymer.Element
*/
class GrRepoAccess extends mixinBehaviors( [
- Gerrit.AccessBehavior,
+ AccessBehavior,
BaseUrlBehavior,
Gerrit.URLEncodingBehavior,
], GestureEventListeners(
diff --git a/polygerrit-ui/app/elements/admin/gr-rule-editor/gr-rule-editor.js b/polygerrit-ui/app/elements/admin/gr-rule-editor/gr-rule-editor.js
index 5881cd0..e5a0be4 100644
--- a/polygerrit-ui/app/elements/admin/gr-rule-editor/gr-rule-editor.js
+++ b/polygerrit-ui/app/elements/admin/gr-rule-editor/gr-rule-editor.js
@@ -17,7 +17,6 @@
import '../../../scripts/bundled-polymer.js';
import '@polymer/iron-autogrow-textarea/iron-autogrow-textarea.js';
-import '../../../behaviors/gr-access-behavior/gr-access-behavior.js';
import '../../../behaviors/gr-url-encoding-behavior/gr-url-encoding-behavior.js';
import '../../../styles/gr-form-styles.js';
import '../../../styles/shared-styles.js';
@@ -30,6 +29,7 @@
import {PolymerElement} from '@polymer/polymer/polymer-element.js';
import {htmlTemplate} from './gr-rule-editor_html.js';
import {BaseUrlBehavior} from '../../../behaviors/base-url-behavior/base-url-behavior.js';
+import {AccessBehavior} from '../../../behaviors/gr-access-behavior/gr-access-behavior.js';
/**
* Fired when the rule has been modified or removed.
@@ -79,12 +79,11 @@
];
/**
- * @appliesMixin Gerrit.AccessMixin
* @appliesMixin Gerrit.URLEncodingMixin
* @extends Polymer.Element
*/
class GrRuleEditor extends mixinBehaviors( [
- Gerrit.AccessBehavior,
+ AccessBehavior,
BaseUrlBehavior,
Gerrit.URLEncodingBehavior,
], GestureEventListeners(