From 13eacee0ab3ad5a3120e7e732f6c4850f9a7bff7 Mon Sep 17 00:00:00 2001
From: Moonchild <moonchild@palemoon.org>
Date: Thu, 23 Apr 2020 16:48:48 +0000
Subject: Issue #80 - De-unify dom/xhr

---
 dom/xhr/XMLHttpRequestString.cpp | 91 --------------------------------------
 dom/xhr/XMLHttpRequestString.h   | 95 ++++++++++++++++++++++++++++++++++++++++
 dom/xhr/XMLHttpRequestWorker.cpp |  2 +
 dom/xhr/moz.build                |  2 +-
 4 files changed, 98 insertions(+), 92 deletions(-)

(limited to 'dom/xhr')

diff --git a/dom/xhr/XMLHttpRequestString.cpp b/dom/xhr/XMLHttpRequestString.cpp
index c668b94f6..c2bde5e0e 100644
--- a/dom/xhr/XMLHttpRequestString.cpp
+++ b/dom/xhr/XMLHttpRequestString.cpp
@@ -12,97 +12,6 @@
 namespace mozilla {
 namespace dom {
 
-class XMLHttpRequestStringBuffer final
-{
-  friend class XMLHttpRequestStringWriterHelper;
-  friend class XMLHttpRequestStringSnapshotReaderHelper;
-
-public:
-  NS_INLINE_DECL_THREADSAFE_REFCOUNTING(XMLHttpRequestStringBuffer)
-  NS_DECL_OWNINGTHREAD
-
-  XMLHttpRequestStringBuffer()
-    : mMutex("XMLHttpRequestStringBuffer::mMutex")
-  {
-  }
-
-  uint32_t
-  Length()
-  {
-    MutexAutoLock lock(mMutex);
-    return mData.Length();
-  }
-
-  uint32_t
-  UnsafeLength() const
-  {
-    return mData.Length();
-  }
-
-  void
-  Append(const nsAString& aString)
-  {
-    NS_ASSERT_OWNINGTHREAD(XMLHttpRequestStringBuffer);
-
-    MutexAutoLock lock(mMutex);
-    mData.Append(aString);
-  }
-
-  MOZ_MUST_USE bool
-  GetAsString(nsAString& aString)
-  {
-    MutexAutoLock lock(mMutex);
-    return aString.Assign(mData, mozilla::fallible);
-  }
-
-  size_t
-  SizeOfThis(MallocSizeOf aMallocSizeOf) const
-  {
-    return mData.SizeOfExcludingThisIfUnshared(aMallocSizeOf);
-  }
-
-  MOZ_MUST_USE bool
-  GetAsString(DOMString& aString, uint32_t aLength)
-  {
-    MutexAutoLock lock(mMutex);
-    MOZ_ASSERT(aLength <= mData.Length());
-    nsStringBuffer* buf = nsStringBuffer::FromString(mData);
-    if (buf) {
-      // We have to use SetEphemeralStringBuffer, because once we release our
-      // mutex mData can get mutated from some other thread while the DOMString
-      // is still alive.
-      aString.SetEphemeralStringBuffer(buf, aLength);
-      return true;
-    }
-
-    // We can get here if mData is empty.  In that case it won't have an
-    // nsStringBuffer....
-    MOZ_ASSERT(mData.IsEmpty());
-    return aString.AsAString().Assign(mData.BeginReading(), aLength,
-                                      mozilla::fallible);
-  }
-
-  void
-  CreateSnapshot(XMLHttpRequestStringSnapshot& aSnapshot)
-  {
-    MutexAutoLock lock(mMutex);
-    aSnapshot.Set(this, mData.Length());
-  }
-
-private:
-  ~XMLHttpRequestStringBuffer()
-  {}
-
-  nsString& UnsafeData()
-  {
-    return mData;
-  }
-
-  Mutex mMutex;
-
-  // The following member variable is protected by mutex.
-  nsString mData;
-};
 
 // ---------------------------------------------------------------------------
 // XMLHttpRequestString
diff --git a/dom/xhr/XMLHttpRequestString.h b/dom/xhr/XMLHttpRequestString.h
index b6b12483f..5709c1aa2 100644
--- a/dom/xhr/XMLHttpRequestString.h
+++ b/dom/xhr/XMLHttpRequestString.h
@@ -7,6 +7,9 @@
 #ifndef mozilla_dom_XMLHttpRequestString_h
 #define mozilla_dom_XMLHttpRequestString_h
 
+#include "mozilla/Mutex.h"
+#include "mozilla/RefPtr.h"
+#include "mozilla/dom/DOMString.h"
 #include "nsString.h"
 
 namespace mozilla {
@@ -155,6 +158,98 @@ private:
   MutexAutoLock mLock;
 };
 
+class XMLHttpRequestStringBuffer final
+{
+  friend class XMLHttpRequestStringWriterHelper;
+  friend class XMLHttpRequestStringSnapshotReaderHelper;
+
+public:
+  NS_INLINE_DECL_THREADSAFE_REFCOUNTING(XMLHttpRequestStringBuffer)
+  NS_DECL_OWNINGTHREAD
+
+  XMLHttpRequestStringBuffer()
+    : mMutex("XMLHttpRequestStringBuffer::mMutex")
+  {
+  }
+
+  uint32_t
+  Length()
+  {
+    MutexAutoLock lock(mMutex);
+    return mData.Length();
+  }
+
+  uint32_t
+  UnsafeLength() const
+  {
+    return mData.Length();
+  }
+
+  void
+  Append(const nsAString& aString)
+  {
+    NS_ASSERT_OWNINGTHREAD(XMLHttpRequestStringBuffer);
+
+    MutexAutoLock lock(mMutex);
+    mData.Append(aString);
+  }
+
+  MOZ_MUST_USE bool
+  GetAsString(nsAString& aString)
+  {
+    MutexAutoLock lock(mMutex);
+    return aString.Assign(mData, mozilla::fallible);
+  }
+
+  size_t
+  SizeOfThis(MallocSizeOf aMallocSizeOf) const
+  {
+    return mData.SizeOfExcludingThisIfUnshared(aMallocSizeOf);
+  }
+
+  MOZ_MUST_USE bool
+  GetAsString(DOMString& aString, uint32_t aLength)
+  {
+    MutexAutoLock lock(mMutex);
+    MOZ_ASSERT(aLength <= mData.Length());
+    nsStringBuffer* buf = nsStringBuffer::FromString(mData);
+    if (buf) {
+      // We have to use SetEphemeralStringBuffer, because once we release our
+      // mutex mData can get mutated from some other thread while the DOMString
+      // is still alive.
+      aString.SetEphemeralStringBuffer(buf, aLength);
+      return true;
+    }
+
+    // We can get here if mData is empty.  In that case it won't have an
+    // nsStringBuffer....
+    MOZ_ASSERT(mData.IsEmpty());
+    return aString.AsAString().Assign(mData.BeginReading(), aLength,
+                                      mozilla::fallible);
+  }
+
+  void
+  CreateSnapshot(XMLHttpRequestStringSnapshot& aSnapshot)
+  {
+    MutexAutoLock lock(mMutex);
+    aSnapshot.Set(this, mData.Length());
+  }
+
+private:
+  ~XMLHttpRequestStringBuffer()
+  {}
+
+  nsString& UnsafeData()
+  {
+    return mData;
+  }
+
+  Mutex mMutex;
+
+  // The following member variable is protected by mutex.
+  nsString mData;
+};
+
 } // dom namespace
 } // mozilla namespace
 
diff --git a/dom/xhr/XMLHttpRequestWorker.cpp b/dom/xhr/XMLHttpRequestWorker.cpp
index 2af61bd7d..7bec379aa 100644
--- a/dom/xhr/XMLHttpRequestWorker.cpp
+++ b/dom/xhr/XMLHttpRequestWorker.cpp
@@ -33,6 +33,8 @@
 #include "WorkerScope.h"
 #include "WorkerPrivate.h"
 #include "WorkerRunnable.h"
+#include "XMLHttpRequestMainThread.h"
+#include "XMLHttpRequestString.h"
 #include "XMLHttpRequestUpload.h"
 
 #include "mozilla/UniquePtr.h"
diff --git a/dom/xhr/moz.build b/dom/xhr/moz.build
index 4ad91deea..d4803015f 100644
--- a/dom/xhr/moz.build
+++ b/dom/xhr/moz.build
@@ -18,7 +18,7 @@ EXPORTS.mozilla.dom += [
     'XMLHttpRequestUpload.h',
 ]
 
-UNIFIED_SOURCES += [
+SOURCES += [
     'XMLHttpRequest.cpp',
     'XMLHttpRequestEventTarget.cpp',
     'XMLHttpRequestMainThread.cpp',
-- 
cgit v1.2.3