Move keyboard shortcut reporting to keyboard-shortcut-mixin

Change-Id: I01504718ccb2db56b994fb8bfd04370b6c47bd71
diff --git a/polygerrit-ui/app/elements/gr-app-element.ts b/polygerrit-ui/app/elements/gr-app-element.ts
index 6e20a55..be9c7c5 100644
--- a/polygerrit-ui/app/elements/gr-app-element.ts
+++ b/polygerrit-ui/app/elements/gr-app-element.ts
@@ -72,7 +72,6 @@
   LocationChangeEvent,
   PageErrorEventDetail,
   RpcLogEvent,
-  ShortcutTriggeredEvent,
   TitleChangeEventDetail,
 } from '../types/events';
 import {ViewState} from '../types/types';
@@ -247,9 +246,6 @@
       this.handleRecreateView(GerritView.DIFF)
     );
     document.addEventListener('gr-rpc-log', e => this._handleRpcLog(e));
-    this.addEventListener('shortcut-triggered', e =>
-      this._handleShortcutTriggered(e)
-    );
   }
 
   /** @override */
@@ -544,23 +540,6 @@
     fireIronAnnounce(this, ' ');
   }
 
-  _handleShortcutTriggered(event: ShortcutTriggeredEvent) {
-    const {event: e, goKey, vKey} = event.detail;
-    // eg: {key: "k:keydown", ..., from: "gr-diff-view"}
-    let key = `${((e as unknown) as KeyboardEvent).key}:${e.type}`;
-    if (goKey) key = 'g+' + key;
-    if (vKey) key = 'v+' + key;
-    if (e.shiftKey) key = 'shift+' + key;
-    if (e.ctrlKey) key = 'ctrl+' + key;
-    if (e.metaKey) key = 'meta+' + key;
-    if (e.altKey) key = 'alt+' + key;
-    const path = event.composedPath();
-    this.reporting.reportInteraction('shortcut-triggered', {
-      key,
-      from: (path && path[0] && (path[0] as Element).nodeName) ?? 'unknown',
-    });
-  }
-
   _handlePageError(e: CustomEvent<PageErrorEventDetail>) {
     const props = [
       '_showChangeListView',
diff --git a/polygerrit-ui/app/mixins/keyboard-shortcut-mixin/keyboard-shortcut-mixin.ts b/polygerrit-ui/app/mixins/keyboard-shortcut-mixin/keyboard-shortcut-mixin.ts
index 62589f8..a7593d5 100644
--- a/polygerrit-ui/app/mixins/keyboard-shortcut-mixin/keyboard-shortcut-mixin.ts
+++ b/polygerrit-ui/app/mixins/keyboard-shortcut-mixin/keyboard-shortcut-mixin.ts
@@ -104,10 +104,7 @@
 import {PolymerElement} from '@polymer/polymer';
 import {check, Constructor} from '../../utils/common-util';
 import {getKeyboardEvent, isModifierPressed} from '../../utils/dom-util';
-import {
-  CustomKeyboardEvent,
-  ShortcutTriggeredEventDetail,
-} from '../../types/events';
+import {CustomKeyboardEvent} from '../../types/events';
 import {appContext} from '../../services/app-context';
 
 /** Enum for all special shortcuts */
@@ -778,6 +775,8 @@
 
       private readonly restApiService = appContext.restApiService;
 
+      private reporting = appContext.reportingService;
+
       /** Used to disable shortcuts when the element is not visible. */
       private observer?: IntersectionObserver;
 
@@ -820,18 +819,19 @@
             return true;
           }
         }
-        const detail: ShortcutTriggeredEventDetail = {
-          event: e,
-          goKey: this._inGoKeyMode(),
-          vKey: this.inVKeyMode(),
-        };
-        this.dispatchEvent(
-          new CustomEvent('shortcut-triggered', {
-            detail,
-            composed: true,
-            bubbles: true,
-          })
-        );
+
+        // eg: {key: "k:keydown", ..., from: "gr-diff-view"}
+        let key = `${((e as unknown) as KeyboardEvent).key}:${e.type}`;
+        if (this._inGoKeyMode()) key = 'g+' + key;
+        if (this.inVKeyMode()) key = 'v+' + key;
+        if (e.shiftKey) key = 'shift+' + key;
+        if (e.ctrlKey) key = 'ctrl+' + key;
+        if (e.metaKey) key = 'meta+' + key;
+        if (e.altKey) key = 'alt+' + key;
+        this.reporting.reportInteraction('shortcut-triggered', {
+          key,
+          from: this.nodeName ?? 'unknown',
+        });
         return false;
       }
 
diff --git a/polygerrit-ui/app/types/events.ts b/polygerrit-ui/app/types/events.ts
index 3a61437..65c72f9 100644
--- a/polygerrit-ui/app/types/events.ts
+++ b/polygerrit-ui/app/types/events.ts
@@ -63,7 +63,6 @@
     'reload': ReloadEvent;
     /* prettier-ignore */
     'reply': ReplyEvent;
-    'shortcut-triggered': ShortcutTriggeredEvent;
     'show-alert': ShowAlertEvent;
     'show-error': ShowErrorEvent;
     'show-primary-tab': SwitchTabEvent;
@@ -167,13 +166,6 @@
 }
 export type ServerErrorEvent = CustomEvent<ServerErrorEventDetail>;
 
-export interface ShortcutTriggeredEventDetail {
-  event: CustomKeyboardEvent;
-  goKey: boolean;
-  vKey: boolean;
-}
-export type ShortcutTriggeredEvent = CustomEvent<ShortcutTriggeredEventDetail>;
-
 export interface ShowAlertEventDetail {
   message: string;
   dismissOnNavigation?: boolean;