Allow to configure the link frame target name

The link frame target name can be set with `gerrit.target`. If
not set it defaults to `_blank`, for backwards compatibility with
the previous hard-coded behavior.

Change-Id: I645fb34aa29ede624d1f0f5c9cb8e910a8b97fe3
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gitiles/GitilesWeblinks.java b/src/main/java/com/googlesource/gerrit/plugins/gitiles/GitilesWeblinks.java
index 5933929..198611f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gitiles/GitilesWeblinks.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/gitiles/GitilesWeblinks.java
@@ -31,6 +31,7 @@
     PatchSetWebLink, ProjectWebLink, FileHistoryWebLink {
   private final String name;
   private final String baseUrl;
+  private final String target;
 
   @Inject
   public GitilesWeblinks(@PluginName String pluginName,
@@ -40,36 +41,40 @@
                           config.getString("gerrit", null, "linkname"),
                           "browse");
     baseUrl = "plugins/" + pluginName;
+
+    target = MoreObjects.firstNonNull(
+        config.getString("gerrit", null, "target"),
+        Target.BLANK);
   }
 
   @Override
   public WebLinkInfo getProjectWeblink(String projectName) {
     return new WebLinkInfo(name, null, String.format("%s/%s", baseUrl,
-        projectName), Target.BLANK);
+        projectName), target);
   }
 
   @Override
   public WebLinkInfo getPatchSetWebLink(String projectName, String commit) {
     return new WebLinkInfo(name, null, String.format("%s/%s/+/%s", baseUrl,
-        projectName, commit), Target.BLANK);
+        projectName, commit), target);
   }
 
   @Override
   public WebLinkInfo getFileWebLink(String projectName, String revision,
       String fileName) {
     return new WebLinkInfo(name, null, String.format("%s/%s/+/%s/%s", baseUrl,
-        projectName, revision, fileName), Target.BLANK);
+        projectName, revision, fileName), target);
   }
 
   @Override
   public WebLinkInfo getBranchWebLink(String projectName, String branchName) {
     return new WebLinkInfo(name, null, String.format("%s/%s/+/%s", baseUrl,
-        projectName, branchName), Target.BLANK);
+        projectName, branchName), target);
   }
 
   @Override
   public WebLinkInfo getFileHistoryWebLink(String projectName, String revision, String fileName) {
     return new WebLinkInfo(name, null, String.format("%s/%s/+log/%s/%s", baseUrl,
-        projectName, revision, fileName), Target.BLANK);
+        projectName, revision, fileName), target);
   }
 }
diff --git a/src/main/resources/+Documentation/config.md b/src/main/resources/+Documentation/config.md
index c5e9b54..386d6c6 100644
--- a/src/main/resources/+Documentation/config.md
+++ b/src/main/resources/+Documentation/config.md
@@ -32,7 +32,12 @@
 The name of the link that appears in Gerrit can be configured with
 `gerrit.linkname`.
 
+The link frame target name can be configured with `gerrit.target`. Valid values
+are defined in the [W3C HTML Specification](https://www.w3.org/TR/1999/REC-html401-19991224/types.html#type-frame-target).
+Defaults to `_blank` if not set.
+
 ```
   [gerrit]
     linkname = browse
+    target = _self
 ```