[tbb-commits] [tor-browser/tor-browser-38.1.0esr-5.0-1] Revert "Bug #15502. Isolate blob URLs to first party; no blobURLs in Web Workers"

mikeperry at torproject.org mikeperry at torproject.org
Tue Jul 28 08:41:37 UTC 2015


commit b4d97bc75ff672725fd80e0c640748a74c6edc3e
Author: Arthur Edelstein <arthuredelstein at gmail.com>
Date:   Thu Jul 2 12:54:18 2015 -0700

    Revert "Bug #15502. Isolate blob URLs to first party; no blobURLs in Web Workers"
    
    This reverts commit 7a8d11b1ef502688c97d7900c57361c4be6ae13a.
---
 .../pdfjs/content/PdfStreamConverter.jsm           |    7 +-----
 .../extensions/pdfjs/content/build/pdf.worker.js   |    9 +-------
 dom/base/ThirdPartyUtil.cpp                        |    9 --------
 dom/base/nsHostObjectProtocolHandler.cpp           |   23 ++------------------
 dom/workers/URL.cpp                                |    7 ------
 netwerk/base/mozIThirdPartyUtil.idl                |   14 ------------
 6 files changed, 4 insertions(+), 65 deletions(-)

diff --git a/browser/extensions/pdfjs/content/PdfStreamConverter.jsm b/browser/extensions/pdfjs/content/PdfStreamConverter.jsm
index 26515be..11db211 100644
--- a/browser/extensions/pdfjs/content/PdfStreamConverter.jsm
+++ b/browser/extensions/pdfjs/content/PdfStreamConverter.jsm
@@ -250,12 +250,6 @@ ChromeActions.prototype = {
       filename = 'document.pdf';
     }
     var blobUri = data.blobUrl ? NetUtil.newURI(data.blobUrl) : originalUri;
-    var netChannel;
-    try {
-      netChannel = NetUtil.newChannel(blobUri);
-    } catch (e) {
-      netChannel = NetUtil.newChannel(originalUri);
-    }
     var extHelperAppSvc =
           Cc['@mozilla.org/uriloader/external-helper-app-service;1'].
              getService(Ci.nsIExternalHelperAppService);
@@ -263,6 +257,7 @@ ChromeActions.prototype = {
                          getService(Ci.nsIWindowWatcher).activeWindow;
 
     var docIsPrivate = this.isInPrivateBrowsing();
+    var netChannel = NetUtil.newChannel(blobUri);
     if ('nsIPrivateBrowsingChannel' in Ci &&
         netChannel instanceof Ci.nsIPrivateBrowsingChannel) {
       netChannel.setPrivate(docIsPrivate);
diff --git a/browser/extensions/pdfjs/content/build/pdf.worker.js b/browser/extensions/pdfjs/content/build/pdf.worker.js
index a5dfe2f..c9de2ea 100644
--- a/browser/extensions/pdfjs/content/build/pdf.worker.js
+++ b/browser/extensions/pdfjs/content/build/pdf.worker.js
@@ -1152,14 +1152,7 @@ PDFJS.createObjectURL = (function createObjectURLClosure() {
     if (!PDFJS.disableCreateObjectURL &&
         typeof URL !== 'undefined' && URL.createObjectURL) {
       var blob = PDFJS.createBlob(data, contentType);
-      try {
-        return URL.createObjectURL(blob);
-      } catch(e) {
-        // URL.createObjectURL has thrown an error; continue to
-        // data schema fallback.
-        // TODO: Remove this try-catch when we re-enable
-        // createObjectURL in workers.
-      }
+      return URL.createObjectURL(blob);
     }
 
     var buffer = 'data:' + contentType + ';base64,';
diff --git a/dom/base/ThirdPartyUtil.cpp b/dom/base/ThirdPartyUtil.cpp
index eb09b43..d0aed3a 100644
--- a/dom/base/ThirdPartyUtil.cpp
+++ b/dom/base/ThirdPartyUtil.cpp
@@ -746,12 +746,3 @@ ThirdPartyUtil::GetFirstPartyHostForIsolation(nsIURI *aFirstPartyURI,
   aHost.Append("--");
   return NS_OK;
 }
-
-NS_IMETHODIMP
-ThirdPartyUtil::GetFirstPartyHostFromCaller(nsACString& aHost) {
-  nsCOMPtr<nsIURI> uri;
-  nsresult rv = GetFirstPartyIsolationURI(nullptr,
-                 nsContentUtils::GetDocumentFromCaller(), getter_AddRefs(uri));
-  NS_ENSURE_SUCCESS(rv, rv);
-  return GetFirstPartyHostForIsolation(uri, aHost);
-}
diff --git a/dom/base/nsHostObjectProtocolHandler.cpp b/dom/base/nsHostObjectProtocolHandler.cpp
index 8c440f4..aac33f9 100644
--- a/dom/base/nsHostObjectProtocolHandler.cpp
+++ b/dom/base/nsHostObjectProtocolHandler.cpp
@@ -16,7 +16,6 @@
 #include "mozilla/dom/File.h"
 #include "mozilla/Preferences.h"
 #include "mozilla/LoadInfo.h"
-#include "mozIThirdPartyUtil.h"
 
 using mozilla::dom::FileImpl;
 using mozilla::ErrorResult;
@@ -30,20 +29,9 @@ struct DataInfo
   nsCOMPtr<nsISupports> mObject;
   nsCOMPtr<nsIPrincipal> mPrincipal;
   nsCString mStack;
-  nsCString mFirstPartyHost;
 };
 
 static nsClassHashtable<nsCStringHashKey, DataInfo>* gDataTable;
-static nsCOMPtr<mozIThirdPartyUtil> gThirdPartyUtilService;
-
-static nsCString GetFirstPartyHostFromCaller() {
-  if (!gThirdPartyUtilService) {
-    gThirdPartyUtilService = do_GetService(THIRDPARTYUTIL_CONTRACTID);
-  }
-  nsCString host;
-  gThirdPartyUtilService->GetFirstPartyHostFromCaller(host);
-  return host;
-}
 
 // Memory reporting for the hash table.
 namespace mozilla {
@@ -325,8 +313,6 @@ nsHostObjectProtocolHandler::AddDataEntry(const nsACString& aScheme,
 
   info->mObject = aObject;
   info->mPrincipal = aPrincipal;
-  // Record the first party host that originated this object.
-  info->mFirstPartyHost = GetFirstPartyHostFromCaller();
   mozilla::BlobURLsReporter::GetJSStackForBlob(info);
 
   gDataTable->Put(aUri, info);
@@ -451,10 +437,7 @@ GetDataObject(nsIURI* aURI)
   aURI->GetSpec(spec);
 
   DataInfo* info = GetDataInfo(spec);
-  // Deny access to this object if the current first-party host
-  // doesn't match the originating first-party host.
-  return (info && info->mFirstPartyHost == GetFirstPartyHostFromCaller())
-         ? info->mObject : nullptr;
+  return info ? info->mObject : nullptr;
 }
 
 // -----------------------------------------------------------------------
@@ -512,9 +495,7 @@ nsHostObjectProtocolHandler::NewChannel2(nsIURI* uri,
 
   DataInfo* info = GetDataInfo(spec);
 
-  // Deny access to this URI if the current first party host
-  // doesn't match the first party host when it was created.
-  if (!info || (info->mFirstPartyHost != GetFirstPartyHostFromCaller())) {
+  if (!info) {
     return NS_ERROR_DOM_BAD_URI;
   }
 
diff --git a/dom/workers/URL.cpp b/dom/workers/URL.cpp
index 2ad1276..fbf6987 100644
--- a/dom/workers/URL.cpp
+++ b/dom/workers/URL.cpp
@@ -889,13 +889,6 @@ URL::CreateObjectURL(const GlobalObject& aGlobal, File& aBlob,
   JSContext* cx = aGlobal.Context();
   WorkerPrivate* workerPrivate = GetWorkerPrivateFromContext(cx);
 
-  if (!workerPrivate->IsChromeWorker()) {
-    workerPrivate->ReportError(cx, "Worker attempted to use createObjectURL; denied.", nullptr);
-    NS_NAMED_LITERAL_STRING(argStr, "URL.createObjectURL");
-    aRv.ThrowTypeError(MSG_METHOD_THIS_UNWRAPPING_DENIED, &argStr);
-    return;
-  }
-
   nsRefPtr<FileImpl> blobImpl = aBlob.Impl();
   MOZ_ASSERT(blobImpl);
 
diff --git a/netwerk/base/mozIThirdPartyUtil.idl b/netwerk/base/mozIThirdPartyUtil.idl
index a06841d..68a7099 100644
--- a/netwerk/base/mozIThirdPartyUtil.idl
+++ b/netwerk/base/mozIThirdPartyUtil.idl
@@ -262,20 +262,6 @@ interface mozIThirdPartyUtil : nsISupports
    */
   AUTF8String getFirstPartyHostForIsolation(in nsIURI aFirstPartyURI);
 
-  /**
-   * getFirstPartyHostFromCaller
-   *
-   * Obtain the host or pseudo-host for the first party URI belonging
-   * to the calling document. See getFirstPartyHostForIsolation(...) for
-   * examples.
-   *
-   * @return host or pseudo host.
-   *
-   * @throws if the calling document's first party URI lacks a host
-   *         and the scheme is not a whitelisted one for which we
-   *         generate a pseudo host.
-   */
-  AUTF8String getFirstPartyHostFromCaller();
 };
 
 %{ C++





More information about the tbb-commits mailing list