Merge "Document more clearly how configuration parameters are inherited"
diff --git a/ui/code-owners-api.js b/ui/code-owners-api.js
index a1a1aed..e9a0227 100644
--- a/ui/code-owners-api.js
+++ b/ui/code-owners-api.js
@@ -129,8 +129,8 @@
           `branches/${encodeURIComponent(branch)}/` +
           `code_owners.branch_config`
       );
-      if (config.override_approval && !(config.override_approval
-          instanceof Array)) {
+      if (config.override_approval &&
+          !(config.override_approval instanceof Array)) {
         // In the upcoming backend changes, the override_approval will be changed
         // to array with (possible) multiple items.
         // While this transition is in progress, the frontend supports both API -
diff --git a/ui/code-owners-service.js b/ui/code-owners-service.js
index 0db6226..bf9fa4e 100644
--- a/ui/code-owners-service.js
+++ b/ui/code-owners-service.js
@@ -174,8 +174,8 @@
       const oldPathStatus = status.old_path_status;
       const newPathStatus = status.new_path_status;
       // For deleted files, no new_path_status exists
-      return (newPathStatus && newPathStatus.status !== OwnerStatus.APPROVED)
-        || (oldPathStatus && oldPathStatus.status !== OwnerStatus.APPROVED);
+      return (newPathStatus && newPathStatus.status !== OwnerStatus.APPROVED) ||
+        (oldPathStatus && oldPathStatus.status !== OwnerStatus.APPROVED);
     });
   }
 
@@ -231,7 +231,6 @@
     this.ownersProviders[suggestionsType].resume();
   }
 
-
   _formatStatuses(statuses) {
     // convert the array of statuses to map between file path -> status
     return statuses.reduce((prev, cur) => {
@@ -285,7 +284,8 @@
       provider.reset();
     }
     const codeOwnersApi = new CodeOwnersApi(this.restApi);
-    this.codeOwnersCacheApi = new CodeOwnersCacheApi(codeOwnersApi, change);
+    this.codeOwnersCacheApi =
+        new CodeOwnersCacheApi(codeOwnersApi, this.change);
   }
 
   async getBranchConfig() {
diff --git a/ui/owner-requirement.js b/ui/owner-requirement.js
index e6ced63..5fcbeec 100644
--- a/ui/owner-requirement.js
+++ b/ui/owner-requirement.js
@@ -65,7 +65,7 @@
         </p>
         <template is="dom-if" if="[[!_isLoading]]">
           <template is="dom-if" if="[[!_pluginFailed(model.pluginStatus)]]">
-            <template is="dom-if" if="[[!model.branchConfig.no_code_owners_defined]]">              
+            <template is="dom-if" if="[[!model.branchConfig.no_code_owners_defined]]">
               <span>[[_computeStatusText(_statusCount, _isOverriden)]]</span>
               <template is="dom-if" if="[[_overrideInfoUrl]]">
                 <a on-click="_reportDocClick" href="[[_overrideInfoUrl]]"
@@ -78,7 +78,7 @@
                 [[_getSuggestOwnersText(_statusCount)]]
               </gr-button>
             </template>
-            <template is="dom-if" if="[[model.branchConfig.no_code_owners_defined]]">                
+            <template is="dom-if" if="[[model.branchConfig.no_code_owners_defined]]">
               <span>No code-owners file</span>
               <a href="https://gerrit.googlesource.com/plugins/code-owners/+/master/resources/Documentation/user-guide.md#how-to-submit-changes-with-files-that-have-no-code-owners" target="_blank">
                 <iron-icon icon="gr-icons:help-outline"
@@ -101,8 +101,8 @@
       _statusCount: Object,
       _isLoading: {
         type: Boolean,
-        computed: '_computeIsLoading(model.branchConfig, model.status, '
-            + 'model.userRole, model.pluginStatus)',
+        computed: '_computeIsLoading(model.branchConfig, model.status, ' +
+            'model.userRole, model.pluginStatus)',
       },
       _isOverriden: {
         type: Boolean,
@@ -155,8 +155,8 @@
     if (!branchConfig) {
       return '';
     }
-    return branchConfig.general && branchConfig.general.override_info_url
-      ? branchConfig.general.override_info_url : '';
+    return branchConfig.general && branchConfig.general.override_info_url ?
+      branchConfig.general.override_info_url : '';
   }
 
   _computeIsOverriden(change, branchConfig) {
diff --git a/ui/owner-status-column.js b/ui/owner-status-column.js
index 4e6e055..8f57a2b 100644
--- a/ui/owner-status-column.js
+++ b/ui/owner-status-column.js
@@ -51,8 +51,8 @@
   computeHidden(change, patchRange) {
     if ([change, patchRange].includes(undefined)) return true;
     // if code-owners is not a submit requirement, don't show status column
-    if (change.requirements
-        && !change.requirements.find(r => r.type === 'code-owners')) {
+    if (change.requirements &&
+        !change.requirements.find(r => r.type === 'code-owners')) {
       return true;
     }
 
@@ -205,9 +205,9 @@
     if (!oldPathStatus) {
       this.status = newPathStatus;
     } else {
-      this.status = newPathStatus === STATUS_CODE.APPROVED
-        ? this._computeStatus(oldPathStatus, /* oldPath= */ true)
-        : newPathStatus;
+      this.status = newPathStatus === STATUS_CODE.APPROVED ?
+        this._computeStatus(oldPathStatus, /* oldPath= */ true) :
+        newPathStatus;
     }
   }
 
diff --git a/ui/suggest-owners-util.js b/ui/suggest-owners-util.js
index 898a6e5..fb18a0f 100644
--- a/ui/suggest-owners-util.js
+++ b/ui/suggest-owners-util.js
@@ -30,7 +30,6 @@
 
 export function getDisplayOwnersGroups(files, allOwnersByPathMap,
     reviewersIdSet, allowAllOwnersSubstition) {
-
   const getDisplayOwnersFunc =
       !allowAllOwnersSubstition || allOwnersByPathMap.size === 0 ||
       reviewersIdSet.size === 0 ?
diff --git a/ui/suggest-owners.js b/ui/suggest-owners.js
index bf4fff3..9d3f183 100644
--- a/ui/suggest-owners.js
+++ b/ui/suggest-owners.js
@@ -103,7 +103,7 @@
           border: 1px solid var(--view-background-color);
           border-radius: var(--border-radius);
           box-shadow: var(--elevation-level-1);
-          padding: var(--spacing-s);
+          padding: 0 var(--spacing-m);
           margin: var(--spacing-m) 0;
         }
         p.loading {
@@ -136,10 +136,10 @@
         }
         .show-all-owners-row {
           padding: var(--spacing-m) var(--spacing-xl) var(--spacing-s);
-          justify-content: flex-end;    
+          justify-content: flex-end;
         }
         .suggestion-row-indicator {
-          margin-right: var(--spacing-m);
+          margin-right: var(--spacing-s);
           visibility: hidden;
           line-height: 26px;
         }
@@ -150,14 +150,16 @@
           color: var(--link-color);
           vertical-align: top;
           position: relative;
-          top: 3px; /* (26-20)/2 - 26px line-height and 20px icon */ 
+          --iron-icon-height: 18px;
+          --iron-icon-width: 18px;
+          top: 4px; /* (26-18)/2 - 26px line-height and 18px icon */
         }
         .suggestion-group-name {
-          width: 200px;
+          width: 260px;
           line-height: 26px;
           text-overflow: ellipsis;
           overflow: hidden;
-          padding-right: var(--spacing-l);
+          padding-right: var(--spacing-s);
           white-space: nowrap;
         }
         .group-name-content {
@@ -175,7 +177,7 @@
           color: var(--deemphasized-text-color);
         }
         .suggested-owners {
-          --account-gap: var(--spacing-s);
+          --account-gap: var(--spacing-xs);
           --negative-account-gap: calc(-1*var(--account-gap));
           margin: var(--negative-account-gap) 0 0 var(--negative-account-gap);
           flex: 1;
@@ -617,7 +619,8 @@
     this.suggestedOwners.forEach((suggestion, sId) => {
       let hasSelected = false;
       suggestion.owners.code_owners.forEach((owner, oId) => {
-        if (accounts.some(account => account._account_id === owner.account._account_id)) {
+        if (accounts.some(
+            account => account._account_id === owner.account._account_id)) {
           this.set(
               ['suggestedOwners', sId, 'owners', 'code_owners', oId],
               {...owner,