Backed out changeset 55d159b75f41 from bug 482659.
authorDave Townsend <dtownsend@oxymoronical.com>
Tue, 17 Mar 2009 11:08:59 +0000
changeset 26243 33c68c49af9dc25355f3855452fc043c2c84b4d2
parent 26241 55d159b75f41141d92ad9bb2c52780d082ed11a0
child 26244 844d5410d576b8780f4aa30408a0f2509e7c9749
push id5971
push userdtownsend@mozilla.com
push dateTue, 17 Mar 2009 11:09:29 +0000
treeherdermozilla-central@844d5410d576 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs482659
milestone1.9.2a1pre
backs out55d159b75f41141d92ad9bb2c52780d082ed11a0
Backed out changeset 55d159b75f41 from bug 482659.
content/base/src/nsFrameLoader.cpp
content/html/document/test/Makefile.in
content/html/document/test/test_bug482659.html
layout/reftests/bugs/482659-1-ref.html
layout/reftests/bugs/482659-1a.html
layout/reftests/bugs/482659-1b.html
layout/reftests/bugs/482659-1c.html
layout/reftests/bugs/482659-1d.html
layout/reftests/bugs/reftest.list
netwerk/build/nsNetCID.h
netwerk/build/nsNetModule.cpp
netwerk/protocol/about/src/nsAboutProtocolHandler.cpp
netwerk/protocol/about/src/nsAboutProtocolHandler.h
netwerk/test/unit/test_aboutblank.js
--- a/content/base/src/nsFrameLoader.cpp
+++ b/content/base/src/nsFrameLoader.cpp
@@ -154,17 +154,17 @@ nsFrameLoader::LoadFrame()
   const char *charset = doc_charset.IsEmpty() ? nsnull : doc_charset.get();
 
   nsCOMPtr<nsIURI> uri;
   nsresult rv = NS_NewURI(getter_AddRefs(uri), src, charset, base_uri);
 
   // If the URI was malformed, try to recover by loading about:blank.
   if (rv == NS_ERROR_MALFORMED_URI) {
     rv = NS_NewURI(getter_AddRefs(uri), NS_LITERAL_STRING("about:blank"),
-                   charset, base_uri);
+                   charset);
   }
 
   NS_ENSURE_SUCCESS(rv, rv);
   return LoadURI(uri);
 }
 
 NS_IMETHODIMP
 nsFrameLoader::LoadURI(nsIURI* aURI)
--- a/content/html/document/test/Makefile.in
+++ b/content/html/document/test/Makefile.in
@@ -84,13 +84,12 @@ include $(topsrcdir)/config/rules.mk
 		test_bug446483.html \
 		bug446483-iframe.html \
 		test_bug448564.html \
 		bug448564-iframe-1.html \
 		bug448564-iframe-2.html \
 		bug448564-iframe-3.html \
 		bug448564-echo.sjs \
 		bug448564-submit.js \
-		test_bug482659.html \
 		$(NULL)
 
 libs:: $(_TEST_FILES)
 	$(INSTALL) $(foreach f,$^,"$f") $(DEPTH)/_tests/testing/mochitest/tests/$(relativesrcdir)
deleted file mode 100644
--- a/content/html/document/test/test_bug482659.html
+++ /dev/null
@@ -1,128 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=482659
--->
-<head>
-  <title>Test for Bug 482659</title>
-  <script type="application/javascript" src="/MochiKit/MochiKit.js"></script>
-  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
-  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=482659">Mozilla Bug 482659</a>
-<p id="display">
-  <iframe></iframe>
-  <iframe src="about:blank"></iframe>
-  <iframe></iframe>
-  <iframe src="about:blank"></iframe>
-</p>
-<div id="content" style="display: none">
-  
-</div>
-<pre id="test">
-<script type="application/javascript">
-
-/** Test for Bug 482659 **/
-SimpleTest.waitForExplicitFinish()
-
-function testFrame(num) {
-  is(window.frames[num].document.baseURI, document.baseURI,
-     "Unexpected base URI in frame " + num);
-  is(window.frames[num].document.documentURI, "about:blank",
-     "Unexpected document URI in frame " + num);
-}
-
-function appendScript(doc) {
-  var s = doc.createElement("script");
-  s.textContent = "document.write('executed'); document.close()";
-  doc.body.appendChild(s);
-}
-
-function verifyScriptRan(num) {
-  is(window.frames[num].document.documentElement.textContent, "executed",
-     "write didn't happen in frame " + num);
-}
-
-addLoadEvent(function() {
-  appendScript(window.frames[2].document);
-  appendScript(window.frames[3].document);
-
-  verifyScriptRan(2);
-  verifyScriptRan(3);
-
-  for (var i = 0; i < 4; ++i) {
-    testFrame(i);
-  }
-
-  SimpleTest.finish();
-});
-
-</script>
-</pre>
-</body>
-</html>
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=482659
--->
-<head>
-  <title>Test for Bug 482659</title>
-  <script type="application/javascript" src="/MochiKit/MochiKit.js"></script>
-  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
-  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=482659">Mozilla Bug 482659</a>
-<p id="display">
-  <iframe></iframe>
-  <iframe src="about:blank"></iframe>
-  <iframe></iframe>
-  <iframe src="about:blank"></iframe>
-</p>
-<div id="content" style="display: none">
-  
-</div>
-<pre id="test">
-<script type="application/javascript">
-
-/** Test for Bug 482659 **/
-SimpleTest.waitForExplicitFinish()
-
-function testFrame(num) {
-  is(window.frames[num].document.baseURI, document.baseURI,
-     "Unexpected base URI in frame " + num);
-  is(window.frames[num].document.documentURI, "about:blank",
-     "Unexpected document URI in frame " + num);
-}
-
-function appendScript(doc) {
-  var s = doc.createElement("script");
-  s.textContent = "document.write('executed'); document.close()";
-  doc.body.appendChild(s);
-}
-
-function verifyScriptRan(num) {
-  is(window.frames[num].document.documentElement.textContent, "executed",
-     "write didn't happen in frame " + num);
-}
-
-addLoadEvent(function() {
-  appendScript(window.frames[2].document);
-  appendScript(window.frames[3].document);
-
-  verifyScriptRan(2);
-  verifyScriptRan(3);
-
-  for (var i = 0; i < 4; ++i) {
-    testFrame(i);
-  }
-
-  SimpleTest.finish();
-});
-
-</script>
-</pre>
-</body>
-</html>
deleted file mode 100644
--- a/layout/reftests/bugs/482659-1-ref.html
+++ /dev/null
@@ -1,4 +0,0 @@
-<!DOCTYPE html>
-<body>
-  <iframe src="subdir/445004-ref-subsubframe.html"></iframe>
-</body>
deleted file mode 100644
--- a/layout/reftests/bugs/482659-1a.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<!DOCTYPE html>
-<html class="reftest-wait">
-  <head>
-    <script>
-      window.onload = function() {
-        window.frames[0].document.body.innerHTML =
-          "<img src='passouter.png' " +
-          "onload='window.parent.document.documentElement.className = &quot;&quot;'";
-      }
-    </script>
-  </head>
-  <body>
-    <iframe></iframe>
-  </body>
-</html>
-  
deleted file mode 100644
--- a/layout/reftests/bugs/482659-1b.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<!DOCTYPE html>
-<html class="reftest-wait">
-  <head>
-    <script>
-      window.onload = function() {
-        window.frames[0].document.body.innerHTML =
-          "<img src='passouter.png' " +
-          "onload='window.parent.document.documentElement.className = &quot;&quot;'";
-      }
-    </script>
-  </head>
-  <body>
-    <iframe src="about:blank"></iframe>
-  </body>
-</html>
-  
deleted file mode 100644
--- a/layout/reftests/bugs/482659-1c.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE html>
-<html class="reftest-wait">
-  <head>
-    <script>
-      window.onload = function() {
-        window.frames[0].location =
-          'javascript:document.write(""); document.close(); ' +
-          'parent.continueTest();'
-      }
-
-      function continueTest() {
-        // Do this part async just in case
-        setTimeout(function() {
-          window.frames[0].document.body.innerHTML =
-            "<img src='passouter.png' " +
-            "onload='window.parent.document.documentElement.className = &quot;&quot;'";
-                                                                                        }, 0);
-      }
-    </script>
-  </head>
-  <body>
-    <iframe></iframe>
-  </body>
-</html>
-  
deleted file mode 100644
--- a/layout/reftests/bugs/482659-1d.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE html>
-<html class="reftest-wait">
-  <head>
-    <script>
-      window.onload = function() {
-        window.frames[0].location =
-          'javascript:document.write(""); document.close(); ' +
-          'parent.continueTest();'
-      }
-
-      function continueTest() {
-        // Do this part async just in case
-        setTimeout(function() {
-          window.frames[0].document.body.innerHTML =
-            "<img src='passouter.png' " +
-            "onload='window.parent.document.documentElement.className = &quot;&quot;'";
-                                                                                        }, 0);
-      }
-    </script>
-  </head>
-  <body>
-    <iframe src="about:blank"></iframe>
-  </body>
-</html>
-  
--- a/layout/reftests/bugs/reftest.list
+++ b/layout/reftests/bugs/reftest.list
@@ -1102,12 +1102,8 @@ fails == 461512-1.html 461512-1-ref.html
 == 480880-1c.html 480880-1-ref.html
 == 480880-1d.html 480880-1-ref.html
 == 480880-1e.html 480880-1-ref.html
 == 480880-2a.html about:blank
 == 480880-2b.html about:blank
 == 480880-2c.html about:blank
 == 482592-1a.xhtml 482592-1-ref.html
 == 482592-1b.xhtml 482592-1-ref.html
-== 482659-1a.html 482659-1-ref.html
-== 482659-1b.html 482659-1-ref.html
-== 482659-1c.html 482659-1-ref.html
-== 482659-1d.html 482659-1-ref.html
--- a/netwerk/build/nsNetCID.h
+++ b/netwerk/build/nsNetCID.h
@@ -118,26 +118,16 @@
 #define NS_SIMPLENESTEDURI_CID                           \
 { /* 56388dad-287b-4240-a785-85c394012503 */             \
      0x56388dad,                                         \
      0x287b,                                             \
      0x4240,                                             \
      { 0xa7, 0x85, 0x85, 0xc3, 0x94, 0x01, 0x25, 0x03 }  \
 }
 
-// component inheriting from the nested simple URI component and also
-// carrying along its base URI
-#define NS_NESTEDABOUTURI_CID                            \
-{ /* 2f277c00-0eaf-4ddb-b936-41326ba48aae */             \
-     0x2f277c00,                                         \
-     0x0eaf,                                             \
-     0x4ddb,                                             \
-     { 0xb9, 0x36, 0x41, 0x32, 0x6b, 0xa4, 0x8a, 0xae }  \
-}
-
 // component implementing nsIStandardURL, nsIURI, nsIURL, nsISerializable,
 // and nsIClassInfo.
 #define NS_STANDARDURL_CLASSNAME \
     "nsStandardURL"
 #define NS_STANDARDURL_CONTRACTID \
     "@mozilla.org/network/standard-url;1"
 #define NS_STANDARDURL_CID                           \
 { /* de9472d0-8034-11d3-9399-00104ba0fd40 */         \
--- a/netwerk/build/nsNetModule.cpp
+++ b/netwerk/build/nsNetModule.cpp
@@ -55,17 +55,16 @@
 #include "nsBufferedStreams.h"
 #include "nsMIMEInputStream.h"
 #include "nsSOCKSSocketProvider.h"
 #include "nsCacheService.h"
 #include "nsDiskCacheDeviceSQL.h"
 #include "nsMimeTypes.h"
 #include "nsNetStrings.h"
 #include "nsDNSPrefetch.h"
-#include "nsAboutProtocolHandler.h"
 
 #include "nsNetCID.h"
 
 #if defined(XP_MACOSX)
 #define BUILD_APPLEFILE_DECODER 1
 #else
 #define BUILD_BINHEX_DECODER 1
 #endif
@@ -175,17 +174,16 @@ NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR
 // protocols
 ///////////////////////////////////////////////////////////////////////////////
 
 // about:blank is mandatory
 #include "nsAboutProtocolHandler.h"
 #include "nsAboutBlank.h"
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsAboutProtocolHandler)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSafeAboutProtocolHandler)
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsNestedAboutURI)
 
 #ifdef NECKO_PROTOCOL_about
 // about
 #ifdef NS_BUILD_REFCNT_LOGGING
 #include "nsAboutBloat.h"
 #endif
 #include "nsAboutCache.h"
 #include "nsAboutCacheEntry.h"
@@ -1011,20 +1009,16 @@ static const nsModuleComponentInfo gNetM
       NS_NETWORK_PROTOCOL_CONTRACTID_PREFIX "moz-safe-about", 
       nsSafeAboutProtocolHandlerConstructor
     },
     { "about:blank", 
       NS_ABOUT_BLANK_MODULE_CID,
       NS_ABOUT_MODULE_CONTRACTID_PREFIX "blank", 
       nsAboutBlank::Create
     },
-    { "Nested about: URI",
-      NS_NESTEDABOUTURI_CID,
-      nsnull,
-      nsNestedAboutURIConstructor },
 #ifdef NECKO_PROTOCOL_about
 #ifdef NS_BUILD_REFCNT_LOGGING
     { "about:bloat", 
       NS_ABOUT_BLOAT_MODULE_CID,
       NS_ABOUT_MODULE_CONTRACTID_PREFIX "bloat", 
       nsAboutBloat::Create
     },
 #endif
--- a/netwerk/protocol/about/src/nsAboutProtocolHandler.cpp
+++ b/netwerk/protocol/about/src/nsAboutProtocolHandler.cpp
@@ -44,23 +44,19 @@
 #include "nsIServiceManager.h"
 #include "nsIAboutModule.h"
 #include "nsString.h"
 #include "nsReadableUtils.h"
 #include "nsNetCID.h"
 #include "nsAboutProtocolUtils.h"
 #include "nsNetError.h"
 #include "nsNetUtil.h"
-#include "nsIObjectInputStream.h"
-#include "nsIObjectOutputStream.h"
-#include "nsAutoPtr.h"
-#include "nsIWritablePropertyBag2.h"
+#include "nsSimpleNestedURI.h"
 
 static NS_DEFINE_CID(kSimpleURICID,     NS_SIMPLEURI_CID);
-static NS_DEFINE_CID(kNestedAboutURICID, NS_NESTEDABOUTURI_CID);
 
 ////////////////////////////////////////////////////////////////////////////////
 
 NS_IMPL_ISUPPORTS1(nsAboutProtocolHandler, nsIProtocolHandler)
 
 ////////////////////////////////////////////////////////////////////////////////
 // nsIProtocolHandler methods:
 
@@ -130,17 +126,17 @@ nsAboutProtocolHandler::NewURI(const nsA
         NS_ENSURE_SUCCESS(rv, rv);
         
         spec.Insert("moz-safe-about:", 0);
 
         nsCOMPtr<nsIURI> inner;
         rv = NS_NewURI(getter_AddRefs(inner), spec);
         NS_ENSURE_SUCCESS(rv, rv);
 
-        nsSimpleNestedURI* outer = new nsNestedAboutURI(inner, aBaseURI);
+        nsSimpleNestedURI* outer = new nsSimpleNestedURI(inner);
         NS_ENSURE_TRUE(outer, NS_ERROR_OUT_OF_MEMORY);
 
         // Take a ref to it in the COMPtr we plan to return
         url = outer;
 
         rv = outer->SetSpec(aSpec);
         NS_ENSURE_SUCCESS(rv, rv);
     }
@@ -157,32 +153,17 @@ nsAboutProtocolHandler::NewChannel(nsIUR
 {
     NS_ENSURE_ARG_POINTER(uri);
 
     // about:what you ask?
     nsCOMPtr<nsIAboutModule> aboutMod;
     nsresult rv = NS_GetAboutModule(uri, getter_AddRefs(aboutMod));
     if (NS_SUCCEEDED(rv)) {
         // The standard return case:
-        rv = aboutMod->NewChannel(uri, result);
-        if (NS_SUCCEEDED(rv)) {
-            nsRefPtr<nsNestedAboutURI> aboutURI;
-            rv = uri->QueryInterface(kNestedAboutURICID,
-                                     getter_AddRefs(aboutURI));
-            if (NS_SUCCEEDED(rv) && aboutURI->GetBaseURI()) {
-                nsCOMPtr<nsIWritablePropertyBag2> writableBag =
-                    do_QueryInterface(*result);
-                if (writableBag) {
-                    writableBag->
-                        SetPropertyAsInterface(NS_LITERAL_STRING("baseURI"),
-                                               aboutURI->GetBaseURI());
-                }
-            }
-        }
-        return rv;
+        return aboutMod->NewChannel(uri, result);
     }
 
     // mumble...
 
     if (rv == NS_ERROR_FACTORY_NOT_REGISTERED) {
         // This looks like an about: we don't know about.  Convert
         // this to an invalid URI error.
         rv = NS_ERROR_MALFORMED_URI;
@@ -259,81 +240,8 @@ nsSafeAboutProtocolHandler::NewChannel(n
 
 NS_IMETHODIMP 
 nsSafeAboutProtocolHandler::AllowPort(PRInt32 port, const char *scheme, PRBool *_retval)
 {
     // don't override anything.  
     *_retval = PR_FALSE;
     return NS_OK;
 }
-
-////////////////////////////////////////////////////////////
-// nsNestedAboutURI implementation
-NS_INTERFACE_MAP_BEGIN(nsNestedAboutURI)
-  if (aIID.Equals(kNestedAboutURICID))
-      foundInterface = static_cast<nsIURI*>(this);
-  else
-NS_INTERFACE_MAP_END_INHERITING(nsSimpleNestedURI)
-
-// nsISerializable
-NS_IMETHODIMP
-nsNestedAboutURI::Read(nsIObjectInputStream* aStream)
-{
-    nsresult rv = nsSimpleNestedURI::Read(aStream);
-    if (NS_FAILED(rv)) return rv;
-
-    PRBool haveBase;
-    rv = aStream->ReadBoolean(&haveBase);
-    if (NS_FAILED(rv)) return rv;
-
-    if (haveBase) {
-        rv = aStream->ReadObject(PR_TRUE, getter_AddRefs(mBaseURI));
-        if (NS_FAILED(rv)) return rv;
-    }
-
-    return NS_OK;
-}
-
-NS_IMETHODIMP
-nsNestedAboutURI::Write(nsIObjectOutputStream* aStream)
-{
-    nsresult rv = nsSimpleNestedURI::Write(aStream);
-    if (NS_FAILED(rv)) return rv;
-
-    rv = aStream->WriteBoolean(mBaseURI != nsnull);
-    if (NS_FAILED(rv)) return rv;
-
-    if (mBaseURI) {
-        rv = aStream->WriteObject(mBaseURI, PR_TRUE);
-        if (NS_FAILED(rv)) return rv;
-    }
-
-    return NS_OK;
-}
-
-// nsSimpleURI
-/* virtual */ nsSimpleURI*
-nsNestedAboutURI::StartClone()
-{
-    // Sadly, we can't make use of nsSimpleNestedURI::StartClone here.
-    NS_ENSURE_TRUE(mInnerURI, nsnull);
-
-    nsCOMPtr<nsIURI> innerClone;
-    nsresult rv = mInnerURI->Clone(getter_AddRefs(innerClone));
-    if (NS_FAILED(rv)) {
-        return nsnull;
-    }
-
-    nsNestedAboutURI* url = new nsNestedAboutURI(innerClone, mBaseURI);
-    if (url) {
-        url->SetMutable(PR_FALSE);
-    }
-
-    return url;
-}
-
-// nsIClassInfo
-NS_IMETHODIMP
-nsNestedAboutURI::GetClassIDNoAlloc(nsCID *aClassIDNoAlloc)
-{
-    *aClassIDNoAlloc = kNestedAboutURICID;
-    return NS_OK;
-}
--- a/netwerk/protocol/about/src/nsAboutProtocolHandler.h
+++ b/netwerk/protocol/about/src/nsAboutProtocolHandler.h
@@ -34,17 +34,16 @@
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 #ifndef nsAboutProtocolHandler_h___
 #define nsAboutProtocolHandler_h___
 
 #include "nsIProtocolHandler.h"
-#include "nsSimpleNestedURI.h"
 
 class nsCString;
 class nsIAboutModule;
 
 class nsAboutProtocolHandler : public nsIProtocolHandler
 {
 public:
     NS_DECL_ISUPPORTS
@@ -68,41 +67,9 @@ public:
     // nsSafeAboutProtocolHandler methods:
     nsSafeAboutProtocolHandler() {}
 
 private:
     ~nsSafeAboutProtocolHandler() {}
 };
 
 
-// Class to allow us to propagate the base URI to about:blank correctly
-class nsNestedAboutURI : public nsSimpleNestedURI {
-public:
-    nsNestedAboutURI(nsIURI* aInnerURI, nsIURI* aBaseURI)
-        : nsSimpleNestedURI(aInnerURI)
-        , mBaseURI(aBaseURI)
-    {}
-
-    // For use only from deserialization
-    nsNestedAboutURI() : nsSimpleNestedURI() {}
-
-    virtual ~nsNestedAboutURI() {}
-
-    // Override QI so we can QI to our CID as needed
-    NS_IMETHOD QueryInterface(REFNSIID aIID, void** aInstancePtr);
-
-    // Override StartClone(), the nsISerializable methods, and
-    // GetClassIDNoAlloc; this last is needed to make our nsISerializable impl
-    // work right.
-    virtual nsSimpleURI* StartClone();
-    NS_IMETHOD Read(nsIObjectInputStream* aStream);
-    NS_IMETHOD Write(nsIObjectOutputStream* aStream);
-    NS_IMETHOD GetClassIDNoAlloc(nsCID *aClassIDNoAlloc);
-
-    nsIURI* GetBaseURI() const {
-        return mBaseURI;
-    }
-
-protected:
-    nsCOMPtr<nsIURI> mBaseURI;
-};
-
 #endif /* nsAboutProtocolHandler_h___ */
deleted file mode 100644
--- a/netwerk/test/unit/test_aboutblank.js
+++ /dev/null
@@ -1,29 +0,0 @@
-function run_test() {
-  var ioServ = Components.classes["@mozilla.org/network/io-service;1"]
-                         .getService(Components.interfaces.nsIIOService);
-
-  var base = ioServ.newURI("http://www.example.com", null, null);
-
-  var about1 = ioServ.newURI("about:blank", null, null);
-  var about2 = ioServ.newURI("about:blank", null, base);
-
-  var chan1 = ioServ.newChannelFromURI(about1)
-                    .QueryInterface(Components.interfaces.nsIPropertyBag2);
-  var chan2 = ioServ.newChannelFromURI(about2)
-                    .QueryInterface(Components.interfaces.nsIPropertyBag2);
-
-  var haveProp = false;
-  var propVal = null;
-  try {
-    propVal = chan1.getPropertyAsInterface("baseURI",
-                                           Components.interfaces.nsIURI);
-    haveProp = true;
-  } catch (e if e.result == Components.results.NS_ERROR_NOT_AVAILABLE) {
-    // Property shouldn't be there.
-  }
-  do_check_eq(propVal, null);
-  do_check_eq(haveProp, false);
-  do_check_eq(chan2.getPropertyAsInterface("baseURI",
-                                           Components.interfaces.nsIURI),
-              base);
-}