From 5f8de423f190bbb79a62f804151bc24824fa32d8 Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Fri, 2 Feb 2018 04:16:08 -0500 Subject: Add m-esr52 at 52.6.0 --- netwerk/base/ChannelDiverterParent.cpp | 75 ++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 netwerk/base/ChannelDiverterParent.cpp (limited to 'netwerk/base/ChannelDiverterParent.cpp') diff --git a/netwerk/base/ChannelDiverterParent.cpp b/netwerk/base/ChannelDiverterParent.cpp new file mode 100644 index 000000000..3b66644ab --- /dev/null +++ b/netwerk/base/ChannelDiverterParent.cpp @@ -0,0 +1,75 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "mozilla/net/ChannelDiverterParent.h" +#include "mozilla/net/NeckoChannelParams.h" +#include "mozilla/net/HttpChannelParent.h" +#include "mozilla/net/FTPChannelParent.h" +#include "mozilla/net/PHttpChannelParent.h" +#include "mozilla/net/PFTPChannelParent.h" +#include "ADivertableParentChannel.h" + +namespace mozilla { +namespace net { + +ChannelDiverterParent::ChannelDiverterParent() +{ +} + +ChannelDiverterParent::~ChannelDiverterParent() +{ +} + +bool +ChannelDiverterParent::Init(const ChannelDiverterArgs& aArgs) +{ + switch (aArgs.type()) { + case ChannelDiverterArgs::THttpChannelDiverterArgs: + { + auto httpParent = static_cast( + aArgs.get_HttpChannelDiverterArgs().mChannelParent()); + httpParent->SetApplyConversion(aArgs.get_HttpChannelDiverterArgs().mApplyConversion()); + + mDivertableChannelParent = + static_cast(httpParent); + break; + } + case ChannelDiverterArgs::TPFTPChannelParent: + { + mDivertableChannelParent = static_cast( + static_cast(aArgs.get_PFTPChannelParent())); + break; + } + default: + NS_NOTREACHED("unknown ChannelDiverterArgs type"); + return false; + } + MOZ_ASSERT(mDivertableChannelParent); + + nsresult rv = mDivertableChannelParent->SuspendForDiversion(); + if (NS_WARN_IF(NS_FAILED(rv))) { + return false; + } + return true; +} + +void +ChannelDiverterParent::DivertTo(nsIStreamListener* newListener) +{ + MOZ_ASSERT(newListener); + MOZ_ASSERT(mDivertableChannelParent); + + mDivertableChannelParent->DivertTo(newListener); +} + +void +ChannelDiverterParent::ActorDestroy(ActorDestroyReason aWhy) +{ + // Implement me! Bug 1005179 +} + +} // namespace net +} // namespace mozilla -- cgit v1.2.3