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) { if (!el) {
throw new ElementException("Element has not been seen before", 17, null); throw new ElementException("Element has not been seen before", 17, null);
} }
el = el; // use XPCNativeWrapper to compare elements; see bug 834266
if (!(el.ownerDocument.isEqualNode(win.document))) { if (!(XPCNativeWrapper(el).ownerDocument == XPCNativeWrapper(win).document)) {
throw new ElementException("Stale element reference", 10, null); throw new ElementException("Stale element reference", 10, null);
} }
return el; return el;

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

@ -1162,9 +1162,16 @@ function switchToFrame(msg) {
} }
if (msg.json.element != undefined) { if (msg.json.element != undefined) {
if (elementManager.seenItems[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++) { 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]; curWindow = frames[i];
foundFrame = i; foundFrame = i;
} }