Bug 782649 - 'Remove old IPC::InputStream'. r=cjones+khuey.
This commit is contained in:
@@ -22,6 +22,7 @@ namespace {
|
||||
NS_DEFINE_CID(kStringInputStreamCID, NS_STRINGINPUTSTREAM_CID);
|
||||
NS_DEFINE_CID(kFileInputStreamCID, NS_LOCALFILEINPUTSTREAM_CID);
|
||||
NS_DEFINE_CID(kPartialFileInputStreamCID, NS_PARTIALLOCALFILEINPUTSTREAM_CID);
|
||||
NS_DEFINE_CID(kBufferedInputStreamCID, NS_BUFFEREDINPUTSTREAM_CID);
|
||||
NS_DEFINE_CID(kMultiplexInputStreamCID, NS_MULTIPLEXINPUTSTREAM_CID);
|
||||
|
||||
} // anonymous namespace
|
||||
@@ -29,6 +30,42 @@ NS_DEFINE_CID(kMultiplexInputStreamCID, NS_MULTIPLEXINPUTSTREAM_CID);
|
||||
namespace mozilla {
|
||||
namespace ipc {
|
||||
|
||||
void
|
||||
SerializeInputStream(nsIInputStream* aInputStream,
|
||||
InputStreamParams& aParams)
|
||||
{
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
MOZ_ASSERT(aInputStream);
|
||||
|
||||
nsCOMPtr<nsIIPCSerializableInputStream> serializable =
|
||||
do_QueryInterface(aInputStream);
|
||||
if (!serializable) {
|
||||
NS_WARNING("Input stream is not serializable!");
|
||||
return;
|
||||
}
|
||||
|
||||
serializable->Serialize(aParams);
|
||||
|
||||
NS_WARN_IF_FALSE(aParams.type() != InputStreamParams::T__None,
|
||||
"Serialize failed!");
|
||||
}
|
||||
|
||||
void
|
||||
SerializeInputStream(nsIInputStream* aInputStream,
|
||||
OptionalInputStreamParams& aParams)
|
||||
{
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
|
||||
if (aInputStream) {
|
||||
InputStreamParams params;
|
||||
SerializeInputStream(aInputStream, params);
|
||||
aParams = params;
|
||||
}
|
||||
else {
|
||||
aParams = mozilla::void_t();
|
||||
}
|
||||
}
|
||||
|
||||
already_AddRefed<nsIInputStream>
|
||||
DeserializeInputStream(const InputStreamParams& aParams)
|
||||
{
|
||||
@@ -37,10 +74,6 @@ DeserializeInputStream(const InputStreamParams& aParams)
|
||||
nsCOMPtr<nsIIPCSerializableInputStream> serializable;
|
||||
|
||||
switch (aParams.type()) {
|
||||
case InputStreamParams::T__None:
|
||||
NS_WARNING("This union has no type!");
|
||||
return nullptr;
|
||||
|
||||
case InputStreamParams::TStringInputStreamParams:
|
||||
serializable = do_CreateInstance(kStringInputStreamCID);
|
||||
break;
|
||||
@@ -53,19 +86,23 @@ DeserializeInputStream(const InputStreamParams& aParams)
|
||||
serializable = do_CreateInstance(kPartialFileInputStreamCID);
|
||||
break;
|
||||
|
||||
case InputStreamParams::TBufferedInputStreamParams:
|
||||
serializable = do_CreateInstance(kBufferedInputStreamCID);
|
||||
break;
|
||||
|
||||
case InputStreamParams::TMultiplexInputStreamParams:
|
||||
serializable = do_CreateInstance(kMultiplexInputStreamCID);
|
||||
break;
|
||||
|
||||
default:
|
||||
NS_WARNING("Unknown params!");
|
||||
MOZ_ASSERT(false, "Unknown params!");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
MOZ_ASSERT(serializable);
|
||||
|
||||
if (!serializable->Deserialize(aParams)) {
|
||||
NS_WARNING("Deserialize failed!");
|
||||
MOZ_ASSERT(false, "Deserialize failed!");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -75,5 +112,28 @@ DeserializeInputStream(const InputStreamParams& aParams)
|
||||
return stream.forget();
|
||||
}
|
||||
|
||||
already_AddRefed<nsIInputStream>
|
||||
DeserializeInputStream(const OptionalInputStreamParams& aParams)
|
||||
{
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
|
||||
nsCOMPtr<nsIInputStream> stream;
|
||||
|
||||
switch (aParams.type()) {
|
||||
case OptionalInputStreamParams::Tvoid_t:
|
||||
// Leave stream null.
|
||||
break;
|
||||
|
||||
case OptionalInputStreamParams::TInputStreamParams:
|
||||
stream = DeserializeInputStream(aParams.get_InputStreamParams());
|
||||
break;
|
||||
|
||||
default:
|
||||
MOZ_ASSERT(false, "Unknown params!");
|
||||
}
|
||||
|
||||
return stream.forget();
|
||||
}
|
||||
|
||||
} // namespace ipc
|
||||
} // namespace mozilla
|
||||
|
||||
Reference in New Issue
Block a user