Windows compatibility for SuperDevMode

java.util.File normalizes separators for the platform, so comparisons
with paths with forward-slashes will fail on Windows.
Splitting the filename and directory path is now done using string
manipulation rather than through File.

Bug: issue 8618
Change-Id: Ib10d352dac04ce2b359e98ffa7481b4b6608aab3
(cherry picked from commit 19c8cdb8e0e46dd8c959f16be5f2493a0a2f9130)
diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/SourceMap.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/SourceMap.java
index 3c13186..b44dc98 100644
--- a/dev/codeserver/java/com/google/gwt/dev/codeserver/SourceMap.java
+++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/SourceMap.java
@@ -81,7 +81,8 @@
     Set<String> directories = new HashSet<String>();
     for (int i = 0; i < sources.getLength(); i++) {
       String filename = sources.get(i).asString().getString();
-      directories.add(new File(filename).getParent());
+      int lastSlashPos = filename.lastIndexOf('/');
+      directories.add(lastSlashPos < 0 ? "" : filename.substring(0, lastSlashPos));
     }
 
     List<String> result = new ArrayList<String>();
@@ -102,9 +103,13 @@
 
     List<String> result = new ArrayList<String>();
     for (int i = 0; i < sources.getLength(); i++) {
-      File candidate = new File(sources.get(i).asString().getString());
-      if (parent.equals(candidate.getParent() + "/")) {
-        result.add(candidate.getName());
+      String candidate = sources.get(i).asString().getString();
+      if (!candidate.startsWith(parent)) {
+        continue;
+      }
+      int nameStart = candidate.lastIndexOf('/') + 1;
+      if (nameStart == parent.length()) {
+        result.add(candidate.substring(nameStart));
       }
     }