[tor-commits] [torbrowser/master] Update firefox patches for bugs #8324 and #8312.

mikeperry at torproject.org mikeperry at torproject.org
Fri Mar 1 03:27:03 UTC 2013


commit 2a543b9359029938dfa98f8e285fb5528104d527
Author: Mike Perry <mikeperry-git at fscked.org>
Date:   Thu Feb 28 19:22:26 2013 -0800

    Update firefox patches for bugs #8324 and #8312.
---
 ...-Block-Components.interfaces-from-content.patch |    4 +-
 ...0002-Make-Permissions-Manager-memory-only.patch |    4 +-
 ...-Make-Intermediate-Cert-Store-memory-only.patch |    4 +-
 .../firefox/0004-Add-a-string-based-cacheKey.patch |   12 +-
 .../0005-Block-all-plugins-except-flash.patch      |    4 +-
 ...ontent-pref-service-memory-only-clearable.patch |    4 +-
 ...owser-exit-when-not-launched-from-Vidalia.patch |   10 +-
 .../0008-Disable-SSL-Session-ID-tracking.patch     |    4 +-
 ...observer-event-to-close-persistent-connec.patch |    4 +-
 ...ice-and-system-specific-CSS-Media-Queries.patch |    4 +-
 ...11-Limit-the-number-of-fonts-per-document.patch |    4 +-
 .../0012-Rebrand-Firefox-to-TorBrowser.patch       |    4 +-
 .../0013-Make-Download-manager-memory-only.patch   |    4 +-
 .../0014-Add-DDG-and-StartPage-to-Omnibox.patch    |    4 +-
 ...-nsICacheService.EvictEntries-synchronous.patch |    4 +-
 .../firefox/0016-Prevent-WebSocket-DNS-leak.patch  |    4 +-
 ...ize-HTTP-request-order-and-pipeline-depth.patch |    4 +-
 ...Adapt-Steven-Michaud-s-Mac-crashfix-patch.patch |  545 --------------------
 ...er-event-to-filter-the-Drag-Drop-url-list.patch |   74 +++
 ...d-mozIThirdPartyUtil.getFirstPartyURI-API.patch |    4 +-
 .../0020-Add-canvas-image-extraction-prompt.patch  |   20 +-
 ...nt-window-coordinates-for-mouse-event-scr.patch |    4 +-
 ...se-physical-screen-info.-via-window-and-w.patch |    6 +-
 ...not-expose-system-colors-to-CSS-or-canvas.patch |    8 +-
 ...solate-the-Image-Cache-per-url-bar-domain.patch |    4 +-
 .../0025-nsIHTTPChannel.redirectTo-API.patch       |   22 +-
 ...26-Isolate-DOM-storage-to-first-party-URI.patch |   26 +-
 ...nk-to-plugin-manager-for-disabled-plugins.patch |   26 +
 28 files changed, 188 insertions(+), 633 deletions(-)

diff --git a/src/current-patches/firefox/0001-Block-Components.interfaces-from-content.patch b/src/current-patches/firefox/0001-Block-Components.interfaces-from-content.patch
index 5f2cbf7..a1ed5a8 100644
--- a/src/current-patches/firefox/0001-Block-Components.interfaces-from-content.patch
+++ b/src/current-patches/firefox/0001-Block-Components.interfaces-from-content.patch
@@ -1,7 +1,7 @@
-From d96e65b539df362bd495b51d2db02e56eca76851 Mon Sep 17 00:00:00 2001
+From 26ab2cbf5b925a3f1251bd536728a7e222b4f9e4 Mon Sep 17 00:00:00 2001
 From: Mike Perry <mikeperry-git at torproject.org>
 Date: Tue, 4 Dec 2012 15:41:09 -0800
-Subject: [PATCH 01/26] Block Components.interfaces from content
+Subject: [PATCH 01/27] Block Components.interfaces from content
 
 This patch removes the ability of content script to access
 Components.interfaces.*.
diff --git a/src/current-patches/firefox/0002-Make-Permissions-Manager-memory-only.patch b/src/current-patches/firefox/0002-Make-Permissions-Manager-memory-only.patch
index 1051aec..4a2b515 100644
--- a/src/current-patches/firefox/0002-Make-Permissions-Manager-memory-only.patch
+++ b/src/current-patches/firefox/0002-Make-Permissions-Manager-memory-only.patch
@@ -1,7 +1,7 @@
-From 5aadfe392688fde8bd93ed549b1f2988268a7987 Mon Sep 17 00:00:00 2001
+From 2391ce37afd5da908fc986cec6018795cb06fa63 Mon Sep 17 00:00:00 2001
 From: Mike Perry <mikeperry-git at torproject.org>
 Date: Tue, 4 Dec 2012 15:45:59 -0800
-Subject: [PATCH 02/26] Make Permissions Manager memory-only
+Subject: [PATCH 02/27] Make Permissions Manager memory-only
 
 This patch exposes a pref 'permissions.memory_only' that properly isolates the
 permissions manager to memory, which is responsible for all user specified
diff --git a/src/current-patches/firefox/0003-Make-Intermediate-Cert-Store-memory-only.patch b/src/current-patches/firefox/0003-Make-Intermediate-Cert-Store-memory-only.patch
index 990a900..37daf66 100644
--- a/src/current-patches/firefox/0003-Make-Intermediate-Cert-Store-memory-only.patch
+++ b/src/current-patches/firefox/0003-Make-Intermediate-Cert-Store-memory-only.patch
@@ -1,7 +1,7 @@
-From 7b028c106cfca269406641a8c7cd9380eafeecca Mon Sep 17 00:00:00 2001
+From 5130a82dcc2dd7385d7d1cd2b15daa1dc4577f5b Mon Sep 17 00:00:00 2001
 From: Mike Perry <mikeperry-git at torproject.org>
 Date: Tue, 4 Dec 2012 15:51:07 -0800
-Subject: [PATCH 03/26] Make Intermediate Cert Store memory-only.
+Subject: [PATCH 03/27] Make Intermediate Cert Store memory-only.
 
 This patch makes the intermediate SSL cert store exist in memory only.
 
diff --git a/src/current-patches/firefox/0004-Add-a-string-based-cacheKey.patch b/src/current-patches/firefox/0004-Add-a-string-based-cacheKey.patch
index f75db89..b9f4572 100644
--- a/src/current-patches/firefox/0004-Add-a-string-based-cacheKey.patch
+++ b/src/current-patches/firefox/0004-Add-a-string-based-cacheKey.patch
@@ -1,7 +1,7 @@
-From 7e6a70ebef4fdf0c9d1e50a42500eaa1daa15bd1 Mon Sep 17 00:00:00 2001
+From 0d1a840e58117d83d910d3eb09e9f7deaaeabbff Mon Sep 17 00:00:00 2001
 From: Mike Perry <mikeperry-git at torproject.org>
 Date: Tue, 4 Dec 2012 16:01:42 -0800
-Subject: [PATCH 04/26] Add a string-based cacheKey.
+Subject: [PATCH 04/27] Add a string-based cacheKey.
 
 Used for isolating cache according to same-origin policy.
 ---
@@ -29,10 +29,10 @@ index 3119dd9..fd2ec89 100644
       * may fail if the disk cache is not present.  The value of this attribute
       * is usually only settable during the processing of a channel's
 diff --git a/netwerk/protocol/http/nsHttpChannel.cpp b/netwerk/protocol/http/nsHttpChannel.cpp
-index ef6ff4d..dc49b81 100644
+index a1c2a1f..6242ddc 100644
 --- a/netwerk/protocol/http/nsHttpChannel.cpp
 +++ b/netwerk/protocol/http/nsHttpChannel.cpp
-@@ -2721,6 +2721,12 @@ nsHttpChannel::AssembleCacheKey(const char *spec, uint32_t postID,
+@@ -2725,6 +2725,12 @@ nsHttpChannel::AssembleCacheKey(const char *spec, uint32_t postID,
          cacheKey.Append(buf);
      }
  
@@ -45,7 +45,7 @@ index ef6ff4d..dc49b81 100644
      if (!cacheKey.IsEmpty()) {
          cacheKey.AppendLiteral("uri=");
      }
-@@ -5184,6 +5190,22 @@ nsHttpChannel::SetCacheTokenCachedCharset(const nsACString &aCharset)
+@@ -5209,6 +5215,22 @@ nsHttpChannel::SetCacheTokenCachedCharset(const nsACString &aCharset)
  //-----------------------------------------------------------------------------
  
  NS_IMETHODIMP
@@ -69,7 +69,7 @@ index ef6ff4d..dc49b81 100644
  {
      NS_ENSURE_ARG_POINTER(token);
 diff --git a/netwerk/protocol/http/nsHttpChannel.h b/netwerk/protocol/http/nsHttpChannel.h
-index 5b8c654..5b4ddb9 100644
+index d66415f..b1f0848 100644
 --- a/netwerk/protocol/http/nsHttpChannel.h
 +++ b/netwerk/protocol/http/nsHttpChannel.h
 @@ -298,6 +298,7 @@ private:
diff --git a/src/current-patches/firefox/0005-Block-all-plugins-except-flash.patch b/src/current-patches/firefox/0005-Block-all-plugins-except-flash.patch
index 4b3e603..6f70b29 100644
--- a/src/current-patches/firefox/0005-Block-all-plugins-except-flash.patch
+++ b/src/current-patches/firefox/0005-Block-all-plugins-except-flash.patch
@@ -1,7 +1,7 @@
-From ab69ac8d9594555e284e130a45bb17dcfcdf23c7 Mon Sep 17 00:00:00 2001
+From 7c95e69c73f64e45f9a1f5821a1e96457f9ae83a Mon Sep 17 00:00:00 2001
 From: Mike Perry <mikeperry-git at torproject.org>
 Date: Tue, 4 Dec 2012 16:03:13 -0800
-Subject: [PATCH 05/26] Block all plugins except flash.
+Subject: [PATCH 05/27] Block all plugins except flash.
 
 We cannot use the @mozilla.org/extensions/blocklist;1 service, because we
 actually want to stop plugins from ever entering the browser's process space
diff --git a/src/current-patches/firefox/0006-Make-content-pref-service-memory-only-clearable.patch b/src/current-patches/firefox/0006-Make-content-pref-service-memory-only-clearable.patch
index 33a83cd..ac514c1 100644
--- a/src/current-patches/firefox/0006-Make-content-pref-service-memory-only-clearable.patch
+++ b/src/current-patches/firefox/0006-Make-content-pref-service-memory-only-clearable.patch
@@ -1,7 +1,7 @@
-From 03c7c715835e41ad6d5e6043e176ee34503a2753 Mon Sep 17 00:00:00 2001
+From 50293cf7c107df2d76492890b945d17f63536f90 Mon Sep 17 00:00:00 2001
 From: Mike Perry <mikeperry-git at fscked.org>
 Date: Thu, 8 Sep 2011 08:40:17 -0700
-Subject: [PATCH 06/26] Make content pref service memory-only + clearable
+Subject: [PATCH 06/27] Make content pref service memory-only + clearable
 
 This prevents random urls from being inserted into content-prefs.sqllite in
 the profile directory as content prefs change (includes site-zoom and perhaps
diff --git a/src/current-patches/firefox/0007-Make-Tor-Browser-exit-when-not-launched-from-Vidalia.patch b/src/current-patches/firefox/0007-Make-Tor-Browser-exit-when-not-launched-from-Vidalia.patch
index e83a0d2..5304a1a 100644
--- a/src/current-patches/firefox/0007-Make-Tor-Browser-exit-when-not-launched-from-Vidalia.patch
+++ b/src/current-patches/firefox/0007-Make-Tor-Browser-exit-when-not-launched-from-Vidalia.patch
@@ -1,7 +1,7 @@
-From 8fb01f1b02160e9fd6e91641694a80acbeb6c05f Mon Sep 17 00:00:00 2001
+From b2c1cd58fda04daa92b6f69253fd2ff8bc7ce8f4 Mon Sep 17 00:00:00 2001
 From: Mike Perry <mikeperry-git at torproject.org>
 Date: Tue, 4 Dec 2012 16:29:24 -0800
-Subject: [PATCH 07/26] Make Tor Browser exit when not launched from Vidalia
+Subject: [PATCH 07/27] Make Tor Browser exit when not launched from Vidalia
 
 Turns out the Windows 7 UI encourages users to "dock" their Tor Browser app
 for easy relaunch. If they manage to do this, we should fail closed rather
@@ -12,14 +12,14 @@ https://trac.torproject.org/projects/tor/ticket/4192. We can do a better
 localized fix w/ a translated alert menu later, if it seems like this might
 actually be common.
 ---
- browser/base/content/browser.js |   14 +++++++++++++
+ browser/base/content/browser.js |   14 ++++++++++++++
  1 files changed, 14 insertions(+), 0 deletions(-)
 
 diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
-index f46a33d..9f77fd0 100644
+index 35664ec..bd2feed 100644
 --- a/browser/base/content/browser.js
 +++ b/browser/base/content/browser.js
-@@ -1096,6 +1096,20 @@ var gBrowserInit = {
+@@ -1093,6 +1093,20 @@ var gBrowserInit = {
      // setup simple gestures support
      gGestureSupport.init(true);
  
diff --git a/src/current-patches/firefox/0008-Disable-SSL-Session-ID-tracking.patch b/src/current-patches/firefox/0008-Disable-SSL-Session-ID-tracking.patch
index ef227d9..1a20c3a 100644
--- a/src/current-patches/firefox/0008-Disable-SSL-Session-ID-tracking.patch
+++ b/src/current-patches/firefox/0008-Disable-SSL-Session-ID-tracking.patch
@@ -1,7 +1,7 @@
-From aa2165d4a1d496fc2d0e918ef99747ddfc7fd31e Mon Sep 17 00:00:00 2001
+From 0cdbc52ac00f33e532b5485cf12286a1dc11b981 Mon Sep 17 00:00:00 2001
 From: Mike Perry <mikeperry-git at fscked.org>
 Date: Wed, 7 Dec 2011 19:36:38 -0800
-Subject: [PATCH 08/26] Disable SSL Session ID tracking.
+Subject: [PATCH 08/27] Disable SSL Session ID tracking.
 
 We can't easily bind SSL Session ID tracking to url bar domain,
 so we have to disable them to satisfy
diff --git a/src/current-patches/firefox/0009-Provide-an-observer-event-to-close-persistent-connec.patch b/src/current-patches/firefox/0009-Provide-an-observer-event-to-close-persistent-connec.patch
index bdf080c..1457815 100644
--- a/src/current-patches/firefox/0009-Provide-an-observer-event-to-close-persistent-connec.patch
+++ b/src/current-patches/firefox/0009-Provide-an-observer-event-to-close-persistent-connec.patch
@@ -1,7 +1,7 @@
-From bc23775c26e066a4abbd68727f92a9fe8ed21977 Mon Sep 17 00:00:00 2001
+From 41c163c0497ef16faaf103debf5bf7ef8244849a Mon Sep 17 00:00:00 2001
 From: Mike Perry <mikeperry-git at torproject.org>
 Date: Fri, 7 Sep 2012 16:18:26 -0700
-Subject: [PATCH 09/26] Provide an observer event to close persistent
+Subject: [PATCH 09/27] Provide an observer event to close persistent
  connections
 
 We need to prevent linkability across "New Identity", which includes closing
diff --git a/src/current-patches/firefox/0010-Limit-device-and-system-specific-CSS-Media-Queries.patch b/src/current-patches/firefox/0010-Limit-device-and-system-specific-CSS-Media-Queries.patch
index a983794..e2876b3 100644
--- a/src/current-patches/firefox/0010-Limit-device-and-system-specific-CSS-Media-Queries.patch
+++ b/src/current-patches/firefox/0010-Limit-device-and-system-specific-CSS-Media-Queries.patch
@@ -1,7 +1,7 @@
-From 8fc251b2c49b46f0d07a7f80f814f5dae3a73ae6 Mon Sep 17 00:00:00 2001
+From 0c006870b9d96a8093ca66751e9738b4237c9251 Mon Sep 17 00:00:00 2001
 From: Kathleen Brade <brade at pearlcrescent.com>
 Date: Wed, 28 Nov 2012 09:49:40 -0500
-Subject: [PATCH 10/26] Limit device and system specific CSS Media Queries.
+Subject: [PATCH 10/27] Limit device and system specific CSS Media Queries.
 
 ---
  layout/style/nsMediaFeatures.cpp |   68 +++++++++++++++++++++++++-------------
diff --git a/src/current-patches/firefox/0011-Limit-the-number-of-fonts-per-document.patch b/src/current-patches/firefox/0011-Limit-the-number-of-fonts-per-document.patch
index dbf34a9..f02926a 100644
--- a/src/current-patches/firefox/0011-Limit-the-number-of-fonts-per-document.patch
+++ b/src/current-patches/firefox/0011-Limit-the-number-of-fonts-per-document.patch
@@ -1,7 +1,7 @@
-From 6b7306a50a304bcf12b04784115f21f34b71864a Mon Sep 17 00:00:00 2001
+From 094f1e4c33656e3f0922d6fcb941deb672fa44a8 Mon Sep 17 00:00:00 2001
 From: Mike Perry <mikeperry-git at torproject.org>
 Date: Wed, 5 Dec 2012 12:25:21 -0800
-Subject: [PATCH 11/26] Limit the number of fonts per document.
+Subject: [PATCH 11/27] Limit the number of fonts per document.
 
 We create two prefs:
 browser.display.max_font_count and browser.display.max_font_attempts.
diff --git a/src/current-patches/firefox/0012-Rebrand-Firefox-to-TorBrowser.patch b/src/current-patches/firefox/0012-Rebrand-Firefox-to-TorBrowser.patch
index 3c0c2a2..38097b2 100644
--- a/src/current-patches/firefox/0012-Rebrand-Firefox-to-TorBrowser.patch
+++ b/src/current-patches/firefox/0012-Rebrand-Firefox-to-TorBrowser.patch
@@ -1,7 +1,7 @@
-From 0c832e01da6845fc0f56ee9fce68f219b56950c3 Mon Sep 17 00:00:00 2001
+From e04a04b7d3837b12c728a04b48be3748248e8342 Mon Sep 17 00:00:00 2001
 From: Mike Perry <mikeperry-git at torproject.org>
 Date: Tue, 28 Aug 2012 18:05:11 -0700
-Subject: [PATCH 12/26] Rebrand Firefox to TorBrowser
+Subject: [PATCH 12/27] Rebrand Firefox to TorBrowser
 
 This patch does some basic renaming of Firefox to TorBrowser. The rest of the
 branding is done by images and icons.
diff --git a/src/current-patches/firefox/0013-Make-Download-manager-memory-only.patch b/src/current-patches/firefox/0013-Make-Download-manager-memory-only.patch
index c84be7d..4959935 100644
--- a/src/current-patches/firefox/0013-Make-Download-manager-memory-only.patch
+++ b/src/current-patches/firefox/0013-Make-Download-manager-memory-only.patch
@@ -1,7 +1,7 @@
-From 0cb96bdc00f9b1fa37916f92bc4fc5850c13f96f Mon Sep 17 00:00:00 2001
+From 5f9d765db5e0f09fd64c710644dfed872cec3942 Mon Sep 17 00:00:00 2001
 From: Mike Perry <mikeperry-git at torproject.org>
 Date: Tue, 4 Dec 2012 16:05:55 -0800
-Subject: [PATCH 13/26] Make Download manager memory only.
+Subject: [PATCH 13/27] Make Download manager memory only.
 
 Solves https://trac.torproject.org/projects/tor/ticket/4017.
 
diff --git a/src/current-patches/firefox/0014-Add-DDG-and-StartPage-to-Omnibox.patch b/src/current-patches/firefox/0014-Add-DDG-and-StartPage-to-Omnibox.patch
index caa96f6..d26c57f 100644
--- a/src/current-patches/firefox/0014-Add-DDG-and-StartPage-to-Omnibox.patch
+++ b/src/current-patches/firefox/0014-Add-DDG-and-StartPage-to-Omnibox.patch
@@ -1,7 +1,7 @@
-From ab1a01ca37e8ca848c2629d8b1d0768094d3a1ea Mon Sep 17 00:00:00 2001
+From fc4686de9d34eec32fafd34a35fd94c3f58d11e2 Mon Sep 17 00:00:00 2001
 From: Mike Perry <mikeperry-git at torproject.org>
 Date: Wed, 25 Apr 2012 15:03:46 -0700
-Subject: [PATCH 14/26] Add DDG and StartPage to Omnibox.
+Subject: [PATCH 14/27] Add DDG and StartPage to Omnibox.
 
 You mean there are search engines that don't require captchas if you don't
 have a cookie? Holy crap. Get those in there now.
diff --git a/src/current-patches/firefox/0015-Make-nsICacheService.EvictEntries-synchronous.patch b/src/current-patches/firefox/0015-Make-nsICacheService.EvictEntries-synchronous.patch
index ff25754..b0de192 100644
--- a/src/current-patches/firefox/0015-Make-nsICacheService.EvictEntries-synchronous.patch
+++ b/src/current-patches/firefox/0015-Make-nsICacheService.EvictEntries-synchronous.patch
@@ -1,7 +1,7 @@
-From 95a3b60fdd0dac8ba1fb1755312072558ea75c13 Mon Sep 17 00:00:00 2001
+From fa4ea3d80ec00ec29bdd286c2269b6370c107fce Mon Sep 17 00:00:00 2001
 From: Mike Perry <mikeperry-git at torproject.org>
 Date: Tue, 4 Dec 2012 16:25:52 -0800
-Subject: [PATCH 15/26] Make nsICacheService.EvictEntries synchronous
+Subject: [PATCH 15/27] Make nsICacheService.EvictEntries synchronous
 
 This fixes a race condition that allows cache-based EverCookies to persist for
 a brief time (on the order of minutes?) after cache clearing/"New Identity".
diff --git a/src/current-patches/firefox/0016-Prevent-WebSocket-DNS-leak.patch b/src/current-patches/firefox/0016-Prevent-WebSocket-DNS-leak.patch
index 7028ed7..587df41 100644
--- a/src/current-patches/firefox/0016-Prevent-WebSocket-DNS-leak.patch
+++ b/src/current-patches/firefox/0016-Prevent-WebSocket-DNS-leak.patch
@@ -1,7 +1,7 @@
-From d9a76d292f33b7e36c4d1aa3834eed69f0287a4e Mon Sep 17 00:00:00 2001
+From fa93f12f0a727b5ed097b7de2e59d473680f4b8c Mon Sep 17 00:00:00 2001
 From: Mike Perry <mikeperry-git at torproject.org>
 Date: Tue, 28 Aug 2012 18:07:37 -0700
-Subject: [PATCH 16/26] Prevent WebSocket DNS leak.
+Subject: [PATCH 16/27] Prevent WebSocket DNS leak.
 
 This is due to an improper implementation of the WebSocket spec by Mozilla.
 
diff --git a/src/current-patches/firefox/0017-Randomize-HTTP-request-order-and-pipeline-depth.patch b/src/current-patches/firefox/0017-Randomize-HTTP-request-order-and-pipeline-depth.patch
index dbf380d..ecc329b 100644
--- a/src/current-patches/firefox/0017-Randomize-HTTP-request-order-and-pipeline-depth.patch
+++ b/src/current-patches/firefox/0017-Randomize-HTTP-request-order-and-pipeline-depth.patch
@@ -1,7 +1,7 @@
-From db11101312a3bb8912817fa910a87ce0ebd9c00d Mon Sep 17 00:00:00 2001
+From e818ee33a8fd443dda1edbda03b16d49cdb5a47d Mon Sep 17 00:00:00 2001
 From: Mike Perry <mikeperry-git at torproject.org>
 Date: Tue, 4 Dec 2012 17:38:51 -0800
-Subject: [PATCH 17/26] Randomize HTTP request order and pipeline depth.
+Subject: [PATCH 17/27] Randomize HTTP request order and pipeline depth.
 
 This is an experimental defense against
 http://lorre.uni.lu/~andriy/papers/acmccs-wpes11-fingerprinting.pdf
diff --git a/src/current-patches/firefox/0018-Adapt-Steven-Michaud-s-Mac-crashfix-patch.patch b/src/current-patches/firefox/0018-Adapt-Steven-Michaud-s-Mac-crashfix-patch.patch
deleted file mode 100644
index e9ecba2..0000000
--- a/src/current-patches/firefox/0018-Adapt-Steven-Michaud-s-Mac-crashfix-patch.patch
+++ /dev/null
@@ -1,545 +0,0 @@
-From 8b97d84e891fb593bd48db41abcebbcb8e4da953 Mon Sep 17 00:00:00 2001
-From: Mike Perry <mikeperry-git at torproject.org>
-Date: Tue, 4 Dec 2012 17:48:53 -0800
-Subject: [PATCH 18/26] Adapt Steven Michaud's Mac crashfix patch
-
-Source is: https://bugzilla.mozilla.org/show_bug.cgi?id=715885#c35
-
-Some minor tweaks were needed to get it to apply and to compile on
-MacOS.
----
- widget/Makefile.in                        |    1 +
- widget/cocoa/nsChildView.mm               |   28 +++++++++++------
- widget/gtk2/nsDragService.cpp             |    9 +++--
- widget/nsIDragService.idl                 |    4 +--
- widget/nsPIDragService.idl                |   48 +++++++++++++++++++++++++++++
- widget/qt/nsDragService.h                 |    2 +
- widget/windows/Makefile.in                |    4 ++
- widget/windows/nsDragService.cpp          |   13 +++++---
- widget/windows/nsDragService.h            |   12 +++---
- widget/windows/nsNativeDragSource.cpp     |    7 ++--
- widget/windows/nsNativeDragTarget.cpp     |   28 ++++++++++------
- widget/windows/nsPIDragServiceWindows.idl |   46 +++++++++++++++++++++++++++
- widget/xpwidgets/nsBaseDragService.cpp    |   16 +++++++++-
- widget/xpwidgets/nsBaseDragService.h      |    9 ++---
- 14 files changed, 179 insertions(+), 48 deletions(-)
- create mode 100644 widget/nsPIDragService.idl
- create mode 100644 widget/windows/nsPIDragServiceWindows.idl
-
-diff --git a/widget/Makefile.in b/widget/Makefile.in
-index 4ab8a48..bc5aa5c 100644
---- a/widget/Makefile.in
-+++ b/widget/Makefile.in
-@@ -106,6 +106,7 @@ XPIDLSRCS	= \
- 		nsIClipboardDragDropHooks.idl \
- 		nsIClipboardDragDropHookList.idl \
- 		nsIDragSession.idl \
-+		nsPIDragService.idl \
- 		nsIDragService.idl \
- 		nsIFormatConverter.idl \
- 		nsIClipboard.idl \
-diff --git a/widget/cocoa/nsChildView.mm b/widget/cocoa/nsChildView.mm
-index aa919fa..d5fa58f 100644
---- a/widget/cocoa/nsChildView.mm
-+++ b/widget/cocoa/nsChildView.mm
-@@ -4518,11 +4518,12 @@ static int32_t RoundUp(double aDouble)
-   if (!dragService) {
-     dragService = do_GetService(kDragServiceContractID);
-   }
-+  nsCOMPtr<nsPIDragService> dragServicePriv = do_QueryInterface(dragService);
- 
-   if (dragService) {
-     NSPoint pnt = [NSEvent mouseLocation];
-     FlipCocoaScreenCoordinate(pnt);
--    dragService->DragMoved(NSToIntRound(pnt.x), NSToIntRound(pnt.y));
-+    dragServicePriv->DragMoved(NSToIntRound(pnt.x), NSToIntRound(pnt.y));
-   }
- }
- 
-@@ -4543,11 +4544,13 @@ static int32_t RoundUp(double aDouble)
-   }
- 
-   if (mDragService) {
--    // set the dragend point from the current mouse location
--    nsDragService* dragService = static_cast<nsDragService *>(mDragService);
--    NSPoint pnt = [NSEvent mouseLocation];
--    FlipCocoaScreenCoordinate(pnt);
--    dragService->SetDragEndPoint(nsIntPoint(NSToIntRound(pnt.x), NSToIntRound(pnt.y)));
-+    nsCOMPtr<nsPIDragService> dragServicePriv = do_QueryInterface(mDragService);
-+    if (dragServicePriv) {
-+      // set the dragend point from the current mouse location
-+      NSPoint pnt = [NSEvent mouseLocation];
-+      FlipCocoaScreenCoordinate(pnt);
-+      dragServicePriv->SetDragEndPoint(NSToIntRound(pnt.x), NSToIntRound(pnt.y));
-+    }
- 
-     // XXX: dropEffect should be updated per |operation|. 
-     // As things stand though, |operation| isn't well handled within "our"
-@@ -4558,10 +4561,15 @@ static int32_t RoundUp(double aDouble)
-     // value for NSDragOperationGeneric that is passed by other applications.
-     // All that said, NSDragOperationNone is still reliable.
-     if (operation == NSDragOperationNone) {
--      nsCOMPtr<nsIDOMDataTransfer> dataTransfer;
--      dragService->GetDataTransfer(getter_AddRefs(dataTransfer));
--      if (dataTransfer)
--        dataTransfer->SetDropEffectInt(nsIDragService::DRAGDROP_ACTION_NONE);
-+      nsCOMPtr<nsIDragSession> dragSession;
-+      mDragService->GetCurrentSession(getter_AddRefs(dragSession));
-+      if (dragSession) {
-+        nsCOMPtr<nsIDOMDataTransfer> dataTransfer;
-+        dragSession->GetDataTransfer(getter_AddRefs(dataTransfer));
-+        if (dataTransfer) {
-+            dataTransfer->SetDropEffectInt(nsIDragService::DRAGDROP_ACTION_NONE);
-+        }
-+      }
-     }
- 
-     mDragService->EndDragSession(true);
-diff --git a/widget/gtk2/nsDragService.cpp b/widget/gtk2/nsDragService.cpp
-index 10985cc..bac4160 100644
---- a/widget/gtk2/nsDragService.cpp
-+++ b/widget/gtk2/nsDragService.cpp
-@@ -234,8 +234,8 @@ OnSourceGrabEventAfter(GtkWidget *widget, GdkEvent *event, gpointer user_data)
-         // Update the cursor position.  The last of these recorded gets used for
-         // the NS_DRAGDROP_END event.
-         nsDragService *dragService = static_cast<nsDragService*>(user_data);
--        dragService->SetDragEndPoint(nsIntPoint(event->motion.x_root,
--                                                event->motion.y_root));
-+        dragService->SetDragEndPoint(event->motion.x_root,
-+                                     event->motion.y_root);
-     } else if (sMotionEvent && (event->type != GDK_KEY_PRESS ||
-                                 event->type != GDK_KEY_RELEASE)) {
-         // Update modifier state from keypress events.
-@@ -1343,7 +1343,7 @@ nsDragService::SourceEndDragSession(GdkDragContext *aContext,
-         GdkDisplay* display = gdk_display_get_default();
-         if (display) {
-             gdk_display_get_pointer(display, NULL, &x, &y, NULL);
--            SetDragEndPoint(nsIntPoint(x, y));
-+            SetDragEndPoint(x, y);
-         }
-     }
- 
-@@ -1760,8 +1760,9 @@ nsDragService::ScheduleDropEvent(nsWindow *aWindow,
-         NS_WARNING("Additional drag drop ignored");
-         return FALSE;        
-     }
-+    nsIntPoint pt = aWindowPoint + aWindow->WidgetToScreenOffset();
- 
--    SetDragEndPoint(aWindowPoint + aWindow->WidgetToScreenOffset());
-+    SetDragEndPoint(pt.x, pt.y);
- 
-     // We'll reply with gtk_drag_finish().
-     return TRUE;
-diff --git a/widget/nsIDragService.idl b/widget/nsIDragService.idl
-index 196761e..c0565bb 100644
---- a/widget/nsIDragService.idl
-+++ b/widget/nsIDragService.idl
-@@ -15,7 +15,7 @@ interface nsIDOMDragEvent;
- interface nsIDOMDataTransfer;
- interface nsISelection;
- 
--[scriptable, uuid(82B58ADA-F490-4C3D-B737-1057C4F1D052), builtinclass]
-+[scriptable, uuid(82B58ADA-F490-4C3D-B737-1057C4F1D052)]
- interface nsIDragService : nsISupports
- {
-   const long DRAGDROP_ACTION_NONE = 0;
-@@ -112,8 +112,6 @@ interface nsIDragService : nsISupports
-    */
-   void suppress();
-   void unsuppress();
--
--  [noscript] void dragMoved(in long aX, in long aY);
- };
- 
- 
-diff --git a/widget/nsPIDragService.idl b/widget/nsPIDragService.idl
-new file mode 100644
-index 0000000..7a703c1
---- /dev/null
-+++ b/widget/nsPIDragService.idl
-@@ -0,0 +1,48 @@
-+/* ***** BEGIN LICENSE BLOCK *****
-+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
-+ *
-+ * The contents of this file are subject to the Mozilla Public License Version
-+ * 1.1 (the "License"); you may not use this file except in compliance with
-+ * the License. You may obtain a copy of the License at
-+ * http://www.mozilla.org/MPL/
-+ *
-+ * Software distributed under the License is distributed on an "AS IS" basis,
-+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-+ * for the specific language governing rights and limitations under the
-+ * License.
-+ *
-+ * The Original Code is mozilla.org code.
-+ *
-+ * The Initial Developer of the Original Code is
-+ * The Mozilla Foundation.
-+ * Portions created by the Initial Developer are Copyright (C) 2012
-+ * the Initial Developer. All Rights Reserved.
-+ *
-+ * Contributor(s):
-+ *   Steven Michaud <smichaud at pobox.com>
-+ *
-+ * Alternatively, the contents of this file may be used under the terms of
-+ * either the GNU General Public License Version 2 or later (the "GPL"), or
-+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
-+ * in which case the provisions of the GPL or the LGPL are applicable instead
-+ * of those above. If you wish to allow use of your version of this file only
-+ * under the terms of either the GPL or the LGPL, and not to allow others to
-+ * use your version of this file under the terms of the MPL, indicate your
-+ * decision by deleting the provisions above and replace them with the notice
-+ * 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 "nsISupports.idl"
-+
-+[scriptable, uuid(FAD8C90B-8E1D-446A-9B6C-241486A85CBD)]
-+interface nsPIDragService : nsISupports
-+{
-+  void dragMoved(in long aX, in long aY);
-+
-+  uint16_t getInputSource();
-+
-+  void setDragEndPoint(in long aX, in long aY);
-+};
-diff --git a/widget/qt/nsDragService.h b/widget/qt/nsDragService.h
-index ee145ad..b03b74e 100644
---- a/widget/qt/nsDragService.h
-+++ b/widget/qt/nsDragService.h
-@@ -17,6 +17,8 @@ public:
-     NS_DECL_ISUPPORTS
-     NS_DECL_NSIDRAGSERVICE
- 
-+    NS_IMETHOD DragMoved(PRInt32 aX, PRInt32 aY);
-+
-     nsDragService();
- 
- private:
-diff --git a/widget/windows/Makefile.in b/widget/windows/Makefile.in
-index ec383bd..7000ec0 100644
---- a/widget/windows/Makefile.in
-+++ b/widget/windows/Makefile.in
-@@ -88,6 +88,10 @@ ifdef MOZ_ENABLE_D3D10_LAYER
- DEFINES		+= -DMOZ_ENABLE_D3D10_LAYER
- endif
- 
-+XPIDLSRCS	+= \
-+		nsPIDragServiceWindows.idl \
-+		$(NULL)
-+
- SHARED_LIBRARY_LIBS = \
-   ../xpwidgets/$(LIB_PREFIX)xpwidgets_s.$(LIB_SUFFIX) \
-   $(NULL)
-diff --git a/widget/windows/nsDragService.cpp b/widget/windows/nsDragService.cpp
-index 899154a..9511457 100644
---- a/widget/windows/nsDragService.cpp
-+++ b/widget/windows/nsDragService.cpp
-@@ -60,6 +60,8 @@ nsDragService::~nsDragService()
-   NS_IF_RELEASE(mDataObject);
- }
- 
-+NS_IMPL_ISUPPORTS_INHERITED1(nsDragService, nsBaseDragService, nsPIDragServiceWindows)
-+
- bool
- nsDragService::CreateDragImage(nsIDOMNode *aDOMNode,
-                                nsIScriptableRegion *aRegion,
-@@ -305,7 +307,7 @@ nsDragService::StartInvokingDragSession(IDataObject * aDataObj,
-   POINT cpos;
-   cpos.x = GET_X_LPARAM(pos);
-   cpos.y = GET_Y_LPARAM(pos);
--  SetDragEndPoint(nsIntPoint(cpos.x, cpos.y));
-+  SetDragEndPoint(cpos.x, cpos.y);
-   EndDragSession(true);
- 
-   mDoingDrag = false;
-@@ -426,25 +428,26 @@ nsDragService::GetData(nsITransferable * aTransferable, uint32_t anItem)
- 
- //---------------------------------------------------------
- NS_IMETHODIMP
--nsDragService::SetIDataObject(IDataObject * aDataObj)
-+nsDragService::SetIDataObject(nsISupports * aDataObj)
- {
-+  IDataObject *dataObj = (IDataObject*) aDataObj;
-   // When the native drag starts the DragService gets
-   // the IDataObject that is being dragged
-   NS_IF_RELEASE(mDataObject);
--  mDataObject = aDataObj;
-+  mDataObject = dataObj;
-   NS_IF_ADDREF(mDataObject);
- 
-   return NS_OK;
- }
- 
- //---------------------------------------------------------
--void
-+NS_IMETHODIMP
- nsDragService::SetDroppedLocal()
- {
-   // Sent from the native drag handler, letting us know
-   // a drop occurred within the application vs. outside of it.
-   mSentLocalDropEvent = true;
--  return;
-+  return NS_OK;
- }
- 
- //-------------------------------------------------------------------------
-diff --git a/widget/windows/nsDragService.h b/widget/windows/nsDragService.h
-index 236910a..e83167d 100644
---- a/widget/windows/nsDragService.h
-+++ b/widget/windows/nsDragService.h
-@@ -7,6 +7,7 @@
- #define nsDragService_h__
- 
- #include "nsBaseDragService.h"
-+#include "nsPIDragServiceWindows.h"
- #include <windows.h>
- #include <shlobj.h>
- 
-@@ -20,12 +21,15 @@ class  nsString;
-  * Native Win32 DragService wrapper
-  */
- 
--class nsDragService : public nsBaseDragService
-+class nsDragService : public nsBaseDragService, public nsPIDragServiceWindows
- {
- public:
-   nsDragService();
-   virtual ~nsDragService();
--  
-+
-+  NS_DECL_ISUPPORTS_INHERITED
-+  NS_DECL_NSPIDRAGSERVICEWINDOWS
-+
-   // nsIDragService
-   NS_IMETHOD InvokeDragSession(nsIDOMNode *aDOMNode,
-                                nsISupportsArray *anArrayTransferables,
-@@ -39,13 +43,9 @@ public:
-   NS_IMETHOD EndDragSession(bool aDoneDrag);
- 
-   // native impl.
--  NS_IMETHOD SetIDataObject(IDataObject * aDataObj);
-   NS_IMETHOD StartInvokingDragSession(IDataObject * aDataObj,
-                                       uint32_t aActionType);
- 
--  // A drop occurred within the application vs. outside of it.
--  void SetDroppedLocal();
--
- protected:
-   nsDataObjCollection* GetDataObjCollection(IDataObject * aDataObj);
- 
-diff --git a/widget/windows/nsNativeDragSource.cpp b/widget/windows/nsNativeDragSource.cpp
-index 3acee30..3662c18 100644
---- a/widget/windows/nsNativeDragSource.cpp
-+++ b/widget/windows/nsNativeDragSource.cpp
-@@ -10,7 +10,7 @@
- #include "nsIServiceManager.h"
- #include "nsToolkit.h"
- #include "nsWidgetsCID.h"
--#include "nsIDragService.h"
-+#include "nsDragService.h"
- 
- static NS_DEFINE_IID(kCDragServiceCID,  NS_DRAGSERVICE_CID);
- 
-@@ -69,9 +69,10 @@ STDMETHODIMP
- nsNativeDragSource::QueryContinueDrag(BOOL fEsc, DWORD grfKeyState)
- {
-   nsCOMPtr<nsIDragService> dragService = do_GetService(kCDragServiceCID);
--  if (dragService) {
-+  nsCOMPtr<nsPIDragService> dragServicePriv = do_QueryInterface(dragService);
-+  if (dragServicePriv) {
-     DWORD pos = ::GetMessagePos();
--    dragService->DragMoved(GET_X_LPARAM(pos), GET_Y_LPARAM(pos));
-+    dragServicePriv->DragMoved(GET_X_LPARAM(pos), GET_Y_LPARAM(pos));
-   }
- 
-   if (fEsc) {
-diff --git a/widget/windows/nsNativeDragTarget.cpp b/widget/windows/nsNativeDragTarget.cpp
-index ec12f8e..8b72f6d 100644
---- a/widget/windows/nsNativeDragTarget.cpp
-+++ b/widget/windows/nsNativeDragTarget.cpp
-@@ -174,7 +174,11 @@ nsNativeDragTarget::DispatchDragDropEvent(uint32_t aEventType, POINTL aPT)
-   ModifierKeyState modifierKeyState;
-   modifierKeyState.InitInputEvent(event);
- 
--  event.inputSource = static_cast<nsBaseDragService*>(mDragService)->GetInputSource();
-+  event.inputSource = 0;
-+  nsCOMPtr<nsPIDragService> dragServicePriv = do_QueryInterface(mDragService);
-+  if (dragServicePriv) {
-+    dragServicePriv->GetInputSource(&event.inputSource);
-+  }
- 
-   mWidget->DispatchEvent(&event, status);
- }
-@@ -261,9 +265,8 @@ nsNativeDragTarget::DragEnter(LPDATAOBJECT pIDataSource,
-   // This cast is ok because in the constructor we created a
-   // the actual implementation we wanted, so we know this is
-   // a nsDragService. It should be a private interface, though.
--  nsDragService * winDragService =
--    static_cast<nsDragService *>(mDragService);
--  winDragService->SetIDataObject(pIDataSource);
-+  nsCOMPtr<nsPIDragServiceWindows> winDragService = do_QueryInterface(mDragService);
-+  winDragService->SetIDataObject((nsISupports*)pIDataSource);
- 
-   // Now process the native drag state and then dispatch the event
-   ProcessDrag(NS_DRAGDROP_ENTER, grfKeyState, ptl, pdwEffect);
-@@ -401,8 +404,8 @@ nsNativeDragTarget::Drop(LPDATAOBJECT pData,
-   // This cast is ok because in the constructor we created a
-   // the actual implementation we wanted, so we know this is
-   // a nsDragService (but it should still be a private interface)
--  nsDragService* winDragService = static_cast<nsDragService*>(mDragService);
--  winDragService->SetIDataObject(pData);
-+  nsCOMPtr<nsPIDragServiceWindows> winDragService = do_QueryInterface(mDragService);
-+  winDragService->SetIDataObject((nsISupports*)pData);
- 
-   // NOTE: ProcessDrag spins the event loop which may destroy arbitrary objects.
-   // We use strong refs to prevent it from destroying these:
-@@ -426,11 +429,14 @@ nsNativeDragTarget::Drop(LPDATAOBJECT pData,
-   // tell the drag service we're done with the session
-   // Use GetMessagePos to get the position of the mouse at the last message
-   // seen by the event loop. (Bug 489729)
--  DWORD pos = ::GetMessagePos();
--  POINT cpos;
--  cpos.x = GET_X_LPARAM(pos);
--  cpos.y = GET_Y_LPARAM(pos);
--  winDragService->SetDragEndPoint(nsIntPoint(cpos.x, cpos.y));
-+  nsCOMPtr<nsPIDragService> dragServicePriv = do_QueryInterface(mDragService);
-+  if (dragServicePriv) {
-+    DWORD pos = ::GetMessagePos();
-+    POINT cpos;
-+    cpos.x = GET_X_LPARAM(pos);
-+    cpos.y = GET_Y_LPARAM(pos);
-+    dragServicePriv->SetDragEndPoint(cpos.x, cpos.y);
-+  }
-   serv->EndDragSession(true);
- 
-   // release the ref that was taken in DragEnter
-diff --git a/widget/windows/nsPIDragServiceWindows.idl b/widget/windows/nsPIDragServiceWindows.idl
-new file mode 100644
-index 0000000..c8a46dd
---- /dev/null
-+++ b/widget/windows/nsPIDragServiceWindows.idl
-@@ -0,0 +1,46 @@
-+/* ***** BEGIN LICENSE BLOCK *****
-+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
-+ *
-+ * The contents of this file are subject to the Mozilla Public License Version
-+ * 1.1 (the "License"); you may not use this file except in compliance with
-+ * the License. You may obtain a copy of the License at
-+ * http://www.mozilla.org/MPL/
-+ *
-+ * Software distributed under the License is distributed on an "AS IS" basis,
-+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-+ * for the specific language governing rights and limitations under the
-+ * License.
-+ *
-+ * The Original Code is mozilla.org code.
-+ *
-+ * The Initial Developer of the Original Code is
-+ * The Mozilla Foundation.
-+ * Portions created by the Initial Developer are Copyright (C) 2012
-+ * the Initial Developer. All Rights Reserved.
-+ *
-+ * Contributor(s):
-+ *   Steven Michaud <smichaud at pobox.com>
-+ *
-+ * Alternatively, the contents of this file may be used under the terms of
-+ * either the GNU General Public License Version 2 or later (the "GPL"), or
-+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
-+ * in which case the provisions of the GPL or the LGPL are applicable instead
-+ * of those above. If you wish to allow use of your version of this file only
-+ * under the terms of either the GPL or the LGPL, and not to allow others to
-+ * use your version of this file under the terms of the MPL, indicate your
-+ * decision by deleting the provisions above and replace them with the notice
-+ * 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 "nsISupports.idl"
-+
-+[scriptable, uuid(6FC2117D-5EB4-441A-9C12-62A783BEBC0C)]
-+interface nsPIDragServiceWindows : nsISupports
-+{
-+  void setIDataObject(in nsISupports aDataObj);
-+
-+  void setDroppedLocal();
-+};
-diff --git a/widget/xpwidgets/nsBaseDragService.cpp b/widget/xpwidgets/nsBaseDragService.cpp
-index 805d83f..9b69793 100644
---- a/widget/xpwidgets/nsBaseDragService.cpp
-+++ b/widget/xpwidgets/nsBaseDragService.cpp
-@@ -55,7 +55,7 @@ nsBaseDragService::~nsBaseDragService()
- {
- }
- 
--NS_IMPL_ISUPPORTS2(nsBaseDragService, nsIDragService, nsIDragSession)
-+NS_IMPL_ISUPPORTS3(nsBaseDragService, nsIDragService, nsPIDragService, nsIDragSession)
- 
- //---------------------------------------------------------
- NS_IMETHODIMP
-@@ -403,6 +403,20 @@ nsBaseDragService::DragMoved(int32_t aX, int32_t aY)
-   return NS_OK;
- }
- 
-+NS_IMETHODIMP
-+nsBaseDragService::SetDragEndPoint(PRInt32 aX, PRInt32 aY)
-+{
-+  mEndDragPoint = nsIntPoint(aX, aY);
-+  return NS_OK;
-+}
-+
-+NS_IMETHODIMP
-+nsBaseDragService::GetInputSource(PRUint16* aInputSource)
-+{
-+  *aInputSource = mInputSource;
-+  return NS_OK;
-+}
-+
- static nsIPresShell*
- GetPresShellForContent(nsIDOMNode* aDOMNode)
- {
-diff --git a/widget/xpwidgets/nsBaseDragService.h b/widget/xpwidgets/nsBaseDragService.h
-index cb00f8e..741c287 100644
---- a/widget/xpwidgets/nsBaseDragService.h
-+++ b/widget/xpwidgets/nsBaseDragService.h
-@@ -7,6 +7,7 @@
- #define nsBaseDragService_h__
- 
- #include "nsIDragService.h"
-+#include "nsPIDragService.h"
- #include "nsIDragSession.h"
- #include "nsITransferable.h"
- #include "nsISupportsArray.h"
-@@ -32,6 +33,7 @@ class nsICanvasElementExternal;
-  */
- 
- class nsBaseDragService : public nsIDragService,
-+                          public nsPIDragService,
-                           public nsIDragSession
- {
- 
-@@ -42,14 +44,11 @@ public:
-   //nsISupports
-   NS_DECL_ISUPPORTS
- 
--  //nsIDragSession and nsIDragService
-+  //nsIDragSession, nsIDragService and nsPIDragService
-   NS_DECL_NSIDRAGSERVICE
-+  NS_DECL_NSPIDRAGSERVICE
-   NS_DECL_NSIDRAGSESSION
- 
--  void SetDragEndPoint(nsIntPoint aEndDragPoint) { mEndDragPoint = aEndDragPoint; }
--
--  uint16_t GetInputSource() { return mInputSource; }
--
- protected:
- 
-   /**
--- 
-1.7.5.4
-
diff --git a/src/current-patches/firefox/0018-Emit-observer-event-to-filter-the-Drag-Drop-url-list.patch b/src/current-patches/firefox/0018-Emit-observer-event-to-filter-the-Drag-Drop-url-list.patch
new file mode 100644
index 0000000..299d9c4
--- /dev/null
+++ b/src/current-patches/firefox/0018-Emit-observer-event-to-filter-the-Drag-Drop-url-list.patch
@@ -0,0 +1,74 @@
+From c8c34d3df6d8a6cefdc9acee0520a7b0176aef6d Mon Sep 17 00:00:00 2001
+From: Mike Perry <mikeperry-git at torproject.org>
+Date: Thu, 28 Feb 2013 18:10:16 -0800
+Subject: [PATCH 18/27] Emit observer event to filter the Drag+Drop url list
+
+This patch creates an "on-modify-drag-list" observer that addons can listen
+to. For us, it supports Torbutton code that filters out Drag+Drop mime types
+that the OS Desktop sniffs and attempts to load without Tor.
+
+Such proxy bypass behavior is immediate on Mac and Ubuntu: you don't even have
+to release the object for it to get sniffed and cause the OS to load it
+without Tor. In fact, accidentally clicking for too long on an image is enough
+to cause proxy bypass on those systems.
+---
+ widget/xpwidgets/nsBaseDragService.cpp |    8 ++++++++
+ widget/xpwidgets/nsBaseDragService.h   |    2 ++
+ 2 files changed, 10 insertions(+), 0 deletions(-)
+
+diff --git a/widget/xpwidgets/nsBaseDragService.cpp b/widget/xpwidgets/nsBaseDragService.cpp
+index 805d83f..4c99b9c 100644
+--- a/widget/xpwidgets/nsBaseDragService.cpp
++++ b/widget/xpwidgets/nsBaseDragService.cpp
+@@ -34,6 +34,7 @@
+ #include "nsXULPopupManager.h"
+ #include "nsMenuPopupFrame.h"
+ #include "mozilla/Preferences.h"
++#include "mozilla/Services.h"
+ 
+ #include "gfxContext.h"
+ #include "gfxPlatform.h"
+@@ -49,6 +50,7 @@ nsBaseDragService::nsBaseDragService()
+     mImageX(0), mImageY(0), mScreenX(-1), mScreenY(-1), mSuppressLevel(0),
+     mInputSource(nsIDOMMouseEvent::MOZ_SOURCE_MOUSE)
+ {
++    mObserverService = mozilla::services::GetObserverService();
+ }
+ 
+ nsBaseDragService::~nsBaseDragService()
+@@ -203,6 +205,12 @@ nsBaseDragService::InvokeDragSession(nsIDOMNode *aDOMNode,
+   NS_ENSURE_TRUE(aDOMNode, NS_ERROR_INVALID_ARG);
+   NS_ENSURE_TRUE(mSuppressLevel == 0, NS_ERROR_FAILURE);
+ 
++  // Emit observer event to allow addons to modify the transfer array.
++  if (mObserverService)
++    mObserverService->NotifyObservers(aTransferableArray,
++                                      "on-modify-drag-list",
++                                      nullptr);
++
+   // stash the document of the dom node
+   aDOMNode->GetOwnerDocument(getter_AddRefs(mSourceDocument));
+   mSourceNode = aDOMNode;
+diff --git a/widget/xpwidgets/nsBaseDragService.h b/widget/xpwidgets/nsBaseDragService.h
+index cb00f8e..8b91899 100644
+--- a/widget/xpwidgets/nsBaseDragService.h
++++ b/widget/xpwidgets/nsBaseDragService.h
+@@ -6,6 +6,7 @@
+ #ifndef nsBaseDragService_h__
+ #define nsBaseDragService_h__
+ 
++#include "nsIObserverService.h"
+ #include "nsIDragService.h"
+ #include "nsIDragSession.h"
+ #include "nsITransferable.h"
+@@ -113,6 +114,7 @@ protected:
+ 
+   uint32_t mDragAction;
+   nsSize mTargetSize;
++  nsCOMPtr<nsIObserverService> mObserverService;
+   nsCOMPtr<nsIDOMNode> mSourceNode;
+   nsCOMPtr<nsIDOMDocument> mSourceDocument;       // the document at the drag source. will be null
+                                                   //  if it came from outside the app.
+-- 
+1.7.5.4
+
diff --git a/src/current-patches/firefox/0019-Add-mozIThirdPartyUtil.getFirstPartyURI-API.patch b/src/current-patches/firefox/0019-Add-mozIThirdPartyUtil.getFirstPartyURI-API.patch
index f23117e..bf34575 100644
--- a/src/current-patches/firefox/0019-Add-mozIThirdPartyUtil.getFirstPartyURI-API.patch
+++ b/src/current-patches/firefox/0019-Add-mozIThirdPartyUtil.getFirstPartyURI-API.patch
@@ -1,7 +1,7 @@
-From 81c1a8a664d433686367e44ebd49320be337a2f3 Mon Sep 17 00:00:00 2001
+From 5ae9b5b0f8254c9335d770c36e7dad617054ae2e Mon Sep 17 00:00:00 2001
 From: Mike Perry <mikeperry-git at torproject.org>
 Date: Wed, 28 Nov 2012 17:08:29 -0500
-Subject: [PATCH 19/26] Add mozIThirdPartyUtil.getFirstPartyURI API
+Subject: [PATCH 19/27] Add mozIThirdPartyUtil.getFirstPartyURI API
 
 API allows you to get the url bar URI for a channel or nsIDocument.
 ---
diff --git a/src/current-patches/firefox/0020-Add-canvas-image-extraction-prompt.patch b/src/current-patches/firefox/0020-Add-canvas-image-extraction-prompt.patch
index 5b0979f..9dae773 100644
--- a/src/current-patches/firefox/0020-Add-canvas-image-extraction-prompt.patch
+++ b/src/current-patches/firefox/0020-Add-canvas-image-extraction-prompt.patch
@@ -1,7 +1,7 @@
-From e62f1676c6b9ddaf6a3fa29075378263fbd9067d Mon Sep 17 00:00:00 2001
+From e94cff1b650ca95ae937b2eaac0ef6ec95dec6cd Mon Sep 17 00:00:00 2001
 From: Kathleen Brade <brade at pearlcrescent.com>
 Date: Tue, 27 Nov 2012 13:13:40 -0500
-Subject: [PATCH 20/26] Add canvas image extraction prompt.
+Subject: [PATCH 20/27] Add canvas image extraction prompt.
 
 ---
  browser/base/content/browser.js                    |  102 ++++++++++++++++++++
@@ -20,10 +20,10 @@ Subject: [PATCH 20/26] Add canvas image extraction prompt.
  13 files changed, 249 insertions(+), 10 deletions(-)
 
 diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
-index 9f77fd0..5316da6 100644
+index bd2feed..50054e7 100644
 --- a/browser/base/content/browser.js
 +++ b/browser/base/content/browser.js
-@@ -1279,6 +1279,7 @@ var gBrowserInit = {
+@@ -1280,6 +1280,7 @@ var gBrowserInit = {
      BrowserOffline.init();
      OfflineApps.init();
      IndexedDBPromptHelper.init();
@@ -31,7 +31,7 @@ index 9f77fd0..5316da6 100644
      gFormSubmitObserver.init();
      SocialUI.init();
      AddonManager.addAddonListener(AddonsMgrListener);
-@@ -1636,6 +1637,7 @@ var gBrowserInit = {
+@@ -1637,6 +1638,7 @@ var gBrowserInit = {
        BrowserOffline.uninit();
        OfflineApps.uninit();
        IndexedDBPromptHelper.uninit();
@@ -39,7 +39,7 @@ index 9f77fd0..5316da6 100644
        AddonManager.removeAddonListener(AddonsMgrListener);
        SocialUI.uninit();
      }
-@@ -6126,6 +6128,106 @@ var IndexedDBPromptHelper = {
+@@ -6127,6 +6129,106 @@ var IndexedDBPromptHelper = {
    }
  };
  
@@ -177,7 +177,7 @@ index 1a9f457..4e61cb9 100644
  # %2$S a number of megabytes.
  indexedDB.usage=This website (%1$S) is attempting to store more than %2$S MB of data on your computer for offline use.
 diff --git a/browser/themes/gnomestripe/browser.css b/browser/themes/gnomestripe/browser.css
-index f62d5a8..77df3a8 100644
+index a90d500..fd5d042 100644
 --- a/browser/themes/gnomestripe/browser.css
 +++ b/browser/themes/gnomestripe/browser.css
 @@ -1185,6 +1185,7 @@ toolbar[iconsize="small"] #feed-button {
@@ -197,10 +197,10 @@ index f62d5a8..77df3a8 100644
    list-style-image: url(chrome://global/skin/icons/question-16.png);
  }
 diff --git a/browser/themes/pinstripe/browser.css b/browser/themes/pinstripe/browser.css
-index 510af73..1f11603 100644
+index cb98808..69b908f 100644
 --- a/browser/themes/pinstripe/browser.css
 +++ b/browser/themes/pinstripe/browser.css
-@@ -2426,10 +2426,12 @@ toolbarbutton.chevron > .toolbarbutton-menu-dropmarker {
+@@ -2433,10 +2433,12 @@ toolbarbutton.chevron > .toolbarbutton-menu-dropmarker {
    -moz-image-region: rect(0px, 48px, 16px, 32px);
  }
  
@@ -214,7 +214,7 @@ index 510af73..1f11603 100644
  .popup-notification-icon[popupid="indexedDB-quota-prompt"] {
    list-style-image: url(chrome://global/skin/icons/question-64.png);
 diff --git a/browser/themes/winstripe/browser.css b/browser/themes/winstripe/browser.css
-index 30fb26c..360d80a 100644
+index d02eed6..70aab91 100644
 --- a/browser/themes/winstripe/browser.css
 +++ b/browser/themes/winstripe/browser.css
 @@ -2319,6 +2319,7 @@ toolbarbutton.bookmark-item[dragover="true"][open="true"] {
diff --git a/src/current-patches/firefox/0021-Return-client-window-coordinates-for-mouse-event-scr.patch b/src/current-patches/firefox/0021-Return-client-window-coordinates-for-mouse-event-scr.patch
index d1bbfcd..e978f2e 100644
--- a/src/current-patches/firefox/0021-Return-client-window-coordinates-for-mouse-event-scr.patch
+++ b/src/current-patches/firefox/0021-Return-client-window-coordinates-for-mouse-event-scr.patch
@@ -1,7 +1,7 @@
-From 56a087769b2a258659bae4f626b37755c0961d6d Mon Sep 17 00:00:00 2001
+From a895a19ed20e59425397ec63b5797bb61d038ed1 Mon Sep 17 00:00:00 2001
 From: Kathleen Brade <brade at pearlcrescent.com>
 Date: Wed, 28 Nov 2012 10:49:09 -0500
-Subject: [PATCH 21/26] Return client window coordinates for mouse event
+Subject: [PATCH 21/27] Return client window coordinates for mouse event
  screenX/Y (for dragend, 0,0 is returned).
 
 ---
diff --git a/src/current-patches/firefox/0022-Do-not-expose-physical-screen-info.-via-window-and-w.patch b/src/current-patches/firefox/0022-Do-not-expose-physical-screen-info.-via-window-and-w.patch
index d8ea69d..6330a28 100644
--- a/src/current-patches/firefox/0022-Do-not-expose-physical-screen-info.-via-window-and-w.patch
+++ b/src/current-patches/firefox/0022-Do-not-expose-physical-screen-info.-via-window-and-w.patch
@@ -1,7 +1,7 @@
-From 0149732cf5201db298f4b13be4cd73ae6094f011 Mon Sep 17 00:00:00 2001
+From af28611d01df9d584f69b8ae48fa17a5a9d30ce5 Mon Sep 17 00:00:00 2001
 From: Kathleen Brade <brade at pearlcrescent.com>
 Date: Wed, 28 Nov 2012 11:25:14 -0500
-Subject: [PATCH 22/26] Do not expose physical screen info. via window and
+Subject: [PATCH 22/27] Do not expose physical screen info. via window and
  window.screen.
 
 ---
@@ -12,7 +12,7 @@ Subject: [PATCH 22/26] Do not expose physical screen info. via window and
  4 files changed, 141 insertions(+), 0 deletions(-)
 
 diff --git a/dom/base/nsGlobalWindow.cpp b/dom/base/nsGlobalWindow.cpp
-index c06b715..b480ee5 100644
+index f675f87..48bd71d 100644
 --- a/dom/base/nsGlobalWindow.cpp
 +++ b/dom/base/nsGlobalWindow.cpp
 @@ -3745,6 +3745,10 @@ nsGlobalWindow::GetOuterWidth(int32_t* aOuterWidth)
diff --git a/src/current-patches/firefox/0023-Do-not-expose-system-colors-to-CSS-or-canvas.patch b/src/current-patches/firefox/0023-Do-not-expose-system-colors-to-CSS-or-canvas.patch
index a06ad44..fb6bb18 100644
--- a/src/current-patches/firefox/0023-Do-not-expose-system-colors-to-CSS-or-canvas.patch
+++ b/src/current-patches/firefox/0023-Do-not-expose-system-colors-to-CSS-or-canvas.patch
@@ -1,7 +1,7 @@
-From 39a2141abd8fd7c2723c4276a3501cb9cb120550 Mon Sep 17 00:00:00 2001
+From cf6f3b4441ff3ad850a04f461b875c2b99b3ec54 Mon Sep 17 00:00:00 2001
 From: Kathleen Brade <brade at pearlcrescent.com>
 Date: Wed, 28 Nov 2012 15:08:40 -0500
-Subject: [PATCH 23/26] Do not expose system colors to CSS or canvas.
+Subject: [PATCH 23/27] Do not expose system colors to CSS or canvas.
 
 ---
  content/canvas/src/nsCanvasRenderingContext2D.cpp  |   28 +++-
@@ -191,10 +191,10 @@ index 05ccf61..629d78a 100644
    virtual ~nsCanvasGradientAzure() {}
  };
 diff --git a/layout/style/nsRuleNode.cpp b/layout/style/nsRuleNode.cpp
-index 33ce21e..078af3e 100644
+index 86eff1f..732b1fe 100644
 --- a/layout/style/nsRuleNode.cpp
 +++ b/layout/style/nsRuleNode.cpp
-@@ -746,7 +746,10 @@ static bool SetColor(const nsCSSValue& aValue, const nscolor aParentColor,
+@@ -747,7 +747,10 @@ static bool SetColor(const nsCSSValue& aValue, const nscolor aParentColor,
      int32_t intValue = aValue.GetIntValue();
      if (0 <= intValue) {
        LookAndFeel::ColorID colorID = (LookAndFeel::ColorID) intValue;
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 3fb55cf..f603315 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,7 +1,7 @@
-From 3454d300fca2eea0e652f8982ec996575886dd1a Mon Sep 17 00:00:00 2001
+From b168d43626d13fe64b33f194778af21114c3549d 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.
+Subject: [PATCH 24/27] Isolate the Image Cache per url bar domain.
 
 The image cache maintains its own table outside of the main cache, and does
 not obey cacheKeys by default.
diff --git a/src/current-patches/firefox/0025-nsIHTTPChannel.redirectTo-API.patch b/src/current-patches/firefox/0025-nsIHTTPChannel.redirectTo-API.patch
index 725e159..f5e42ac 100644
--- a/src/current-patches/firefox/0025-nsIHTTPChannel.redirectTo-API.patch
+++ b/src/current-patches/firefox/0025-nsIHTTPChannel.redirectTo-API.patch
@@ -1,7 +1,7 @@
-From b3e34b6997e2aa709177210b6a1517bb4262843a Mon Sep 17 00:00:00 2001
+From f24d1c4d3b2d434313b0c7a7c6f0f145794a8797 Mon Sep 17 00:00:00 2001
 From: Mike Perry <mikeperry-git at torproject.org>
 Date: Mon, 14 Jan 2013 19:36:14 -0800
-Subject: [PATCH 25/26] nsIHTTPChannel.redirectTo API.
+Subject: [PATCH 25/27] nsIHTTPChannel.redirectTo API.
 
 Provides an API for HTTPS-Everywhere to perform redirects to https
 in a more secure and reliable way.
@@ -266,10 +266,10 @@ index c13c969..e16afd6 100644
    // For document loads we keep this protocol open after child's
    // OnStopRequest, and send this msg (instead of __delete__) to allow
 diff --git a/netwerk/protocol/http/nsHttpChannel.cpp b/netwerk/protocol/http/nsHttpChannel.cpp
-index dc49b81..ca55d02 100644
+index 6242ddc..bcfa0c9 100644
 --- a/netwerk/protocol/http/nsHttpChannel.cpp
 +++ b/netwerk/protocol/http/nsHttpChannel.cpp
-@@ -1580,18 +1580,17 @@ nsHttpChannel::HandleAsyncRedirectChannelToHttps()
+@@ -1584,18 +1584,17 @@ nsHttpChannel::HandleAsyncRedirectChannelToHttps()
          return;
      }
  
@@ -291,7 +291,7 @@ index dc49b81..ca55d02 100644
      nsCOMPtr<nsIURI> upgradedURI;
  
      rv = mURI->Clone(getter_AddRefs(upgradedURI));
-@@ -1613,6 +1612,36 @@ nsHttpChannel::AsyncRedirectChannelToHttps()
+@@ -1617,6 +1616,36 @@ nsHttpChannel::AsyncRedirectChannelToHttps()
      else
          upgradedURI->SetPort(oldPort);
  
@@ -328,7 +328,7 @@ index dc49b81..ca55d02 100644
      nsCOMPtr<nsIIOService> ioService;
      rv = gHttpHandler->GetIOService(getter_AddRefs(ioService));
      NS_ENSURE_SUCCESS(rv, rv);
-@@ -1628,7 +1657,7 @@ nsHttpChannel::AsyncRedirectChannelToHttps()
+@@ -1632,7 +1661,7 @@ nsHttpChannel::AsyncRedirectChannelToHttps()
      uint32_t flags = nsIChannelEventSink::REDIRECT_PERMANENT;
  
      PushRedirectAsyncFunc(
@@ -337,7 +337,7 @@ index dc49b81..ca55d02 100644
      rv = gHttpHandler->AsyncOnChannelRedirect(this, newChannel, flags);
  
      if (NS_SUCCEEDED(rv))
-@@ -1636,15 +1665,19 @@ nsHttpChannel::AsyncRedirectChannelToHttps()
+@@ -1640,15 +1669,19 @@ nsHttpChannel::AsyncRedirectChannelToHttps()
  
      if (NS_FAILED(rv)) {
          AutoRedirectVetoNotifier notifier(this);
@@ -359,7 +359,7 @@ index dc49b81..ca55d02 100644
  {
      AutoRedirectVetoNotifier notifier(this);
  
-@@ -4374,7 +4407,7 @@ nsHttpChannel::AsyncOpen(nsIStreamListener *listener, nsISupports *context)
+@@ -4399,7 +4432,7 @@ nsHttpChannel::AsyncOpen(nsIStreamListener *listener, nsISupports *context)
      mAuthProvider->AddAuthorizationHeaders();
  
      // notify "http-on-modify-request" observers
@@ -368,7 +368,7 @@ index dc49b81..ca55d02 100644
  
      // Adjust mCaps according to our request headers:
      //  - If "Connection: close" is set as a request header, then do not bother
-@@ -4406,6 +4439,12 @@ nsHttpChannel::AsyncOpen(nsIStreamListener *listener, nsISupports *context)
+@@ -4431,6 +4464,12 @@ nsHttpChannel::AsyncOpen(nsIStreamListener *listener, nsISupports *context)
      if (mLoadGroup)
          mLoadGroup->AddRequest(this, nullptr);
  
@@ -381,7 +381,7 @@ index dc49b81..ca55d02 100644
      // Collect mAsyncOpenTime after we have called all obsrevers like
      // "http-on-modify-request" and load group observers that may set
      // mTimingEnabled flag.
-@@ -5536,7 +5575,7 @@ nsHttpChannel::DoAuthRetry(nsAHttpConnection *conn)
+@@ -5561,7 +5600,7 @@ nsHttpChannel::DoAuthRetry(nsAHttpConnection *conn)
      AddCookiesToRequest();
      
      // notify "http-on-modify-request" observers
@@ -391,7 +391,7 @@ index dc49b81..ca55d02 100644
      mIsPending = true;
  
 diff --git a/netwerk/protocol/http/nsHttpChannel.h b/netwerk/protocol/http/nsHttpChannel.h
-index 5b4ddb9..1c0c6b7 100644
+index b1f0848..a05e70d 100644
 --- a/netwerk/protocol/http/nsHttpChannel.h
 +++ b/netwerk/protocol/http/nsHttpChannel.h
 @@ -174,12 +174,14 @@ private:
diff --git a/src/current-patches/firefox/0026-Isolate-DOM-storage-to-first-party-URI.patch b/src/current-patches/firefox/0026-Isolate-DOM-storage-to-first-party-URI.patch
index f431693..c2edf99 100644
--- a/src/current-patches/firefox/0026-Isolate-DOM-storage-to-first-party-URI.patch
+++ b/src/current-patches/firefox/0026-Isolate-DOM-storage-to-first-party-URI.patch
@@ -1,7 +1,7 @@
-From 580d7d145ac93a42b6f0b1cfad8a1965a02c5050 Mon Sep 17 00:00:00 2001
+From 1c49a4f4a5312050b03ba8e9d37a073cca049278 Mon Sep 17 00:00:00 2001
 From: Kathleen Brade <brade at pearlcrescent.com>
-Date: Tue, 15 Jan 2013 14:18:43 -0800
-Subject: [PATCH 26/26] Isolate DOM storage to first party URI
+Date: Thu, 28 Feb 2013 18:02:34 -0800
+Subject: [PATCH 26/27] Isolate DOM storage to first party URI
 
 Also prevents DOM storage from writing to disk (hardcoded).
 ---
@@ -23,7 +23,7 @@ Also prevents DOM storage from writing to disk (hardcoded).
  15 files changed, 255 insertions(+), 50 deletions(-)
 
 diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp
-index 7a141d9..84a0043 100644
+index 0d56d9e..0726c07 100644
 --- a/docshell/base/nsDocShell.cpp
 +++ b/docshell/base/nsDocShell.cpp
 @@ -184,6 +184,7 @@
@@ -132,9 +132,9 @@ index 7a141d9..84a0043 100644
  NS_IMETHODIMP
  nsDocShell::CloneSessionStoragesTo(nsIDocShell* aDocShell)
  {
-@@ -12389,3 +12421,39 @@ nsDocShell::GetAsyncPanZoomEnabled(bool* aOut)
-     *aOut = false;
-     return NS_OK;
+@@ -12411,3 +12443,39 @@ nsDocShell::HasUnloadedParent()
+     }
+     return false;
  }
 +
 +nsresult
@@ -173,19 +173,19 @@ index 7a141d9..84a0043 100644
 +}
 +
 diff --git a/docshell/base/nsDocShell.h b/docshell/base/nsDocShell.h
-index 225a636..aeb00c9 100644
+index 427630a..4bcd341 100644
 --- a/docshell/base/nsDocShell.h
 +++ b/docshell/base/nsDocShell.h
-@@ -679,7 +679,7 @@ protected:
-     FrameType GetInheritedFrameType();
-     FrameType GetFrameType();
+@@ -681,7 +681,7 @@ protected:
+ 
+     bool HasUnloadedParent();
  
 -    // hash of session storages, keyed by domain
 +    // hash of session storages, keyed by domain&firstPartyHost
      nsInterfaceHashtable<nsCStringHashKey, nsIDOMStorage> mStorages;
  
      // Dimensions of the docshell
-@@ -846,6 +846,10 @@ private:
+@@ -848,6 +848,10 @@ private:
      static unsigned long gNumberOfDocShells;
  #endif /* DEBUG */
  
@@ -255,7 +255,7 @@ index 986f4b4..4f26a04 100644
     * Clones all session storage objects and attaches them to the given docshell.
     * Useful when duplicating tabs and their states.
 diff --git a/dom/base/nsGlobalWindow.cpp b/dom/base/nsGlobalWindow.cpp
-index b480ee5..0cc147a 100644
+index 48bd71d..1e16c03 100644
 --- a/dom/base/nsGlobalWindow.cpp
 +++ b/dom/base/nsGlobalWindow.cpp
 @@ -8385,7 +8385,18 @@ nsGlobalWindow::GetLocalStorage(nsIDOMStorage ** aLocalStorage)
diff --git a/src/current-patches/firefox/0027-Remove-link-to-plugin-manager-for-disabled-plugins.patch b/src/current-patches/firefox/0027-Remove-link-to-plugin-manager-for-disabled-plugins.patch
new file mode 100644
index 0000000..a9f97ea
--- /dev/null
+++ b/src/current-patches/firefox/0027-Remove-link-to-plugin-manager-for-disabled-plugins.patch
@@ -0,0 +1,26 @@
+From 3725f3f825af99091586aba65b3a14a412d460c5 Mon Sep 17 00:00:00 2001
+From: Mike Perry <mikeperry-git at torproject.org>
+Date: Thu, 28 Feb 2013 17:41:57 -0800
+Subject: [PATCH 27/27] Remove link to plugin manager for disabled plugins.
+
+We do not want to encourage our users to enable plugins at this point.
+---
+ toolkit/mozapps/plugins/content/pluginProblem.xml |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/toolkit/mozapps/plugins/content/pluginProblem.xml b/toolkit/mozapps/plugins/content/pluginProblem.xml
+index f61cb48..ed83569 100644
+--- a/toolkit/mozapps/plugins/content/pluginProblem.xml
++++ b/toolkit/mozapps/plugins/content/pluginProblem.xml
+@@ -38,7 +38,7 @@
+             <html:div class="installStatus">
+                 <html:div class="msg msgInstallPlugin"><html:a class="installPluginLink" href="">&installPlugin;</html:a></html:div>
+             </html:div>
+-            <html:div class="msg msgManagePlugins"><html:a class="managePluginsLink" href="">&managePlugins;</html:a></html:div>
++            <html:div class="msg msgManagePlugins"><html:a class="managePluginsLink" href=""></html:a></html:div>
+             <html:div class="submitStatus">
+                 <!-- links set at runtime -->
+                 <html:div class="msg msgPleaseSubmit"><html:a class="pleaseSubmitLink" href="">&report.please;</html:a></html:div>
+-- 
+1.7.5.4
+



More information about the tor-commits mailing list