Bug 1015115 - switch to cloneInto in pdf.js, r?yury
This commit is contained in:
parent
c321f51e54
commit
da93e65d8c
@ -160,6 +160,18 @@ function getLocalizedString(strings, id, property) {
|
|||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function makeContentReadable(obj, window) {
|
||||||
|
if (Cu.cloneInto) {
|
||||||
|
return Cu.cloneInto(obj, window);
|
||||||
|
}
|
||||||
|
var expose = {};
|
||||||
|
for (let k in obj) {
|
||||||
|
expose[k] = "r";
|
||||||
|
}
|
||||||
|
obj.__exposedProps__ = expose;
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
// PDF data storage
|
// PDF data storage
|
||||||
function PdfDataListener(length) {
|
function PdfDataListener(length) {
|
||||||
this.length = length; // less than 0, if length is unknown
|
this.length = length; // less than 0, if length is unknown
|
||||||
@ -704,9 +716,7 @@ RequestListener.prototype.receive = function(event) {
|
|||||||
}
|
}
|
||||||
if (sync) {
|
if (sync) {
|
||||||
var response = actions[action].call(this.actions, data);
|
var response = actions[action].call(this.actions, data);
|
||||||
var detail = event.detail;
|
event.detail.response = response;
|
||||||
detail.__exposedProps__ = {response: 'r'};
|
|
||||||
detail.response = response;
|
|
||||||
} else {
|
} else {
|
||||||
var response;
|
var response;
|
||||||
if (!event.detail.callback) {
|
if (!event.detail.callback) {
|
||||||
@ -716,9 +726,8 @@ RequestListener.prototype.receive = function(event) {
|
|||||||
response = function sendResponse(response) {
|
response = function sendResponse(response) {
|
||||||
try {
|
try {
|
||||||
var listener = doc.createEvent('CustomEvent');
|
var listener = doc.createEvent('CustomEvent');
|
||||||
listener.initCustomEvent('pdf.js.response', true, false,
|
let detail = makeContentReadable({response: response}, doc.defaultView);
|
||||||
{response: response,
|
listener.initCustomEvent('pdf.js.response', true, false, detail);
|
||||||
__exposedProps__: {response: 'r'}});
|
|
||||||
return message.dispatchEvent(listener);
|
return message.dispatchEvent(listener);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// doc is no longer accessible because the requestor is already
|
// doc is no longer accessible because the requestor is already
|
||||||
@ -761,13 +770,13 @@ FindEventManager.prototype.handleEvent = function(e) {
|
|||||||
var contentWindow = this.contentWindow;
|
var contentWindow = this.contentWindow;
|
||||||
// Only forward the events if they are for our dom window.
|
// Only forward the events if they are for our dom window.
|
||||||
if (chromeWindow.gBrowser.selectedBrowser.contentWindow === contentWindow) {
|
if (chromeWindow.gBrowser.selectedBrowser.contentWindow === contentWindow) {
|
||||||
var detail = e.detail;
|
var detail = {
|
||||||
detail.__exposedProps__ = {
|
query: e.detail.query,
|
||||||
query: 'r',
|
caseSensitive: e.detail.caseSensitive,
|
||||||
caseSensitive: 'r',
|
highlightAll: e.detail.highlightAll,
|
||||||
highlightAll: 'r',
|
findPrevious: e.detail.findPrevious
|
||||||
findPrevious: 'r'
|
|
||||||
};
|
};
|
||||||
|
detail = makeContentReadable(detail, contentWindow);
|
||||||
var forward = contentWindow.document.createEvent('CustomEvent');
|
var forward = contentWindow.document.createEvent('CustomEvent');
|
||||||
forward.initCustomEvent(e.type, true, true, detail);
|
forward.initCustomEvent(e.type, true, true, detail);
|
||||||
contentWindow.dispatchEvent(forward);
|
contentWindow.dispatchEvent(forward);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user