1.1 --- a/emul/mini/src/main/java/java/net/URL.java Fri Feb 01 14:16:26 2013 +0100
1.2 +++ b/emul/mini/src/main/java/java/net/URL.java Fri Feb 01 19:49:21 2013 +0100
1.3 @@ -506,6 +506,17 @@
1.4 public URL(URL context, String spec, URLStreamHandler handler)
1.5 throws MalformedURLException
1.6 {
1.7 + this(findContext(context), spec, handler != null);
1.8 + }
1.9 +
1.10 + private URL(URL context, String spec, boolean ishandler)
1.11 + throws MalformedURLException {
1.12 + // Check for permission to specify a handler
1.13 + if (ishandler) {
1.14 + throw new SecurityException();
1.15 + }
1.16 + URLStreamHandler handler = null;
1.17 +
1.18 String original = spec;
1.19 int i, limit, c;
1.20 int start = 0;
1.21 @@ -513,10 +524,6 @@
1.22 boolean aRef=false;
1.23 boolean isRelative = false;
1.24
1.25 - // Check for permission to specify a handler
1.26 - if (handler != null) {
1.27 - throw new SecurityException();
1.28 - }
1.29
1.30 try {
1.31 limit = spec.length();
1.32 @@ -1035,6 +1042,23 @@
1.33 return universal;
1.34 }
1.35
1.36 + private static URL findContext(URL context) throws MalformedURLException {
1.37 + if (context == null) {
1.38 + String base = findBaseURL();
1.39 + if (base != null) {
1.40 + context = new URL(null, base, false);
1.41 + }
1.42 + }
1.43 + return context;
1.44 + }
1.45 +
1.46 + @JavaScriptBody(args = {}, body =
1.47 + "if (window && window.location && window.location.href) {\n"
1.48 + + " return window.location.href;\n"
1.49 + + "}\n"
1.50 + + "return null;"
1.51 + )
1.52 + private static native String findBaseURL();
1.53 }
1.54 class Parts {
1.55 String path, query, ref;