Bug 1347758 - part2 : remove add/removeMediaContent() and related codes. draft
authorAlastor Wu <alwu@mozilla.com>
Fri, 24 Mar 2017 14:43:40 +0800
changeset 504485 763e82a4003a646e35d0f6592cdadba1ad878283
parent 504484 c8a4cd52480f7b7b895284cdfa0f2146560eedd8
child 504486 886020b5f8987cc097f264df2243a3e19a7a7368
push id50804
push useralwu@mozilla.com
push dateFri, 24 Mar 2017 09:03:46 +0000
bugs1347758
milestone55.0a1
Bug 1347758 - part2 : remove add/removeMediaContent() and related codes. Since the window would know when need to resume the media, we don't need the add/removeMediaContent() anymore. MozReview-Commit-ID: F9MSiqqnOiV
dom/base/nsDocument.cpp
dom/base/nsDocument.h
dom/base/nsIDocument.h
dom/html/HTMLMediaElement.cpp
--- a/dom/base/nsDocument.cpp
+++ b/dom/base/nsDocument.cpp
@@ -10321,32 +10321,16 @@ nsDocument::AddResponsiveContent(nsICont
 void
 nsDocument::RemoveResponsiveContent(nsIContent* aContent)
 {
   MOZ_ASSERT(aContent);
   mResponsiveContent.RemoveEntry(aContent);
 }
 
 void
-nsDocument::AddMediaContent(nsIContent* aContent)
-{
-  MOZ_ASSERT(aContent);
-  MOZ_ASSERT(aContent->IsHTMLElement(nsGkAtoms::video) ||
-             aContent->IsHTMLElement(nsGkAtoms::audio));
-  mMediaContent.PutEntry(aContent);
-}
-
-void
-nsDocument::RemoveMediaContent(nsIContent* aContent)
-{
-  MOZ_ASSERT(aContent);
-  mMediaContent.RemoveEntry(aContent);
-}
-
-void
 nsDocument::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());
       imageElement->MediaFeatureValuesChanged();
--- a/dom/base/nsDocument.h
+++ b/dom/base/nsDocument.h
@@ -1017,23 +1017,16 @@ public:
   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;
 
-  // Adds an element to mMediaContent when the element is added to the tree.
-  virtual void AddMediaContent(nsIContent* aContent) override;
-
-  // Removes an element from mMediaContent when the element is removed from
-  // the tree.
-  virtual void RemoveMediaContent(nsIContent* aContent) override;
-
   virtual nsresult GetStateObject(nsIVariant** aResult) override;
 
   virtual nsDOMNavigationTiming* GetNavigationTiming() const override;
   virtual nsresult SetNavigationTiming(nsDOMNavigationTiming* aTiming) override;
 
   virtual Element* FindImageMap(const nsAString& aNormalizedMapName) override;
 
   virtual nsTArray<Element*> GetFullscreenStack() const override;
@@ -1576,19 +1569,16 @@ private:
   // state so we can provide useful assertions to consumers of ForgetLink and
   // AddStyleRelevantLink.
   bool mStyledLinksCleared;
 #endif
 
   // A set of responsive images keyed by address pointer.
   nsTHashtable< nsPtrHashKey<nsIContent> > mResponsiveContent;
 
-  // A set of media elements keyed by address pointer.
-  nsTHashtable<nsPtrHashKey<nsIContent>> mMediaContent;
-
   // Member to store out last-selected stylesheet set.
   nsString mLastStyleSheetSet;
 
   nsTArray<RefPtr<nsFrameLoader> > mInitializableFrameLoaders;
   nsTArray<nsCOMPtr<nsIRunnable> > mFrameLoaderFinalizers;
   RefPtr<nsRunnableMethod<nsDocument> > mFrameLoaderRunner;
 
   nsCOMPtr<nsIRunnable> mMaybeEndOutermostXBLUpdateRunner;
--- a/dom/base/nsIDocument.h
+++ b/dom/base/nsIDocument.h
@@ -2436,19 +2436,16 @@ public:
   virtual nsresult AddPlugin(nsIObjectLoadingContent* aPlugin) = 0;
   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;
 
-  virtual void AddMediaContent(nsIContent* aContent) = 0;
-  virtual void RemoveMediaContent(nsIContent* aContent) = 0;
-
   virtual nsresult GetStateObject(nsIVariant** aResult) = 0;
 
   virtual nsDOMNavigationTiming* GetNavigationTiming() const = 0;
 
   virtual nsresult SetNavigationTiming(nsDOMNavigationTiming* aTiming) = 0;
 
   virtual Element* FindImageMap(const nsAString& aNormalizedMapName) = 0;
 
--- a/dom/html/HTMLMediaElement.cpp
+++ b/dom/html/HTMLMediaElement.cpp
@@ -4304,17 +4304,16 @@ nsresult HTMLMediaElement::BindToTree(ns
 
   if (aDocument) {
     mAutoplayEnabled =
       IsAutoplayEnabled() && (!aDocument || !aDocument->IsStaticDocument()) &&
       !IsEditable();
     // The preload action depends on the value of the autoplay attribute.
     // It's value may have changed, so update it.
     UpdatePreloadAction();
-    aDocument->AddMediaContent(this);
   }
 
   NotifyDecoderActivityChanges();
 
   return rv;
 }
 
 /* static */
@@ -4537,19 +4536,16 @@ HTMLMediaElement::ReportTelemetry()
   }
 }
 
 void HTMLMediaElement::UnbindFromTree(bool aDeep,
                                       bool aNullParent)
 {
   mUnboundFromTree = true;
   mVisibilityState = Visibility::UNTRACKED;
-  if (OwnerDoc()) {
-    OwnerDoc()->RemoveMediaContent(this);
-  }
 
   nsGenericHTMLElement::UnbindFromTree(aDeep, aNullParent);
 
   MOZ_ASSERT(IsHidden());
   NotifyDecoderActivityChanges();
 
   RefPtr<HTMLMediaElement> self(this);
   nsCOMPtr<nsIRunnable> task = NS_NewRunnableFunction([self] () {