diff --git a/javatests/com/google/gitiles/DiffServletTest.java b/javatests/com/google/gitiles/DiffServletTest.java
index 7a2d201..529c349 100644
--- a/javatests/com/google/gitiles/DiffServletTest.java
+++ b/javatests/com/google/gitiles/DiffServletTest.java
@@ -24,7 +24,6 @@
 import org.eclipse.jgit.diff.DiffEntry.ChangeType;
 import org.eclipse.jgit.diff.DiffEntry.Side;
 import org.eclipse.jgit.diff.Edit;
-import org.eclipse.jgit.diff.Edit.Type;
 import org.eclipse.jgit.diff.RawText;
 import org.eclipse.jgit.patch.FileHeader;
 import org.eclipse.jgit.patch.Patch;
@@ -66,7 +65,7 @@
 
     RawText rt = new RawText(contents.getBytes(UTF_8));
     Edit e = getOnlyElement(getOnlyElement(f.getHunks()).toEditList());
-    assertThat(e.getType()).isEqualTo(Type.INSERT);
+    assertThat(e.getType()).isEqualTo(Edit.Type.INSERT);
     assertThat(rt.getString(e.getBeginB(), e.getEndB(), false)).isEqualTo(contents);
   }
 
@@ -87,7 +86,7 @@
 
     RawText rt2 = new RawText(contents2.getBytes(UTF_8));
     Edit e = getOnlyElement(getOnlyElement(f.getHunks()).toEditList());
-    assertThat(e.getType()).isEqualTo(Type.INSERT);
+    assertThat(e.getType()).isEqualTo(Edit.Type.INSERT);
     assertThat(rt2.getString(e.getBeginB(), e.getEndB(), false)).isEqualTo("contents\n");
   }
 
diff --git a/javatests/com/google/gitiles/GitilesViewTest.java b/javatests/com/google/gitiles/GitilesViewTest.java
index 7cce3ef..275e982 100644
--- a/javatests/com/google/gitiles/GitilesViewTest.java
+++ b/javatests/com/google/gitiles/GitilesViewTest.java
@@ -19,7 +19,6 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableListMultimap;
 import com.google.common.collect.ImmutableMap;
-import com.google.gitiles.GitilesView.Type;
 import org.eclipse.jgit.lib.ObjectId;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -35,7 +34,7 @@
   public void emptyServletPath() throws Exception {
     GitilesView view = GitilesView.hostIndex().setServletPath("").setHostName("host").build();
     assertThat(view.getServletPath()).isEqualTo("");
-    assertThat(view.getType()).isEqualTo(Type.HOST_INDEX);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.HOST_INDEX);
     assertThat(view.getHostName()).isEqualTo("host");
     assertThat(view.getRepositoryName()).isNull();
     assertThat(view.getRevision()).isEqualTo(Revision.NULL);
@@ -49,7 +48,7 @@
   @Test
   public void hostIndex() throws Exception {
     assertThat(HOST.getServletPath()).isEqualTo("/b");
-    assertThat(HOST.getType()).isEqualTo(Type.HOST_INDEX);
+    assertThat(HOST.getType()).isEqualTo(GitilesView.Type.HOST_INDEX);
     assertThat(HOST.getHostName()).isEqualTo("host");
     assertThat(HOST.getRepositoryName()).isNull();
     assertThat(HOST.getRevision()).isEqualTo(Revision.NULL);
@@ -96,7 +95,7 @@
             .build();
 
     assertThat(view.getServletPath()).isEqualTo("/b");
-    assertThat(view.getType()).isEqualTo(Type.LOG);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.LOG);
     assertThat(view.getHostName()).isEqualTo("host");
     assertThat(view.getRepositoryName()).isEqualTo("repo");
     assertThat(view.getRevision()).isEqualTo(Revision.named("master"));
@@ -137,7 +136,7 @@
         GitilesView.repositoryIndex().copyFrom(HOST).setRepositoryName("foo/bar").build();
 
     assertThat(view.getServletPath()).isEqualTo("/b");
-    assertThat(view.getType()).isEqualTo(Type.REPOSITORY_INDEX);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.REPOSITORY_INDEX);
     assertThat(view.getHostName()).isEqualTo("host");
     assertThat(view.getRepositoryName()).isEqualTo("foo/bar");
     assertThat(view.getRevision()).isEqualTo(Revision.NULL);
@@ -158,7 +157,7 @@
     GitilesView view = GitilesView.refs().copyFrom(HOST).setRepositoryName("foo/bar").build();
 
     assertThat(view.getServletPath()).isEqualTo("/b");
-    assertThat(view.getType()).isEqualTo(Type.REFS);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.REFS);
     assertThat(view.getHostName()).isEqualTo("host");
     assertThat(view.getRepositoryName()).isEqualTo("foo/bar");
     assertThat(view.getRevision()).isEqualTo(Revision.NULL);
@@ -185,7 +184,7 @@
             .build();
 
     assertThat(view.getServletPath()).isEqualTo("/b");
-    assertThat(view.getType()).isEqualTo(Type.REVISION);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.REVISION);
     assertThat(view.getHostName()).isEqualTo("host");
     assertThat(view.getRepositoryName()).isEqualTo("foo/bar");
     assertThat(view.getRevision().getId()).isEqualTo(id);
@@ -213,7 +212,7 @@
             .build();
 
     assertThat(view.getServletPath()).isEqualTo("/b");
-    assertThat(view.getType()).isEqualTo(Type.DESCRIBE);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.DESCRIBE);
     assertThat(view.getHostName()).isEqualTo("host");
     assertThat(view.getRepositoryName()).isEqualTo("foo/bar");
     assertThat(view.getRevision()).isEqualTo(Revision.NULL);
@@ -233,7 +232,7 @@
             .build();
 
     assertThat(view.getServletPath()).isEqualTo("/b");
-    assertThat(view.getType()).isEqualTo(Type.PATH);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.PATH);
     assertThat(view.getHostName()).isEqualTo("host");
     assertThat(view.getRepositoryName()).isEqualTo("foo/bar");
     assertThat(view.getRevision().getId()).isEqualTo(id);
@@ -264,7 +263,7 @@
             .build();
 
     assertThat(view.getServletPath()).isEqualTo("/b");
-    assertThat(view.getType()).isEqualTo(Type.PATH);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.PATH);
     assertThat(view.getHostName()).isEqualTo("host");
     assertThat(view.getRepositoryName()).isEqualTo("foo/bar");
     assertThat(view.getRevision().getId()).isEqualTo(id);
@@ -296,7 +295,7 @@
             .build();
 
     assertThat(view.getServletPath()).isEqualTo("/b");
-    assertThat(view.getType()).isEqualTo(Type.DOC);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.DOC);
     assertThat(view.getHostName()).isEqualTo("host");
     assertThat(view.getRepositoryName()).isEqualTo("foo/bar");
     assertThat(view.getRevision().getId()).isEqualTo(id);
@@ -318,7 +317,7 @@
             .build();
 
     assertThat(view.getServletPath()).isEqualTo("/b");
-    assertThat(view.getType()).isEqualTo(Type.DOC);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.DOC);
     assertThat(view.getHostName()).isEqualTo("host");
     assertThat(view.getRepositoryName()).isEqualTo("foo/bar");
     assertThat(view.getRevision().getId()).isEqualTo(id);
@@ -340,7 +339,7 @@
             .build();
 
     assertThat(view.getServletPath()).isEqualTo("/b");
-    assertThat(view.getType()).isEqualTo(Type.SHOW);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.SHOW);
     assertThat(view.getHostName()).isEqualTo("host");
     assertThat(view.getRepositoryName()).isEqualTo("foo/bar");
     assertThat(view.getRevision().getId()).isEqualTo(id);
@@ -361,7 +360,7 @@
             .build();
 
     assertThat(view.getServletPath()).isEqualTo("/b");
-    assertThat(view.getType()).isEqualTo(Type.ROOTED_DOC);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.ROOTED_DOC);
     assertThat(view.getHostName()).isEqualTo("host");
     assertThat(view.getRevision().getId()).isEqualTo(id);
     assertThat(view.getRevision().getName()).isEqualTo("master");
@@ -382,7 +381,7 @@
             .build();
 
     assertThat(view.getServletPath()).isEqualTo("/b");
-    assertThat(view.getType()).isEqualTo(Type.PATH);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.PATH);
     assertThat(view.getHostName()).isEqualTo("host");
     assertThat(view.getRepositoryName()).isEqualTo("foo/bar");
     assertThat(view.getRevision().getId()).isEqualTo(id);
@@ -419,7 +418,7 @@
             .build();
 
     assertThat(view.getServletPath()).isEqualTo("/b");
-    assertThat(view.getType()).isEqualTo(Type.DIFF);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.DIFF);
     assertThat(view.getHostName()).isEqualTo("host");
     assertThat(view.getRepositoryName()).isEqualTo("foo/bar");
     assertThat(view.getRevision().getId()).isEqualTo(id);
@@ -455,7 +454,7 @@
             .build();
 
     assertThat(view.getServletPath()).isEqualTo("/b");
-    assertThat(view.getType()).isEqualTo(Type.DIFF);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.DIFF);
     assertThat(view.getHostName()).isEqualTo("host");
     assertThat(view.getRepositoryName()).isEqualTo("foo/bar");
     assertThat(view.getRevision().getId()).isEqualTo(id);
@@ -493,7 +492,7 @@
             .build();
 
     assertThat(view.getServletPath()).isEqualTo("/b");
-    assertThat(view.getType()).isEqualTo(Type.DIFF);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.DIFF);
     assertThat(view.getHostName()).isEqualTo("host");
     assertThat(view.getRepositoryName()).isEqualTo("foo/bar");
     assertThat(view.getRevision().getId()).isEqualTo(id);
@@ -528,7 +527,7 @@
             .build();
 
     assertThat(view.getServletPath()).isEqualTo("/b");
-    assertThat(view.getType()).isEqualTo(Type.LOG);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.LOG);
     assertThat(view.getHostName()).isEqualTo("host");
     assertThat(view.getRepositoryName()).isEqualTo("foo/bar");
     assertThat(view.getRevision().getId()).isEqualTo(id);
@@ -558,7 +557,7 @@
             .build();
 
     assertThat(view.getServletPath()).isEqualTo("/b");
-    assertThat(view.getType()).isEqualTo(Type.LOG);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.LOG);
     assertThat(view.getHostName()).isEqualTo("host");
     assertThat(view.getRepositoryName()).isEqualTo("foo/bar");
     assertThat(view.getRevision().getId()).isEqualTo(id);
@@ -589,7 +588,7 @@
             .build();
 
     assertThat(view.getServletPath()).isEqualTo("/b");
-    assertThat(view.getType()).isEqualTo(Type.LOG);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.LOG);
     assertThat(view.getHostName()).isEqualTo("host");
     assertThat(view.getRepositoryName()).isEqualTo("foo/bar");
     assertThat(view.getRevision().getId()).isEqualTo(id);
@@ -626,7 +625,7 @@
             .build();
 
     assertThat(view.getServletPath()).isEqualTo("/b");
-    assertThat(view.getType()).isEqualTo(Type.LOG);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.LOG);
     assertThat(view.getHostName()).isEqualTo("host");
     assertThat(view.getRepositoryName()).isEqualTo("foo/bar");
     assertThat(view.getRevision().getId()).isEqualTo(id);
@@ -654,7 +653,7 @@
     GitilesView view = GitilesView.log().copyFrom(HOST).setRepositoryName("foo/bar").build();
 
     assertThat(view.getServletPath()).isEqualTo("/b");
-    assertThat(view.getType()).isEqualTo(Type.LOG);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.LOG);
     assertThat(view.getHostName()).isEqualTo("host");
     assertThat(view.getRepositoryName()).isEqualTo("foo/bar");
     assertThat(view.getRevision()).isEqualTo(Revision.NULL);
@@ -683,7 +682,7 @@
             .build();
 
     assertThat(view.getServletPath()).isEqualTo("/b");
-    assertThat(view.getType()).isEqualTo(Type.ARCHIVE);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.ARCHIVE);
     assertThat(view.getHostName()).isEqualTo("host");
     assertThat(view.getRepositoryName()).isEqualTo("foo/bar");
     assertThat(view.getRevision().getId()).isEqualTo(id);
@@ -707,7 +706,7 @@
             .build();
 
     assertThat(view.getServletPath()).isEqualTo("/b");
-    assertThat(view.getType()).isEqualTo(Type.ARCHIVE);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.ARCHIVE);
     assertThat(view.getHostName()).isEqualTo("host");
     assertThat(view.getRepositoryName()).isEqualTo("foo/bar");
     assertThat(view.getRevision().getId()).isEqualTo(id);
@@ -730,7 +729,7 @@
             .build();
 
     assertThat(view.getServletPath()).isEqualTo("/b");
-    assertThat(view.getType()).isEqualTo(Type.BLAME);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.BLAME);
     assertThat(view.getHostName()).isEqualTo("host");
     assertThat(view.getRepositoryName()).isEqualTo("foo/bar");
     assertThat(view.getRevision().getId()).isEqualTo(id);
@@ -769,7 +768,7 @@
 
     // Fields returned by getters are not escaped.
     assertThat(view.getServletPath()).isEqualTo("/b");
-    assertThat(view.getType()).isEqualTo(Type.LOG);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.LOG);
     assertThat(view.getHostName()).isEqualTo("host");
     assertThat(view.getRepositoryName()).isEqualTo("foo?bar");
     assertThat(view.getRevision().getId()).isEqualTo(id);
diff --git a/javatests/com/google/gitiles/ViewFilterTest.java b/javatests/com/google/gitiles/ViewFilterTest.java
index fb001cd..79b0b09 100644
--- a/javatests/com/google/gitiles/ViewFilterTest.java
+++ b/javatests/com/google/gitiles/ViewFilterTest.java
@@ -19,7 +19,6 @@
 import static com.google.gitiles.MoreAssert.assertThrows;
 
 import com.google.common.net.HttpHeaders;
-import com.google.gitiles.GitilesView.Type;
 import java.io.IOException;
 import java.util.Optional;
 import javax.servlet.ServletException;
@@ -47,8 +46,8 @@
 
   @Test
   public void noCommand() throws Exception {
-    assertThat(getView("/").getType()).isEqualTo(Type.HOST_INDEX);
-    assertThat(getView("/repo").getType()).isEqualTo(Type.REPOSITORY_INDEX);
+    assertThat(getView("/").getType()).isEqualTo(GitilesView.Type.HOST_INDEX);
+    assertThat(getView("/repo").getType()).isEqualTo(GitilesView.Type.REPOSITORY_INDEX);
     assertThrows(GitilesRequestFailureException.class, () -> getView("/repo/+"));
     assertThrows(GitilesRequestFailureException.class, () -> getView("/repo/+/"));
   }
@@ -61,24 +60,25 @@
     String hexBranch = hex.substring(0, 10);
     repo.branch(hexBranch).commit().create();
 
-    assertThat(getView("/repo/+/master").getType()).isEqualTo(Type.REVISION);
-    assertThat(getView("/repo/+/" + hexBranch).getType()).isEqualTo(Type.REVISION);
-    assertThat(getView("/repo/+/" + hex).getType()).isEqualTo(Type.REVISION);
-    assertThat(getView("/repo/+/" + hex.substring(0, 7)).getType()).isEqualTo(Type.REVISION);
-    assertThat(getView("/repo/+/master/").getType()).isEqualTo(Type.PATH);
-    assertThat(getView("/repo/+/" + hex + "/").getType()).isEqualTo(Type.PATH);
-    assertThat(getView("/repo/+/" + hex + "/index.c").getType()).isEqualTo(Type.PATH);
-    assertThat(getView("/repo/+/" + hex + "/index.md").getType()).isEqualTo(Type.DOC);
-    assertThat(getView("/repo/+/master^..master").getType()).isEqualTo(Type.DIFF);
-    assertThat(getView("/repo/+/master^..master/").getType()).isEqualTo(Type.DIFF);
+    assertThat(getView("/repo/+/master").getType()).isEqualTo(GitilesView.Type.REVISION);
+    assertThat(getView("/repo/+/" + hexBranch).getType()).isEqualTo(GitilesView.Type.REVISION);
+    assertThat(getView("/repo/+/" + hex).getType()).isEqualTo(GitilesView.Type.REVISION);
+    assertThat(getView("/repo/+/" + hex.substring(0, 7)).getType())
+        .isEqualTo(GitilesView.Type.REVISION);
+    assertThat(getView("/repo/+/master/").getType()).isEqualTo(GitilesView.Type.PATH);
+    assertThat(getView("/repo/+/" + hex + "/").getType()).isEqualTo(GitilesView.Type.PATH);
+    assertThat(getView("/repo/+/" + hex + "/index.c").getType()).isEqualTo(GitilesView.Type.PATH);
+    assertThat(getView("/repo/+/" + hex + "/index.md").getType()).isEqualTo(GitilesView.Type.DOC);
+    assertThat(getView("/repo/+/master^..master").getType()).isEqualTo(GitilesView.Type.DIFF);
+    assertThat(getView("/repo/+/master^..master/").getType()).isEqualTo(GitilesView.Type.DIFF);
     assertThat(getView("/repo/+/" + parent.name() + ".." + hex + "/").getType())
-        .isEqualTo(Type.DIFF);
+        .isEqualTo(GitilesView.Type.DIFF);
   }
 
   @Test
   public void hostIndex() throws Exception {
     GitilesView view = getView("/");
-    assertThat(view.getType()).isEqualTo(Type.HOST_INDEX);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.HOST_INDEX);
     assertThat(view.getHostName()).isEqualTo("test-host");
     assertThat(view.getRepositoryName()).isNull();
     assertThat(view.getRevision()).isEqualTo(Revision.NULL);
@@ -89,7 +89,7 @@
   @Test
   public void repositoryIndex() throws Exception {
     GitilesView view = getView("/repo");
-    assertThat(view.getType()).isEqualTo(Type.REPOSITORY_INDEX);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.REPOSITORY_INDEX);
     assertThat(view.getRepositoryName()).isEqualTo("repo");
     assertThat(view.getRevision()).isEqualTo(Revision.NULL);
     assertThat(view.getOldRevision()).isEqualTo(Revision.NULL);
@@ -101,35 +101,35 @@
     GitilesView view;
 
     view = getView("/repo/+refs");
-    assertThat(view.getType()).isEqualTo(Type.REFS);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.REFS);
     assertThat(view.getRepositoryName()).isEqualTo("repo");
     assertThat(view.getRevision()).isEqualTo(Revision.NULL);
     assertThat(view.getOldRevision()).isEqualTo(Revision.NULL);
     assertThat(view.getPathPart()).isEqualTo("");
 
     view = getView("/repo/+refs/");
-    assertThat(view.getType()).isEqualTo(Type.REFS);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.REFS);
     assertThat(view.getRepositoryName()).isEqualTo("repo");
     assertThat(view.getRevision()).isEqualTo(Revision.NULL);
     assertThat(view.getOldRevision()).isEqualTo(Revision.NULL);
     assertThat(view.getPathPart()).isEqualTo("");
 
     view = getView("/repo/+refs/heads");
-    assertThat(view.getType()).isEqualTo(Type.REFS);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.REFS);
     assertThat(view.getRepositoryName()).isEqualTo("repo");
     assertThat(view.getRevision()).isEqualTo(Revision.NULL);
     assertThat(view.getOldRevision()).isEqualTo(Revision.NULL);
     assertThat(view.getPathPart()).isEqualTo("heads");
 
     view = getView("/repo/+refs/heads/");
-    assertThat(view.getType()).isEqualTo(Type.REFS);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.REFS);
     assertThat(view.getRepositoryName()).isEqualTo("repo");
     assertThat(view.getRevision()).isEqualTo(Revision.NULL);
     assertThat(view.getOldRevision()).isEqualTo(Revision.NULL);
     assertThat(view.getPathPart()).isEqualTo("heads");
 
     view = getView("/repo/+refs/heads/master");
-    assertThat(view.getType()).isEqualTo(Type.REFS);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.REFS);
     assertThat(view.getRepositoryName()).isEqualTo("repo");
     assertThat(view.getRevision()).isEqualTo(Revision.NULL);
     assertThat(view.getOldRevision()).isEqualTo(Revision.NULL);
@@ -144,14 +144,14 @@
     assertThrows(GitilesRequestFailureException.class, () -> getView("/repo/+describe/"));
 
     view = getView("/repo/+describe/deadbeef");
-    assertThat(view.getType()).isEqualTo(Type.DESCRIBE);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.DESCRIBE);
     assertThat(view.getRepositoryName()).isEqualTo("repo");
     assertThat(view.getRevision()).isEqualTo(Revision.NULL);
     assertThat(view.getOldRevision()).isEqualTo(Revision.NULL);
     assertThat(view.getPathPart()).isEqualTo("deadbeef");
 
     view = getView("/repo/+describe/refs/heads/master~3^~2");
-    assertThat(view.getType()).isEqualTo(Type.DESCRIBE);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.DESCRIBE);
     assertThat(view.getRepositoryName()).isEqualTo("repo");
     assertThat(view.getRevision()).isEqualTo(Revision.NULL);
     assertThat(view.getOldRevision()).isEqualTo(Revision.NULL);
@@ -165,25 +165,25 @@
     GitilesView view;
 
     view = getView("/repo/+show/master");
-    assertThat(view.getType()).isEqualTo(Type.REVISION);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.REVISION);
     assertThat(view.getRevision().getName()).isEqualTo("master");
     assertThat(view.getRevision().getId()).isEqualTo(master);
     assertThat(view.getPathPart()).isNull();
 
     view = getView("/repo/+show/heads/master");
-    assertThat(view.getType()).isEqualTo(Type.REVISION);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.REVISION);
     assertThat(view.getRevision().getName()).isEqualTo("heads/master");
     assertThat(view.getRevision().getId()).isEqualTo(master);
     assertThat(view.getPathPart()).isNull();
 
     view = getView("/repo/+show/refs/heads/master");
-    assertThat(view.getType()).isEqualTo(Type.REVISION);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.REVISION);
     assertThat(view.getRevision().getName()).isEqualTo(MASTER);
     assertThat(view.getRevision().getId()).isEqualTo(master);
     assertThat(view.getPathPart()).isNull();
 
     view = getView("/repo/+show/stable");
-    assertThat(view.getType()).isEqualTo(Type.REVISION);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.REVISION);
     assertThat(view.getRevision().getName()).isEqualTo("stable");
     assertThat(view.getRevision().getId()).isEqualTo(stable);
     assertThat(view.getPathPart()).isNull();
@@ -198,31 +198,31 @@
     GitilesView view;
 
     view = getView("/repo/+show/name");
-    assertThat(view.getType()).isEqualTo(Type.REVISION);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.REVISION);
     assertThat(view.getRevision().getName()).isEqualTo("name");
     assertThat(view.getRevision().getId()).isEqualTo(tag);
     assertThat(view.getPathPart()).isNull();
 
     view = getView("/repo/+show/heads/name");
-    assertThat(view.getType()).isEqualTo(Type.REVISION);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.REVISION);
     assertThat(view.getRevision().getName()).isEqualTo("heads/name");
     assertThat(view.getRevision().getId()).isEqualTo(branch);
     assertThat(view.getPathPart()).isNull();
 
     view = getView("/repo/+show/refs/heads/name");
-    assertThat(view.getType()).isEqualTo(Type.REVISION);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.REVISION);
     assertThat(view.getRevision().getName()).isEqualTo("refs/heads/name");
     assertThat(view.getRevision().getId()).isEqualTo(branch);
     assertThat(view.getPathPart()).isNull();
 
     view = getView("/repo/+show/tags/name");
-    assertThat(view.getType()).isEqualTo(Type.REVISION);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.REVISION);
     assertThat(view.getRevision().getName()).isEqualTo("tags/name");
     assertThat(view.getRevision().getId()).isEqualTo(tag);
     assertThat(view.getPathPart()).isNull();
 
     view = getView("/repo/+show/refs/tags/name");
-    assertThat(view.getType()).isEqualTo(Type.REVISION);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.REVISION);
     assertThat(view.getRevision().getName()).isEqualTo("refs/tags/name");
     assertThat(view.getRevision().getId()).isEqualTo(tag);
     assertThat(view.getPathPart()).isNull();
@@ -235,22 +235,22 @@
     GitilesView view;
 
     view = getView("/repo/+show/master/");
-    assertThat(view.getType()).isEqualTo(Type.PATH);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.PATH);
     assertThat(view.getRevision().getId()).isEqualTo(master);
     assertThat(view.getPathPart()).isEqualTo("");
 
     view = getView("/repo/+show/master/foo");
-    assertThat(view.getType()).isEqualTo(Type.PATH);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.PATH);
     assertThat(view.getRevision().getId()).isEqualTo(master);
     assertThat(view.getPathPart()).isEqualTo("foo");
 
     view = getView("/repo/+show/master/foo/");
-    assertThat(view.getType()).isEqualTo(Type.PATH);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.PATH);
     assertThat(view.getRevision().getId()).isEqualTo(master);
     assertThat(view.getPathPart()).isEqualTo("foo");
 
     view = getView("/repo/+show/master/foo/bar");
-    assertThat(view.getType()).isEqualTo(Type.PATH);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.PATH);
     assertThat(view.getRevision().getId()).isEqualTo(master);
     assertThat(view.getPathPart()).isEqualTo("foo/bar");
 
@@ -265,22 +265,22 @@
     GitilesView view;
 
     view = getView("/repo/+doc/master/");
-    assertThat(view.getType()).isEqualTo(Type.DOC);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.DOC);
     assertThat(view.getRevision().getId()).isEqualTo(master);
     assertThat(view.getPathPart()).isEqualTo("");
 
     view = getView("/repo/+doc/master/index.md");
-    assertThat(view.getType()).isEqualTo(Type.DOC);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.DOC);
     assertThat(view.getRevision().getId()).isEqualTo(master);
     assertThat(view.getPathPart()).isEqualTo("index.md");
 
     view = getView("/repo/+doc/master/foo/");
-    assertThat(view.getType()).isEqualTo(Type.DOC);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.DOC);
     assertThat(view.getRevision().getId()).isEqualTo(master);
     assertThat(view.getPathPart()).isEqualTo("foo");
 
     view = getView("/repo/+doc/master/foo/bar.md");
-    assertThat(view.getType()).isEqualTo(Type.DOC);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.DOC);
     assertThat(view.getRevision().getId()).isEqualTo(master);
     assertThat(view.getPathPart()).isEqualTo("foo/bar.md");
 
@@ -291,9 +291,9 @@
   @Test
   public void multipleSlashes() throws Exception {
     repo.branch(MASTER).commit().create();
-    assertThat(getView("//").getType()).isEqualTo(Type.HOST_INDEX);
-    assertThat(getView("//repo").getType()).isEqualTo(Type.REPOSITORY_INDEX);
-    assertThat(getView("//repo//").getType()).isEqualTo(Type.REPOSITORY_INDEX);
+    assertThat(getView("//").getType()).isEqualTo(GitilesView.Type.HOST_INDEX);
+    assertThat(getView("//repo").getType()).isEqualTo(GitilesView.Type.REPOSITORY_INDEX);
+    assertThat(getView("//repo//").getType()).isEqualTo(GitilesView.Type.REPOSITORY_INDEX);
     assertThrows(GitilesRequestFailureException.class, () -> getView("/repo/+//master"));
     assertThrows(
         GitilesRequestFailureException.class, () -> getView("/repo/+/refs//heads//master"));
@@ -308,7 +308,7 @@
     GitilesView view;
 
     view = getView("/repo/+diff/master^..master");
-    assertThat(view.getType()).isEqualTo(Type.DIFF);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.DIFF);
     assertThat(view.getRevision().getName()).isEqualTo("master");
     assertThat(view.getRevision().getId()).isEqualTo(master);
     assertThat(view.getOldRevision().getName()).isEqualTo("master^");
@@ -316,7 +316,7 @@
     assertThat(view.getPathPart()).isEqualTo("");
 
     view = getView("/repo/+diff/master^..master/");
-    assertThat(view.getType()).isEqualTo(Type.DIFF);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.DIFF);
     assertThat(view.getRevision().getName()).isEqualTo("master");
     assertThat(view.getRevision().getId()).isEqualTo(master);
     assertThat(view.getOldRevision().getName()).isEqualTo("master^");
@@ -324,7 +324,7 @@
     assertThat(view.getPathPart()).isEqualTo("");
 
     view = getView("/repo/+diff/master^..master/foo");
-    assertThat(view.getType()).isEqualTo(Type.DIFF);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.DIFF);
     assertThat(view.getRevision().getName()).isEqualTo("master");
     assertThat(view.getRevision().getId()).isEqualTo(master);
     assertThat(view.getOldRevision().getName()).isEqualTo("master^");
@@ -332,7 +332,7 @@
     assertThat(view.getPathPart()).isEqualTo("foo");
 
     view = getView("/repo/+diff/refs/heads/master^..refs/heads/master");
-    assertThat(view.getType()).isEqualTo(Type.DIFF);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.DIFF);
     assertThat(view.getRevision().getName()).isEqualTo(MASTER);
     assertThat(view.getRevision().getId()).isEqualTo(master);
     assertThat(view.getOldRevision().getName()).isEqualTo("refs/heads/master^");
@@ -344,7 +344,7 @@
   public void diffAgainstEmptyCommit() throws Exception {
     RevCommit master = repo.branch(MASTER).commit().create();
     GitilesView view = getView("/repo/+diff/master^!");
-    assertThat(view.getType()).isEqualTo(Type.DIFF);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.DIFF);
     assertThat(view.getRevision().getName()).isEqualTo("master");
     assertThat(view.getRevision().getId()).isEqualTo(master);
     assertThat(view.getOldRevision()).isEqualTo(Revision.NULL);
@@ -358,38 +358,38 @@
     GitilesView view;
 
     view = getView("/repo/+log");
-    assertThat(view.getType()).isEqualTo(Type.LOG);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.LOG);
     assertThat(view.getRevision()).isEqualTo(Revision.NULL);
     assertThat(view.getPathPart()).isNull();
 
     view = getView("/repo/+log/");
-    assertThat(view.getType()).isEqualTo(Type.LOG);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.LOG);
     assertThat(view.getRevision()).isEqualTo(Revision.NULL);
     assertThat(view.getPathPart()).isNull();
 
     view = getView("/repo/+log/master");
-    assertThat(view.getType()).isEqualTo(Type.LOG);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.LOG);
     assertThat(view.getRevision().getName()).isEqualTo("master");
     assertThat(view.getRevision().getId()).isEqualTo(master);
     assertThat(view.getOldRevision()).isEqualTo(Revision.NULL);
     assertThat(view.getPathPart()).isEqualTo("");
 
     view = getView("/repo/+log/master/");
-    assertThat(view.getType()).isEqualTo(Type.LOG);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.LOG);
     assertThat(view.getRevision().getName()).isEqualTo("master");
     assertThat(view.getRevision().getId()).isEqualTo(master);
     assertThat(view.getOldRevision()).isEqualTo(Revision.NULL);
     assertThat(view.getPathPart()).isEqualTo("");
 
     view = getView("/repo/+log/master/foo");
-    assertThat(view.getType()).isEqualTo(Type.LOG);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.LOG);
     assertThat(view.getRevision().getName()).isEqualTo("master");
     assertThat(view.getRevision().getId()).isEqualTo(master);
     assertThat(view.getOldRevision()).isEqualTo(Revision.NULL);
     assertThat(view.getPathPart()).isEqualTo("foo");
 
     view = getView("/repo/+log/master^..master");
-    assertThat(view.getType()).isEqualTo(Type.LOG);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.LOG);
     assertThat(view.getRevision().getName()).isEqualTo("master");
     assertThat(view.getRevision().getId()).isEqualTo(master);
     assertThat(view.getOldRevision().getName()).isEqualTo("master^");
@@ -397,7 +397,7 @@
     assertThat(view.getPathPart()).isEqualTo("");
 
     view = getView("/repo/+log/master^..master/");
-    assertThat(view.getType()).isEqualTo(Type.LOG);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.LOG);
     assertThat(view.getRevision().getName()).isEqualTo("master");
     assertThat(view.getRevision().getId()).isEqualTo(master);
     assertThat(view.getOldRevision().getName()).isEqualTo("master^");
@@ -405,7 +405,7 @@
     assertThat(view.getPathPart()).isEqualTo("");
 
     view = getView("/repo/+log/master^..master/foo");
-    assertThat(view.getType()).isEqualTo(Type.LOG);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.LOG);
     assertThat(view.getRevision().getName()).isEqualTo("master");
     assertThat(view.getRevision().getId()).isEqualTo(master);
     assertThat(view.getOldRevision().getName()).isEqualTo("master^");
@@ -413,7 +413,7 @@
     assertThat(view.getPathPart()).isEqualTo("foo");
 
     view = getView("/repo/+log/refs/heads/master^..refs/heads/master");
-    assertThat(view.getType()).isEqualTo(Type.LOG);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.LOG);
     assertThat(view.getRevision().getName()).isEqualTo(MASTER);
     assertThat(view.getRevision().getId()).isEqualTo(master);
     assertThat(view.getOldRevision().getName()).isEqualTo("refs/heads/master^");
@@ -439,7 +439,7 @@
         GitilesRequestFailureException.class, () -> getView("/repo/+archive/master/foo/.tar.gz"));
 
     view = getView("/repo/+archive/master.tar.gz");
-    assertThat(view.getType()).isEqualTo(Type.ARCHIVE);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.ARCHIVE);
     assertThat(view.getRepositoryName()).isEqualTo("repo");
     assertThat(view.getRevision().getName()).isEqualTo("master");
     assertThat(view.getRevision().getId()).isEqualTo(master);
@@ -448,7 +448,7 @@
     assertThat(view.getPathPart()).isNull();
 
     view = getView("/repo/+archive/master.tar.bz2");
-    assertThat(view.getType()).isEqualTo(Type.ARCHIVE);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.ARCHIVE);
     assertThat(view.getRepositoryName()).isEqualTo("repo");
     assertThat(view.getRevision().getName()).isEqualTo("master");
     assertThat(view.getRevision().getId()).isEqualTo(master);
@@ -457,7 +457,7 @@
     assertThat(view.getPathPart()).isNull();
 
     view = getView("/repo/+archive/master/foo/bar.tar.gz");
-    assertThat(view.getType()).isEqualTo(Type.ARCHIVE);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.ARCHIVE);
     assertThat(view.getRepositoryName()).isEqualTo("repo");
     assertThat(view.getRevision().getName()).isEqualTo("master");
     assertThat(view.getRevision().getId()).isEqualTo(master);
@@ -479,7 +479,7 @@
         GitilesRequestFailureException.class, () -> getView("/repo/+blame/master..branch"));
 
     view = getView("/repo/+blame/master/foo/bar");
-    assertThat(view.getType()).isEqualTo(Type.BLAME);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.BLAME);
     assertThat(view.getRepositoryName()).isEqualTo("repo");
     assertThat(view.getRevision().getName()).isEqualTo("master");
     assertThat(view.getRevision().getId()).isEqualTo(master);
@@ -542,23 +542,23 @@
         };
 
     GitilesView view = getView("/repo/+/master", branchRedirect);
-    assertThat(view.getType()).isEqualTo(Type.REVISION);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.REVISION);
     assertThat(view.getRevision().getName()).isEqualTo(MAIN);
     assertThat(view.getRevision().getId()).isEqualTo(main);
 
     view = getView("/repo/+/master/index.c", branchRedirect);
-    assertThat(view.getType()).isEqualTo(Type.PATH);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.PATH);
     assertThat(view.getPathPart()).isEqualTo("index.c");
     assertThat(view.getRevision().getName()).isEqualTo(MAIN);
     assertThat(view.getRevision().getId()).isEqualTo(main);
 
     view = getView("/repo/+/some@branch", branchRedirect);
-    assertThat(view.getType()).isEqualTo(Type.REVISION);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.REVISION);
     assertThat(view.getRevision().getName()).isEqualTo(MAIN);
     assertThat(view.getRevision().getId()).isEqualTo(main);
 
     view = getView("/repo/+/master/master", branchRedirect);
-    assertThat(view.getType()).isEqualTo(Type.PATH);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.PATH);
     assertThat(view.getPathPart()).isEqualTo("master");
     assertThat(view.getRevision().getName()).isEqualTo(MAIN);
     assertThat(view.getRevision().getId()).isEqualTo(main);
@@ -602,7 +602,7 @@
     GitilesView view;
 
     view = getView("/repo/+diff/master^..master", branchRedirect);
-    assertThat(view.getType()).isEqualTo(Type.DIFF);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.DIFF);
     assertThat(view.getRevision().getName()).isEqualTo(MAIN);
     assertThat(view.getRevision().getId()).isEqualTo(main);
     assertThat(view.getOldRevision().getName()).isEqualTo("refs/heads/main^");
@@ -610,7 +610,7 @@
     assertThat(view.getPathPart()).isEmpty();
 
     view = getView("/repo/+diff/master..master^", branchRedirect);
-    assertThat(view.getType()).isEqualTo(Type.DIFF);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.DIFF);
     assertThat(view.getRevision().getName()).isEqualTo("refs/heads/main^");
     assertThat(view.getRevision().getId()).isEqualTo(parent);
     assertThat(view.getOldRevision().getName()).isEqualTo(MAIN);
@@ -618,7 +618,7 @@
     assertThat(view.getPathPart()).isEmpty();
 
     view = getView("/repo/+diff/master^..master/", branchRedirect);
-    assertThat(view.getType()).isEqualTo(Type.DIFF);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.DIFF);
     assertThat(view.getRevision().getName()).isEqualTo(MAIN);
     assertThat(view.getRevision().getId()).isEqualTo(main);
     assertThat(view.getOldRevision().getName()).isEqualTo("refs/heads/main^");
@@ -626,7 +626,7 @@
     assertThat(view.getPathPart()).isEmpty();
 
     view = getView("/repo/+diff/master^..master/foo", branchRedirect);
-    assertThat(view.getType()).isEqualTo(Type.DIFF);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.DIFF);
     assertThat(view.getRevision().getName()).isEqualTo(MAIN);
     assertThat(view.getRevision().getId()).isEqualTo(main);
     assertThat(view.getOldRevision().getName()).isEqualTo("refs/heads/main^");
@@ -634,7 +634,7 @@
     assertThat(view.getPathPart()).isEqualTo("foo");
 
     view = getView("/repo/+diff/refs/heads/master^..refs/heads/master", branchRedirect);
-    assertThat(view.getType()).isEqualTo(Type.DIFF);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.DIFF);
     assertThat(view.getRevision().getName()).isEqualTo(MAIN);
     assertThat(view.getRevision().getId()).isEqualTo(main);
     assertThat(view.getOldRevision().getName()).isEqualTo("refs/heads/main^");
@@ -663,13 +663,13 @@
 
     view = getView("/repo/+show/master/", branchRedirect);
     assertThat(view.getRevision().getName()).isEqualTo(MAIN);
-    assertThat(view.getType()).isEqualTo(Type.PATH);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.PATH);
     assertThat(view.getRevision().getId()).isEqualTo(main);
     assertThat(view.getPathPart()).isEmpty();
 
     view = getView("/repo/+show/master/foo", branchRedirect);
     assertThat(view.getRevision().getName()).isEqualTo(MAIN);
-    assertThat(view.getType()).isEqualTo(Type.PATH);
+    assertThat(view.getType()).isEqualTo(GitilesView.Type.PATH);
     assertThat(view.getRevision().getId()).isEqualTo(main);
     assertThat(view.getPathPart()).isEqualTo("foo");
   }
