[tor-commits] [torbrowser/master] Fix an exception on New Identity w/ NULL image firstPartyURI.

erinn at torproject.org erinn at torproject.org
Tue Feb 19 17:57:53 UTC 2013


commit bd9d79e513c3cbfc7915442599c2224dff147371
Author: Mike Perry <mikeperry-git at fscked.org>
Date:   Sat Feb 9 16:01:57 2013 -0800

    Fix an exception on New Identity w/ NULL image firstPartyURI.
---
 ...solate-the-Image-Cache-per-url-bar-domain.patch |   59 +++++++++++--------
 1 files changed, 34 insertions(+), 25 deletions(-)

diff --git a/src/current-patches/firefox/0024-Isolate-the-Image-Cache-per-url-bar-domain.patch b/src/current-patches/firefox/0024-Isolate-the-Image-Cache-per-url-bar-domain.patch
index 862673b..3fb55cf 100644
--- a/src/current-patches/firefox/0024-Isolate-the-Image-Cache-per-url-bar-domain.patch
+++ b/src/current-patches/firefox/0024-Isolate-the-Image-Cache-per-url-bar-domain.patch
@@ -1,4 +1,4 @@
-From e2d2cca918467240f4265799ead98defb1139db0 Mon Sep 17 00:00:00 2001
+From 3454d300fca2eea0e652f8982ec996575886dd1a Mon Sep 17 00:00:00 2001
 From: Mike Perry <mikeperry-git at torproject.org>
 Date: Thu, 6 Dec 2012 14:19:34 -0800
 Subject: [PATCH 24/26] Isolate the Image Cache per url bar domain.
@@ -10,7 +10,7 @@ not obey cacheKeys by default.
  embedding/browser/webBrowser/nsContextMenuInfo.cpp |   27 ++-
  extensions/cookie/nsCookiePermission.cpp           |    3 +
  image/public/imgILoader.idl                        |    4 +-
- image/src/imgLoader.cpp                            |  257 +++++++++++++-------
+ image/src/imgLoader.cpp                            |  262 +++++++++++++-------
  image/src/imgLoader.h                              |   20 +-
  image/src/imgRequest.cpp                           |   11 +-
  image/src/imgRequest.h                             |    3 +
@@ -18,7 +18,7 @@ not obey cacheKeys by default.
  netwerk/cookie/nsICookiePermission.idl             |    1 +
  toolkit/system/gnome/nsAlertsIconListener.cpp      |    3 +-
  widget/cocoa/nsMenuItemIconX.mm                    |    9 +-
- 12 files changed, 247 insertions(+), 118 deletions(-)
+ 12 files changed, 250 insertions(+), 120 deletions(-)
 
 diff --git a/content/base/src/nsContentUtils.cpp b/content/base/src/nsContentUtils.cpp
 index 8d58d8b..6a9c87c 100644
@@ -149,7 +149,7 @@ index da26463..ecff309 100644
                          in nsIPrincipal aLoadingPrincipal,
                          in nsILoadGroup aLoadGroup,
 diff --git a/image/src/imgLoader.cpp b/image/src/imgLoader.cpp
-index ea51e8d..4d5cfd2 100644
+index ea51e8d..8f2e0c1 100644
 --- a/image/src/imgLoader.cpp
 +++ b/image/src/imgLoader.cpp
 @@ -39,6 +39,7 @@
@@ -232,11 +232,11 @@ index ea51e8d..4d5cfd2 100644
 +  // content.
 +  nsTArray<nsRefPtr<imgCacheEntry> > entries;
 +  cache.Enumerate(EnumAllEntries, &entries);
- 
--    nsRefPtr<imgRequest> request = getter_AddRefs(entry->GetRequest());
++
 +  for (uint32_t i = 0; i < entries.Length(); ++i) {
 +    bool isEqual = false;
-+
+ 
+-    nsRefPtr<imgRequest> request = getter_AddRefs(entry->GetRequest());
 +    nsRefPtr<imgRequest> request = getter_AddRefs(entries[i]->GetRequest());
      if (request) {
 -      *_retval = request->Properties();
@@ -437,14 +437,14 @@ index ea51e8d..4d5cfd2 100644
 +
 +  return rv;
 +}
- 
--  LOG_STATIC_FUNC_WITH_PARAM(gImgLog, "imgLoader::RemoveFromCache", "uri", spec.get());
++
 +bool imgLoader::RemoveKeyFromCache(imgCacheTable &cache, 
 +                                   imgCacheQueue &queue,
 +                                   nsCAutoString key)
 +{
 +  if (key.IsEmpty()) return false;
-+
+ 
+-  LOG_STATIC_FUNC_WITH_PARAM(gImgLog, "imgLoader::RemoveFromCache", "uri", spec.get());
 +  LOG_STATIC_FUNC_WITH_PARAM(gImgLog, "imgLoader::RemoveKeyFromCache", "uri", key.get());
  
    nsRefPtr<imgCacheEntry> entry;
@@ -468,14 +468,14 @@ index ea51e8d..4d5cfd2 100644
 +    nsCOMPtr<nsIURI> imgURI = request->mURI;
 +    nsCOMPtr<nsIURI> firstPartyURI = request->mFirstPartyURI;
 +
-+    if (imgURI && firstPartyURI) {
++    if (imgURI) {
 +      imgCacheTable &cache = GetCache(imgURI);
 +      imgCacheQueue &queue = GetCacheQueue(imgURI);
 +      nsCAutoString spec = GetCacheKey(firstPartyURI, imgURI);
  
        LOG_STATIC_FUNC_WITH_PARAM(gImgLog, "imgLoader::RemoveFromCache", "entry's uri", spec.get());
  
-@@ -1438,18 +1485,6 @@ bool imgLoader::RemoveFromCache(imgCacheEntry *entry)
+@@ -1438,32 +1485,21 @@ bool imgLoader::RemoveFromCache(imgCacheEntry *entry)
    return false;
  }
  
@@ -493,8 +493,9 @@ index ea51e8d..4d5cfd2 100644
 -
  nsresult imgLoader::EvictEntries(imgCacheTable &aCacheToClear)
  {
++  nsresult rv = NS_OK;
    LOG_STATIC_FUNC(gImgLog, "imgLoader::EvictEntries table");
-@@ -1457,7 +1492,7 @@ nsresult imgLoader::EvictEntries(imgCacheTable &aCacheToClear)
+ 
    // We have to make a temporary, since RemoveFromCache removes the element
    // from the queue, invalidating iterators.
    nsTArray<nsRefPtr<imgCacheEntry> > entries;
@@ -503,7 +504,15 @@ index ea51e8d..4d5cfd2 100644
  
    for (uint32_t i = 0; i < entries.Length(); ++i)
      if (!RemoveFromCache(entries[i]))
-@@ -1490,11 +1525,10 @@ nsresult imgLoader::EvictEntries(imgCacheQueue &aQueueToClear)
+-      return NS_ERROR_FAILURE;
++      rv = NS_ERROR_FAILURE;
+ 
+-  return NS_OK;
++  return rv;
+ }
+ 
+ nsresult imgLoader::EvictEntries(imgCacheQueue &aQueueToClear)
+@@ -1490,11 +1526,10 @@ nsresult imgLoader::EvictEntries(imgCacheQueue &aQueueToClear)
                                    nsIRequest::VALIDATE_NEVER |    \
                                    nsIRequest::VALIDATE_ONCE_PER_SESSION)
  
@@ -517,7 +526,7 @@ index ea51e8d..4d5cfd2 100644
                                     nsIURI *aReferrerURI,
                                     nsIPrincipal* aLoadingPrincipal,
                                     nsILoadGroup *aLoadGroup,
-@@ -1513,8 +1547,8 @@ NS_IMETHODIMP imgLoader::LoadImage(nsIURI *aURI,
+@@ -1513,8 +1548,8 @@ NS_IMETHODIMP imgLoader::LoadImage(nsIURI *aURI,
    if (!aURI)
      return NS_ERROR_NULL_POINTER;
  
@@ -528,7 +537,7 @@ index ea51e8d..4d5cfd2 100644
    LOG_SCOPE_WITH_PARAM(gImgLog, "imgLoader::LoadImage", "aURI", spec.get());
  
    *_retval = nullptr;
-@@ -1566,7 +1600,7 @@ NS_IMETHODIMP imgLoader::LoadImage(nsIURI *aURI,
+@@ -1566,7 +1601,7 @@ NS_IMETHODIMP imgLoader::LoadImage(nsIURI *aURI,
    imgCacheTable &cache = GetCache(aURI);
  
    if (cache.Get(spec, getter_AddRefs(entry)) && entry) {
@@ -537,7 +546,7 @@ index ea51e8d..4d5cfd2 100644
                        aLoadGroup, aObserver, aCX, requestFlags, true,
                        aRequest, _retval, aPolicy, aLoadingPrincipal, corsmode)) {
        request = getter_AddRefs(entry->GetRequest());
-@@ -1605,7 +1639,7 @@ NS_IMETHODIMP imgLoader::LoadImage(nsIURI *aURI,
+@@ -1605,7 +1640,7 @@ NS_IMETHODIMP imgLoader::LoadImage(nsIURI *aURI,
      rv = NewImageChannel(getter_AddRefs(newChannel),
                           &forcePrincipalCheck,
                           aURI,
@@ -546,7 +555,7 @@ index ea51e8d..4d5cfd2 100644
                           aReferrerURI,
                           aLoadGroup,
                           mAcceptHeader,
-@@ -1627,8 +1661,8 @@ NS_IMETHODIMP imgLoader::LoadImage(nsIURI *aURI,
+@@ -1627,8 +1662,8 @@ NS_IMETHODIMP imgLoader::LoadImage(nsIURI *aURI,
          do_CreateInstance(NS_LOADGROUP_CONTRACTID);
      newChannel->SetLoadGroup(loadGroup);
  
@@ -557,7 +566,7 @@ index ea51e8d..4d5cfd2 100644
  
      // Pass the inner window ID of the loading document, if possible.
      nsCOMPtr<nsIDocument> doc = do_QueryInterface(aCX);
-@@ -1676,7 +1710,7 @@ NS_IMETHODIMP imgLoader::LoadImage(nsIURI *aURI,
+@@ -1676,7 +1711,7 @@ NS_IMETHODIMP imgLoader::LoadImage(nsIURI *aURI,
      }
  
      // Try to add the new request into the cache.
@@ -566,7 +575,7 @@ index ea51e8d..4d5cfd2 100644
    } else {
      LOG_MSG_WITH_PARAM(gImgLog, 
                         "imgLoader::LoadImage |cache hit|", "request", request);
-@@ -1736,6 +1770,49 @@ NS_IMETHODIMP imgLoader::LoadImage(nsIURI *aURI,
+@@ -1736,6 +1771,49 @@ NS_IMETHODIMP imgLoader::LoadImage(nsIURI *aURI,
    return NS_OK;
  }
  
@@ -616,7 +625,7 @@ index ea51e8d..4d5cfd2 100644
  /* imgIRequest loadImageWithChannel(in nsIChannel channel, in imgIDecoderObserver aObserver, in nsISupports cx, out nsIStreamListener); */
  NS_IMETHODIMP imgLoader::LoadImageWithChannel(nsIChannel *channel, imgIDecoderObserver *aObserver, nsISupports *aCX, nsIStreamListener **listener, imgIRequest **_retval)
  {
-@@ -1746,22 +1823,27 @@ NS_IMETHODIMP imgLoader::LoadImageWithChannel(nsIChannel *channel, imgIDecoderOb
+@@ -1746,22 +1824,27 @@ NS_IMETHODIMP imgLoader::LoadImageWithChannel(nsIChannel *channel, imgIDecoderOb
    nsCOMPtr<nsIURI> uri;
    channel->GetURI(getter_AddRefs(uri));
  
@@ -649,7 +658,7 @@ index ea51e8d..4d5cfd2 100644
  
      if (cache.Get(spec, getter_AddRefs(entry)) && entry) {
        // We don't want to kick off another network load. So we ask
-@@ -1833,7 +1915,7 @@ NS_IMETHODIMP imgLoader::LoadImageWithChannel(nsIChannel *channel, imgIDecoderOb
+@@ -1833,7 +1916,7 @@ NS_IMETHODIMP imgLoader::LoadImageWithChannel(nsIChannel *channel, imgIDecoderOb
      channel->GetOriginalURI(getter_AddRefs(originalURI));
  
      // No principal specified here, because we're not passed one.
@@ -658,7 +667,7 @@ index ea51e8d..4d5cfd2 100644
                    aCX, nullptr, imgIRequest::CORS_NONE);
  
      ProxyListener *pl = new ProxyListener(static_cast<nsIStreamListener *>(request.get()));
-@@ -1845,7 +1927,7 @@ NS_IMETHODIMP imgLoader::LoadImageWithChannel(nsIChannel *channel, imgIDecoderOb
+@@ -1845,7 +1928,7 @@ NS_IMETHODIMP imgLoader::LoadImageWithChannel(nsIChannel *channel, imgIDecoderOb
      NS_RELEASE(pl);
  
      // Try to add the new request into the cache.
@@ -667,7 +676,7 @@ index ea51e8d..4d5cfd2 100644
  
      rv = CreateNewProxyForRequest(request, loadGroup, aObserver,
                                    requestFlags, nullptr, _retval);
-@@ -2132,6 +2214,7 @@ NS_IMETHODIMP imgCacheValidator::OnStartRequest(nsIRequest *aRequest, nsISupport
+@@ -2132,6 +2215,7 @@ NS_IMETHODIMP imgCacheValidator::OnStartRequest(nsIRequest *aRequest, nsISupport
  
    int32_t corsmode = mRequest->GetCORSMode();
    nsCOMPtr<nsIPrincipal> loadingPrincipal = mRequest->GetLoadingPrincipal();
@@ -675,7 +684,7 @@ index ea51e8d..4d5cfd2 100644
  
    // Doom the old request's cache entry
    mRequest->RemoveFromCache();
-@@ -2142,16 +2225,16 @@ NS_IMETHODIMP imgCacheValidator::OnStartRequest(nsIRequest *aRequest, nsISupport
+@@ -2142,16 +2226,16 @@ NS_IMETHODIMP imgCacheValidator::OnStartRequest(nsIRequest *aRequest, nsISupport
    // We use originalURI here to fulfil the imgIRequest contract on GetURI.
    nsCOMPtr<nsIURI> originalURI;
    channel->GetOriginalURI(getter_AddRefs(originalURI));





More information about the tor-commits mailing list