mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-26 19:55:39 +00:00
Bug 1444580: Devirtualize the responsive content stuff. r=smaug
MozReview-Commit-ID: LCz01o31RoC
This commit is contained in:
parent
cde280f7f4
commit
87f132ff06
@ -9969,33 +9969,14 @@ nsDocument::GetPlugins(nsTArray<nsIObjectLoadingContent*>& aPlugins)
|
||||
EnumerateSubDocuments(AllSubDocumentPluginEnum, &aPlugins);
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsDocument::AddResponsiveContent(nsIContent* aContent)
|
||||
{
|
||||
MOZ_ASSERT(aContent);
|
||||
MOZ_ASSERT(aContent->IsHTMLElement(nsGkAtoms::img));
|
||||
mResponsiveContent.PutEntry(aContent);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
nsDocument::RemoveResponsiveContent(nsIContent* aContent)
|
||||
{
|
||||
MOZ_ASSERT(aContent);
|
||||
mResponsiveContent.RemoveEntry(aContent);
|
||||
}
|
||||
|
||||
void
|
||||
nsDocument::NotifyMediaFeatureValuesChanged()
|
||||
nsIDocument::NotifyMediaFeatureValuesChanged()
|
||||
{
|
||||
for (auto iter = mResponsiveContent.ConstIter(); !iter.Done();
|
||||
iter.Next()) {
|
||||
nsCOMPtr<nsIContent> content = iter.Get()->GetKey();
|
||||
if (content->IsHTMLElement(nsGkAtoms::img)) {
|
||||
auto* imageElement = static_cast<HTMLImageElement*>(content.get());
|
||||
RefPtr<HTMLImageElement> imageElement = iter.Get()->GetKey();
|
||||
imageElement->MediaFeatureValuesChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
already_AddRefed<Touch>
|
||||
|
@ -646,16 +646,6 @@ public:
|
||||
// the frame and any subframes.
|
||||
virtual void GetPlugins(nsTArray<nsIObjectLoadingContent*>& aPlugins) override;
|
||||
|
||||
// Adds an element to mResponsiveContent when the element is
|
||||
// added to the tree.
|
||||
virtual nsresult AddResponsiveContent(nsIContent* aContent) override;
|
||||
// Removes an element from mResponsiveContent when the element is
|
||||
// removed from the tree.
|
||||
virtual void RemoveResponsiveContent(nsIContent* aContent) override;
|
||||
// Notifies any responsive content added by AddResponsiveContent upon media
|
||||
// features values changing.
|
||||
virtual void NotifyMediaFeatureValuesChanged() override;
|
||||
|
||||
virtual nsresult GetStateObject(nsIVariant** aResult) override;
|
||||
|
||||
// Returns the size of the mBlockedTrackingNodes array. (nsIDocument.h)
|
||||
@ -837,9 +827,6 @@ private:
|
||||
uint32_t mAsyncOnloadBlockCount;
|
||||
nsCOMPtr<nsIRequest> mOnloadBlocker;
|
||||
|
||||
// A set of responsive images keyed by address pointer.
|
||||
nsTHashtable< nsPtrHashKey<nsIContent> > mResponsiveContent;
|
||||
|
||||
nsTArray<RefPtr<nsFrameLoader> > mInitializableFrameLoaders;
|
||||
nsTArray<nsCOMPtr<nsIRunnable> > mFrameLoaderFinalizers;
|
||||
RefPtr<nsRunnableMethod<nsDocument> > mFrameLoaderRunner;
|
||||
|
@ -157,6 +157,7 @@ class FrameRequestCallback;
|
||||
struct FullscreenRequest;
|
||||
class ImageTracker;
|
||||
class HTMLBodyElement;
|
||||
class HTMLImageElement;
|
||||
struct LifecycleCallbackArgs;
|
||||
class Link;
|
||||
class Location;
|
||||
@ -2785,9 +2786,25 @@ public:
|
||||
virtual void RemovePlugin(nsIObjectLoadingContent* aPlugin) = 0;
|
||||
virtual void GetPlugins(nsTArray<nsIObjectLoadingContent*>& aPlugins) = 0;
|
||||
|
||||
virtual nsresult AddResponsiveContent(nsIContent* aContent) = 0;
|
||||
virtual void RemoveResponsiveContent(nsIContent* aContent) = 0;
|
||||
virtual void NotifyMediaFeatureValuesChanged() = 0;
|
||||
// Adds an element to mResponsiveContent when the element is
|
||||
// added to the tree.
|
||||
void AddResponsiveContent(mozilla::dom::HTMLImageElement* aContent)
|
||||
{
|
||||
MOZ_ASSERT(aContent);
|
||||
mResponsiveContent.PutEntry(aContent);
|
||||
}
|
||||
|
||||
// Removes an element from mResponsiveContent when the element is
|
||||
// removed from the tree.
|
||||
void RemoveResponsiveContent(mozilla::dom::HTMLImageElement* aContent)
|
||||
{
|
||||
MOZ_ASSERT(aContent);
|
||||
mResponsiveContent.RemoveEntry(aContent);
|
||||
}
|
||||
|
||||
// Notifies any responsive content added by AddResponsiveContent upon media
|
||||
// features values changing.
|
||||
void NotifyMediaFeatureValuesChanged();
|
||||
|
||||
virtual nsresult GetStateObject(nsIVariant** aResult) = 0;
|
||||
|
||||
@ -4056,6 +4073,9 @@ protected:
|
||||
|
||||
RefPtr<nsContentList> mImageMaps;
|
||||
|
||||
// A set of responsive images keyed by address pointer.
|
||||
nsTHashtable<nsPtrHashKey<mozilla::dom::HTMLImageElement>> mResponsiveContent;
|
||||
|
||||
public:
|
||||
js::ExpandoAndGeneration mExpandoAndGeneration;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user