Skip to content

Commit

Permalink
Adding a fix to send proper Content-Type header for Hub resources
Browse files Browse the repository at this point in the history
(cherry picked from commit 3d1cdad)
Signed-off-by: Diego Molina <diemol@gmail.com>
  • Loading branch information
virenv authored and diemol committed Mar 9, 2019
1 parent d6cece3 commit 94f5d2e
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 7 deletions.
17 changes: 14 additions & 3 deletions java/server/src/org/openqa/grid/web/servlet/ResourceServlet.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.google.common.collect.ImmutableMap;
import com.google.common.net.MediaType;
import com.google.common.io.Files;

/**
* Serves the static resources used by the console for instance. Uses URL
Expand All @@ -37,6 +40,11 @@ public class ResourceServlet extends HttpServlet {

private static final long serialVersionUID = 7253742807937667039L;

private static final ImmutableMap<String, MediaType> MIME_TYPES = ImmutableMap.of(
"css", MediaType.CSS_UTF_8.withoutParameters(),
"html", MediaType.HTML_UTF_8.withoutParameters(),
"js", MediaType.JAVASCRIPT_UTF_8.withoutParameters());

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
Expand All @@ -46,8 +54,9 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
protected void process(HttpServletRequest request, HttpServletResponse response)
throws IOException {
String resource = request.getPathInfo().replace(request.getServletPath(), "");
if (resource.startsWith("/"))
if (resource.startsWith("/")) {
resource = resource.replaceFirst("/", "");
}
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource);
if (in == null) {
throw new Error("Cannot find resource " + resource);
Expand All @@ -62,9 +71,11 @@ protected void process(HttpServletRequest request, HttpServletResponse response)
c.add(Calendar.DATE, 10);
response.setDateHeader("Expires", c.getTime().getTime());
response.setHeader("Cache-Control", "max-age=864000");
String extension = Files.getFileExtension(resource);
if (MIME_TYPES.containsKey(extension)) {
response.setContentType(MIME_TYPES.get(extension).toString());
}
response.flushBuffer();
}

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,21 @@ public void setUp() throws ServletException {
}

@Test
public void testGetResourceSuccess() throws IOException, ServletException {
FakeHttpServletResponse response = sendCommand("GET",
public void testGetCssResourceSuccess() throws IOException, ServletException {
FakeHttpServletResponse cssResourceResponse = sendCommand("GET",
"/org/openqa/grid/images/consoleservlet.css");
assertEquals(HttpServletResponse.SC_OK, response.getStatus());
assertNotNull(response.getBody());
assertEquals(HttpServletResponse.SC_OK, cssResourceResponse.getStatus());
assertEquals("text/css",cssResourceResponse.getHeader("Content-Type"));
assertNotNull(cssResourceResponse.getBody());
}

@Test
public void testGetJsResourceSuccess() throws IOException, ServletException {
FakeHttpServletResponse jsResourceResponse = sendCommand("GET",
"/org/openqa/grid/images/consoleservlet.js");
assertEquals(HttpServletResponse.SC_OK, jsResourceResponse.getStatus());
assertEquals("application/javascript",jsResourceResponse.getHeader("Content-Type"));
assertNotNull(jsResourceResponse.getBody());
}

@Test
Expand Down

0 comments on commit 94f5d2e

Please sign in to comment.