IPCTransportProvider.cpp (2326B)
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim: set sw=2 ts=8 et ft=cpp : */ 3 /* This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this file, 5 * You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7 #include "mozilla/net/IPCTransportProvider.h" 8 9 #include "IPCTransportProvider.h" 10 #include "nsISocketTransport.h" 11 #include "nsIAsyncInputStream.h" 12 #include "nsIAsyncOutputStream.h" 13 14 namespace mozilla { 15 namespace net { 16 17 NS_IMPL_ISUPPORTS(TransportProviderParent, nsITransportProvider, 18 nsIHttpUpgradeListener) 19 20 NS_IMETHODIMP 21 TransportProviderParent::SetListener(nsIHttpUpgradeListener* aListener) { 22 MOZ_ASSERT(aListener); 23 mListener = aListener; 24 25 MaybeNotify(); 26 27 return NS_OK; 28 } 29 30 NS_IMETHODIMP 31 TransportProviderParent::GetIPCChild( 32 mozilla::net::PTransportProviderChild** aChild) { 33 MOZ_CRASH("Don't call this in parent process"); 34 *aChild = nullptr; 35 return NS_OK; 36 } 37 38 NS_IMETHODIMP 39 TransportProviderParent::OnTransportAvailable( 40 nsISocketTransport* aTransport, nsIAsyncInputStream* aSocketIn, 41 nsIAsyncOutputStream* aSocketOut) { 42 MOZ_ASSERT(aTransport && aSocketOut && aSocketOut); 43 mTransport = aTransport; 44 mSocketIn = aSocketIn; 45 mSocketOut = aSocketOut; 46 47 MaybeNotify(); 48 49 return NS_OK; 50 } 51 52 NS_IMETHODIMP 53 TransportProviderParent::OnUpgradeFailed(nsresult aErrorCode) { return NS_OK; } 54 55 NS_IMETHODIMP 56 TransportProviderParent::OnWebSocketConnectionAvailable( 57 WebSocketConnectionBase* aConnection) { 58 return NS_ERROR_NOT_IMPLEMENTED; 59 } 60 61 void TransportProviderParent::MaybeNotify() { 62 if (!mListener || !mTransport) { 63 return; 64 } 65 66 DebugOnly<nsresult> rv = 67 mListener->OnTransportAvailable(mTransport, mSocketIn, mSocketOut); 68 MOZ_ASSERT(NS_SUCCEEDED(rv)); 69 } 70 71 NS_IMPL_ISUPPORTS(TransportProviderChild, nsITransportProvider) 72 73 TransportProviderChild::~TransportProviderChild() { Send__delete__(this); } 74 75 NS_IMETHODIMP 76 TransportProviderChild::SetListener(nsIHttpUpgradeListener* aListener) { 77 MOZ_CRASH("Don't call this in child process"); 78 return NS_OK; 79 } 80 81 NS_IMETHODIMP 82 TransportProviderChild::GetIPCChild( 83 mozilla::net::PTransportProviderChild** aChild) { 84 *aChild = this; 85 return NS_OK; 86 } 87 88 } // namespace net 89 } // namespace mozilla