Bug 834266 - Use XPCNativeWrapper to compare elements, r=mdas

This commit is contained in:
Jonathan Griffin 2013-02-04 11:40:51 -08:00
Родитель 6071ec8fa9
Коммит cbdb17ecc5
2 изменённых файлов: 11 добавлений и 4 удалений

Просмотреть файл

@ -97,8 +97,8 @@ ElementManager.prototype = {
if (!el) {
throw new ElementException("Element has not been seen before", 17, null);
}
el = el;
if (!(el.ownerDocument.isEqualNode(win.document))) {
// use XPCNativeWrapper to compare elements; see bug 834266
if (!(XPCNativeWrapper(el).ownerDocument == XPCNativeWrapper(win).document)) {
throw new ElementException("Stale element reference", 10, null);
}
return el;

Просмотреть файл

@ -1162,9 +1162,16 @@ function switchToFrame(msg) {
}
if (msg.json.element != undefined) {
if (elementManager.seenItems[msg.json.element] != undefined) {
let wantedFrame = elementManager.getKnownElement(msg.json.element, curWindow); //HTMLIFrameElement
let wantedFrame;
try {
wantedFrame = elementManager.getKnownElement(msg.json.element, curWindow); //HTMLIFrameElement
}
catch(e) {
sendError(e.message, e.code, e.stack, command_id);
}
for (let i = 0; i < frames.length; i++) {
if (frames[i].isEqualNode(wantedFrame)) {
// use XPCNativeWrapper to compare elements; see bug 834266
if (XPCNativeWrapper(frames[i]) == XPCNativeWrapper(wantedFrame)) {
curWindow = frames[i];
foundFrame = i;
}