Merge "Fix submit rule for changes for which the target branch doesn't exist"
diff --git a/ui/code-owners-model.js b/ui/code-owners-model.js
index ad536b4..b6fcbbf 100644
--- a/ui/code-owners-model.js
+++ b/ui/code-owners-model.js
@@ -39,6 +39,19 @@
   ALL_SUGGESTIONS: 'ALL_SUGGESTIONS',
 };
 
+/**
+ * @enum
+ */
+export const UserRole = {
+  ANONYMOUS: 'ANONYMOUS',
+  AUTHOR: 'AUTHOR',
+  CHANGE_OWNER: 'CHANGE_OWNER',
+  REVIEWER: 'REVIEWER',
+  CC: 'CC',
+  REMOVED_REVIEWER: 'REMOVED_REVIEWER',
+  OTHER: 'OTHER',
+};
+
 export const BestSuggestionsLimit = 5;
 export const AllSuggestionsLimit = 1000;
 
diff --git a/ui/code-owners-service.js b/ui/code-owners-service.js
index f7ee6d2..3a5cbdc 100644
--- a/ui/code-owners-service.js
+++ b/ui/code-owners-service.js
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-import {SuggestionsType, BestSuggestionsLimit, AllSuggestionsLimit} from './code-owners-model.js';
+import {SuggestionsType, BestSuggestionsLimit, AllSuggestionsLimit, UserRole} from './code-owners-model.js';
 import {OwnersProvider, OwnerStatus, FetchStatus} from './code-owners-fetcher.js';
 import {CodeOwnersApi, CodeOwnersCacheApi} from './code-owners-api.js';
 
@@ -31,19 +31,6 @@
 };
 
 /**
- * @enum
- */
-const UserRole = {
-  ANONYMOUS: 'ANONYMOUS',
-  AUTHOR: 'AUTHOR',
-  CHANGE_OWNER: 'CHANGE_OWNER',
-  REVIEWER: 'REVIEWER',
-  CC: 'CC',
-  REMOVED_REVIEWER: 'REMOVED_REVIEWER',
-  OTHER: 'OTHER',
-};
-
-/**
  * Service for the data layer used in the plugin UI.
  */
 export class CodeOwnerService {
diff --git a/ui/owner-requirement.js b/ui/owner-requirement.js
index 6ba53b6..c15fcf3 100644
--- a/ui/owner-requirement.js
+++ b/ui/owner-requirement.js
@@ -18,7 +18,7 @@
 import {OwnerStatus} from './code-owners-fetcher.js';
 import {CodeOwnersModelMixin} from './code-owners-model-mixin.js';
 import {showPluginFailedMessage} from './code-owners-banner.js';
-import {isPluginErrorState} from './code-owners-model.js';
+import {isPluginErrorState, UserRole} from './code-owners-model.js';
 
 /**
  * Owner requirement control for `submit-requirement-item-code-owners` endpoint.
@@ -75,9 +75,11 @@
                       title="Documentation for overriding code owners"></iron-icon>
                   </a>
                 </template>
-                <gr-button link on-click="_openReplyDialog">
-                  [[_getSuggestOwnersText(_statusCount)]]
-                </gr-button>
+                <template is="dom-if" if="[[_isSignedInUser]]">
+                  <gr-button link on-click="_openReplyDialog">
+                    [[_getSuggestOwnersText(_statusCount)]]
+                  </gr-button>
+                </template>
               </template>
               <template is="dom-if" if="[[_newerPatchsetUploaded]]">
                 <span>A newer patch set has been uploaded.</span>
@@ -118,6 +120,10 @@
         type: String,
         computed: '_computeOverrideInfoUrl(model.branchConfig)',
       },
+      _isSignedInUser: {
+        type: Boolean,
+        computed: '_computeIsSignedInUser(model.userRole)'
+      }
     };
   }
 
@@ -142,6 +148,10 @@
     return !branchConfig || !status || !userRole;
   }
 
+  _computeIsSignedInUser(userRole) {
+    return userRole && userRole !== UserRole.ANONYMOUS;
+  }
+
   _pluginFailed(pluginStatus) {
     return pluginStatus && isPluginErrorState(pluginStatus.state);
   }