DXR is a code search and navigation tool aimed at making sense of large projects. It supports full-text and regex searches as well as structural queries.

Mercurial (5b81998bb7ab)

VCS Links

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set sw=2 ts=8 et tw=80 ft=cpp : */

/* 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 protocol PNecko;
include InputStreamParams;
include URIParams;

include protocol PBlob; //FIXME: bug #792908

include "mozilla/net/PHttpChannelParams.h";
include "mozilla/net/NeckoMessageUtils.h";
include "mozilla/net/DNS.h";
include "prio.h";

using RequestHeaderTuples;
using nsHttpHeaderArray;
using nsHttpResponseHead;
using nsHttpAtom;
using mozilla::net::NetAddr;

namespace mozilla {
namespace net {

//-------------------------------------------------------------------
protocol PHttpChannel
{
  manager PNecko;

parent:
  // Note: channels are opened during construction, so no open method here:
  // see PNecko.ipdl

  SetPriority(uint16_t priority);

  SetCacheTokenCachedCharset(nsCString charset);

  UpdateAssociatedContentSecurity(int32_t broken,
                                  int32_t no);
  Suspend();
  Resume();

  Cancel(nsresult status);

  // Reports approval/veto of redirect by child process redirect observers
  Redirect2Verify(nsresult result, RequestHeaderTuples changedHeaders,
                  OptionalURIParams apiRedirectTo);

  // For document loads we keep this protocol open after child's
  // OnStopRequest, and send this msg (instead of __delete__) to allow
  // partial cleanup on parent.
  DocumentChannelCleanup();

  // This might have to be sync. If this fails we must fail the document load
  // to avoid endless loop.
  //
  // Explanation: the document loaded was loaded from the offline cache. But
  // the cache group id (the manifest URL) of the cache group it was loaded
  // from is different then the manifest the document refers to in the html
  // tag. If we detect this during the cache selection algorithm, we must not
  // load this document from the offline cache group it was just loaded from.
  // Marking the cache entry as foreign in its cache group will prevent
  // the document to load from the bad offline cache group. After it is marked,
  // we reload the document to take the effect. If we fail to mark the entry
  // as foreign, we will end up in the same situation and reload again and
  // again, indefinitely.
  MarkOfflineCacheEntryAsForeign();

  __delete__();

child:
  OnStartRequest(nsHttpResponseHead  responseHead,
                 bool                useResponseHead,
                 nsHttpHeaderArray   requestHeaders,
                 bool                isFromCache,
                 bool                cacheEntryAvailable,
                 uint32_t            cacheExpirationTime,
                 nsCString           cachedCharset,
                 nsCString           securityInfoSerialization,
                 NetAddr             selfAddr,
                 NetAddr             peerAddr);

  // Combines a single OnDataAvailable and its associated OnProgress &
  // OnStatus calls into one IPDL message
  OnTransportAndData(nsresult  status,
                     uint64_t  progress,
                     uint64_t  progressMax,
                     nsCString data,
                     uint64_t  offset,
                     uint32_t  count);

  OnStopRequest(nsresult statusCode);

  OnProgress(uint64_t progress, uint64_t progressMax);

  OnStatus(nsresult status);

  // Used to cancel child channel if we hit errors during creating and
  // AsyncOpen of nsHttpChannel on the parent.
  FailedAsyncOpen(nsresult status);

  // Called to initiate content channel redirect, starts talking to sinks
  // on the content process and reports result via Redirect2Verify above
  Redirect1Begin(uint32_t           newChannelId,
                 URIParams          newUri,
                 uint32_t           redirectFlags,
                 nsHttpResponseHead responseHead);

  // Called if redirect successful so that child can complete setup.
  Redirect3Complete();

  // Associte the child with an application ids
  AssociateApplicationCache(nsCString groupID,
                            nsCString clientID);

  // Tell child to delete channel (all IPDL deletes must be done from child to
  // avoid races: see bug 591708).
  DeleteSelf();
};


} // namespace net
} // namespace mozilla