mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-11 20:35:50 +00:00
Bug 473284 - Crash when calling advanceFocusIntoSubtree({}), r+sr=mats
This commit is contained in:
parent
daac901327
commit
86a9bda197
93
dom/src/base/crashtests/473284.xul
Normal file
93
dom/src/base/crashtests/473284.xul
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||||
|
class="reftest-wait"
|
||||||
|
onload="
|
||||||
|
var result = '';
|
||||||
|
try {
|
||||||
|
document.commandDispatcher.advanceFocusIntoSubtree({});
|
||||||
|
result += '1';
|
||||||
|
} catch (ex) {
|
||||||
|
result += '.';
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
document.commandDispatcher.advanceFocusIntoSubtree(document.documentElement);
|
||||||
|
result += '2';
|
||||||
|
} catch (ex) {
|
||||||
|
result += '.';
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
document.commandDispatcher.advanceFocusIntoSubtree(null);
|
||||||
|
result += '3';
|
||||||
|
} catch (ex) {
|
||||||
|
result += '.';
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
document.commandDispatcher.focusedElement = {};
|
||||||
|
result += '4';
|
||||||
|
} catch (ex) {
|
||||||
|
result += '.';
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
document.commandDispatcher.focusedElement = document.documentElement;
|
||||||
|
result += '5';
|
||||||
|
} catch (ex) {
|
||||||
|
result += '.';
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
document.commandDispatcher.focusedElement = null;
|
||||||
|
result += '6';
|
||||||
|
} catch (ex) {
|
||||||
|
result += '.';
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
document.popupNode = {};
|
||||||
|
result += '7';
|
||||||
|
} catch (ex) {
|
||||||
|
result += '.';
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
document.popupNode = document.documentElement;
|
||||||
|
result += '8';
|
||||||
|
} catch (ex) {
|
||||||
|
result += '.';
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
document.popupNode = null;
|
||||||
|
result += '9';
|
||||||
|
} catch (ex) {
|
||||||
|
result += '.';
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
document.commandDispatcher.focusedWindow = {};
|
||||||
|
result += 'a';
|
||||||
|
} catch (ex) {
|
||||||
|
result += '.';
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
document.commandDispatcher.focusedWindow = null;
|
||||||
|
result += 'b';
|
||||||
|
} catch (ex) {
|
||||||
|
result += '.';
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
document.commandDispatcher.focusedWindow = window;
|
||||||
|
result += 'c';
|
||||||
|
} catch (ex) {
|
||||||
|
result += '.';
|
||||||
|
}
|
||||||
|
|
||||||
|
document.documentElement.textContent = result == '.23.56.89abc' ? 'PASSED' : 'FAILED';
|
||||||
|
if (document.documentElement.textContent == 'PASSED') {
|
||||||
|
document.documentElement.removeAttribute('class');
|
||||||
|
}
|
||||||
|
"/>
|
@ -12,3 +12,4 @@ load 372554-1.html
|
|||||||
load 404869-1.xul
|
load 404869-1.xul
|
||||||
load 462947.html
|
load 462947.html
|
||||||
load 439206-1.html
|
load 439206-1.html
|
||||||
|
load 473284.xul
|
||||||
|
@ -143,6 +143,10 @@ nsFocusController::GetFocusedWindow(nsIDOMWindowInternal** aWindow)
|
|||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsFocusController::SetFocusedElement(nsIDOMElement* aElement)
|
nsFocusController::SetFocusedElement(nsIDOMElement* aElement)
|
||||||
{
|
{
|
||||||
|
if (aElement) {
|
||||||
|
nsCOMPtr<nsIContent> content = do_QueryInterface(aElement);
|
||||||
|
NS_ENSURE_ARG(content);
|
||||||
|
}
|
||||||
if (mCurrentElement)
|
if (mCurrentElement)
|
||||||
mPreviousElement = mCurrentElement;
|
mPreviousElement = mCurrentElement;
|
||||||
else if (aElement)
|
else if (aElement)
|
||||||
@ -294,6 +298,7 @@ nsFocusController::MoveFocus(PRBool aForward, nsIDOMElement* aElt)
|
|||||||
nsCOMPtr<nsIContent> content;
|
nsCOMPtr<nsIContent> content;
|
||||||
if (aElt) {
|
if (aElt) {
|
||||||
content = do_QueryInterface(aElt);
|
content = do_QueryInterface(aElt);
|
||||||
|
NS_ENSURE_ARG(content);
|
||||||
doc = content->GetDocument();
|
doc = content->GetDocument();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -613,6 +618,10 @@ nsFocusController::SetPopupNode(nsIDOMNode* aNode)
|
|||||||
printf("dr :: nsFocusController::SetPopupNode\n");
|
printf("dr :: nsFocusController::SetPopupNode\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (aNode) {
|
||||||
|
nsCOMPtr<nsINode> node = do_QueryInterface(aNode);
|
||||||
|
NS_ENSURE_ARG(node);
|
||||||
|
}
|
||||||
mPopupNode = aNode;
|
mPopupNode = aNode;
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user