Sat, 03 Jan 2015 20:18:00 +0100
Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.
michael@0 | 1 | /* Any copyright is dedicated to the Public Domain. |
michael@0 | 2 | http://creativecommons.org/publicdomain/zero/1.0/ */ |
michael@0 | 3 | |
michael@0 | 4 | const { classes: Cc, interfaces: Ci, results: Cr, utils: Cu } = Components; |
michael@0 | 5 | const { Services } = Cu.import('resource://gre/modules/Services.jsm'); |
michael@0 | 6 | const { SystemAppProxy } = Cu.import('resource://gre/modules/SystemAppProxy.jsm'); |
michael@0 | 7 | |
michael@0 | 8 | var processId; |
michael@0 | 9 | |
michael@0 | 10 | function peekChildId(aSubject, aTopic, aData) { |
michael@0 | 11 | Services.obs.removeObserver(peekChildId, 'recording-device-events'); |
michael@0 | 12 | Services.obs.removeObserver(peekChildId, 'recording-device-ipc-events'); |
michael@0 | 13 | let props = aSubject.QueryInterface(Ci.nsIPropertyBag2); |
michael@0 | 14 | if (props.hasKey('childID')) { |
michael@0 | 15 | processId = props.get('childID'); |
michael@0 | 16 | } |
michael@0 | 17 | } |
michael@0 | 18 | |
michael@0 | 19 | addMessageListener('init-chrome-event', function(message) { |
michael@0 | 20 | // listen mozChromeEvent and forward to content process. |
michael@0 | 21 | let type = message.type; |
michael@0 | 22 | SystemAppProxy.addEventListener('mozChromeEvent', function(event) { |
michael@0 | 23 | let details = event.detail; |
michael@0 | 24 | if (details.type === type) { |
michael@0 | 25 | sendAsyncMessage('chrome-event', details); |
michael@0 | 26 | } |
michael@0 | 27 | }, true); |
michael@0 | 28 | |
michael@0 | 29 | Services.obs.addObserver(peekChildId, 'recording-device-events', false); |
michael@0 | 30 | Services.obs.addObserver(peekChildId, 'recording-device-ipc-events', false); |
michael@0 | 31 | }); |
michael@0 | 32 | |
michael@0 | 33 | addMessageListener('fake-content-shutdown', function(message) { |
michael@0 | 34 | let props = Cc["@mozilla.org/hash-property-bag;1"] |
michael@0 | 35 | .createInstance(Ci.nsIWritablePropertyBag2); |
michael@0 | 36 | if (processId) { |
michael@0 | 37 | props.setPropertyAsUint64('childID', processId); |
michael@0 | 38 | } |
michael@0 | 39 | Services.obs.notifyObservers(props, 'recording-device-ipc-events', 'content-shutdown'); |
michael@0 | 40 | }); |