author | Boris Zbarsky <bzbarsky@mit.edu> |
Wed, 21 Dec 2011 16:50:39 -0500 | |
changeset 85652 | 70af9bf2a4dc3b912755d551169730db5b3e5991 |
parent 85651 | a1b1f449a7fe87f16efee3c95923d9655908de78 |
child 85653 | 916876a3db976b54c3ea5b28162b06fceeb21b0a |
push id | 674 |
push user | ffxbld |
push date | Tue, 13 Mar 2012 21:17:50 +0000 |
treeherder | mozilla-beta@e3c4c92dec31 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | tnikkel |
bugs | 302566 |
milestone | 12.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
layout/base/nsCSSFrameConstructor.cpp | file | annotate | diff | comparison | revisions | |
layout/base/nsCSSFrameConstructor.h | file | annotate | diff | comparison | revisions |
--- a/layout/base/nsCSSFrameConstructor.cpp +++ b/layout/base/nsCSSFrameConstructor.cpp @@ -3522,17 +3522,17 @@ nsCSSFrameConstructor::FindHTMLData(Elem SIMPLE_TAG_CHAIN(embed, nsCSSFrameConstructor::FindObjectData), COMPLEX_TAG_CREATE(fieldset, &nsCSSFrameConstructor::ConstructFieldSetFrame), { &nsGkAtoms::legend, FCDATA_DECL(FCDATA_ALLOW_BLOCK_STYLES, NS_NewLegendFrame) }, SIMPLE_TAG_CREATE(frameset, NS_NewHTMLFramesetFrame), SIMPLE_TAG_CREATE(iframe, NS_NewSubDocumentFrame), COMPLEX_TAG_CREATE(button, &nsCSSFrameConstructor::ConstructButtonFrame), - SIMPLE_TAG_CREATE(canvas, NS_NewHTMLCanvasFrame), + SIMPLE_TAG_CHAIN(canvas, nsCSSFrameConstructor::FindCanvasData), #if defined(MOZ_MEDIA) SIMPLE_TAG_CREATE(video, NS_NewHTMLVideoFrame), SIMPLE_TAG_CREATE(audio, NS_NewHTMLVideoFrame), #endif SIMPLE_TAG_CREATE(progress, NS_NewProgressFrame) }; return FindDataByTag(aTag, aElement, aStyleContext, sHTMLData, @@ -3633,16 +3633,30 @@ nsCSSFrameConstructor::FindObjectData(El NS_NewSubDocumentFrame) // Nothing for TYPE_NULL so we'll construct frames by display there }; return FindDataByInt((PRInt32)type, aElement, aStyleContext, sObjectData, ArrayLength(sObjectData)); } +/* static */ +const nsCSSFrameConstructor::FrameConstructionData* +nsCSSFrameConstructor::FindCanvasData(Element* aElement, + nsStyleContext* aStyleContext) +{ + if (!aElement->OwnerDoc()->IsScriptEnabled()) { + return nsnull; + } + + static const FrameConstructionData sCanvasData = + SIMPLE_FCDATA(NS_NewHTMLCanvasFrame); + return &sCanvasData; +} + nsresult nsCSSFrameConstructor::ConstructFrameFromItemInternal(FrameConstructionItem& aItem, nsFrameConstructorState& aState, nsIFrame* aParentFrame, nsFrameItems& aFrameItems) { const FrameConstructionData* data = aItem.mFCData; NS_ASSERTION(data, "Must have frame construction data");
--- a/layout/base/nsCSSFrameConstructor.h +++ b/layout/base/nsCSSFrameConstructor.h @@ -1196,16 +1196,18 @@ private: static const FrameConstructionData* FindImgData(Element* aElement, nsStyleContext* aStyleContext); static const FrameConstructionData* FindImgControlData(Element* aElement, nsStyleContext* aStyleContext); static const FrameConstructionData* FindInputData(Element* aElement, nsStyleContext* aStyleContext); static const FrameConstructionData* FindObjectData(Element* aElement, nsStyleContext* aStyleContext); + static const FrameConstructionData* + FindCanvasData(Element* aElement, nsStyleContext* aStyleContext); /* Construct a frame from the given FrameConstructionItem. This function will handle adding the frame to frame lists, processing children, setting the frame as the primary frame for the item's content, and so forth. @param aItem the FrameConstructionItem to use. @param aState the frame construction state to use. @param aParentFrame the frame to set as the parent of the