Make avatar image only visible after it has been successfully loaded

This avoids showing empty image frames while avatar images are
loading. Such an empty frame is especially annoying if there is no
avatar image for a user, since then the empty frame is shown and
disappears a moment later.

Change-Id: Ib431f5d1a2bada9de0207f6ac8cf655400cf35f7
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/AvatarImage.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/AvatarImage.java
index 0cfd05f..fb8b5f8 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/AvatarImage.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/AvatarImage.java
@@ -17,8 +17,8 @@
 import com.google.gerrit.client.account.AccountInfo;
 import com.google.gerrit.client.changes.Util;
 import com.google.gerrit.client.rpc.RestApi;
-import com.google.gwt.event.dom.client.ErrorEvent;
-import com.google.gwt.event.dom.client.ErrorHandler;
+import com.google.gwt.event.dom.client.LoadEvent;
+import com.google.gwt.event.dom.client.LoadHandler;
 import com.google.gwt.event.dom.client.MouseOutEvent;
 import com.google.gwt.event.dom.client.MouseOutHandler;
 import com.google.gwt.event.dom.client.MouseOverEvent;
@@ -59,18 +59,17 @@
   public AvatarImage(AccountInfo account, int size, boolean addPopup) {
     super(isGerritServer(account) ? getGerritServerAvatarUrl() :
         url(account.email(), size));
+    setVisible(false);
 
     if (size > 0) {
       // If the provider does not resize the image, force it in the browser.
       setSize(size + "px", size + "px");
     }
 
-    addErrorHandler(new ErrorHandler() {
+    addLoadHandler(new LoadHandler() {
       @Override
-      public void onError(ErrorEvent event) {
-        // We got a 404, don't bother showing the image. Either the user doesn't
-        // have an avatar or there is no avatar provider plugin installed.
-        setVisible(false);
+      public void onLoad(LoadEvent event) {
+        setVisible(true);
       }
     });