mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-22 17:55:50 +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
62 lines
1.4 KiB
C++
62 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 mozilla_dom_SVGDocument_h
|
|
#define mozilla_dom_SVGDocument_h
|
|
|
|
#include "mozilla/Attributes.h"
|
|
#include "mozilla/dom/XMLDocument.h"
|
|
|
|
class nsSVGElement;
|
|
|
|
namespace mozilla {
|
|
|
|
class SVGContextPaint;
|
|
|
|
namespace dom {
|
|
|
|
class SVGForeignObjectElement;
|
|
|
|
class SVGDocument final : public XMLDocument
|
|
{
|
|
public:
|
|
SVGDocument()
|
|
: XMLDocument("image/svg+xml")
|
|
{
|
|
mType = eSVG;
|
|
}
|
|
|
|
virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult,
|
|
bool aPreallocateChildren) const override;
|
|
|
|
void SetCurrentContextPaint(const SVGContextPaint* aContextPaint)
|
|
{
|
|
mCurrentContextPaint = aContextPaint;
|
|
}
|
|
|
|
const SVGContextPaint* GetCurrentContextPaint() const
|
|
{
|
|
return mCurrentContextPaint;
|
|
}
|
|
|
|
private:
|
|
|
|
// This is maintained by AutoSetRestoreSVGContextPaint.
|
|
const SVGContextPaint* mCurrentContextPaint = nullptr;
|
|
};
|
|
|
|
} // namespace dom
|
|
} // namespace mozilla
|
|
|
|
inline mozilla::dom::SVGDocument*
|
|
nsIDocument::AsSVGDocument()
|
|
{
|
|
MOZ_ASSERT(IsSVGDocument());
|
|
return static_cast<mozilla::dom::SVGDocument*>(this);
|
|
}
|
|
|
|
#endif // mozilla_dom_SVGDocument_h
|