Merge 'stable-2.12'

* stable-2.12:
  Build with API version 2.12.4

Change-Id: I9dfe6edc4f91c0fc611d216cbed994788e5db598
Signed-off-by: Edwin Kempin <ekempin@google.com>
diff --git a/lib/gerrit/BUCK b/lib/gerrit/BUCK
index a02c9a4..acb4718 100644
--- a/lib/gerrit/BUCK
+++ b/lib/gerrit/BUCK
@@ -1,12 +1,11 @@
 include_defs('//bucklets/maven_jar.bucklet')
 
-VER = '2.12.4'
-REPO = MAVEN_CENTRAL
+VER = '2.13-SNAPSHOT'
+REPO = MAVEN_LOCAL
 
 maven_jar(
   name = 'plugin-api',
   id = 'com.google.gerrit:gerrit-plugin-api:' + VER,
-  sha1 = 'aad189fe4f9fa5c3f8048b5e4972512b4b3e2a24',
   license = 'Apache2.0',
   attach_source = False,
   repository = REPO,
@@ -15,7 +14,6 @@
 maven_jar(
   name = 'gwtui-api',
   id = 'com.google.gerrit:gerrit-plugin-gwtui:' + VER,
-  sha1 = 'd57778f60399938f473254e97bf5de86885d48d0',
   license = 'Apache2.0',
   attach_source = False,
   repository = REPO,
diff --git a/pom.xml b/pom.xml
index d120542..dfbc4fa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
   <groupId>com.googlesource.gerrit.plugins.imagare</groupId>
   <artifactId>imagare</artifactId>
   <packaging>jar</packaging>
-  <version>2.12.4</version>
+  <version>2.13-SNAPSHOT</version>
   <name>imagare</name>
 
   <properties>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/imagare/DeleteImage.java b/src/main/java/com/googlesource/gerrit/plugins/imagare/DeleteImage.java
index 2805ba4..7a6449e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/imagare/DeleteImage.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/imagare/DeleteImage.java
@@ -14,7 +14,6 @@
 
 package com.googlesource.gerrit.plugins.imagare;
 
-import com.google.gerrit.common.ChangeHooks;
 import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.extensions.restapi.AuthException;
 import com.google.gerrit.extensions.restapi.ResourceConflictException;
@@ -51,17 +50,16 @@
   private final Provider<IdentifiedUser> self;
   private final GitRepositoryManager repoManager;
   private final GitReferenceUpdated referenceUpdated;
-  private final ChangeHooks hooks;
 
   @Inject
-  public DeleteImage(@PluginName String pluginName, Provider<IdentifiedUser> self,
-      GitRepositoryManager repoManager, GitReferenceUpdated referenceUpdated,
-      ChangeHooks hooks) {
+  public DeleteImage(@PluginName String pluginName,
+      Provider<IdentifiedUser> self,
+      GitRepositoryManager repoManager,
+      GitReferenceUpdated referenceUpdated) {
     this.pluginName = pluginName;
     this.self = self;
     this.repoManager = repoManager;
     this.referenceUpdated = referenceUpdated;
-    this.hooks = hooks;
   }
 
   @Override
@@ -95,8 +93,7 @@
         case NO_CHANGE:
         case FAST_FORWARD:
         case FORCED:
-          referenceUpdated.fire(rsrc.getProject(), u);
-          hooks.doRefUpdatedHook(rsrc.getBranchKey(), u, self.get().getAccount());
+          referenceUpdated.fire(rsrc.getProject(), u, self.get().getAccount());
           break;
 
         case REJECTED_CURRENT_BRANCH:
@@ -113,7 +110,7 @@
 
   private void validateOwnImage(Repository repo, String ref)
       throws IOException, ResourceNotFoundException, AuthException {
-    Ref r = repo.getRef(ref);
+    Ref r = repo.exactRef(ref);
     if (r == null) {
       throw new ResourceNotFoundException(ref);
     }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/imagare/ImagareMenu.java b/src/main/java/com/googlesource/gerrit/plugins/imagare/ImagareMenu.java
index 975c6ae..2dbc0a9 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/imagare/ImagareMenu.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/imagare/ImagareMenu.java
@@ -15,6 +15,7 @@
 package com.googlesource.gerrit.plugins.imagare;
 
 import com.google.gerrit.extensions.annotations.PluginName;
+import com.google.gerrit.extensions.client.MenuItem;
 import com.google.gerrit.extensions.webui.TopMenu;
 import com.google.gerrit.server.config.PluginConfig;
 import com.google.gerrit.server.config.PluginConfigFactory;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/imagare/ImageServlet.java b/src/main/java/com/googlesource/gerrit/plugins/imagare/ImageServlet.java
index 4218fcc..69ef8d1 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/imagare/ImageServlet.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/imagare/ImageServlet.java
@@ -142,7 +142,7 @@
         if (ObjectId.isId(rev)) {
           try (RevWalk rw = new RevWalk(repo)) {
             RevCommit commit = rw.parseCommit(repo.resolve(rev));
-            if (!projectControl.canReadCommit(db.get(), rw, commit)) {
+            if (!projectControl.canReadCommit(db.get(), repo, commit)) {
               notFound(res);
               return;
             }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/imagare/PostImage.java b/src/main/java/com/googlesource/gerrit/plugins/imagare/PostImage.java
index c41e75a..5b58590 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/imagare/PostImage.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/imagare/PostImage.java
@@ -14,7 +14,6 @@
 
 package com.googlesource.gerrit.plugins.imagare;
 
-import com.google.gerrit.common.ChangeHooks;
 import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.extensions.restapi.AuthException;
 import com.google.gerrit.extensions.restapi.BadRequestException;
@@ -23,7 +22,6 @@
 import com.google.gerrit.extensions.restapi.ResourceConflictException;
 import com.google.gerrit.extensions.restapi.Response;
 import com.google.gerrit.extensions.restapi.RestModifyView;
-import com.google.gerrit.reviewdb.client.Branch;
 import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.reviewdb.server.ReviewDb;
 import com.google.gerrit.server.mime.FileTypeRegistry;
@@ -74,7 +72,6 @@
   private final Provider<IdentifiedUser> self;
   private final GitRepositoryManager repoManager;
   private final GitReferenceUpdated referenceUpdated;
-  private final ChangeHooks hooks;
   private final PersonIdent myIdent;
   private final String canonicalWebUrl;
   private final Config cfg;
@@ -82,17 +79,20 @@
   private final String pluginName;
 
   @Inject
-  public PostImage(FileTypeRegistry registry, Provider<IdentifiedUser> self,
-      GitRepositoryManager repoManager, GitReferenceUpdated referenceUpdated,
-      ChangeHooks hooks, @GerritPersonIdent PersonIdent myIdent,
-      @CanonicalWebUrl String canonicalWebUrl, @GerritServerConfig Config cfg,
-      Provider<ReviewDb> db, @PluginName String pluginName) {
+  public PostImage(FileTypeRegistry registry,
+      Provider<IdentifiedUser> self,
+      GitRepositoryManager repoManager,
+      GitReferenceUpdated referenceUpdated,
+      @GerritPersonIdent PersonIdent myIdent,
+      @CanonicalWebUrl String canonicalWebUrl,
+      @GerritServerConfig Config cfg,
+      Provider<ReviewDb> db,
+      @PluginName String pluginName) {
     this.registry = registry;
     this.imageDataPattern = Pattern.compile("data:([\\w/.-]+);([\\w]+),(.*)");
     this.self = self;
     this.repoManager = repoManager;
     this.referenceUpdated = referenceUpdated;
-    this.hooks = hooks;
     this.myIdent = myIdent;
     this.canonicalWebUrl = canonicalWebUrl;
     this.cfg = cfg;
@@ -192,7 +192,7 @@
         commitId = oi.insert(cb);
         oi.flush();
 
-        if (!rc.canCreate(db.get(), rw, rw.parseCommit(commitId))) {
+        if (!rc.canCreate(db.get(), repo, rw.parseCommit(commitId))) {
           throw new AuthException(String.format(
               "Project %s doesn't allow image upload.", pc.getProject().getName()));
         }
@@ -202,9 +202,8 @@
         ru.setNewObjectId(commitId);
         ru.disableRefLog();
         if (ru.update(rw) == RefUpdate.Result.NEW) {
-          referenceUpdated.fire(pc.getProject().getNameKey(), ru);
-          hooks.doRefUpdatedHook(new Branch.NameKey(pc.getProject()
-              .getNameKey(), ref), ru, self.get().getAccount());
+          referenceUpdated.fire(pc.getProject().getNameKey(), ru,
+              self.get().getAccount());
         } else {
           throw new IOException(String.format(
               "Failed to create ref %s in %s: %s", ref,
diff --git a/src/main/resources/Documentation/about.md b/src/main/resources/Documentation/about.md
index 9279cb3..0ae87f3 100644
--- a/src/main/resources/Documentation/about.md
+++ b/src/main/resources/Documentation/about.md
@@ -41,12 +41,12 @@
 
 To configure an external image server the image server that comes with
 the plugin must be disabled. This is done by setting the
-[enableImageServer](config.html#enable-image-server) to `false`.
+[enableImageServer](config.md#enable-image-server) to `false`.
 
 A regular expression to match URLs of images that should be embedded
-must be configured as [pattern](config.html#pattern).
+must be configured as [pattern](config.md#pattern).
 
-Optionally also a [URL for uploading images](config.html#upload-url)
+Optionally also a [URL for uploading images](config.md#upload-url)
 can be defined.
 
 ```
diff --git a/src/main/resources/Documentation/rest-api-projects.md b/src/main/resources/Documentation/rest-api-projects.md
index 9e738eb..cbd7f59 100644
--- a/src/main/resources/Documentation/rest-api-projects.md
+++ b/src/main/resources/Documentation/rest-api-projects.md
@@ -22,7 +22,7 @@
 [Create Reference](../../../Documentation/access-control.html#category_create)
 access right on the `refs/images/*` namespace of the project.
 
-Only available if [image server is enabled](config.html#enable-image-server).
+Only available if [image server is enabled](config.md#enable-image-server).
 
 #### Request
 
@@ -52,7 +52,7 @@
 granted the `Delete Own Images` global capability which allows deleting
 own images.
 
-Only available if [image server is enabled](config.html#enable-image-server).
+Only available if [image server is enabled](config.md#enable-image-server).
 
 #### Request
 
diff --git a/src/main/resources/static/imagare.js b/src/main/resources/static/imagare.js
index 971becf..91bec6f 100644
--- a/src/main/resources/static/imagare.js
+++ b/src/main/resources/static/imagare.js
@@ -13,24 +13,20 @@
 // limitations under the License.
 
 Gerrit.install(function(self) {
-    function onHistory(t) {
-      if (!startsWith(t, "/c/")) {
-        return;
-      }
-
+    function onComment(e) {
       var prefs = getPrefsFromCookie();
       if (prefs !== null) {
-        convertImageLinks(prefs);
+        convertImageLinks(getLinks(e), prefs);
       } else {
         Gerrit.get('/accounts/self/' + self.getPluginName() + '~preference', function(prefs) {
           storePrefsInCookie(prefs);
-          convertImageLinks(prefs);
+          convertImageLinks(getLinks(e), prefs);
         });
       }
     }
 
-    function startsWith(s, p) {
-      return s.slice(0, p.length) == p;
+    function getLinks(e) {
+      return e.getElementsByTagName("a");
     }
 
     function storePrefsInCookie(prefs) {
@@ -64,20 +60,19 @@
       return self.getPluginName() + "~prefs";
     }
 
-    function convertImageLinks(prefs) {
+    function convertImageLinks(l, prefs) {
       if (!prefs.pattern) {
         return;
       }
 
       if ('TOOLTIP' === prefs.link_decoration) {
-        addTooltips(prefs.pattern);
+        addTooltips(l, prefs.pattern);
       } else if ('INLINE' === prefs.link_decoration) {
-        inlineImages(prefs.pattern);
+        inlineImages(l, prefs.pattern);
       }
     }
 
-    function inlineImages(pattern) {
-      var l = document.links;
+    function inlineImages(l, pattern) {
       for(var i = 0; i < l.length; i++) {
         if (l[i].href.match(pattern)) {
           var a = document.createElement('a');
@@ -92,7 +87,6 @@
     }
 
     function addTooltips(pattern) {
-      var l = document.links;
       for(var i = 0; i < l.length; i++) {
         if (l[i].href.match(pattern)) {
           l[i].onmouseover = function (evt) {
@@ -108,5 +102,5 @@
       }
     }
 
-    Gerrit.on('history', onHistory);
+    Gerrit.on('comment', onComment);
   });