mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-25 03:05:34 +00:00
bd7c1e4e8c
This was a memory-saving optimization introduced as part of dependencies for bug 686875, but a more general system landed in bug 77999 for Gecko and https://github.com/servo/servo/pull/18509 for Servo. So now it's probably even a bit of a pessimization (though probably not huge), and given this causes bugs like bug 1462742, bug 1157592, and bug 1468145, and fishiness like the one pointed out in this bug, we may as well remove it. The performance impact of having to lookup through more rules should be minimal given the bloom filter and the rule hash optimizations. This makes me wonder whether we could remove the whole concept of on-demand UA sheets, since they've caused pain, for example, when the frontend people try loading <svg>s from NAC (since that triggers sheet loading from frame construction, which is not good). I'm not concerned about loading mathml.css and svg.css everywhere, though xul.css may not be as doable since it adds a bunch of attribute-dependent selectors. Though on the other hand I asserted in the xul.css code and we don't load it in content with <video> / <input type="date/time/etc"> and such, afaict, so maybe now that legacy addons are gone we can remove that sheet from content processes altogether. MozReview-Commit-ID: 9JCWNZj6BkT
64 lines
2.1 KiB
C++
64 lines
2.1 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 mozilla_dom_SVGForeignObjectElement_h
|
|
#define mozilla_dom_SVGForeignObjectElement_h
|
|
|
|
#include "mozilla/dom/SVGGraphicsElement.h"
|
|
#include "nsSVGLength2.h"
|
|
|
|
nsresult NS_NewSVGForeignObjectElement(nsIContent **aResult,
|
|
already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo);
|
|
|
|
class nsSVGForeignObjectFrame;
|
|
|
|
namespace mozilla {
|
|
namespace dom {
|
|
|
|
class SVGForeignObjectElement final : public SVGGraphicsElement
|
|
{
|
|
friend class ::nsSVGForeignObjectFrame;
|
|
|
|
protected:
|
|
friend nsresult (::NS_NewSVGForeignObjectElement(nsIContent **aResult,
|
|
already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo));
|
|
explicit SVGForeignObjectElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
|
|
virtual JSObject* WrapNode(JSContext *cx, JS::Handle<JSObject*> aGivenProto) override;
|
|
|
|
public:
|
|
// nsSVGElement specializations:
|
|
virtual gfxMatrix PrependLocalTransformsTo(
|
|
const gfxMatrix &aMatrix,
|
|
SVGTransformTypes aWhich = eAllTransforms) const override;
|
|
virtual bool HasValidDimensions() const override;
|
|
|
|
// nsIContent interface
|
|
NS_IMETHOD_(bool) IsAttributeMapped(const nsAtom* name) const override;
|
|
|
|
virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult,
|
|
bool aPreallocateChildren) const override;
|
|
|
|
// WebIDL
|
|
already_AddRefed<SVGAnimatedLength> X();
|
|
already_AddRefed<SVGAnimatedLength> Y();
|
|
already_AddRefed<SVGAnimatedLength> Width();
|
|
already_AddRefed<SVGAnimatedLength> Height();
|
|
|
|
protected:
|
|
|
|
virtual LengthAttributesInfo GetLengthInfo() override;
|
|
|
|
enum { ATTR_X, ATTR_Y, ATTR_WIDTH, ATTR_HEIGHT };
|
|
nsSVGLength2 mLengthAttributes[4];
|
|
static LengthInfo sLengthInfo[4];
|
|
};
|
|
|
|
} // namespace dom
|
|
} // namespace mozilla
|
|
|
|
#endif // mozilla_dom_SVGForeignObjectElement_h
|
|
|