Remove unused methods from gr-hovercard-behavior

Change-Id: Ifaea3216180f63315d4b84346bf9598d7966081f
diff --git a/polygerrit-ui/app/elements/shared/gr-hovercard/gr-hovercard-behavior.ts b/polygerrit-ui/app/elements/shared/gr-hovercard/gr-hovercard-behavior.ts
index 356a248..82af365 100644
--- a/polygerrit-ui/app/elements/shared/gr-hovercard/gr-hovercard-behavior.ts
+++ b/polygerrit-ui/app/elements/shared/gr-hovercard/gr-hovercard-behavior.ts
@@ -19,7 +19,7 @@
 import {getRootElement} from '../../../scripts/rootElement';
 import {Constructor} from '../../../utils/common-util';
 import {PolymerElement} from '@polymer/polymer/polymer-element';
-import {property, observe} from '@polymer/decorators';
+import {observe, property} from '@polymer/decorators';
 import {
   pushScrollLock,
   removeScrollLock,
@@ -134,8 +134,6 @@
       this._target.addEventListener('focus', this.debounceShow);
       this._target.addEventListener('mouseleave', this.debounceHide);
       this._target.addEventListener('blur', this.debounceHide);
-
-      // when click, dismiss immediately
       this._target.addEventListener('click', this.hide);
 
       // show the hovercard if mouse moves to hovercard
@@ -151,6 +149,11 @@
       this.cancelShowTask();
       this.cancelHideTask();
       this.unlock();
+      this._target?.removeEventListener('mouseenter', this.debounceShow);
+      this._target?.removeEventListener('focus', this.debounceShow);
+      this._target?.removeEventListener('mouseleave', this.debounceHide);
+      this._target?.removeEventListener('blur', this.debounceHide);
+      this._target?.removeEventListener('click', this.hide);
       super.disconnectedCallback();
     }
 
@@ -160,14 +163,6 @@
       this.container = getHovercardContainer({createIfNotExists: true});
     }
 
-    removeListeners() {
-      this._target?.removeEventListener('mouseenter', this.debounceShow);
-      this._target?.removeEventListener('focus', this.debounceShow);
-      this._target?.removeEventListener('mouseleave', this.debounceHide);
-      this._target?.removeEventListener('blur', this.debounceHide);
-      this._target?.removeEventListener('click', this.hide);
-    }
-
     readonly debounceHide = () => {
       this.cancelShowTask();
       if (!this._isShowing || this.isScheduledToHide) return;
@@ -185,10 +180,10 @@
     };
 
     cancelHideTask() {
-      if (this.hideTask) {
-        this.hideTask.cancel();
-        this.isScheduledToHide = false;
-      }
+      if (!this.hideTask) return;
+      this.hideTask.cancel();
+      this.isScheduledToHide = false;
+      this.hideTask = undefined;
     }
 
     /**
@@ -315,10 +310,10 @@
     }
 
     cancelShowTask() {
-      if (this.showTask) {
-        this.showTask.cancel();
-        this.isScheduledToShow = false;
-      }
+      if (!this.showTask) return;
+      this.showTask.cancel();
+      this.isScheduledToShow = false;
+      this.showTask = undefined;
     }
 
     /**
@@ -332,7 +327,7 @@
      * Shows/opens the hovercard. This occurs when the user triggers the
      * `mousenter` event on the hovercard's `target` element.
      */
-    readonly show = () => {
+    readonly show = async () => {
       this.cancelHideTask();
       this.cancelShowTask();
       if (this._isShowing || !this.container) {
@@ -352,7 +347,7 @@
       // Make sure that the hovercard actually rendered and all dom-if
       // statements processed, so that we can measure the (invisible)
       // hovercard properly in updatePosition().
-      flush();
+      await flush();
       this.updatePosition();
       this.classList.remove(HIDE_CLASS);
     };
@@ -473,9 +468,6 @@
   _target: HTMLElement | null;
   _isShowing: boolean;
   ready(): void;
-  removeListeners(): void;
-  debounceHide(): void;
-  cancelHideTask(): void;
   dispatchEventThroughTarget(eventName: string, detail?: unknown): void;
   hide(e?: MouseEvent): void;
   debounceShow(): void;
@@ -483,5 +475,4 @@
   cancelShowTask(): void;
   show(): void;
   updatePosition(): void;
-  updatePositionTo(position: string): void;
 }
diff --git a/polygerrit-ui/app/elements/shared/gr-hovercard/gr-hovercard_test.js b/polygerrit-ui/app/elements/shared/gr-hovercard/gr-hovercard_test.js
index 27ef23f..d5e0061 100644
--- a/polygerrit-ui/app/elements/shared/gr-hovercard/gr-hovercard_test.js
+++ b/polygerrit-ui/app/elements/shared/gr-hovercard/gr-hovercard_test.js
@@ -84,8 +84,8 @@
     assert.notEqual(element.container, element.parentNode);
   });
 
-  test('show', () => {
-    element.show({});
+  test('show', async () => {
+    await element.show({});
     const style = getComputedStyle(element);
     assert.isTrue(element._isShowing);
     assert.isTrue(element.classList.contains('hovered'));
@@ -120,6 +120,7 @@
     button.dispatchEvent(new CustomEvent('mouseenter'));
 
     await enterPromise;
+    await flush();
     assert.isTrue(element.isScheduledToShow);
     element.showTask.flush();
     assert.isTrue(element._isShowing);
@@ -152,6 +153,7 @@
     button.dispatchEvent(new CustomEvent('mouseenter'));
 
     await enterPromise;
+    await flush();
     assert.isTrue(element.isScheduledToShow);
     MockInteractions.tap(button);