Merge "HttpPluginServlet: Refactor generation of documentation index entries"
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/BUCK b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/BUCK
index 814dcf4..4e3c880 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/BUCK
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/accounts/BUCK
@@ -1,7 +1,7 @@
 include_defs('//gerrit-acceptance-tests/tests.defs')
 
 acceptance_tests(
-  group = 'api-account',
+  group = 'api_account',
   srcs = glob(['*IT.java']),
   labels = ['api'],
 )
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/change/BUCK b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/change/BUCK
index 5db2054..e8963be 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/change/BUCK
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/change/BUCK
@@ -1,7 +1,7 @@
 include_defs('//gerrit-acceptance-tests/tests.defs')
 
 acceptance_tests(
-  group = 'api-change',
+  group = 'api_change',
   srcs = glob(['*IT.java']),
   labels = ['api'],
 )
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/config/BUCK b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/config/BUCK
index 4918a95..3b3d362 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/config/BUCK
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/config/BUCK
@@ -1,7 +1,7 @@
 include_defs('//gerrit-acceptance-tests/tests.defs')
 
 acceptance_tests(
-  group = 'api-config',
+  group = 'api_config',
   srcs = glob(['*IT.java']),
   labels = ['api'],
 )
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/group/BUCK b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/group/BUCK
index 06be8ee..cea23dd 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/group/BUCK
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/group/BUCK
@@ -1,13 +1,13 @@
 include_defs('//gerrit-acceptance-tests/tests.defs')
 
 acceptance_tests(
-  group = 'api-group',
+  group = 'api_group',
   srcs = glob(['*IT.java']),
   deps = [
     ':util',
     '//gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/account:util',
   ],
-  labels = ['api']
+  labels = ['api'],
 )
 
 java_library(
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/group/GroupsIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/group/GroupsIT.java
index 9c064c7..3f8c1bc 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/group/GroupsIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/group/GroupsIT.java
@@ -156,8 +156,8 @@
     String dupGroupNameLowerCase = name("dupGroupA").toLowerCase();
     gApi.groups().create(dupGroupName);
     gApi.groups().create(dupGroupNameLowerCase);
-    assertThat(gApi.groups().list().getAsMap().keySet().contains(dupGroupName));
-    assertThat(gApi.groups().list().getAsMap().keySet().contains(dupGroupNameLowerCase));
+    assertThat(gApi.groups().list().getAsMap().keySet()).contains(dupGroupName);
+    assertThat(gApi.groups().list().getAsMap().keySet()).contains(dupGroupNameLowerCase);
   }
 
   @Test
@@ -530,7 +530,7 @@
   }
 
   private void assertNoMembers(String group) throws Exception {
-    assertThat(gApi.groups().id(group).members().isEmpty());
+    assertThat(gApi.groups().id(group).members()).isEmpty();
   }
 
   private void assertIncludes(String group, String... expectedNames)
@@ -553,7 +553,7 @@
   }
 
   private void assertNoIncludes(String group) throws Exception {
-    assertThat(gApi.groups().id(group).includedGroups().isEmpty());
+    assertThat(gApi.groups().id(group).includedGroups()).isEmpty();
   }
 
   private AccountGroup getFromCache(String name) throws Exception {
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/project/BUCK b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/project/BUCK
index 9dab9f8..0b293f3 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/project/BUCK
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/project/BUCK
@@ -1,7 +1,7 @@
 include_defs('//gerrit-acceptance-tests/tests.defs')
 
 acceptance_tests(
-  group = 'api-project',
+  group = 'api_project',
   srcs = glob(['*IT.java']),
   labels = ['api'],
 )
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/revision/BUCK b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/revision/BUCK
index c916755..76ae637 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/revision/BUCK
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/revision/BUCK
@@ -1,7 +1,7 @@
 include_defs('//gerrit-acceptance-tests/tests.defs')
 
 acceptance_tests(
-  group = 'api-revision',
+  group = 'api_revision',
   srcs = glob(['*IT.java']),
   labels = ['api'],
 )
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/account/BUCK b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/account/BUCK
index b7c1819..76c918b 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/account/BUCK
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/account/BUCK
@@ -1,10 +1,10 @@
 include_defs('//gerrit-acceptance-tests/tests.defs')
 
 acceptance_tests(
-  group = 'rest-account',
+  group = 'rest_account',
   srcs = glob(['*IT.java']),
   deps = [':util'],
-  labels = ['rest']
+  labels = ['rest'],
 )
 
 java_library(
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/BUCK b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/BUCK
index 1a8e151..3d3c5b3 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/BUCK
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/BUCK
@@ -9,7 +9,7 @@
 OTHER_TESTS = glob(['*IT.java'], excludes = SUBMIT_TESTS)
 
 acceptance_tests(
-  group = 'rest-change-other',
+  group = 'rest_change_other',
   srcs = OTHER_TESTS,
   deps = [
     ':submit_util',
@@ -17,9 +17,9 @@
   ],
   labels = ['rest'],
 )
- 
+
 acceptance_tests(
-  group = 'rest-change-submit',
+  group = 'rest_change_submit',
   srcs = SUBMIT_TESTS,
   deps = [
     ':submit_util',
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/CreateChangeIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/CreateChangeIT.java
index f8640bd..13f5063 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/CreateChangeIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/change/CreateChangeIT.java
@@ -95,9 +95,9 @@
     setSignedOffByFooter();
     ChangeInfo info = assertCreateSucceeds(newChangeInput(ChangeStatus.NEW));
     String message = info.revisions.get(info.currentRevision).commit.message;
-    assertThat(message.contains(
-        String.format("%s Adminitrstaor %s", SIGNED_OFF_BY_TAG,
-            admin.getIdent().getEmailAddress())));
+    assertThat(message).contains(
+        String.format("%sAdministrator <%s>", SIGNED_OFF_BY_TAG,
+            admin.getIdent().getEmailAddress()));
   }
 
   @Test
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/config/BUCK b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/config/BUCK
index 0802e7c..d65b84a 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/config/BUCK
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/config/BUCK
@@ -1,7 +1,7 @@
 include_defs('//gerrit-acceptance-tests/tests.defs')
 
 acceptance_tests(
-  group = 'rest-config',
+  group = 'rest_config',
   srcs = glob(['*IT.java']),
   labels = ['rest']
 )
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/group/BUCK b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/group/BUCK
index d991417..1947148 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/group/BUCK
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/group/BUCK
@@ -1,7 +1,7 @@
 include_defs('//gerrit-acceptance-tests/tests.defs')
 
 acceptance_tests(
-  group = 'rest-group',
+  group = 'rest_group',
   srcs = glob(['*IT.java']),
   labels = ['rest']
 )
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/BUCK b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/BUCK
index c1618fb..d53e69a 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/BUCK
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/rest/project/BUCK
@@ -1,13 +1,13 @@
 include_defs('//gerrit-acceptance-tests/tests.defs')
 
 acceptance_tests(
-  group = 'rest-project',
+  group = 'rest_project',
   srcs = glob(['*IT.java']),
   deps = [
     ':branch',
     ':project',
   ],
-  labels = ['rest']
+  labels = ['rest'],
 )
 
 java_library(
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/change/BUCK b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/change/BUCK
index 94e69da..5384447 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/change/BUCK
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/change/BUCK
@@ -1,7 +1,7 @@
 include_defs('//gerrit-acceptance-tests/tests.defs')
 
 acceptance_tests(
-  group = 'server-change',
+  group = 'server_change',
   srcs = glob(['*IT.java']),
   labels = ['server'],
 )
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/event/BUCK b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/event/BUCK
index 49d998c..4fbc977 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/event/BUCK
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/event/BUCK
@@ -1,7 +1,7 @@
 include_defs('//gerrit-acceptance-tests/tests.defs')
 
 acceptance_tests(
-  group = 'server-event',
+  group = 'server_event',
   srcs = glob(['*IT.java']),
   labels = ['server'],
 )
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/notedb/BUCK b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/notedb/BUCK
index f46a8e5..d9976e5 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/notedb/BUCK
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/notedb/BUCK
@@ -1,7 +1,7 @@
 include_defs('//gerrit-acceptance-tests/tests.defs')
 
 acceptance_tests(
-  group = 'server-notedb',
+  group = 'server_notedb',
   srcs = glob(['*IT.java']),
   labels = ['notedb', 'server'],
 )
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/project/BUCK b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/project/BUCK
index ad7d597..5245ae5 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/project/BUCK
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/project/BUCK
@@ -3,13 +3,13 @@
 FLAKY_TEST_CASES=['ProjectWatchIT.java']
 
 acceptance_tests(
-  group = 'server-project',
+  group = 'server_project',
   srcs = glob(['*IT.java'], excludes=FLAKY_TEST_CASES),
   labels = ['server'],
 )
 
 acceptance_tests(
-  group = 'server-project-flaky',
+  group = 'server_project_flaky',
   srcs = FLAKY_TEST_CASES,
   labels = ['server', 'flaky'],
 )
diff --git a/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/RefNames.java b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/RefNames.java
index 1af82da..7c460de 100644
--- a/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/RefNames.java
+++ b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/RefNames.java
@@ -177,6 +177,9 @@
   }
 
   public static boolean isRefsEditOf(String ref, Account.Id accountId) {
+    if (accountId == null) {
+      return false;
+    }
     String prefix = new StringBuilder(refsUsers(accountId))
         .append('/')
         .append(EDIT_PREFIX)
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/RefPatternMatcher.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/RefPatternMatcher.java
index d8f4054..fe87b6b 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/project/RefPatternMatcher.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/RefPatternMatcher.java
@@ -144,7 +144,7 @@
         } else if (emails.isEmpty()) {
           return ImmutableSet.of(user.getUserName());
         }
-        Iterables.concat(emails, ImmutableSet.of(user.getUserName()));
+        return Iterables.concat(emails, ImmutableSet.of(user.getUserName()));
       }
       if (user.getUserName() != null) {
         return ImmutableSet.of(user.getUserName());
diff --git a/plugins/singleusergroup b/plugins/singleusergroup
index 141898f..b355c90 160000
--- a/plugins/singleusergroup
+++ b/plugins/singleusergroup
@@ -1 +1 @@
-Subproject commit 141898f9e160c190bdf28999e31f5c667a477f9c
+Subproject commit b355c909345e3ccf5ebb139ded538e35cbdbb67c
diff --git a/polygerrit-ui/app/elements/diff/gr-selection-action-box/gr-selection-action-box.js b/polygerrit-ui/app/elements/diff/gr-selection-action-box/gr-selection-action-box.js
index d464947..0a85096 100644
--- a/polygerrit-ui/app/elements/diff/gr-selection-action-box/gr-selection-action-box.js
+++ b/polygerrit-ui/app/elements/diff/gr-selection-action-box/gr-selection-action-box.js
@@ -42,6 +42,16 @@
     ],
 
     placeAbove: function(el) {
+      var rect = this._getTargetBoundingRect(el);
+      var boxRect = this.getBoundingClientRect();
+      var parentRect = this.parentElement.getBoundingClientRect();
+      this.style.top =
+          rect.top - parentRect.top - boxRect.height - 4 + 'px';
+      this.style.left =
+          rect.left - parentRect.left + (rect.width - boxRect.width)/2 + 'px';
+    },
+
+    _getTargetBoundingRect: function(el) {
       var rect;
       if (!(el instanceof Element)) {
         var range = document.createRange();
@@ -51,12 +61,7 @@
       } else {
         rect = el.getBoundingClientRect();
       }
-      var boxRect = this.getBoundingClientRect();
-      var parentRect = this.parentElement.getBoundingClientRect();
-      this.style.top =
-          rect.top - parentRect.top - boxRect.height - 4 + 'px';
-      this.style.left =
-          rect.left - parentRect.left + (rect.width - boxRect.width)/2 + 'px';
+      return rect;
     },
 
     _handleKey: function(e) {
diff --git a/polygerrit-ui/app/elements/diff/gr-selection-action-box/gr-selection-action-box_test.html b/polygerrit-ui/app/elements/diff/gr-selection-action-box/gr-selection-action-box_test.html
index 3cb3a17..65c396f 100644
--- a/polygerrit-ui/app/elements/diff/gr-selection-action-box/gr-selection-action-box_test.html
+++ b/polygerrit-ui/app/elements/diff/gr-selection-action-box/gr-selection-action-box_test.html
@@ -84,7 +84,7 @@
         target = container.querySelector('.target');
         sinon.stub(container, 'getBoundingClientRect').returns(
             {top:1, bottom: 2, left: 3, right: 4, width: 50, height: 6});
-        sinon.stub(target, 'getBoundingClientRect').returns(
+        sinon.stub(element, '_getTargetBoundingRect').returns(
             {top:42, bottom: 20, left: 30, right: 40, width: 100, height: 60});
         sinon.stub(element, 'getBoundingClientRect').returns(
             {width: 10, height: 10});
@@ -93,7 +93,7 @@
       teardown(function() {
         element.getBoundingClientRect.restore();
         container.getBoundingClientRect.restore();
-        target.getBoundingClientRect.restore();
+        element._getTargetBoundingRect.restore();
       });
 
       test('placeAbove for Element argument', function() {
@@ -104,7 +104,17 @@
 
       test('placeAbove for Text Node argument', function() {
         element.placeAbove(target.firstChild);
-        assert.equal(element.style.top, '-7px');
+        assert.equal(element.style.top, '27px');
+        assert.equal(element.style.left, '72px');
+      });
+
+      test('uses document.createRange', function() {
+        sinon.spy(document, 'createRange');
+        element._getTargetBoundingRect.restore();
+        sinon.spy(element, '_getTargetBoundingRect');
+        element.placeAbove(target.firstChild);
+        assert.isTrue(document.createRange.called);
+        document.createRange.restore();
       });
     });
   });