Fix decoding of project and revision on client side

Decoding has to be done by
  URL.decodeQueryString(...)
because only then URL component delimiter characters such as '/' are
decoded.

Change-Id: Ic804eb77fcbf22f3bc938128368d5175572febec
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocScreen.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocScreen.java
index 40ea088..5d7dd4a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocScreen.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocScreen.java
@@ -28,8 +28,8 @@
   static class Factory implements Screen.EntryPoint {
     @Override
     public void onLoad(Screen screen) {
-      String projectName = URL.decode(screen.getToken(1));
-      String revision = URL.decode(screen.getToken(2));
+      String projectName = URL.decodeQueryString(screen.getToken(1));
+      String revision = URL.decodeQueryString(screen.getToken(2));
       String path = screen.getToken(3);
       screen.show(new XDocScreen(projectName, revision, path));
       screen.setWindowTitle(FileInfo.getFileName(path));
@@ -39,7 +39,7 @@
   static class HeadFactory implements Screen.EntryPoint {
     @Override
     public void onLoad(Screen screen) {
-      String projectName = URL.decode(screen.getToken(1));
+      String projectName = URL.decodeQueryString(screen.getToken(1));
       String path = URL.decode(screen.getToken(2));
       screen.show(new XDocScreen(projectName, "HEAD", path));
       screen.setWindowTitle(FileInfo.getFileName(path));
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocSideBySideDiffScreen.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocSideBySideDiffScreen.java
index 5f1930c..f3a17dc 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocSideBySideDiffScreen.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocSideBySideDiffScreen.java
@@ -26,8 +26,8 @@
   static class Factory implements Screen.EntryPoint {
     @Override
     public void onLoad(Screen screen) {
-      String change = URL.decode(screen.getToken(1));
-      String patchSet = URL.decode(screen.getToken(2));
+      String change = URL.decodeQueryString(screen.getToken(1));
+      String patchSet = URL.decodeQueryString(screen.getToken(2));
       String path = screen.getToken(4);
       screen.show(new XDocSideBySideDiffScreen(change, patchSet, path));
       screen.setWindowTitle(FileInfo.getFileName(path));
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocUnifiedDiffScreen.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocUnifiedDiffScreen.java
index 42df4d0..043ec9f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocUnifiedDiffScreen.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocUnifiedDiffScreen.java
@@ -26,8 +26,8 @@
   static class Factory implements Screen.EntryPoint {
     @Override
     public void onLoad(Screen screen) {
-      String change = URL.decode(screen.getToken(1));
-      String patchSet = URL.decode(screen.getToken(2));
+      String change = URL.decodeQueryString(screen.getToken(1));
+      String patchSet = URL.decodeQueryString(screen.getToken(2));
       String path = screen.getToken(4);
       screen.show(new XDocUnifiedDiffScreen(change, patchSet, path));
       screen.setWindowTitle(FileInfo.getFileName(path));