Merge "Replace the "down arrow" for dropdowns by a gr-icon"
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts
index ea211ce..6ed55ca 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts
@@ -903,7 +903,7 @@
           margin-left: var(--spacing-s);
         }
         .showCopyLinkDialogButton {
-          --gr-button-padding: var(--spacing-m) var(--spacing-xs);
+          --gr-button-padding: 0;
         }
         #replyBtn {
           margin-bottom: var(--spacing-m);
diff --git a/polygerrit-ui/app/elements/core/gr-main-header/gr-main-header.ts b/polygerrit-ui/app/elements/core/gr-main-header/gr-main-header.ts
index 7f729c1..dcc9a99 100644
--- a/polygerrit-ui/app/elements/core/gr-main-header/gr-main-header.ts
+++ b/polygerrit-ui/app/elements/core/gr-main-header/gr-main-header.ts
@@ -311,7 +311,9 @@
         .loginButton,
         .registerButton,
         gr-icon,
+        gr-dropdown,
         gr-account-dropdown {
+          --gr-button-text-color: var(--header-text-color);
           color: var(--header-text-color);
         }
         #mobileSearch {
diff --git a/polygerrit-ui/app/elements/shared/gr-button/gr-button.ts b/polygerrit-ui/app/elements/shared/gr-button/gr-button.ts
index d1b984c..f33f7d8 100644
--- a/polygerrit-ui/app/elements/shared/gr-button/gr-button.ts
+++ b/polygerrit-ui/app/elements/shared/gr-button/gr-button.ts
@@ -6,7 +6,7 @@
 import '@polymer/paper-button/paper-button';
 import {spinnerStyles} from '../../../styles/gr-spinner-styles';
 import {votingStyles} from '../../../styles/gr-voting-styles';
-import {css, html, LitElement, PropertyValues} from 'lit';
+import {css, html, LitElement, nothing, PropertyValues} from 'lit';
 import {customElement, property} from 'lit/decorators.js';
 import {addShortcut, getEventPath, Key} from '../../../utils/dom-util';
 import {getAppContext} from '../../../services/app-context';
@@ -39,7 +39,7 @@
   // after created, the initial value maybe overridden by this
   private initialTabindex?: string;
 
-  @property({type: Boolean, reflect: true, attribute: 'down-arrow'})
+  @property({type: Boolean, attribute: 'down-arrow'})
   downArrow = false;
 
   @property({type: Boolean, reflect: true})
@@ -168,21 +168,8 @@
           --text-color: var(--disabled-foreground);
           cursor: default;
         }
-
-        /* Styles for the optional down arrow */
-        :host(:not([down-arrow])) .downArrow {
-          display: none;
-        }
-        :host([down-arrow]) .downArrow {
-          border-top: 0.36em solid #ccc;
-          border-left: 0.36em solid transparent;
-          border-right: 0.36em solid transparent;
-          margin-bottom: var(--spacing-xxs);
-          margin-left: var(--spacing-m);
-          transition: border-top-color 200ms;
-        }
-        :host([down-arrow]) paper-button:hover .downArrow {
-          border-top-color: var(--deemphasized-text-color);
+        gr-icon.downArrow {
+          color: inherit;
         }
         .newVoteChip {
           border: 1px solid var(--border-color);
@@ -208,10 +195,15 @@
     >
       ${this.loading ? html`<span class="loadingSpin"></span>` : ''}
       <slot></slot>
-      <i class="downArrow"></i>
+      ${this.renderArrowIcon()}
     </paper-button>`;
   }
 
+  renderArrowIcon() {
+    if (!this.downArrow) return nothing;
+    return html`<gr-icon icon="arrow_drop_down" class="downArrow"></gr-icon>`;
+  }
+
   constructor() {
     super();
     this.initialTabindex = this.getAttribute('tabindex') || '0';
diff --git a/polygerrit-ui/app/elements/shared/gr-button/gr-button_test.ts b/polygerrit-ui/app/elements/shared/gr-button/gr-button_test.ts
index d597a83..bda595f 100644
--- a/polygerrit-ui/app/elements/shared/gr-button/gr-button_test.ts
+++ b/polygerrit-ui/app/elements/shared/gr-button/gr-button_test.ts
@@ -42,12 +42,24 @@
           raised=""
           role="button"
           tabindex="-1"
-          ><slot></slot><i class="downArrow"></i>
+          ><slot></slot>
         </paper-button>
       `
     );
   });
 
+  test('renders arrow icon', async () => {
+    element.downArrow = true;
+    await element.updateComplete;
+    const icon = queryAndAssert(element, 'gr-icon');
+    assert.dom.equal(
+      icon,
+      /* HTML */ `
+        <gr-icon icon="arrow_drop_down" class="downArrow"></gr-icon>
+      `
+    );
+  });
+
   test('disabled is set by disabled', async () => {
     const paperBtn = queryAndAssert<PaperButtonElement>(
       element,