commit 2a543b9359029938dfa98f8e285fb5528104d527 Author: Mike Perry mikeperry-git@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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 +