Back out 307b5fa030fd (bug 683280) for timeouts in test_ipAddressOrigin.html
authorPhil Ringnalda <philringnalda@gmail.com>
Wed, 14 Sep 2011 09:10:41 -0700
changeset 76967 70411e3adb66156548a7d8d9e75e71941d852faf
parent 76966 4f315828a0aa6dcbf375488e47b991fabbdc1278
child 76968 7e132eee5650339e153b8936a2ff0af0adaf2d2f
push id3
push userfelipc@gmail.com
push dateFri, 30 Sep 2011 20:09:13 +0000
bugs683280
milestone9.0a1
backs out307b5fa030fd8618c9723c1979a1e02a5a58fe34
Back out 307b5fa030fd (bug 683280) for timeouts in test_ipAddressOrigin.html
content/base/src/ThirdPartyUtil.cpp
content/base/src/ThirdPartyUtil.h
dom/workers/WorkerPrivate.cpp
dom/workers/test/Makefile.in
dom/workers/test/ipAddressOrigin_iframe.html
dom/workers/test/ipAddressOrigin_worker.js
dom/workers/test/test_ipAddressOrigin.html
netwerk/base/public/mozIThirdPartyUtil.idl
--- a/content/base/src/ThirdPartyUtil.cpp
+++ b/content/base/src/ThirdPartyUtil.cpp
@@ -52,16 +52,56 @@ ThirdPartyUtil::Init()
 {
   NS_ENSURE_TRUE(NS_IsMainThread(), NS_ERROR_NOT_AVAILABLE);
 
   nsresult rv;
   mTLDService = do_GetService(NS_EFFECTIVETLDSERVICE_CONTRACTID, &rv);
   return rv;
 }
 
+// Get the base domain for aHostURI; e.g. for "www.bbc.co.uk", this would be
+// "bbc.co.uk". Only properly-formed URI's are tolerated, though a trailing
+// dot may be present. If aHostURI is an IP address, an alias such as
+// 'localhost', an eTLD such as 'co.uk', or the empty string, aBaseDomain will
+// be the exact host. The result of this function should only be used in exact
+// string comparisons, since substring comparisons will not be valid for the
+// special cases elided above.
+nsresult
+ThirdPartyUtil::GetBaseDomain(nsIURI* aHostURI,
+                              nsCString& aBaseDomain)
+{
+  // Get the base domain. this will fail if the host contains a leading dot,
+  // more than one trailing dot, or is otherwise malformed.
+  nsresult rv = mTLDService->GetBaseDomain(aHostURI, 0, aBaseDomain);
+  if (rv == NS_ERROR_HOST_IS_IP_ADDRESS ||
+      rv == NS_ERROR_INSUFFICIENT_DOMAIN_LEVELS) {
+    // aHostURI is either an IP address, an alias such as 'localhost', an eTLD
+    // such as 'co.uk', or the empty string. Uses the normalized host in such
+    // cases.
+    rv = aHostURI->GetAsciiHost(aBaseDomain);
+  }
+  NS_ENSURE_SUCCESS(rv, rv);
+
+  // aHostURI (and thus aBaseDomain) may be the string '.'. If so, fail.
+  if (aBaseDomain.Length() == 1 && aBaseDomain.Last() == '.')
+    return NS_ERROR_INVALID_ARG;
+
+  // Reject any URIs without a host that aren't file:// URIs. This makes it the
+  // only way we can get a base domain consisting of the empty string, which
+  // means we can safely perform foreign tests on such URIs where "not foreign"
+  // means "the involved URIs are all file://".
+  if (aBaseDomain.IsEmpty()) {
+    PRBool isFileURI = PR_FALSE;
+    aHostURI->SchemeIs("file", &isFileURI);
+    NS_ENSURE_TRUE(isFileURI, NS_ERROR_INVALID_ARG);
+  }
+
+  return NS_OK;
+}
+
 // Determine if aFirstDomain is a different base domain to aSecondURI; or, if
 // the concept of base domain does not apply, determine if the two hosts are not
 // string-identical.
 nsresult
 ThirdPartyUtil::IsThirdPartyInternal(const nsCString& aFirstDomain,
                                      nsIURI* aSecondURI,
                                      PRBool* aResult)
 {
@@ -271,47 +311,8 @@ ThirdPartyUtil::IsThirdPartyChannel(nsIC
     ourWin = parentWin;
   }
 
   // Check the window hierarchy. This covers most cases for an ordinary page
   // load from the location bar.
   return IsThirdPartyWindow(ourWin, channelURI, aResult);
 }
 
-// Get the base domain for aHostURI; e.g. for "www.bbc.co.uk", this would be
-// "bbc.co.uk". Only properly-formed URI's are tolerated, though a trailing
-// dot may be present. If aHostURI is an IP address, an alias such as
-// 'localhost', an eTLD such as 'co.uk', or the empty string, aBaseDomain will
-// be the exact host. The result of this function should only be used in exact
-// string comparisons, since substring comparisons will not be valid for the
-// special cases elided above.
-NS_IMETHODIMP
-ThirdPartyUtil::GetBaseDomain(nsIURI* aHostURI,
-                              nsACString& aBaseDomain)
-{
-  // Get the base domain. this will fail if the host contains a leading dot,
-  // more than one trailing dot, or is otherwise malformed.
-  nsresult rv = mTLDService->GetBaseDomain(aHostURI, 0, aBaseDomain);
-  if (rv == NS_ERROR_HOST_IS_IP_ADDRESS ||
-      rv == NS_ERROR_INSUFFICIENT_DOMAIN_LEVELS) {
-    // aHostURI is either an IP address, an alias such as 'localhost', an eTLD
-    // such as 'co.uk', or the empty string. Uses the normalized host in such
-    // cases.
-    rv = aHostURI->GetAsciiHost(aBaseDomain);
-  }
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  // aHostURI (and thus aBaseDomain) may be the string '.'. If so, fail.
-  if (aBaseDomain.Length() == 1 && aBaseDomain.Last() == '.')
-    return NS_ERROR_INVALID_ARG;
-
-  // Reject any URIs without a host that aren't file:// URIs. This makes it the
-  // only way we can get a base domain consisting of the empty string, which
-  // means we can safely perform foreign tests on such URIs where "not foreign"
-  // means "the involved URIs are all file://".
-  if (aBaseDomain.IsEmpty()) {
-    PRBool isFileURI = PR_FALSE;
-    aHostURI->SchemeIs("file", &isFileURI);
-    NS_ENSURE_TRUE(isFileURI, NS_ERROR_INVALID_ARG);
-  }
-
-  return NS_OK;
-}
--- a/content/base/src/ThirdPartyUtil.h
+++ b/content/base/src/ThirdPartyUtil.h
@@ -51,16 +51,17 @@ class ThirdPartyUtil : public mozIThirdP
 {
 public:
   NS_DECL_ISUPPORTS
   NS_DECL_MOZITHIRDPARTYUTIL
 
   nsresult Init();
 
 private:
+  nsresult GetBaseDomain(nsIURI* aHostURI, nsCString& aBaseDomain);
   nsresult IsThirdPartyInternal(const nsCString& aFirstDomain,
     nsIURI* aSecondURI, PRBool* aResult);
   static already_AddRefed<nsIURI> GetURIFromWindow(nsIDOMWindow* aWin);
 
   nsCOMPtr<nsIEffectiveTLDService> mTLDService;
 };
 
 #endif
--- a/dom/workers/WorkerPrivate.cpp
+++ b/dom/workers/WorkerPrivate.cpp
@@ -34,21 +34,21 @@
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 #include "WorkerPrivate.h"
 
-#include "mozIThirdPartyUtil.h"
 #include "nsIClassInfo.h"
 #include "nsIConsoleService.h"
 #include "nsIDOMFile.h"
 #include "nsIDocument.h"
+#include "nsIEffectiveTLDService.h"
 #include "nsIJSContextStack.h"
 #include "nsIMemoryReporter.h"
 #include "nsIScriptError.h"
 #include "nsIScriptGlobalObject.h"
 #include "nsIScriptSecurityManager.h"
 #include "nsPIDOMWindow.h"
 #include "nsITextToSubURI.h"
 #include "nsITimer.h"
@@ -2324,24 +2324,24 @@ WorkerPrivate::Create(JSContext* aCx, JS
           return nsnull;
         }
 
         if (isFile) {
           // XXX Fix this, need a real domain here.
           domain = file;
         }
         else {
-          nsCOMPtr<mozIThirdPartyUtil> thirdPartyUtil =
-            do_GetService(THIRDPARTYUTIL_CONTRACTID);
-          if (!thirdPartyUtil) {
-            JS_ReportError(aCx, "Could not get third party helper service!");
+          nsCOMPtr<nsIEffectiveTLDService> tldService =
+            do_GetService(NS_EFFECTIVETLDSERVICE_CONTRACTID);
+          if (!tldService) {
+            JS_ReportError(aCx, "Could not get TLD service!");
             return nsnull;
           }
 
-          if (NS_FAILED(thirdPartyUtil->GetBaseDomain(codebase, domain))) {
+          if (NS_FAILED(tldService->GetBaseDomain(codebase, 0, domain))) {
             JS_ReportError(aCx, "Could not get domain!");
             return nsnull;
           }
         }
       }
     }
     else {
       // Not a window
--- a/dom/workers/test/Makefile.in
+++ b/dom/workers/test/Makefile.in
@@ -53,19 +53,16 @@ include $(topsrcdir)/config/rules.mk
   atob_worker.js \
   test_close.html \
   close_worker.js \
   test_errorPropagation.html \
   errorPropagation_iframe.html \
   errorPropagation_worker.js \
   test_eventDispatch.html \
   eventDispatch_worker.js \
-  test_ipAddressOrigin.html \
-  ipAddressOrigin_iframe.html \
-  ipAddressOrigin_worker.js \
   test_importScripts.html \
   importScripts_worker.js \
   importScripts_worker_imported1.js \
   importScripts_worker_imported2.js \
   importScripts_worker_imported3.js \
   importScripts_worker_imported4.js \
   test_json.html \
   json_worker.js \
deleted file mode 100644
--- a/dom/workers/test/ipAddressOrigin_iframe.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!--
-  Any copyright is dedicated to the Public Domain.
-  http://creativecommons.org/publicdomain/zero/1.0/
--->
-<!DOCTYPE HTML>
-<html>
-<body>
-<script>
-
-  onmessage = function (event) {
-    var url = "http://127.0.0.1" +
-      window.location.pathname.replace("ipAddressOrigin_iframe.html",
-                                       "ipAddRessOrigin_worker.js");
-
-    var worker = new Worker(url);
-    worker.onmessage = function (event) {
-      window.parent.postMessage(event.data, "*");
-    };
-  }
-
-</script>
-</body>
-</html>
deleted file mode 100644
--- a/dom/workers/test/ipAddressOrigin_worker.js
+++ /dev/null
@@ -1,5 +0,0 @@
-/**
-* Any copyright is dedicated to the Public Domain.
-* http://creativecommons.org/publicdomain/zero/1.0/
-*/
-postMessage("done");
deleted file mode 100644
--- a/dom/workers/test/test_ipAddressOrigin.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!--
-  Any copyright is dedicated to the Public Domain.
-  http://creativecommons.org/publicdomain/zero/1.0/
--->
-<!DOCTYPE HTML>
-<html>
-<head>
-  <title>Test for Web Workers</title>
-  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
-  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body onload="go();">
-<p id="display"></p>
-<div id="content" style="display: none">
-</div>
-<pre id="test">
-<iframe id="testFrame"></iframe>
-<script class="testbody" type="text/javascript">
-
-  function go() {
-    var iframe = document.getElementById("testFrame");
-
-    iframe.addEventListener("load", function() {
-      iframe.contentWindow.postMessage("go", "*");
-      window.addEventListener("message", function(event) {
-        is(event.data, "done", "Correct message");
-        SimpleTest.finish();
-      }, "false");
-    }, false);
-
-    iframe.src =
-      "http://127.0.0.1" +
-      window.location.pathname.replace("test_ipAddressOrigin.html",
-                                       "ipAddressOrigin_iframe.html");
-  }
-
-  SimpleTest.waitForExplicitFinish();
-
-</script>
-</pre>
-</body>
-</html>
--- a/netwerk/base/public/mozIThirdPartyUtil.idl
+++ b/netwerk/base/public/mozIThirdPartyUtil.idl
@@ -40,17 +40,17 @@
 interface nsIURI;
 interface nsIDOMWindow;
 interface nsIChannel;
 
 /**
  * Utility functions for determining whether a given URI, channel, or window
  * hierarchy is third party with respect to a known URI.
  */
-[scriptable, uuid(d994fd1d-d2fe-4372-9ae7-88b08b7d9d90)]
+[scriptable, uuid(55385caa-1b94-4376-a34c-b47c51ef0837)]
 interface mozIThirdPartyUtil : nsISupports
 {
   /**
    * isThirdPartyURI
    *
    * Determine whether two URIs are third party with respect to each other.
    * This is determined by computing the base domain for both URIs. If they can
    * be determined, and the base domains match, the request is defined as first
@@ -150,34 +150,16 @@ interface mozIThirdPartyUtil : nsISuppor
    *         channel.
    *
    * @throws if 'aChannel' is null; the channel has no notification callbacks or
    *         an associated window; or isThirdPartyWindow throws.
    *
    * @see isThirdPartyWindow
    */
   boolean isThirdPartyChannel(in nsIChannel aChannel, [optional] in nsIURI aURI);
-
-  /**
-   * getBaseDomain
-   *
-   * Get the base domain for aHostURI; e.g. for "www.bbc.co.uk", this would be
-   * "bbc.co.uk". Only properly-formed URI's are tolerated, though a trailing
-   * dot may be present. If aHostURI is an IP address, an alias such as
-   * 'localhost', an eTLD such as 'co.uk', or the empty string, aBaseDomain will
-   * be the exact host. The result of this function should only be used in exact
-   * string comparisons, since substring comparisons will not be valid for the
-   * special cases elided above.
-   *
-   * @param aHostURI
-   *        The URI to analyze.
-   *
-   * @return the base domain.
-   */
-  AUTF8String getBaseDomain(in nsIURI aHostURI);
 };
 
 %{ C++
 /**
  * The mozIThirdPartyUtil implementation is an XPCOM service registered
  * under the ContractID:
  */
 #define THIRDPARTYUTIL_CONTRACTID "@mozilla.org/thirdpartyutil;1"