nsStreamListenerWrapper.cpp (1631B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this file, 3 * You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 #include "nsStreamListenerWrapper.h" 6 #ifdef DEBUG 7 # include "MainThreadUtils.h" 8 #endif 9 10 namespace mozilla { 11 namespace net { 12 13 NS_IMPL_ISUPPORTS(nsStreamListenerWrapper, nsIStreamListener, 14 nsIRequestObserver, nsIMultiPartChannelListener, 15 nsIThreadRetargetableStreamListener) 16 17 NS_IMETHODIMP 18 nsStreamListenerWrapper::OnAfterLastPart(nsresult aStatus) { 19 if (nsCOMPtr<nsIMultiPartChannelListener> listener = 20 do_QueryInterface(mListener)) { 21 nsresult rv = NS_OK; 22 if (nsCOMPtr<nsIMultiPartChannelListener> listener = 23 do_QueryInterface(mListener)) { 24 rv = listener->OnAfterLastPart(aStatus); 25 } 26 mListener = nullptr; 27 return rv; 28 } 29 return NS_OK; 30 } 31 32 NS_IMETHODIMP 33 nsStreamListenerWrapper::CheckListenerChain() { 34 NS_ASSERTION(NS_IsMainThread(), "Should be on main thread!"); 35 nsresult rv = NS_OK; 36 nsCOMPtr<nsIThreadRetargetableStreamListener> retargetableListener = 37 do_QueryInterface(mListener, &rv); 38 if (retargetableListener) { 39 rv = retargetableListener->CheckListenerChain(); 40 } 41 return rv; 42 } 43 44 NS_IMETHODIMP 45 nsStreamListenerWrapper::OnDataFinished(nsresult aStatus) { 46 nsCOMPtr<nsIThreadRetargetableStreamListener> retargetableListener = 47 do_QueryInterface(mListener); 48 if (retargetableListener) { 49 return retargetableListener->OnDataFinished(aStatus); 50 } 51 52 return NS_OK; 53 } 54 } // namespace net 55 } // namespace mozilla