Backed out 2 changesets (bug 1215699, bug 1209994) for web platform failures. r=backout
authorSebastian Hengst <archaeopteryx@coole-files.de>
Sat, 24 Oct 2015 15:38:03 +0200
changeset 304557 a59b9742c81e77a54ee8c7e726f45113553d190d
parent 304556 65dd5a0d18aed3346670d8e3b0f2db60c7fbf950
child 304558 28db7cfb2e4a7272be5e4978dd597e040f4bb2ed
push id1001
push userraliiev@mozilla.com
push dateMon, 18 Jan 2016 19:06:03 +0000
treeherdermozilla-release@8b89261f3ac4 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersbackout
bugs1215699, 1209994
milestone44.0a1
backs outa8adf1f9d366b936e1f25dbd3deb7a83b8cfa0cd
f5ed98fdc16eb2395b41f5a3f5d91076e4705fc0
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Backed out 2 changesets (bug 1215699, bug 1209994) for web platform failures. r=backout Backed out changeset a8adf1f9d366 (bug 1209994) Backed out changeset f5ed98fdc16e (bug 1215699)
dom/media/GraphDriver.cpp
dom/media/GraphDriver.h
dom/media/MediaStreamGraph.cpp
dom/media/MediaStreamGraphImpl.h
layout/generic/nsHTMLReflowState.cpp
layout/reftests/bugs/1209994-1-ref.html
layout/reftests/bugs/1209994-1.html
layout/reftests/bugs/1209994-2-ref.html
layout/reftests/bugs/1209994-2.html
layout/reftests/bugs/1209994-3-ref.html
layout/reftests/bugs/1209994-3.html
layout/reftests/bugs/1209994-4-ref.html
layout/reftests/bugs/1209994-4.html
layout/reftests/bugs/reftest.list
--- a/dom/media/GraphDriver.cpp
+++ b/dom/media/GraphDriver.cpp
@@ -496,21 +496,21 @@ StreamAndPromiseForOperation::StreamAndP
                                           dom::AudioContextOperation aOperation)
   : mStream(aStream)
   , mPromise(aPromise)
   , mOperation(aOperation)
 {
   // MOZ_ASSERT(aPromise);
 }
 
-AudioCallbackDriver::AudioCallbackDriver(MediaStreamGraphImpl* aGraphImpl)
+AudioCallbackDriver::AudioCallbackDriver(MediaStreamGraphImpl* aGraphImpl, dom::AudioChannel aChannel)
   : GraphDriver(aGraphImpl)
   , mIterationDurationMS(MEDIA_GRAPH_TARGET_PERIOD_MS)
   , mStarted(false)
-  , mAudioChannel(aGraphImpl->AudioChannel())
+  , mAudioChannel(aChannel)
   , mInCallback(false)
   , mPauseRequested(false)
 #ifdef XP_MACOSX
   , mCallbackReceivedWhileSwitching(0)
 #endif
 {
   STREAM_LOG(LogLevel::Debug, ("AudioCallbackDriver ctor for graph %p", aGraphImpl));
 }
--- a/dom/media/GraphDriver.h
+++ b/dom/media/GraphDriver.h
@@ -324,17 +324,18 @@ enum AsyncCubebOperation {
  *   the number of frames asked for by the callback. Since for the Web Audio
  *   API, we have to do block processing at 128 frames per block, we need to
  *   keep a little spill buffer to store the extra frames.
  */
 class AudioCallbackDriver : public GraphDriver,
                             public MixerCallbackReceiver
 {
 public:
-  explicit AudioCallbackDriver(MediaStreamGraphImpl* aGraphImpl);
+  explicit AudioCallbackDriver(MediaStreamGraphImpl* aGraphImpl,
+                               dom::AudioChannel aChannel = dom::AudioChannel::Normal);
   virtual ~AudioCallbackDriver();
 
   virtual void Destroy() override;
   virtual void Start() override;
   virtual void Stop() override;
   virtual void Resume() override;
   virtual void Revive() override;
   virtual void WaitForNextIteration() override;
--- a/dom/media/MediaStreamGraph.cpp
+++ b/dom/media/MediaStreamGraph.cpp
@@ -1404,19 +1404,19 @@ MediaStreamGraphImpl::RunInStableState(b
         // to shut down, and we don't want to do that in a stable state handler.
         mLifecycleState = LIFECYCLE_WAITING_FOR_THREAD_SHUTDOWN;
         LIFECYCLE_LOG("Sending MediaStreamGraphShutDownRunnable %p", this);
         nsCOMPtr<nsIRunnable> event = new MediaStreamGraphShutDownRunnable(this );
         NS_DispatchToMainThread(event.forget());
 
         LIFECYCLE_LOG("Disconnecting MediaStreamGraph %p", this);
         MediaStreamGraphImpl* graph;
-        if (gGraphs.Get(uint32_t(mAudioChannel), &graph) && graph == this) {
+        if (gGraphs.Get(mAudioChannel, &graph) && graph == this) {
           // null out gGraph if that's the graph being shut down
-          gGraphs.Remove(uint32_t(mAudioChannel));
+          gGraphs.Remove(mAudioChannel);
         }
       }
     } else {
       if (mLifecycleState <= LIFECYCLE_WAITING_FOR_MAIN_THREAD_CLEANUP) {
         MessageBlock* block = mBackMessageQueue.AppendElement();
         block->mMessages.SwapElements(mCurrentTaskMessageQueue);
         EnsureNextIterationLocked();
       }
@@ -1561,18 +1561,18 @@ MediaStreamGraphImpl::AppendMessage(Cont
 #ifdef DEBUG
     mCanRunMessagesSynchronously = true;
 #endif
     delete aMessage;
     if (IsEmpty() &&
         mLifecycleState >= LIFECYCLE_WAITING_FOR_STREAM_DESTRUCTION) {
 
       MediaStreamGraphImpl* graph;
-      if (gGraphs.Get(uint32_t(mAudioChannel), &graph) && graph == this) {
-        gGraphs.Remove(uint32_t(mAudioChannel));
+      if (gGraphs.Get(mAudioChannel, &graph) && graph == this) {
+        gGraphs.Remove(mAudioChannel);
       }
 
       Destroy();
     }
     return;
   }
 
   mCurrentTaskMessageQueue.AppendElement(aMessage);
@@ -1648,17 +1648,17 @@ MediaStream::Graph()
   return mGraph;
 }
 
 void
 MediaStream::SetGraphImpl(MediaStreamGraphImpl* aGraph)
 {
   MOZ_ASSERT(!mGraph, "Should only be called once");
   mGraph = aGraph;
-  mAudioChannelType = aGraph->AudioChannel();
+  mAudioChannelType = static_cast<AudioChannel>(aGraph->AudioChannel());
   mBuffer.InitGraphRate(aGraph->GraphRate());
 }
 
 void
 MediaStream::SetGraphImpl(MediaStreamGraph* aGraph)
 {
   MediaStreamGraphImpl* graph = static_cast<MediaStreamGraphImpl*>(aGraph);
   SetGraphImpl(graph);
@@ -2562,25 +2562,25 @@ MediaStreamGraphImpl::MediaStreamGraphIm
 #endif
   , mMemoryReportMonitor("MSGIMemory")
   , mSelfRef(this)
   , mAudioStreamSizes()
   , mNeedsMemoryReport(false)
 #ifdef DEBUG
   , mCanRunMessagesSynchronously(false)
 #endif
-  , mAudioChannel(aChannel)
+  , mAudioChannel(static_cast<uint32_t>(aChannel))
 {
   if (!gMediaStreamGraphLog) {
     gMediaStreamGraphLog = PR_NewLogModule("MediaStreamGraph");
   }
 
   if (mRealtime) {
     if (aDriverRequested == AUDIO_THREAD_DRIVER) {
-      AudioCallbackDriver* driver = new AudioCallbackDriver(this);
+      AudioCallbackDriver* driver = new AudioCallbackDriver(this, aChannel);
       mDriver = driver;
       mMixer.AddCallback(driver);
     } else {
       mDriver = new SystemClockDriver(this);
     }
   } else {
     mDriver = new OfflineClockDriver(this, MEDIA_GRAPH_TARGET_PERIOD_MS);
   }
@@ -3077,17 +3077,17 @@ MediaStreamGraph::ApplyAudioContextOpera
 }
 
 bool
 MediaStreamGraph::IsNonRealtime() const
 {
   const MediaStreamGraphImpl* impl = static_cast<const MediaStreamGraphImpl*>(this);
   MediaStreamGraphImpl* graph;
 
-  return !gGraphs.Get(uint32_t(impl->AudioChannel()), &graph) || graph != impl;
+  return !gGraphs.Get(impl->AudioChannel(), &graph) || graph != impl;
 }
 
 void
 MediaStreamGraph::StartNonRealtimeProcessing(uint32_t aTicksToProcess)
 {
   NS_ASSERTION(NS_IsMainThread(), "main thread only");
 
   MediaStreamGraphImpl* graph = static_cast<MediaStreamGraphImpl*>(this);
--- a/dom/media/MediaStreamGraphImpl.h
+++ b/dom/media/MediaStreamGraphImpl.h
@@ -712,17 +712,17 @@ public:
    * Hold a ref to the Latency logger
    */
   RefPtr<AsyncLatencyLogger> mLatencyLog;
   AudioMixer mMixer;
 #ifdef MOZ_WEBRTC
   RefPtr<AudioOutputObserver> mFarendObserverRef;
 #endif
 
-  dom::AudioChannel AudioChannel() const { return mAudioChannel; }
+  uint32_t AudioChannel() const { return mAudioChannel; }
 
 private:
   virtual ~MediaStreamGraphImpl();
 
   MOZ_DEFINE_MALLOC_SIZE_OF(MallocSizeOf)
 
   /**
    * Used to signal that a memory report has been requested.
@@ -757,14 +757,16 @@ private:
 
 #ifdef DEBUG
   /**
    * Used to assert when AppendMessage() runs ControlMessages synchronously.
    */
   bool mCanRunMessagesSynchronously;
 #endif
 
-  dom::AudioChannel mAudioChannel;
+  // We use uint32_t instead AudioChannel because this is just used as key for
+  // the hashtable gGraphs.
+  uint32_t mAudioChannel;
 };
 
 } // namespace mozilla
 
 #endif /* MEDIASTREAMGRAPHIMPL_H_ */
--- a/layout/generic/nsHTMLReflowState.cpp
+++ b/layout/generic/nsHTMLReflowState.cpp
@@ -615,17 +615,17 @@ nsHTMLReflowState::InitResizeFlags(nsPre
       (mFlags.mSpecialBSizeReflow ||
        (frame->FirstInFlow()->GetStateBits() &
          NS_TABLE_CELL_HAD_SPECIAL_REFLOW)) &&
       (frame->GetStateBits() & NS_FRAME_CONTAINS_RELATIVE_BSIZE)) {
     // Need to set the bit on the cell so that
     // mCBReflowState->IsBResize() is set correctly below when
     // reflowing descendant.
     SetBResize(true);
-  } else if (mCBReflowState && frame->IsBlockWrapper()) {
+  } else if (mCBReflowState && !nsLayoutUtils::IsNonWrapperBlock(frame)) {
     // XXX Is this problematic for relatively positioned inlines acting
     // as containing block for absolutely positioned elements?
     // Possibly; in that case we should at least be checking
     // NS_SUBTREE_DIRTY, I'd think.
     SetBResize(mCBReflowState->IsBResize());
   } else if (ComputedBSize() == NS_AUTOHEIGHT) {
     if (eCompatibility_NavQuirks == aPresContext->CompatibilityMode() &&
         mCBReflowState) {
deleted file mode 100644
--- a/layout/reftests/bugs/1209994-1-ref.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE html>
-<style>
-div {
-  height: 240px;
-}
-#f {
-  height: auto;
-  overflow: hidden;
-  padding: 0;
-  border: none;
-}
-</style>
-There should be a visible fieldset below:
-<div>
-  <fieldset id="f">This is fieldset</fieldset>
-</div>
-
deleted file mode 100644
--- a/layout/reftests/bugs/1209994-1.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html>
-<style>
-div {
-  height: 240px;
-}
-#f {
-  height: 0;
-  overflow: hidden;
-  padding: 0;
-  border: none;
-}
-</style>
-There should be a visible fieldset below:
-<div>
-  <fieldset id="f">This is fieldset</fieldset>
-</div>
-<script>
-h = document.body.clientHeight;
-f.style.height = "auto";
-</script>
-
deleted file mode 100644
--- a/layout/reftests/bugs/1209994-2-ref.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE html>
-<style>
-div {
-  height: 240px;
-}
-#f {
-  height: auto;
-  overflow: hidden;
-  padding: 0;
-  border: none;
-}
-</style>
-There should be a visible button below:
-<div>
-  <button id="f">This is button</button>
-</div>
-
deleted file mode 100644
--- a/layout/reftests/bugs/1209994-2.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html>
-<style>
-div {
-  height: 240px;
-}
-#f {
-  height: 0;
-  overflow: hidden;
-  padding: 0;
-  border: none;
-}
-</style>
-There should be a visible button below:
-<div>
-  <button id="f">This is button</button>
-</div>
-<script>
-h = document.body.clientHeight;
-f.style.height = "auto";
-</script>
-
deleted file mode 100644
--- a/layout/reftests/bugs/1209994-3-ref.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE html>
-<style>
-div {
-  height: 240px;
-}
-#f {
-  height: auto;
-  overflow: hidden;
-  padding: 0;
-  border: none;
-}
-</style>
-There should be a visible table below:
-<div>
-  <table id="f">This is a table</table>
-</div>
-
deleted file mode 100644
--- a/layout/reftests/bugs/1209994-3.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html>
-<style>
-div {
-  height: 240px;
-}
-#f {
-  height: 0;
-  overflow: hidden;
-  padding: 0;
-  border: none;
-}
-</style>
-There should be a visible table below:
-<div>
-  <table id="f">This is a table</table>
-</div>
-<script>
-h = document.body.clientHeight;
-f.style.height = "auto";
-</script>
-
deleted file mode 100644
--- a/layout/reftests/bugs/1209994-4-ref.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE html>
-<style>
-div {
-  height: 240px;
-}
-#f {
-  height: auto;
-  overflow: hidden;
-  padding: 0;
-  border: none;
-}
-</style>
-There should be a visible select below:
-<div>
-  <select id="f"><option>This is a select</option></select>
-</div>
-
deleted file mode 100644
--- a/layout/reftests/bugs/1209994-4.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html>
-<style>
-div {
-  height: 240px;
-}
-#f {
-  height: 0;
-  overflow: hidden;
-  padding: 0;
-  border: none;
-}
-</style>
-There should be a visible select below:
-<div>
-  <select id="f"><option>This is a select</option></select>
-</div>
-<script>
-h = document.body.clientHeight;
-f.style.height = "auto";
-</script>
-
--- a/layout/reftests/bugs/reftest.list
+++ b/layout/reftests/bugs/reftest.list
@@ -1932,12 +1932,8 @@ skip-if(B2G||Mulet) == 1150021-1.xul 115
 fuzzy(1,74) fuzzy-if(gtkWidget,6,79) == 1174332-1.html 1174332-1-ref.html
 == 1179078-1.html 1179078-1-ref.html
 == 1179288-1.html 1179288-1-ref.html
 == 1190635-1.html 1190635-1-ref.html
 == 1202512-1.html 1202512-1-ref.html
 == 1202512-2.html 1202512-2-ref.html
 != 1207326-1.html about:blank
 == 1209603-1.html 1209603-1-ref.html
-== 1209994-1.html 1209994-1-ref.html
-== 1209994-2.html 1209994-2-ref.html
-== 1209994-3.html 1209994-3-ref.html
-== 1209994-4.html 1209994-4-ref.html