Merge "InlineEdit: Fix diff against revision feature"
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.java
index e9fd4ba..88f8408 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen.java
@@ -770,16 +770,11 @@
     final RevisionInfo b = resolveRevisionOrPatchSetId(info, base, null);
 
     CallbackGroup group = new CallbackGroup();
+    Timestamp lastReply = myLastReply(info);
     if (rev.is_edit()) {
-      NativeMap<JsArray<CommentInfo>> emptyComment = NativeMap.create();
-      files.set(
-          b != null ? new PatchSet.Id(changeId, b._number()) : null,
-          new PatchSet.Id(changeId, rev._number()),
-          style, reply, fileTableMode, edit != null);
-      files.setValue(info.edit().files(), myLastReply(info), emptyComment,
-          emptyComment);
+      loadFileList(b, rev, lastReply, group, null, null);
     } else {
-      loadDiff(b, rev, myLastReply(info), group);
+      loadDiff(b, rev, lastReply, group);
     }
     loadCommit(rev, group);
 
@@ -819,23 +814,7 @@
       final Timestamp myLastReply, CallbackGroup group) {
     final List<NativeMap<JsArray<CommentInfo>>> comments = loadComments(rev, group);
     final List<NativeMap<JsArray<CommentInfo>>> drafts = loadDrafts(rev, group);
-    DiffApi.list(changeId.get(),
-      base != null ? base.name() : null,
-      rev.name(),
-      group.add(new AsyncCallback<NativeMap<FileInfo>>() {
-        @Override
-        public void onSuccess(NativeMap<FileInfo> m) {
-          files.set(
-              base != null ? new PatchSet.Id(changeId, base._number()) : null,
-              new PatchSet.Id(changeId, rev._number()),
-              style, reply, fileTableMode, edit != null);
-          files.setValue(m, myLastReply, comments.get(0), drafts.get(0));
-        }
-
-        @Override
-        public void onFailure(Throwable caught) {
-        }
-      }));
+    loadFileList(base, rev, myLastReply, group, comments, drafts);
 
     if (Gerrit.isSignedIn() && fileTableMode == FileTable.Mode.REVIEW) {
       ChangeApi.revision(changeId.get(), rev.name())
@@ -854,6 +833,31 @@
     }
   }
 
+  private void loadFileList(final RevisionInfo base, final RevisionInfo rev,
+      final Timestamp myLastReply, CallbackGroup group,
+      final List<NativeMap<JsArray<CommentInfo>>> comments,
+      final List<NativeMap<JsArray<CommentInfo>>> drafts) {
+    DiffApi.list(changeId.get(),
+      base != null ? base.name() : null,
+      rev.name(),
+      group.add(new AsyncCallback<NativeMap<FileInfo>>() {
+        @Override
+        public void onSuccess(NativeMap<FileInfo> m) {
+          files.set(
+              base != null ? new PatchSet.Id(changeId, base._number()) : null,
+              new PatchSet.Id(changeId, rev._number()),
+              style, reply, fileTableMode, edit != null);
+          files.setValue(m, myLastReply,
+              comments != null ? comments.get(0) : null,
+              drafts != null ? drafts.get(0) : null);
+        }
+
+        @Override
+        public void onFailure(Throwable caught) {
+        }
+      }));
+  }
+
   private List<NativeMap<JsArray<CommentInfo>>> loadComments(
       RevisionInfo rev, CallbackGroup group) {
     final int id = rev._number();
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/FileTable.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/FileTable.java
index 5dab3ac..d0038e3 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/FileTable.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/FileTable.java
@@ -29,6 +29,7 @@
 import com.google.gerrit.client.rpc.Natives;
 import com.google.gerrit.client.rpc.RestApi;
 import com.google.gerrit.client.ui.NavigationTable;
+import com.google.gerrit.common.Nullable;
 import com.google.gerrit.common.PageLinks;
 import com.google.gerrit.reviewdb.client.Patch;
 import com.google.gerrit.reviewdb.client.Patch.ChangeType;
@@ -202,8 +203,8 @@
 
   void setValue(NativeMap<FileInfo> fileMap,
       Timestamp myLastReply,
-      NativeMap<JsArray<CommentInfo>> comments,
-      NativeMap<JsArray<CommentInfo>> drafts) {
+      @Nullable NativeMap<JsArray<CommentInfo>> comments,
+      @Nullable NativeMap<JsArray<CommentInfo>> drafts) {
     JsArray<FileInfo> list = fileMap.values();
     FileInfo.sortFileInfoByPath(list);
 
@@ -453,8 +454,8 @@
     private DisplayCommand(NativeMap<FileInfo> map,
         JsArray<FileInfo> list,
         Timestamp myLastReply,
-        NativeMap<JsArray<CommentInfo>> comments,
-        NativeMap<JsArray<CommentInfo>> drafts) {
+        @Nullable NativeMap<JsArray<CommentInfo>> comments,
+        @Nullable NativeMap<JsArray<CommentInfo>> drafts) {
       this.myTable = new MyTable(map, list);
       this.list = list;
       this.myLastReply = myLastReply;
@@ -707,7 +708,10 @@
     }
 
     private JsArray<CommentInfo> get(String p, NativeMap<JsArray<CommentInfo>> m) {
-      JsArray<CommentInfo> r =  m.get(p);
+      JsArray<CommentInfo> r = null;
+      if (m != null) {
+        r = m.get(p);
+      }
       if (r == null) {
         r = JsArray.createArray().cast();
       }