<!--
@license
Copyright (C) 2017 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.
-->

<script src="../../scripts/gr-display-name-utils/gr-display-name-utils.js"></script>

<script>
(function(window) {
  'use strict';

  window.Gerrit = window.Gerrit || {};

  /** @polymerBehavior Gerrit.DisplayNameBehavior */
  Gerrit.DisplayNameBehavior = {
    // TODO(dmfilippov) replace DisplayNameBehavior with GrDisplayNameUtils

    /**
     * enableEmail when true enables to fallback to using email if
     * the account name is not avilable.
     */
    getUserName(config, account, enableEmail) {
      return GrDisplayNameUtils.getUserName(config, account, enableEmail);
    },

    getGroupDisplayName(group) {
      return GrDisplayNameUtils.getGroupDisplayName(group);
    },
  };
})(window);
</script>
