Files
Mozilla/mozilla/netwerk/protocol/http/public/nsIHTTPChannel.idl
gagan%netscape.com 570f14d71b r=valeski,rjc a=jar. Fixes for the following bugs-
bug 1582 - HTTP Referer header problem.
This is now resolved with a preference (network.sendRefererHeader)
If set to 0 no referrer header is sent (ever) If set to 1 the
referrer header is sent only in cases of user link-clicks and if
set to 2 is sent from image requests as well.

bug 17158 - No Proxies For wasn't implemented.
This was not being read correctly and I also moved and cleaned up
the parsing function to nsProtocolProxyService (thereby also
killing bug 27728)

bug 24642 - http://www.win98central.com/#437 was crashing.
bug 26686 - crash in nsHTTPRequest destructor.
Both of these crashes were because of the nsHTTPRequest being
unconditionally released in the destructor of nsHTTPChannel. Although the main problem remains, I have made it a non-crasher now.

bug 27844 - HTTP breaks when only using FTP proxy.
This was happening because we were not resetting values of the
proxy when they are removed from the preference pane.


git-svn-id: svn://10.0.0.236/trunk@61512 18797224-902f-48f8-a5cc-f745e15eee43
2000-02-23 21:17:17 +00:00

104 lines
3.3 KiB
Plaintext

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*/
#include "nsIChannel.idl"
interface nsIHTTPEventSink;
interface nsIStreamListener;
interface nsISimpleEnumerator;
interface nsIAtom;
interface nsIInputStream;
interface nsIURI;
[scriptable, uuid(35c00430-1938-11d3-933a-000064657374)]
interface nsIHTTPChannel : nsIChannel
{
/**
* More load attributes for http.
*/
const unsigned long BYPASS_CACHE = 1 << 1;
const unsigned long BYPASS_PROXY = 1 << 2;
/**
* Referrer sending policy.
*/
const unsigned long REFERRER_NONE = 0;
const unsigned long REFERRER_LINK_CLICK = 1; // http link clicks
const unsigned long REFERRER_INLINES = 2; // images and other inlines.
const unsigned long REFERRER_NON_HTTP = 3; // e.g. news clicks or FTP links.
/*
Request functions-
These functions set/get parameters on the outbound request and may only
be set before Load() function gets called. Calling them after
the Load() method will result in a NS_ERROR_ALREADY_CONNECTED
*/
string GetRequestHeader(in nsIAtom headerAtom);
void SetRequestHeader(in nsIAtom headerAtom, in string value);
nsISimpleEnumerator GetRequestHeaderEnumerator();
void SetRequestMethod(in unsigned long method);
// NS_IMETHOD SetRequestMethod(HTTPMethod i_Method=HM_GET) = 0;
/*
Pass in the post data if any...
*/
attribute nsIInputStream PostDataStream;
/*
Response funtions. A call to any of these implicitly calls
Load() on this protocol instance.
*/
string GetResponseHeader(in nsIAtom headerAtom);
void SetResponseHeader(in nsIAtom headerAtom, in string headerValue);
nsISimpleEnumerator GetResponseHeaderEnumerator();
/*
Explicitly set a referrer (HTTP's Referer) on this channel
*/
void SetReferrer(in nsIURI referrer, in unsigned long referrerLevel);
readonly attribute unsigned long ResponseStatus;
readonly attribute string ResponseString;
readonly attribute nsIHTTPEventSink EventSink;
readonly attribute nsIStreamListener ResponseDataListener;
readonly attribute string Charset;
attribute PRBool AuthTriedWithPrehost;
readonly attribute PRBool UsingProxy;
/*
This string if set is used for forming the final request. So if you
call SetProxyRequestURI(foo) on an HTTP Channel, the outbound
request would look something like GET foo HTTP/1.0... This is done
to allow other non-http specs to be used in proxy cases.
*/
attribute string ProxyRequestURI;
};