mirror of
https://github.com/roytam1/basilisk55.git
synced 2026-05-29 16:10:41 +00:00
import from UXP: Bug 1334247 - Remove nsIAnonymousContentCreator::CreateFrameFor (499252b8)
This commit is contained in:
@@ -47,6 +47,7 @@
|
|||||||
#include "nsContainerFrame.h"
|
#include "nsContainerFrame.h"
|
||||||
#include "nsNameSpaceManager.h"
|
#include "nsNameSpaceManager.h"
|
||||||
#include "nsIComboboxControlFrame.h"
|
#include "nsIComboboxControlFrame.h"
|
||||||
|
#include "nsComboboxControlFrame.h"
|
||||||
#include "nsIListControlFrame.h"
|
#include "nsIListControlFrame.h"
|
||||||
#include "nsIDOMCharacterData.h"
|
#include "nsIDOMCharacterData.h"
|
||||||
#include "nsPlaceholderFrame.h"
|
#include "nsPlaceholderFrame.h"
|
||||||
@@ -4128,9 +4129,7 @@ nsCSSFrameConstructor::CreateAnonymousFrames(nsFrameConstructorState& aState,
|
|||||||
ancestorPusher.PushStyleScope(aParent->AsElement());
|
ancestorPusher.PushStyleScope(aParent->AsElement());
|
||||||
}
|
}
|
||||||
|
|
||||||
nsIAnonymousContentCreator* creator = do_QueryFrame(aParentFrame);
|
nsComboboxControlFrame* comboboxFrame = do_QueryFrame(aParentFrame);
|
||||||
NS_ASSERTION(creator,
|
|
||||||
"How can that happen if we have nodes to construct frames for?");
|
|
||||||
|
|
||||||
InsertionPoint insertion(aParentFrame, aParent);
|
InsertionPoint insertion(aParentFrame, aParent);
|
||||||
for (uint32_t i=0; i < count; i++) {
|
for (uint32_t i=0; i < count; i++) {
|
||||||
@@ -4142,12 +4141,15 @@ nsCSSFrameConstructor::CreateAnonymousFrames(nsFrameConstructorState& aState,
|
|||||||
"nsIAnonymousContentCreator::CreateAnonymousContent to "
|
"nsIAnonymousContentCreator::CreateAnonymousContent to "
|
||||||
"output a list where the items have their own children");
|
"output a list where the items have their own children");
|
||||||
|
|
||||||
nsIFrame* newFrame = creator->CreateFrameFor(content);
|
if (comboboxFrame && comboboxFrame->GetDisplayNode() == content) {
|
||||||
if (newFrame) {
|
// Combo box frames have a custom hook to create frames for the anonymous
|
||||||
NS_ASSERTION(content->GetPrimaryFrame(),
|
// text node. This is the last vestigial trace of an old custom hook that
|
||||||
"Content must have a primary frame now");
|
// allowed arbitrary custom frame creation by any nsIAnonymousContentCreator
|
||||||
newFrame->AddStateBits(NS_FRAME_ANONYMOUSCONTENTCREATOR_CONTENT);
|
// implementation. It's possible that this could all be refactored away.
|
||||||
aChildItems.AddChild(newFrame);
|
nsIFrame* customFrame = comboboxFrame->CreateFrameForDisplayNode();
|
||||||
|
MOZ_ASSERT(customFrame);
|
||||||
|
customFrame->AddStateBits(NS_FRAME_ANONYMOUSCONTENTCREATOR_CONTENT);
|
||||||
|
aChildItems.AddChild(customFrame);
|
||||||
} else {
|
} else {
|
||||||
FrameConstructionItemList items;
|
FrameConstructionItemList items;
|
||||||
{
|
{
|
||||||
@@ -10724,13 +10726,6 @@ nsCSSFrameConstructor::AddFCItemsForAnonymousContent(
|
|||||||
{
|
{
|
||||||
for (uint32_t i = 0; i < aAnonymousItems.Length(); ++i) {
|
for (uint32_t i = 0; i < aAnonymousItems.Length(); ++i) {
|
||||||
nsIContent* content = aAnonymousItems[i].mContent;
|
nsIContent* content = aAnonymousItems[i].mContent;
|
||||||
#ifdef DEBUG
|
|
||||||
nsIAnonymousContentCreator* creator = do_QueryFrame(aFrame);
|
|
||||||
NS_ASSERTION(!creator || !creator->CreateFrameFor(content),
|
|
||||||
"If you need to use CreateFrameFor, you need to call "
|
|
||||||
"CreateAnonymousFrames manually and not follow the standard "
|
|
||||||
"ProcessChildren() codepath for this frame");
|
|
||||||
#endif
|
|
||||||
// Gecko-styled nodes should have no pending restyle flags.
|
// Gecko-styled nodes should have no pending restyle flags.
|
||||||
MOZ_ASSERT_IF(!content->IsStyledByServo(),
|
MOZ_ASSERT_IF(!content->IsStyledByServo(),
|
||||||
!content->IsElement() ||
|
!content->IsElement() ||
|
||||||
|
|||||||
@@ -249,6 +249,7 @@ nsComboboxControlFrame::~nsComboboxControlFrame()
|
|||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
|
|
||||||
NS_QUERYFRAME_HEAD(nsComboboxControlFrame)
|
NS_QUERYFRAME_HEAD(nsComboboxControlFrame)
|
||||||
|
NS_QUERYFRAME_ENTRY(nsComboboxControlFrame)
|
||||||
NS_QUERYFRAME_ENTRY(nsIComboboxControlFrame)
|
NS_QUERYFRAME_ENTRY(nsIComboboxControlFrame)
|
||||||
NS_QUERYFRAME_ENTRY(nsIFormControlFrame)
|
NS_QUERYFRAME_ENTRY(nsIFormControlFrame)
|
||||||
NS_QUERYFRAME_ENTRY(nsIAnonymousContentCreator)
|
NS_QUERYFRAME_ENTRY(nsIAnonymousContentCreator)
|
||||||
@@ -1350,16 +1351,9 @@ nsComboboxDisplayFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
|
|||||||
}
|
}
|
||||||
|
|
||||||
nsIFrame*
|
nsIFrame*
|
||||||
nsComboboxControlFrame::CreateFrameFor(nsIContent* aContent)
|
nsComboboxControlFrame::CreateFrameForDisplayNode()
|
||||||
{
|
{
|
||||||
NS_PRECONDITION(nullptr != aContent, "null ptr");
|
MOZ_ASSERT(mDisplayContent);
|
||||||
|
|
||||||
NS_ASSERTION(mDisplayContent, "mDisplayContent can't be null!");
|
|
||||||
|
|
||||||
if (mDisplayContent != aContent) {
|
|
||||||
// We only handle the frames for mDisplayContent here
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get PresShell
|
// Get PresShell
|
||||||
nsIPresShell *shell = PresContext()->PresShell();
|
nsIPresShell *shell = PresContext()->PresShell();
|
||||||
@@ -1384,7 +1378,7 @@ nsComboboxControlFrame::CreateFrameFor(nsIContent* aContent)
|
|||||||
nsIFrame* textFrame = NS_NewTextFrame(shell, textStyleContext);
|
nsIFrame* textFrame = NS_NewTextFrame(shell, textStyleContext);
|
||||||
|
|
||||||
// initialize the text frame
|
// initialize the text frame
|
||||||
textFrame->Init(aContent, mDisplayFrame, nullptr);
|
textFrame->Init(mDisplayContent, mDisplayFrame, nullptr);
|
||||||
mDisplayContent->SetPrimaryFrame(textFrame);
|
mDisplayContent->SetPrimaryFrame(textFrame);
|
||||||
|
|
||||||
nsFrameList textList(textFrame, textFrame);
|
nsFrameList textList(textFrame, textFrame);
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ class nsComboboxControlFrame final : public nsBlockFrame,
|
|||||||
typedef mozilla::gfx::DrawTarget DrawTarget;
|
typedef mozilla::gfx::DrawTarget DrawTarget;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
NS_DECL_QUERYFRAME_TARGET(nsComboboxControlFrame)
|
||||||
friend nsContainerFrame* NS_NewComboboxControlFrame(nsIPresShell* aPresShell,
|
friend nsContainerFrame* NS_NewComboboxControlFrame(nsIPresShell* aPresShell,
|
||||||
nsStyleContext* aContext,
|
nsStyleContext* aContext,
|
||||||
nsFrameState aFlags);
|
nsFrameState aFlags);
|
||||||
@@ -69,7 +70,9 @@ public:
|
|||||||
virtual nsresult CreateAnonymousContent(nsTArray<ContentInfo>& aElements) override;
|
virtual nsresult CreateAnonymousContent(nsTArray<ContentInfo>& aElements) override;
|
||||||
virtual void AppendAnonymousContentTo(nsTArray<nsIContent*>& aElements,
|
virtual void AppendAnonymousContentTo(nsTArray<nsIContent*>& aElements,
|
||||||
uint32_t aFilter) override;
|
uint32_t aFilter) override;
|
||||||
virtual nsIFrame* CreateFrameFor(nsIContent* aContent) override;
|
|
||||||
|
nsIContent* GetDisplayNode() { return mDisplayContent; }
|
||||||
|
nsIFrame* CreateFrameForDisplayNode();
|
||||||
|
|
||||||
#ifdef ACCESSIBILITY
|
#ifdef ACCESSIBILITY
|
||||||
virtual mozilla::a11y::AccType AccessibleType() override;
|
virtual mozilla::a11y::AccType AccessibleType() override;
|
||||||
|
|||||||
@@ -78,30 +78,6 @@ nsGfxButtonControlFrame::AppendAnonymousContentTo(nsTArray<nsIContent*>& aElemen
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create the text content used as label for the button.
|
|
||||||
// The frame will be generated by the frame constructor.
|
|
||||||
nsIFrame*
|
|
||||||
nsGfxButtonControlFrame::CreateFrameFor(nsIContent* aContent)
|
|
||||||
{
|
|
||||||
nsIFrame * newFrame = nullptr;
|
|
||||||
|
|
||||||
if (aContent == mTextContent) {
|
|
||||||
nsContainerFrame* parentFrame = do_QueryFrame(mFrames.FirstChild());
|
|
||||||
|
|
||||||
nsPresContext* presContext = PresContext();
|
|
||||||
RefPtr<nsStyleContext> textStyleContext;
|
|
||||||
textStyleContext = presContext->StyleSet()->
|
|
||||||
ResolveStyleForText(mTextContent, mStyleContext);
|
|
||||||
|
|
||||||
newFrame = NS_NewTextFrame(presContext->PresShell(), textStyleContext);
|
|
||||||
// initialize the text frame
|
|
||||||
newFrame->Init(mTextContent, parentFrame, nullptr);
|
|
||||||
mTextContent->SetPrimaryFrame(newFrame);
|
|
||||||
}
|
|
||||||
|
|
||||||
return newFrame;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_QUERYFRAME_HEAD(nsGfxButtonControlFrame)
|
NS_QUERYFRAME_HEAD(nsGfxButtonControlFrame)
|
||||||
NS_QUERYFRAME_ENTRY(nsIAnonymousContentCreator)
|
NS_QUERYFRAME_ENTRY(nsIAnonymousContentCreator)
|
||||||
NS_QUERYFRAME_TAIL_INHERITING(nsHTMLButtonControlFrame)
|
NS_QUERYFRAME_TAIL_INHERITING(nsHTMLButtonControlFrame)
|
||||||
|
|||||||
@@ -42,7 +42,6 @@ public:
|
|||||||
virtual nsresult CreateAnonymousContent(nsTArray<ContentInfo>& aElements) override;
|
virtual nsresult CreateAnonymousContent(nsTArray<ContentInfo>& aElements) override;
|
||||||
virtual void AppendAnonymousContentTo(nsTArray<nsIContent*>& aElements,
|
virtual void AppendAnonymousContentTo(nsTArray<nsIContent*>& aElements,
|
||||||
uint32_t aFilter) override;
|
uint32_t aFilter) override;
|
||||||
virtual nsIFrame* CreateFrameFor(nsIContent* aContent) override;
|
|
||||||
|
|
||||||
virtual nsresult AttributeChanged(int32_t aNameSpaceID,
|
virtual nsresult AttributeChanged(int32_t aNameSpaceID,
|
||||||
nsIAtom* aAttribute,
|
nsIAtom* aAttribute,
|
||||||
|
|||||||
@@ -72,14 +72,6 @@ public:
|
|||||||
*/
|
*/
|
||||||
virtual void AppendAnonymousContentTo(nsTArray<nsIContent*>& aElements,
|
virtual void AppendAnonymousContentTo(nsTArray<nsIContent*>& aElements,
|
||||||
uint32_t aFilter) = 0;
|
uint32_t aFilter) = 0;
|
||||||
|
|
||||||
/**
|
|
||||||
* Implementations can override this method to create special frames for the
|
|
||||||
* anonymous content returned from CreateAnonymousContent.
|
|
||||||
* By default this method returns nullptr, which means the default frame
|
|
||||||
* is created.
|
|
||||||
*/
|
|
||||||
virtual nsIFrame* CreateFrameFor(nsIContent* aContent) { return nullptr; }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user