icecat: add release icecat-140.9.0-1gnu1 for ecne
This commit is contained in:
parent
8eb1f1732f
commit
a5f93cb214
1197 changed files with 30593 additions and 15344 deletions
|
|
@ -50,6 +50,7 @@ DocAccessibleParent::DocAccessibleParent()
|
|||
mTopLevel(false),
|
||||
mTopLevelInContentProcess(false),
|
||||
mShutdown(false),
|
||||
mIsInitialTreeDone(false),
|
||||
mFocus(0),
|
||||
mCaretId(0),
|
||||
mCaretOffset(-1),
|
||||
|
|
@ -145,7 +146,9 @@ mozilla::ipc::IPCResult DocAccessibleParent::ProcessShowEvent(
|
|||
// Otherwise, clients might crawl the incomplete subtree and they won't get
|
||||
// mutation events for the remaining pieces.
|
||||
if (aComplete || root != child) {
|
||||
AttachChild(parent, childIdx, child);
|
||||
if (!AttachChild(parent, childIdx, child)) {
|
||||
return IPC_FAIL(this, "failed to attach child");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -174,7 +177,9 @@ mozilla::ipc::IPCResult DocAccessibleParent::ProcessShowEvent(
|
|||
MOZ_ASSERT(rootParent);
|
||||
root = GetAccessible(mPendingShowChild);
|
||||
MOZ_ASSERT(root);
|
||||
AttachChild(rootParent, mPendingShowIndex, root);
|
||||
if (!AttachChild(rootParent, mPendingShowIndex, root)) {
|
||||
return IPC_FAIL(this, "failed to attach pending show child");
|
||||
}
|
||||
mPendingShowChild = 0;
|
||||
mPendingShowParent = 0;
|
||||
mPendingShowIndex = 0;
|
||||
|
|
@ -234,6 +239,11 @@ RemoteAccessible* DocAccessibleParent::CreateAcc(
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
if (aAccData.GenericTypes() & eDocument) {
|
||||
MOZ_ASSERT_UNREACHABLE("Invalid acc type");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
newProxy = new RemoteAccessible(aAccData.ID(), this, aAccData.Role(),
|
||||
aAccData.Type(), aAccData.GenericTypes(),
|
||||
aAccData.RoleMapEntryIndex());
|
||||
|
|
@ -246,9 +256,20 @@ RemoteAccessible* DocAccessibleParent::CreateAcc(
|
|||
return newProxy;
|
||||
}
|
||||
|
||||
void DocAccessibleParent::AttachChild(RemoteAccessible* aParent,
|
||||
bool DocAccessibleParent::AttachChild(RemoteAccessible* aParent,
|
||||
uint32_t aIndex,
|
||||
RemoteAccessible* aChild) {
|
||||
if (aChild->RemoteParent()) {
|
||||
MOZ_ASSERT_UNREACHABLE(
|
||||
"Attempt to attach child which already has a parent!");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (aParent == aChild) {
|
||||
MOZ_ASSERT_UNREACHABLE("Attempt to make an accessible its own child!");
|
||||
return false;
|
||||
}
|
||||
|
||||
aParent->AddChildAt(aIndex, aChild);
|
||||
aChild->SetParent(aParent);
|
||||
// ProxyCreated might have already been called if aChild is being moved.
|
||||
|
|
@ -269,11 +290,16 @@ void DocAccessibleParent::AttachChild(RemoteAccessible* aParent,
|
|||
}
|
||||
MOZ_ASSERT(bridge->GetEmbedderAccessibleDoc() == this);
|
||||
if (DocAccessibleParent* childDoc = bridge->GetDocAccessibleParent()) {
|
||||
MOZ_DIAGNOSTIC_ASSERT(!childDoc->RemoteParent(),
|
||||
"Pending OOP child doc shouldn't have parent "
|
||||
"once new OuterDoc is attached");
|
||||
AddChildDoc(childDoc, aChild->ID(), false);
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void DocAccessibleParent::ShutdownOrPrepareForMove(RemoteAccessible* aAcc) {
|
||||
|
|
@ -286,6 +312,10 @@ void DocAccessibleParent::ShutdownOrPrepareForMove(RemoteAccessible* aAcc) {
|
|||
// the show event. For now, clear all of them by moving them to a temporary.
|
||||
auto children{std::move(aAcc->mChildren)};
|
||||
for (RemoteAccessible* child : children) {
|
||||
if (child == aAcc) {
|
||||
MOZ_ASSERT_UNREACHABLE(
|
||||
"Somehow an accessible got added as a child of itself!");
|
||||
}
|
||||
ShutdownOrPrepareForMove(child);
|
||||
}
|
||||
}
|
||||
|
|
@ -603,6 +633,18 @@ mozilla::ipc::IPCResult DocAccessibleParent::RecvMutationEvents(
|
|||
|
||||
mozilla::ipc::IPCResult DocAccessibleParent::RecvRequestAckMutationEvents() {
|
||||
if (!mShutdown) {
|
||||
if (!mIsInitialTreeDone) {
|
||||
// This is the first request for an ACK, which means we now have the
|
||||
// initial tree.
|
||||
mIsInitialTreeDone = true;
|
||||
// If this document is already bound to its embedder, fire a reorder event
|
||||
// to notify the client that the embedded document is available. If not,
|
||||
// this will be handled when this document is bound in AddChildDoc.
|
||||
if (RemoteAccessible* parent = RemoteParent()) {
|
||||
parent->Document()->FireEvent(parent,
|
||||
nsIAccessibleEvent::EVENT_REORDER);
|
||||
}
|
||||
}
|
||||
Unused << SendAckMutationEvents();
|
||||
}
|
||||
return IPC_OK();
|
||||
|
|
@ -882,6 +924,11 @@ mozilla::ipc::IPCResult DocAccessibleParent::RecvBindChildDoc(
|
|||
ipc::IPCResult DocAccessibleParent::AddChildDoc(DocAccessibleParent* aChildDoc,
|
||||
uint64_t aParentID,
|
||||
bool aCreating) {
|
||||
if (aChildDoc->RemoteParent()) {
|
||||
return IPC_FAIL(this,
|
||||
"Attempt to add child doc which already has a parent");
|
||||
}
|
||||
|
||||
// We do not use GetAccessible here because we want to be sure to not get the
|
||||
// document it self.
|
||||
ProxyEntry* e = mAccessibles.GetEntry(aParentID);
|
||||
|
|
@ -930,11 +977,20 @@ ipc::IPCResult DocAccessibleParent::AddChildDoc(DocAccessibleParent* aChildDoc,
|
|||
aChildDoc->SetEmulatedWindowHandle(mEmulatedWindowHandle);
|
||||
}
|
||||
#endif // defined(XP_WIN)
|
||||
// We need to fire a reorder event on the outer doc accessible.
|
||||
// For same-process documents, this is fired by the content process, but
|
||||
// this isn't possible when the document is in a different process to its
|
||||
// embedder.
|
||||
// FireEvent fires both OS and XPCOM events.
|
||||
}
|
||||
// We need to fire a reorder event on the embedder. We do this here rather
|
||||
// than in the content process for two reasons:
|
||||
// 1. It isn't possible for the content process to fire a reorder event on the
|
||||
// embedder when the embedded document is in a different process to its
|
||||
// embedder.
|
||||
// 2. Doing it here ensures that the event is fired after the child document
|
||||
// is bound. Otherwise, there could be a short period where the content
|
||||
// process has fired the reorder event, but the child document isn't bound
|
||||
// yet.
|
||||
// However, if the initial tree hasn't been received yet, we don't want to
|
||||
// fire the reorder event yet. That gets handled in
|
||||
// RecvRequestAckMutationEvents.
|
||||
if (aChildDoc->mIsInitialTreeDone) {
|
||||
FireEvent(outerDoc, nsIAccessibleEvent::EVENT_REORDER);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue