forked from mirrors/gecko-dev
		
	 68f214df2a
			
		
	
	
		68f214df2a
		
	
	
	
	
		
			
			Summary: This fixes a couple fuzz bugs and prevents special-casing <svg:use> even more in bug 1431255. Unfortunately not as many hacks went away as I'd have hoped, since we still need to match document rules, see the linked SVGWG issues. But blocks_ancestor_combinators goes away, which is nice since it's on a very hot path. Test Plan: WPT for style invalidation, covered by existing tests otherwise. Reviewers: heycam Tags: #secure-revision Bug #: 1450250 Differential Revision: https://phabricator.services.mozilla.com/D2154 MozReview-Commit-ID: C4mthjoSNFh
		
			
				
	
	
		
			53 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 | |
| /* vim: set ts=8 sts=2 et sw=2 tw=80: */
 | |
| /* 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/. */
 | |
| 
 | |
| #ifndef __NS_SVGUSEFRAME_H__
 | |
| #define __NS_SVGUSEFRAME_H__
 | |
| 
 | |
| // Keep in (case-insensitive) order:
 | |
| #include "nsSVGGFrame.h"
 | |
| 
 | |
| class nsSVGUseFrame final
 | |
|   : public nsSVGGFrame
 | |
| {
 | |
|   friend nsIFrame* NS_NewSVGUseFrame(nsIPresShell* aPresShell,
 | |
|                                      ComputedStyle* aStyle);
 | |
| 
 | |
| protected:
 | |
|   explicit nsSVGUseFrame(ComputedStyle* aStyle)
 | |
|     : nsSVGGFrame(aStyle, kClassID)
 | |
|     , mHasValidDimensions(true)
 | |
|   {
 | |
|   }
 | |
| 
 | |
| public:
 | |
|   NS_DECL_FRAMEARENA_HELPERS(nsSVGUseFrame)
 | |
| 
 | |
|   // nsIFrame interface:
 | |
|   void Init(nsIContent* aContent,
 | |
|             nsContainerFrame* aParent,
 | |
|             nsIFrame* aPrevInFlow) override;
 | |
| 
 | |
|   nsresult AttributeChanged(int32_t aNameSpaceID,
 | |
|                             nsAtom* aAttribute,
 | |
|                             int32_t aModType) override;
 | |
| 
 | |
| #ifdef DEBUG_FRAME_DUMP
 | |
|   nsresult GetFrameName(nsAString& aResult) const override
 | |
|   {
 | |
|     return MakeFrameName(NS_LITERAL_STRING("SVGUse"), aResult);
 | |
|   }
 | |
| #endif
 | |
| 
 | |
|   // nsSVGDisplayableFrame interface:
 | |
|   void ReflowSVG() override;
 | |
|   void NotifySVGChanged(uint32_t aFlags) override;
 | |
| 
 | |
| private:
 | |
|   bool mHasValidDimensions;
 | |
| };
 | |
| 
 | |
| #endif // __NS_SVGUSEFRAME_H__
 |