123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <title>URL manipulation</title>
- <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
- <script type="text/javascript">
- var gIOService = null;
- function getIOService()
- {
- if (gIOService)
- return gIOService;
- try {
- gIOService = Components.classes["@mozilla.org/network/io-service;1"]
- .getService(Components.interfaces.nsIIOService);
- } catch(e) { dump("problem creating nsIURL for: "+inURLString+"\n"); }
- return gIOService;
- }
- function getnsIURL(inURLString)
- {
- var URL = null;
- var ioserv = getIOService();
- try {
- var URI = ioserv.newURI(inURLString, "", null);
- URL = URI.QueryInterface(Components.interfaces.nsIURL);
- } catch(e) { dump("problem creating nsIURL for: "+inURLString+"\n"); }
- return URL;
- }
- function getCommonSpec()
- {
- var URL1 = getnsIURL(document.foo.baseEdit.value);
- var URL2 = getnsIURL(document.foo.compareEdit.value);
- var result = "";
- try {
- result = URL1.getCommonBaseSpec(URL2);
- } catch(e) { dump("problem with getCommonSpec ("+e+")\n"); }
- document.foo.resultEdit.value = result;
- }
- function getRelativeSpec()
- {
- var URL1 = getnsIURL(document.foo.baseEdit.value);
- var URL2 = getnsIURL(document.foo.compareEdit.value);
- var result = "";
- try {
- result = URL1.getRelativeSpec(URL2);
- } catch(e) { dump("problem with getRelativeSpec ("+e+")\n"); }
- document.foo.resultEdit.value = result;
- }
- function doResolve()
- {
- var URL = getnsIURL(document.foo.baseEdit.value);
- var result = "";
- try {
- result = URL.resolve(document.foo.resultEdit.value);
- } catch(e) { dump("problem with getRelativeSpec ("+e+")\n"); }
- document.foo.compareEdit.value = result;
- }
- </script>
- </head>
- <body>
- <h1>testing of URL manipulation:</h1>
- <p>
- <form name="foo">
- <p>
- <label for="baseEdit">base url (absolute)</label><br>
- <input type="input" name="baseEdit" size="80" value="http://www.mozilla.org/">
- <p>
- <label for="compareEdit">comparison uri (absolute)</label><br>
- <input type="input" name="compareEdit" size="80">
- <p>
- <label for="resultEdit">resolved url</label><br>
- <input type="input" name="resultEdit" size="80">
- <p>
- <input type="button" onclick="getCommonSpec();" value="Get Common Spec">
- <input type="button" onclick="getRelativeSpec();" value="Get Relative Spec">
- <input type="button" onclick="doResolve();" value="Resolve">
- <h5> note: results from "resolve" are placed in "comparison uri" edit field</h5>
- </form>
- <p>
- <br>
- <h3>notes for testing</h3>
- different types of uris:<br>
- <ul>
- <li>about:</li>
- <li>about:blank</li>
- <li>mailbox://nsmail-2.mcom.com/xxx</li>
- <li>mailto:brade@netscape.com)</li>
- <li>junk</li>
- <li>http://foo/</li>
- <li>http://foo.com/</li>
- <li>https://foo.com/</li>
- <li>ftp://ftp.mozilla.org/</li>
- <li>http://foo.com:8080/</li>
- <li>http://brade@foo.com/</li>
- <li>http://brade:password@foo.com/</li>
- <li>http://brade:@foo.com:8080/</li>
- <li>file:///</li>
- <li>file:///Quest/Desktop%20Folder/test.html</li>
- </ul>
- other variations:<br>
- <ul>
- <li>sub-directories on above list</li>
- <li>files on above list</li>
- <li>sub-directories and files on above list<br>
- </li>
- <li>directories which don't end in a '/'</li>
- <li>files with queries</li>
- <li>files with no extension</li>
- <li>files with references</li>
- <li>files with params</li>
- <li>other schemes (chrome, ldap, news, finger, etc.)<br>
- </li>
- </ul>
- <br>
- This should be true:<br>
- resultString = baseURL.getRelativeSpec(URL);<br>
- <==><br>
- baseURL.resolve(resultString) == URL.spec;<br>
- </body>
- </html>
|