Merge "InlineEdit: Don't offer edit icon on binary files"
diff --git a/Documentation/rest-api-changes.txt b/Documentation/rest-api-changes.txt
index 284cc83..50a7a6f 100644
--- a/Documentation/rest-api-changes.txt
+++ b/Documentation/rest-api-changes.txt
@@ -3636,6 +3636,7 @@
|`web_links` |optional|
Links to the file diff in external sites as a list of
link:rest-api-changes.html#diff-web-link-info[DiffWebLinkInfo] entries.
+|`binary` |not set if `false`|Whether the file is binary.
|==========================
[[diff-intraline-info]]
diff --git a/gerrit-common/src/main/java/com/google/gerrit/common/data/PatchScript.java b/gerrit-common/src/main/java/com/google/gerrit/common/data/PatchScript.java
index 914e69f..046df1d 100644
--- a/gerrit-common/src/main/java/com/google/gerrit/common/data/PatchScript.java
+++ b/gerrit-common/src/main/java/com/google/gerrit/common/data/PatchScript.java
@@ -56,6 +56,7 @@
protected boolean intralineDifference;
protected boolean intralineFailure;
protected boolean intralineTimeout;
+ protected boolean binary;
public PatchScript(final Change.Key ck, final ChangeType ct, final String on,
final String nn, final FileMode om, final FileMode nm,
@@ -64,7 +65,7 @@
final List<Edit> e, final DisplayMethod ma, final DisplayMethod mb,
final String mta, final String mtb, final CommentDetail cd,
final List<Patch> hist, final boolean hf, final boolean id,
- final boolean idf, final boolean idt) {
+ final boolean idf, final boolean idt, boolean bin) {
changeId = ck;
changeType = ct;
oldName = on;
@@ -86,6 +87,7 @@
intralineDifference = id;
intralineFailure = idf;
intralineTimeout = idt;
+ binary = bin;
}
protected PatchScript() {
@@ -194,4 +196,8 @@
}
return new EditList(edits, ctx, a.size(), b.size()).getHunks();
}
+
+ public boolean isBinary() {
+ return binary;
+ }
}
diff --git a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/common/DiffInfo.java b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/common/DiffInfo.java
index e58ffc5..62b1dc7 100644
--- a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/common/DiffInfo.java
+++ b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/common/DiffInfo.java
@@ -32,6 +32,8 @@
public List<ContentEntry> content;
// Links to the file diff in external sites
public List<DiffWebLinkInfo> webLinks;
+ // Binary file
+ public Boolean binary;
public static enum IntraLineStatus {
OK,
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffInfo.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffInfo.java
index 8d94438..7140e07 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffInfo.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffInfo.java
@@ -35,6 +35,7 @@
public final native JsArrayString diff_header() /*-{ return this.diff_header; }-*/;
public final native JsArray<Region> content() /*-{ return this.content; }-*/;
public final native JsArray<DiffWebLinkInfo> web_links() /*-{ return this.web_links; }-*/;
+ public final native boolean binary() /*-{ return this.binary || false; }-*/;
public final List<WebLinkInfo> side_by_side_web_links() {
return filterWebLinks(DiffView.SIDE_BY_SIDE);
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffTable.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffTable.java
index 42dc700..1105476 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffTable.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffTable.java
@@ -150,12 +150,12 @@
}
void set(DiffPreferences prefs, JsArray<RevisionInfo> list, DiffInfo info,
- boolean editExists, int currentPatchSet, boolean open) {
+ boolean editExists, int currentPatchSet, boolean open, boolean binary) {
this.changeType = info.change_type();
patchSetSelectBoxA.setUpPatchSetNav(list, info.meta_a(), editExists,
- currentPatchSet, open);
+ currentPatchSet, open, binary);
patchSetSelectBoxB.setUpPatchSetNav(list, info.meta_b(), editExists,
- currentPatchSet, open);
+ currentPatchSet, open, binary);
JsArrayString hdr = info.diff_header();
if (hdr != null) {
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PatchSetSelectBox.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PatchSetSelectBox.java
index 0077fbc..aed2218 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PatchSetSelectBox.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PatchSetSelectBox.java
@@ -82,7 +82,7 @@
}
void setUpPatchSetNav(JsArray<RevisionInfo> list, DiffInfo.FileMeta meta,
- boolean editExists, int currentPatchSet, boolean open) {
+ boolean editExists, int currentPatchSet, boolean open, boolean binary) {
InlineHyperlink baseLink = null;
InlineHyperlink selectedLink = null;
if (sideA) {
@@ -110,7 +110,7 @@
if (!Patch.COMMIT_MSG.equals(path)) {
linkPanel.add(createDownloadLink());
}
- if (open && idActive != null && Gerrit.isSignedIn()) {
+ if (!binary && open && idActive != null && Gerrit.isSignedIn()) {
if ((editExists && idActive.get() == 0)
|| (!editExists && idActive.get() == currentPatchSet)) {
linkPanel.add(createEditIcon());
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide.java
index f405cb6..5934c5d 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide.java
@@ -246,7 +246,7 @@
JsArray<RevisionInfo> list = info.revisions().values();
RevisionInfo.sortRevisionInfoByNumber(list);
diffTable.set(prefs, list, diff, edit != null, currentPatchSet,
- changeStatus.isOpen());
+ changeStatus.isOpen(), diff.binary());
header.setChangeInfo(info);
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/GetDiff.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/GetDiff.java
index 81f3b9b..8e3a5d1 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/GetDiff.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/GetDiff.java
@@ -189,6 +189,9 @@
result.webLinks = links.isEmpty() ? null : links.toList();
if (!webLinksOnly) {
+ if (ps.isBinary()) {
+ result.binary = true;
+ }
if (ps.getDisplayMethodA() != DisplayMethod.NONE) {
result.metaA = new FileMeta();
result.metaA.name = MoreObjects.firstNonNull(ps.getOldName(),
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchScriptBuilder.java b/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchScriptBuilder.java
index 4bb85cb..d231664 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchScriptBuilder.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchScriptBuilder.java
@@ -213,7 +213,8 @@
content.getHeaderLines(), diffPrefs, a.dst, b.dst, edits,
a.displayMethod, b.displayMethod, a.mimeType.toString(),
b.mimeType.toString(), comments, history, hugeFile,
- intralineDifferenceIsPossible, intralineFailure, intralineTimeout);
+ intralineDifferenceIsPossible, intralineFailure, intralineTimeout,
+ content.getPatchType() == Patch.PatchType.BINARY);
}
private static boolean isModify(PatchListEntry content) {