mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-08 00:38:39 +09:00
Issue #2388 - Part 1: Mark Selection as "called by JS" when caused by a JS call to the selection API
This commit is contained in:
parent
a2c28b4268
commit
a83e4b6a34
6 changed files with 239 additions and 34 deletions
|
|
@ -269,6 +269,7 @@ nsRange::nsRange(nsINode* aNode)
|
|||
, mStartOffsetWasIncremented(false)
|
||||
, mEndOffsetWasIncremented(false)
|
||||
, mEnableGravitationOnElementRemoval(true)
|
||||
, mCalledByJS(false)
|
||||
#ifdef DEBUG
|
||||
, mAssertNextInsertOrAppendIndex(-1)
|
||||
, mAssertNextInsertOrAppendNode(nullptr)
|
||||
|
|
@ -997,7 +998,7 @@ nsRange::DoSetRange(nsINode* aStartN, uint32_t aStartOffset,
|
|||
// Notify any selection listeners. This has to occur last because otherwise the world
|
||||
// could be observed by a selection listener while the range was in an invalid state.
|
||||
if (mSelection) {
|
||||
mSelection->NotifySelectionListeners();
|
||||
mSelection->NotifySelectionListeners(mCalledByJS);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1224,6 +1225,13 @@ nsRange::IsValidBoundary(nsINode* aNode)
|
|||
return root;
|
||||
}
|
||||
|
||||
void
|
||||
nsRange::SetStartJS(nsINode& aNode, uint32_t aOffset, ErrorResult& aErr)
|
||||
{
|
||||
AutoCalledByJSSetter markAsCalledByJS(*this);
|
||||
SetStart(aNode, aOffset, aErr);
|
||||
}
|
||||
|
||||
void
|
||||
nsRange::SetStart(nsINode& aNode, uint32_t aOffset, ErrorResult& aRv)
|
||||
{
|
||||
|
|
@ -1279,6 +1287,13 @@ nsRange::SetStart(nsINode* aParent, uint32_t aOffset)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
nsRange::SetStartBeforeJS(nsINode& aNode, ErrorResult& aErr)
|
||||
{
|
||||
AutoCalledByJSSetter markAsCalledByJS(*this);
|
||||
SetStartBefore(aNode, aErr);
|
||||
}
|
||||
|
||||
void
|
||||
nsRange::SetStartBefore(nsINode& aNode, ErrorResult& aRv)
|
||||
{
|
||||
|
|
@ -1310,6 +1325,13 @@ nsRange::SetStartBefore(nsIDOMNode* aSibling)
|
|||
return rv.StealNSResult();
|
||||
}
|
||||
|
||||
void
|
||||
nsRange::SetStartAfterJS(nsINode& aNode, ErrorResult& aErr)
|
||||
{
|
||||
AutoCalledByJSSetter markAsCalledByJS(*this);
|
||||
SetStartAfter(aNode, aErr);
|
||||
}
|
||||
|
||||
void
|
||||
nsRange::SetStartAfter(nsINode& aNode, ErrorResult& aRv)
|
||||
{
|
||||
|
|
@ -1341,6 +1363,13 @@ nsRange::SetStartAfter(nsIDOMNode* aSibling)
|
|||
return rv.StealNSResult();
|
||||
}
|
||||
|
||||
void
|
||||
nsRange::SetEndJS(nsINode& aNode, uint32_t aOffset, ErrorResult& aErr)
|
||||
{
|
||||
AutoCalledByJSSetter markAsCalledByJS(*this);
|
||||
SetEnd(aNode, aOffset, aErr);
|
||||
}
|
||||
|
||||
void
|
||||
nsRange::SetEnd(nsINode& aNode, uint32_t aOffset, ErrorResult& aRv)
|
||||
{
|
||||
|
|
@ -1455,6 +1484,13 @@ nsRange::SetStartAndEnd(nsINode* aStartParent, uint32_t aStartOffset,
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
nsRange::SetEndBeforeJS(nsINode& aNode, ErrorResult& aErr)
|
||||
{
|
||||
AutoCalledByJSSetter markAsCalledByJS(*this);
|
||||
SetEndBefore(aNode, aErr);
|
||||
}
|
||||
|
||||
void
|
||||
nsRange::SetEndBefore(nsINode& aNode, ErrorResult& aRv)
|
||||
{
|
||||
|
|
@ -1486,6 +1522,13 @@ nsRange::SetEndBefore(nsIDOMNode* aSibling)
|
|||
return rv.StealNSResult();
|
||||
}
|
||||
|
||||
void
|
||||
nsRange::SetEndAfterJS(nsINode& aNode, ErrorResult& aErr)
|
||||
{
|
||||
AutoCalledByJSSetter markAsCalledByJS(*this);
|
||||
SetEndAfter(aNode, aErr);
|
||||
}
|
||||
|
||||
void
|
||||
nsRange::SetEndAfter(nsINode& aNode, ErrorResult& aRv)
|
||||
{
|
||||
|
|
@ -1532,6 +1575,13 @@ nsRange::Collapse(bool aToStart)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
nsRange::CollapseJS(bool aToStart)
|
||||
{
|
||||
AutoCalledByJSSetter markAsCalledByJS(*this);
|
||||
Unused << Collapse(aToStart);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsRange::SelectNode(nsIDOMNode* aN)
|
||||
{
|
||||
|
|
@ -1543,6 +1593,13 @@ nsRange::SelectNode(nsIDOMNode* aN)
|
|||
return rv.StealNSResult();
|
||||
}
|
||||
|
||||
void
|
||||
nsRange::SelectNodeJS(nsINode& aNode, ErrorResult& aErr)
|
||||
{
|
||||
AutoCalledByJSSetter markAsCalledByJS(*this);
|
||||
SelectNode(aNode, aErr);
|
||||
}
|
||||
|
||||
void
|
||||
nsRange::SelectNode(nsINode& aNode, ErrorResult& aRv)
|
||||
{
|
||||
|
|
@ -1582,6 +1639,13 @@ nsRange::SelectNodeContents(nsIDOMNode* aN)
|
|||
return rv.StealNSResult();
|
||||
}
|
||||
|
||||
void
|
||||
nsRange::SelectNodeContentsJS(nsINode& aNode, ErrorResult& aErr)
|
||||
{
|
||||
AutoCalledByJSSetter markAsCalledByJS(*this);
|
||||
SelectNodeContents(aNode, aErr);
|
||||
}
|
||||
|
||||
void
|
||||
nsRange::SelectNodeContents(nsINode& aNode, ErrorResult& aRv)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue