Files
Yoshi Cheng-Hao Huang dc14477eca Bug 2054848 - Part 2: Stop WorkerPrivate.h and WorkerScope.h from including ModuleLoaderBase.h. r=dom-worker-reviewers,media-playback-reviewers,bvandersloot,edenchuang,padenot
ModuleLoaderBase.h is heavyweight and was pulled in transitively by ~50 headers
through WorkerPrivate.h, so editing it triggered a near-full rebuild.

- WorkerPrivate.h: drop the unused #include "ScriptLoader.h".
- WorkerScope.h: forward-declare JS::loader::ModuleLoaderBase and out-line
  InitModuleLoader into WorkerScope.cpp.
- Add direct includes to files that were relying on the removed transitive
  include (some only exposed by non-unified builds).

Translation Unit Recompiled
$ rg -l --no-ignore --hidden --glob '*.o.pp' 'ModuleLoaderBase\.h' obj-x86_64-pc-linux-gnu | wc -l

  Before this patch : 163
  After this patch  : 49

Differential Revision: https://phabricator.services.mozilla.com/D312007
2026-07-19 09:31:59 +00:00

78 lines
2.6 KiB
C++

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "DocAccessibleWrap.h"
#include "AccAttributes.h"
#include "DocAccessibleChild.h"
#include "LocalAccessible-inl.h"
#include "Pivot.h"
#include "SessionAccessibility.h"
#include "TraversalRule.h"
#include "mozilla/PresShell.h"
#include "mozilla/dom/Document.h"
#include "nsAccUtils.h"
#include "nsAccessibilityService.h"
#include "nsIDocShell.h"
#include "nsLayoutUtils.h"
using namespace mozilla;
using namespace mozilla::a11y;
#define UNIQUE_ID(acc) \
!acc || (acc->IsDoc() && acc->AsDoc()->IPCDoc()) \
? 0 \
: reinterpret_cast<uint64_t>(acc->UniqueID())
////////////////////////////////////////////////////////////////////////////////
// DocAccessibleWrap
////////////////////////////////////////////////////////////////////////////////
DocAccessibleWrap::DocAccessibleWrap(Document* aDocument, PresShell* aPresShell)
: DocAccessible(aDocument, aPresShell) {
// We need an nsINode associated with this accessible to register it with the
// right SessionAccessibility instance. When the base AccessibleWrap
// constructor is called we don't have one yet because null is passed as the
// content node. So we do it here after a Document is associated with the
// accessible.
if (!IPCAccessibilityActive()) {
MonitorAutoLock mal(nsAccessibilityService::GetAndroidMonitor());
SessionAccessibility::RegisterAccessible(this);
}
}
DocAccessibleWrap::~DocAccessibleWrap() {}
void DocAccessibleWrap::Shutdown() {
// Unregister here before disconnecting from PresShell.
if (!IPCAccessibilityActive()) {
MonitorAutoLock mal(nsAccessibilityService::GetAndroidMonitor());
if (IsRoot()) {
SessionAccessibility::UnregisterAll(PresShellPtr());
} else {
SessionAccessibility::UnregisterAccessible(this);
}
}
DocAccessible::Shutdown();
}
DocAccessibleWrap* DocAccessibleWrap::GetTopLevelContentDoc(
AccessibleWrap* aAccessible) {
DocAccessibleWrap* doc =
static_cast<DocAccessibleWrap*>(aAccessible->Document());
while (doc && !doc->IsTopLevelContentDoc()) {
doc = static_cast<DocAccessibleWrap*>(doc->ParentDocument());
}
return doc;
}
bool DocAccessibleWrap::IsTopLevelContentDoc() {
DocAccessible* parentDoc = ParentDocument();
return DocumentNode()->IsContentDocument() &&
(!parentDoc || !parentDoc->DocumentNode()->IsContentDocument());
}
#undef UNIQUE_ID