Commit 6a212264 authored by Olli Pettay's avatar Olli Pettay
Browse files

Bug 1801315, move some generic code to the baseclass, esr102, r=jesup, a=dmeehan

parent a194275b
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -64,6 +64,19 @@ BaseWebSocketChannel::BaseWebSocketChannel()
  mSerial = (processBits << kWebSocketIDWebSocketBits) | webSocketBits;
}

BaseWebSocketChannel::~BaseWebSocketChannel() {
  NS_ReleaseOnMainThread("BaseWebSocketChannel::mLoadGroup",
                         mLoadGroup.forget());
  NS_ReleaseOnMainThread("BaseWebSocketChannel::mLoadInfo", mLoadInfo.forget());
  nsCOMPtr<nsIEventTarget> target;
  {
    auto lock = mTargetThread.Lock();
    target.swap(*lock);
  }
  NS_ReleaseOnMainThread("BaseWebSocketChannel::mTargetThread",
                         target.forget());
}

//-----------------------------------------------------------------------------
// BaseWebSocketChannel::nsIWebSocketChannel
//-----------------------------------------------------------------------------
+3 −1
Original line number Diff line number Diff line
@@ -95,6 +95,7 @@ class BaseWebSocketChannel : public nsIWebSocketChannel,
  };

 protected:
  virtual ~BaseWebSocketChannel();
  nsCOMPtr<nsIURI> mOriginalURI;
  nsCOMPtr<nsIURI> mURI;
  RefPtr<ListenerAndContextContainer> mListenerMT;
@@ -104,7 +105,8 @@ class BaseWebSocketChannel : public nsIWebSocketChannel,
  nsCOMPtr<nsITransportProvider> mServerTransportProvider;

  // Used to ensure atomicity of mTargetThread.
  // Set before AsyncOpen via RetargetDeliveryTo or in AsyncOpen, never changed after AsyncOpen
  // Set before AsyncOpen via RetargetDeliveryTo or in AsyncOpen, never changed
  // after AsyncOpen
  DataMutex<nsCOMPtr<nsIEventTarget>> mTargetThread{
      "BaseWebSocketChannel::EventTargetMutex"};

+0 −7
Original line number Diff line number Diff line
@@ -1225,14 +1225,7 @@ WebSocketChannel::~WebSocketChannel() {

  mListenerMT = nullptr;

  NS_ReleaseOnMainThread("WebSocketChannel::mLoadGroup", mLoadGroup.forget());
  NS_ReleaseOnMainThread("WebSocketChannel::mService", mService.forget());
  nsCOMPtr<nsIEventTarget> target;
  {
    auto lock = mTargetThread.Lock();
    target.swap(*lock);
  }
  NS_ReleaseOnMainThread("WebSocketChannel::mTargetThread", target.forget());
}

NS_IMETHODIMP
+1 −1
Original line number Diff line number Diff line
@@ -139,7 +139,7 @@ class WebSocketChannel : public BaseWebSocketChannel,
  const static uint8_t kPayloadLengthBitsMask = 0x7F;

 protected:
  virtual ~WebSocketChannel();
  ~WebSocketChannel() override;

 private:
  friend class OutboundEnqueuer;