本文整理汇总了C++中RenderFrameParent类的典型用法代码示例。如果您正苦于以下问题:C++ RenderFrameParent类的具体用法?C++ RenderFrameParent怎么用?C++ RenderFrameParent使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了RenderFrameParent类的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DisplayBorderBackgroundOutline
NS_IMETHODIMP
nsSubDocumentFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
const nsRect& aDirtyRect,
const nsDisplayListSet& aLists)
{
if (!IsVisibleForPainting(aBuilder))
return NS_OK;
// If mozpasspointerevents is set, then we should allow subdocument content
// to handle events even if we're pointer-events:none.
if (aBuilder->IsForEventDelivery() && !PassPointerEventsToChildren())
return NS_OK;
nsresult rv = DisplayBorderBackgroundOutline(aBuilder, aLists);
NS_ENSURE_SUCCESS(rv, rv);
if (!mInnerView)
return NS_OK;
nsFrameLoader* frameLoader = FrameLoader();
if (frameLoader) {
RenderFrameParent* rfp = frameLoader->GetCurrentRemoteFrame();
if (rfp) {
return rfp->BuildDisplayList(aBuilder, this, aDirtyRect, aLists);
}
}
nsIView* subdocView = mInnerView->GetFirstChild();
if (!subdocView)
return NS_OK;
nsCOMPtr<nsIPresShell> presShell = nullptr;
nsIFrame* subdocRootFrame = subdocView->GetFrame();
if (subdocRootFrame) {
presShell = subdocRootFrame->PresContext()->PresShell();
}
// If painting is suppressed in the presshell, we try to look for a better
// presshell to use.
if (!presShell || (presShell->IsPaintingSuppressed() &&
!aBuilder->IsIgnoringPaintSuppression())) {
// During page transition mInnerView will sometimes have two children, the
// first being the new page that may not have any frame, and the second
// being the old page that will probably have a frame.
nsIView* nextView = subdocView->GetNextSibling();
nsIFrame* frame = nullptr;
if (nextView) {
frame = nextView->GetFrame();
}
if (frame) {
nsIPresShell* ps = frame->PresContext()->PresShell();
if (!presShell || (ps && !ps->IsPaintingSuppressed())) {
subdocView = nextView;
subdocRootFrame = frame;
presShell = ps;
}
}
if (!presShell) {
// If we don't have a frame we use this roundabout way to get the pres shell.
if (!mFrameLoader)
return NS_OK;
nsCOMPtr<nsIDocShell> docShell;
mFrameLoader->GetDocShell(getter_AddRefs(docShell));
if (!docShell)
return NS_OK;
docShell->GetPresShell(getter_AddRefs(presShell));
if (!presShell)
return NS_OK;
}
}
nsPresContext* presContext = presShell->GetPresContext();
nsDisplayList childItems;
int32_t parentAPD = PresContext()->AppUnitsPerDevPixel();
int32_t subdocAPD = presContext->AppUnitsPerDevPixel();
nsRect dirty;
if (subdocRootFrame) {
nsIDocument* doc = subdocRootFrame->PresContext()->Document();
nsIContent* root = doc ? doc->GetRootElement() : nullptr;
nsRect displayPort;
if (root && nsLayoutUtils::GetDisplayPort(root, &displayPort)) {
dirty = displayPort;
} else {
// get the dirty rect relative to the root frame of the subdoc
dirty = aDirtyRect + GetOffsetToCrossDoc(subdocRootFrame);
// and convert into the appunits of the subdoc
dirty = dirty.ConvertAppUnitsRoundOut(parentAPD, subdocAPD);
}
aBuilder->EnterPresShell(subdocRootFrame, dirty);
}
nsRect subdocBoundsInParentUnits =
mInnerView->GetBounds() + aBuilder->ToReferenceFrame(this);
if (subdocRootFrame) {
rv = subdocRootFrame->
//.........这里部分代码省略.........
示例2: FrameLoader
void
nsSubDocumentFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
const nsRect& aDirtyRect,
const nsDisplayListSet& aLists)
{
if (!IsVisibleForPainting(aBuilder))
return;
nsFrameLoader* frameLoader = FrameLoader();
RenderFrameParent* rfp = nullptr;
if (frameLoader) {
rfp = frameLoader->GetCurrentRemoteFrame();
}
// If we are pointer-events:none then we don't need to HitTest background
bool pointerEventsNone = StyleVisibility()->mPointerEvents == NS_STYLE_POINTER_EVENTS_NONE;
if (!aBuilder->IsForEventDelivery() || !pointerEventsNone) {
nsDisplayListCollection decorations;
DisplayBorderBackgroundOutline(aBuilder, decorations);
if (rfp) {
// Wrap background colors of <iframe>s with remote subdocuments in their
// own layer so we generate a ColorLayer. This is helpful for optimizing
// compositing; we can skip compositing the ColorLayer when the
// remote content is opaque.
WrapBackgroundColorInOwnLayer(aBuilder, this, decorations.BorderBackground());
}
decorations.MoveTo(aLists);
}
bool passPointerEventsToChildren = false;
if (aBuilder->IsForEventDelivery()) {
passPointerEventsToChildren = PassPointerEventsToChildren();
// If mozpasspointerevents is set, then we should allow subdocument content
// to handle events even if we're pointer-events:none.
if (pointerEventsNone && !passPointerEventsToChildren) {
return;
}
}
// If we're passing pointer events to children then we have to descend into
// subdocuments no matter what, to determine which parts are transparent for
// elementFromPoint.
if (!mInnerView ||
(!aBuilder->GetDescendIntoSubdocuments() && !passPointerEventsToChildren)) {
return;
}
if (rfp) {
rfp->BuildDisplayList(aBuilder, this, aDirtyRect, aLists);
return;
}
nsView* subdocView = mInnerView->GetFirstChild();
if (!subdocView)
return;
nsCOMPtr<nsIPresShell> presShell = nullptr;
nsIFrame* subdocRootFrame = subdocView->GetFrame();
if (subdocRootFrame) {
presShell = subdocRootFrame->PresContext()->PresShell();
}
// If painting is suppressed in the presshell, we try to look for a better
// presshell to use.
if (!presShell || (presShell->IsPaintingSuppressed() &&
!aBuilder->IsIgnoringPaintSuppression())) {
// During page transition mInnerView will sometimes have two children, the
// first being the new page that may not have any frame, and the second
// being the old page that will probably have a frame.
nsView* nextView = subdocView->GetNextSibling();
nsIFrame* frame = nullptr;
if (nextView) {
frame = nextView->GetFrame();
}
if (frame) {
nsIPresShell* ps = frame->PresContext()->PresShell();
if (!presShell || (ps && !ps->IsPaintingSuppressed())) {
subdocView = nextView;
subdocRootFrame = frame;
presShell = ps;
}
}
if (!presShell) {
// If we don't have a frame we use this roundabout way to get the pres shell.
if (!mFrameLoader)
return;
nsCOMPtr<nsIDocShell> docShell;
mFrameLoader->GetDocShell(getter_AddRefs(docShell));
if (!docShell)
return;
presShell = docShell->GetPresShell();
if (!presShell)
return;
}
}
nsPresContext* presContext = presShell->GetPresContext();
int32_t parentAPD = PresContext()->AppUnitsPerDevPixel();
int32_t subdocAPD = presContext->AppUnitsPerDevPixel();
//.........这里部分代码省略.........
示例3: FrameLoader
void
nsSubDocumentFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
const nsRect& aDirtyRect,
const nsDisplayListSet& aLists)
{
if (!IsVisibleForPainting(aBuilder))
return;
nsFrameLoader* frameLoader = FrameLoader();
RenderFrameParent* rfp = nullptr;
if (frameLoader) {
rfp = frameLoader->GetCurrentRenderFrame();
}
// If we are pointer-events:none then we don't need to HitTest background
bool pointerEventsNone =
StyleUserInterface()->mPointerEvents == NS_STYLE_POINTER_EVENTS_NONE;
if (!aBuilder->IsForEventDelivery() || !pointerEventsNone) {
nsDisplayListCollection decorations;
DisplayBorderBackgroundOutline(aBuilder, decorations);
if (rfp) {
// Wrap background colors of <iframe>s with remote subdocuments in their
// own layer so we generate a ColorLayer. This is helpful for optimizing
// compositing; we can skip compositing the ColorLayer when the
// remote content is opaque.
WrapBackgroundColorInOwnLayer(aBuilder, this, decorations.BorderBackground());
}
decorations.MoveTo(aLists);
}
if (aBuilder->IsForEventDelivery() && pointerEventsNone) {
return;
}
// If we're passing pointer events to children then we have to descend into
// subdocuments no matter what, to determine which parts are transparent for
// hit-testing or event regions.
bool needToDescend = aBuilder->GetDescendIntoSubdocuments();
if (!mInnerView || !needToDescend) {
return;
}
if (rfp) {
rfp->BuildDisplayList(aBuilder, this, aDirtyRect, aLists);
return;
}
nsCOMPtr<nsIPresShell> presShell =
GetSubdocumentPresShellForPainting(
aBuilder->IsIgnoringPaintSuppression() ? IGNORE_PAINT_SUPPRESSION : 0);
if (!presShell) {
return;
}
nsIFrame* subdocRootFrame = presShell->GetRootFrame();
nsPresContext* presContext = presShell->GetPresContext();
int32_t parentAPD = PresContext()->AppUnitsPerDevPixel();
int32_t subdocAPD = presContext->AppUnitsPerDevPixel();
nsRect dirty;
bool haveDisplayPort = false;
bool ignoreViewportScrolling = false;
nsIFrame* savedIgnoreScrollFrame = nullptr;
if (subdocRootFrame) {
// get the dirty rect relative to the root frame of the subdoc
dirty = aDirtyRect + GetOffsetToCrossDoc(subdocRootFrame);
// and convert into the appunits of the subdoc
dirty = dirty.ScaleToOtherAppUnitsRoundOut(parentAPD, subdocAPD);
if (nsIFrame* rootScrollFrame = presShell->GetRootScrollFrame()) {
nsIScrollableFrame* rootScrollableFrame = presShell->GetRootScrollFrameAsScrollable();
MOZ_ASSERT(rootScrollableFrame);
// Use a copy, so the dirty rect doesn't get modified to the display port.
nsRect copy = dirty;
haveDisplayPort = rootScrollableFrame->DecideScrollableLayer(aBuilder,
©, /* aAllowCreateDisplayPort = */ true);
if (!gfxPrefs::LayoutUseContainersForRootFrames()) {
haveDisplayPort = false;
}
ignoreViewportScrolling = presShell->IgnoringViewportScrolling();
if (ignoreViewportScrolling) {
savedIgnoreScrollFrame = aBuilder->GetIgnoreScrollFrame();
aBuilder->SetIgnoreScrollFrame(rootScrollFrame);
}
}
aBuilder->EnterPresShell(subdocRootFrame, pointerEventsNone);
} else {
dirty = aDirtyRect;
}
DisplayListClipState::AutoSaveRestore clipState(aBuilder);
if (ShouldClipSubdocument()) {
clipState.ClipContainingBlockDescendantsToContentBox(aBuilder, this);
}
//.........这里部分代码省略.........
示例4: GetStyleVisibility
NS_IMETHODIMP
nsSubDocumentFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
const nsRect& aDirtyRect,
const nsDisplayListSet& aLists)
{
if (!IsVisibleForPainting(aBuilder))
return NS_OK;
if (aBuilder->IsForEventDelivery() &&
GetStyleVisibility()->mPointerEvents == NS_STYLE_POINTER_EVENTS_NONE)
return NS_OK;
nsresult rv = DisplayBorderBackgroundOutline(aBuilder, aLists);
NS_ENSURE_SUCCESS(rv, rv);
if (!mInnerView)
return NS_OK;
nsFrameLoader* frameLoader = FrameLoader();
if (frameLoader) {
RenderFrameParent* rfp = frameLoader->GetCurrentRemoteFrame();
if (rfp) {
return rfp->BuildDisplayList(aBuilder, this, aDirtyRect, aLists);
}
}
nsIView* subdocView = mInnerView->GetFirstChild();
if (!subdocView)
return NS_OK;
nsCOMPtr<nsIPresShell> presShell = nsnull;
nsIFrame* subdocRootFrame =
static_cast<nsIFrame*>(subdocView->GetClientData());
if (subdocRootFrame) {
presShell = subdocRootFrame->PresContext()->PresShell();
}
// If painting is suppressed in the presshell, we try to look for a better
// presshell to use.
if (!presShell || (presShell->IsPaintingSuppressed() &&
!aBuilder->IsIgnoringPaintSuppression())) {
// During page transition mInnerView will sometimes have two children, the
// first being the new page that may not have any frame, and the second
// being the old page that will probably have a frame.
nsIView* nextView = subdocView->GetNextSibling();
nsIFrame* frame = nsnull;
if (nextView) {
frame = static_cast<nsIFrame*>(nextView->GetClientData());
}
if (frame) {
nsIPresShell* ps = frame->PresContext()->PresShell();
if (!presShell || (ps && !ps->IsPaintingSuppressed())) {
subdocView = nextView;
subdocRootFrame = frame;
presShell = ps;
}
}
if (!presShell) {
// If we don't have a frame we use this roundabout way to get the pres shell.
if (!mFrameLoader)
return NS_OK;
nsCOMPtr<nsIDocShell> docShell;
mFrameLoader->GetDocShell(getter_AddRefs(docShell));
if (!docShell)
return NS_OK;
docShell->GetPresShell(getter_AddRefs(presShell));
if (!presShell)
return NS_OK;
}
}
nsPresContext* presContext = presShell->GetPresContext();
nsDisplayList childItems;
PRInt32 parentAPD = PresContext()->AppUnitsPerDevPixel();
PRInt32 subdocAPD = presContext->AppUnitsPerDevPixel();
nsRect dirty;
if (subdocRootFrame) {
// get the dirty rect relative to the root frame of the subdoc
dirty = aDirtyRect + GetOffsetToCrossDoc(subdocRootFrame);
// and convert into the appunits of the subdoc
dirty = dirty.ConvertAppUnitsRoundOut(parentAPD, subdocAPD);
aBuilder->EnterPresShell(subdocRootFrame, dirty);
}
// The subdocView's bounds are in appunits of the subdocument, so adjust
// them.
nsRect subdocBoundsInParentUnits =
subdocView->GetBounds().ConvertAppUnitsRoundOut(subdocAPD, parentAPD);
// Get the bounds of subdocView relative to the reference frame.
subdocBoundsInParentUnits = subdocBoundsInParentUnits +
mInnerView->GetPosition() +
GetOffsetToCrossDoc(aBuilder->ReferenceFrame());
if (subdocRootFrame && NS_SUCCEEDED(rv)) {
//.........这里部分代码省略.........
示例5: GetStyleVisibility
NS_IMETHODIMP
nsSubDocumentFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
const nsRect& aDirtyRect,
const nsDisplayListSet& aLists)
{
if (!IsVisibleForPainting(aBuilder))
return NS_OK;
if (aBuilder->IsForEventDelivery() &&
GetStyleVisibility()->mPointerEvents == NS_STYLE_POINTER_EVENTS_NONE)
return NS_OK;
nsresult rv = DisplayBorderBackgroundOutline(aBuilder, aLists);
NS_ENSURE_SUCCESS(rv, rv);
if (!mInnerView)
return NS_OK;
#ifdef MOZ_IPC
nsFrameLoader* frameLoader = FrameLoader();
if (frameLoader) {
RenderFrameParent* rfp = frameLoader->GetCurrentRemoteFrame();
if (rfp) {
return rfp->BuildDisplayList(aBuilder, this, aDirtyRect, aLists);
}
}
#endif
nsIView* subdocView = mInnerView->GetFirstChild();
if (!subdocView)
return NS_OK;
nsCOMPtr<nsIPresShell> presShell = nsnull;
nsIFrame* subdocRootFrame =
static_cast<nsIFrame*>(subdocView->GetClientData());
if (subdocRootFrame) {
presShell = subdocRootFrame->PresContext()->PresShell();
}
// If painting is suppressed in the presshell, we try to look for a better
// presshell to use.
if (!presShell || (presShell->IsPaintingSuppressed() &&
!aBuilder->IsIgnoringPaintSuppression())) {
// During page transition mInnerView will sometimes have two children, the
// first being the new page that may not have any frame, and the second
// being the old page that will probably have a frame.
nsIView* nextView = subdocView->GetNextSibling();
nsIFrame* frame = nsnull;
if (nextView) {
frame = static_cast<nsIFrame*>(nextView->GetClientData());
}
if (frame) {
nsIPresShell* ps = frame->PresContext()->PresShell();
if (!presShell || (ps && !ps->IsPaintingSuppressed())) {
subdocView = nextView;
subdocRootFrame = frame;
presShell = ps;
}
}
if (!presShell) {
// If we don't have a frame we use this roundabout way to get the pres shell.
if (!mFrameLoader)
return NS_OK;
nsCOMPtr<nsIDocShell> docShell;
mFrameLoader->GetDocShell(getter_AddRefs(docShell));
if (!docShell)
return NS_OK;
docShell->GetPresShell(getter_AddRefs(presShell));
if (!presShell)
return NS_OK;
}
}
nsPresContext* presContext = presShell->GetPresContext();
nsDisplayList childItems;
PRInt32 parentAPD = PresContext()->AppUnitsPerDevPixel();
PRInt32 subdocAPD = presContext->AppUnitsPerDevPixel();
nsIFrame* subdocRootScrollFrame = presShell->GetRootScrollFrame();
nsRect dirty;
if (subdocRootFrame) {
if (presShell->UsingDisplayPort() && subdocRootScrollFrame) {
dirty = presShell->GetDisplayPort();
// The visual overflow rect of our viewport frame unfortunately may not
// intersect with the displayport of that frame. For example, the scroll
// offset of the frame may be (0, 0) so that the visual overflow rect
// is (0, 0, 800px, 500px) while the display port may have its top-left
// corner below y=500px.
//
// We have to force the frame to have a little faith and build a display
// list anyway. (see nsIFrame::BuildDisplayListForChild for the short-
// circuit code we are evading here).
//
subdocRootScrollFrame->AddStateBits(
NS_FRAME_FORCE_DISPLAY_LIST_DESCEND_INTO);
//.........这里部分代码省略.........