<!--
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.
-->
<link rel="import" href="../bower_components/polymer/polymer.html">
<link rel="import" href="../bower_components/iron-a11y-keys-behavior/iron-a11y-keys-behavior.html">

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

  var KeyboardShortcutBehaviorImpl = {
    shouldSuppressKeyboardShortcut: function(e) {
      e = Polymer.dom(e.detail ? e.detail.keyboardEvent : e);
      if (e.path[0].tagName === 'INPUT' || e.path[0].tagName === 'TEXTAREA') {
        return true;
      }
      for (var i = 0; i < e.path.length; i++) {
        if (e.path[i].tagName === 'GR-OVERLAY') { return true; }
      }
      return false;
    },
  };

  window.Gerrit = window.Gerrit || {};
  /** @polymerBehavior Gerrit.KeyboardShortcutBehavior */
  window.Gerrit.KeyboardShortcutBehavior = [
    Polymer.IronA11yKeysBehavior,
    KeyboardShortcutBehaviorImpl,
  ];
})(window);
</script>
