summaryrefslogtreecommitdiff
path: root/dom/base/nsDocument.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'dom/base/nsDocument.cpp')
-rw-r--r--dom/base/nsDocument.cpp102
1 files changed, 1 insertions, 101 deletions
diff --git a/dom/base/nsDocument.cpp b/dom/base/nsDocument.cpp
index 562d9e1735..cbb71feaed 100644
--- a/dom/base/nsDocument.cpp
+++ b/dom/base/nsDocument.cpp
@@ -3120,106 +3120,6 @@ nsDocument::ElementFromPoint(float aX, float aY, nsIDOMElement** aReturn)
return NS_OK;
}
-Element*
-nsIDocument::ElementFromPoint(float aX, float aY)
-{
- return ElementFromPointHelper(aX, aY, false, true);
-}
-
-void
-nsIDocument::ElementsFromPoint(float aX, float aY,
- nsTArray<RefPtr<Element>>& aElements)
-{
- ElementsFromPointHelper(aX, aY, nsIDocument::FLUSH_LAYOUT, aElements);
-}
-
-Element*
-nsDocument::ElementFromPointHelper(float aX, float aY,
- bool aIgnoreRootScrollFrame,
- bool aFlushLayout)
-{
- AutoTArray<RefPtr<Element>, 1> elementArray;
- ElementsFromPointHelper(aX, aY,
- ((aIgnoreRootScrollFrame ? nsIDocument::IGNORE_ROOT_SCROLL_FRAME : 0) |
- (aFlushLayout ? nsIDocument::FLUSH_LAYOUT : 0) |
- nsIDocument::IS_ELEMENT_FROM_POINT),
- elementArray);
- if (elementArray.IsEmpty()) {
- return nullptr;
- }
- return elementArray[0];
-}
-
-void
-nsDocument::ElementsFromPointHelper(float aX, float aY,
- uint32_t aFlags,
- nsTArray<RefPtr<mozilla::dom::Element>>& aElements)
-{
- // As per the the spec, we return null if either coord is negative
- if (!(aFlags & nsIDocument::IGNORE_ROOT_SCROLL_FRAME) && (aX < 0 || aY < 0)) {
- return;
- }
-
- nscoord x = nsPresContext::CSSPixelsToAppUnits(aX);
- nscoord y = nsPresContext::CSSPixelsToAppUnits(aY);
- nsPoint pt(x, y);
-
- // Make sure the layout information we get is up-to-date, and
- // ensure we get a root frame (for everything but XUL)
- if (aFlags & nsIDocument::FLUSH_LAYOUT) {
- FlushPendingNotifications(Flush_Layout);
- }
-
- nsIPresShell *ps = GetShell();
- if (!ps) {
- return;
- }
- nsIFrame *rootFrame = ps->GetRootFrame();
-
- // XUL docs, unlike HTML, have no frame tree until everything's done loading
- if (!rootFrame) {
- return; // return null to premature XUL callers as a reminder to wait
- }
-
- nsTArray<nsIFrame*> outFrames;
- // Emulate what GetFrameAtPoint does, since we want all the frames under our
- // point.
- nsLayoutUtils::GetFramesForArea(rootFrame, nsRect(pt, nsSize(1, 1)), outFrames,
- nsLayoutUtils::IGNORE_PAINT_SUPPRESSION | nsLayoutUtils::IGNORE_CROSS_DOC |
- ((aFlags & nsIDocument::IGNORE_ROOT_SCROLL_FRAME) ? nsLayoutUtils::IGNORE_ROOT_SCROLL_FRAME : 0));
-
- // Dunno when this would ever happen, as we should at least have a root frame under us?
- if (outFrames.IsEmpty()) {
- return;
- }
-
- // Used to filter out repeated elements in sequence.
- nsIContent* lastAdded = nullptr;
-
- for (uint32_t i = 0; i < outFrames.Length(); i++) {
- nsIContent* node = GetContentInThisDocument(outFrames[i]);
-
- if (!node || !node->IsElement()) {
- // If this helper is called via ElementsFromPoint, we need to make sure
- // our frame is an element. Otherwise return whatever the top frame is
- // even if it isn't the top-painted element.
- if (!(aFlags & nsIDocument::IS_ELEMENT_FROM_POINT)) {
- continue;
- }
- node = node->GetParent();
- }
- if (node && node != lastAdded) {
- aElements.AppendElement(node->AsElement());
- lastAdded = node;
- // If this helper is called via ElementFromPoint, just return the first
- // element we find.
- if (aFlags & nsIDocument::IS_ELEMENT_FROM_POINT) {
- return;
- }
- }
- }
-}
-
nsresult
nsDocument::NodesFromRectHelper(float aX, float aY,
float aTopSize, float aRightSize,
@@ -8387,7 +8287,7 @@ nsDocument::DoUnblockOnload()
}
nsIContent*
-nsDocument::GetContentInThisDocument(nsIFrame* aFrame) const
+nsIDocument::GetContentInThisDocument(nsIFrame* aFrame) const
{
for (nsIFrame* f = aFrame; f;
f = nsLayoutUtils::GetParentOrPlaceholderForCrossDoc(f)) {