author James Kitchener <>
Tue, 20 Jan 2015 03:58:00 -0500
changeset 253625 4ec37503ea6a752baf92e053ede5f0ff7750ff36
parent 108991 netwerk/base/public/nsIRedirectChannelRegistrar.idl@a16372ce30b5f6b747246b01fcd215a4bf3b6342
child 546310 c2669e9513ccedddec09b8b69501716471c3f0d8
permissions -rw-r--r--
Bug 1100184 - Flatten netwerk/base/{public,src}/ directories. r=mcmanus, r=poiru

/* 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 */

#include "nsISupports.idl"

interface nsIChannel;
interface nsIParentChannel;

 * Used on the chrome process as a service to join channel implementation
 * and parent IPC protocol side under a unique id.  Provides this way a generic
 * communication while redirecting to various protocols.
 * See also nsIChildChannel and nsIParentChannel.

[scriptable, uuid (efa36ea2-5b07-46fc-9534-a5acb8b77b72)]
interface nsIRedirectChannelRegistrar : nsISupports
   * Register the redirect target channel and obtain a unique ID for that
   * channel.
   * Primarily used in HttpChannelParentListener::AsyncOnChannelRedirect to get
   * a channel id sent to the HttpChannelChild being redirected.
  uint32_t registerChannel(in nsIChannel channel);

   * First, search for the channel registered under the id.  If found return
   * it.  Then, register under the same id the parent side of IPC protocol
   * to let it be later grabbed back by the originator of the redirect and
   * notifications from the real channel could be forwarded to this parent
   * channel.
   * Primarily used in parent side of an IPC protocol implementation
   * in reaction to nsIChildChannel.connectParent(id) called from the child
   * process.
  nsIChannel linkChannels(in uint32_t id, in nsIParentChannel channel);

   * Returns back the channel previously registered under the ID with
   * registerChannel method.
   * Primarilly used in chrome IPC side of protocols when attaching a redirect
   * target channel to an existing 'real' channel implementation.
  nsIChannel getRegisteredChannel(in uint32_t id);

   * Returns the stream listener that shall be attached to the redirect target
   * channel, all notification from the redirect target channel will be
   * forwarded to this stream listener.
   * Primarilly used in HttpChannelParentListener::OnRedirectResult callback
   * to grab the created parent side of the channel and forward notifications
   * to it.
  nsIParentChannel getParentChannel(in uint32_t id);

   * To not force all channel implementations to support weak reference
   * consumers of this service must ensure release of registered channels them
   * self.  This releases both the real and parent channel registered under
   * the id.
   * Primarilly used in HttpChannelParentListener::OnRedirectResult callback.
  void deregisterChannels(in uint32_t id);