gecko-dev/netwerk/base/public/nsIPrivateBrowsingChannel.idl
Ehsan Akhgari d58d386309 Bug 741059 - Part 1: Add APIs to nsIChannel to allow callers to override the private bit on the channel; r=jduell
This is probably the worst patch that I have ever written!

We add a setPrivate method to nsIPrivateBrowsingChannel which will be
implemented by channels who care about private browsing.  This allows the
client to explicitly override the private bit on the channel.
NS_UsePrivateBrowsing is also taught about this override bit using the
internal nsIPrivateBrowsingChannel::IsPrivateModeOverriden API.  This patch
implements the new API for HTTP, FTP and wyciwyg channels.  This also
modifies the IPC implementations of these channels to correctly transfer that
bit to the parent process if it has been set in the child process channel.
2012-09-04 20:37:45 -04:00

50 lines
2.2 KiB
Plaintext

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* 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 "nsISupports.idl"
/**
* This interface is implemented by channels which support overriding the
* privacy state of the channel.
*
* This interface must be used only from the XPCOM main thread.
*/
[scriptable, uuid(424b7efc-5d56-4717-9a71-8db9dcaaa618)]
interface nsIPrivateBrowsingChannel : nsISupports
{
/**
* Determine whether the channel is tied to a private browsing window.
*
* This value can be set only before the channel is opened. Setting it
* after that does not have any effect. This value overrides the privacy
* state of the channel, which means that if you call this method, then
* the loadGroup and load context will no longer be consulted when we
* need to know the private mode status for a channel.
*
* Note that this value is only meant to be used when the channel's privacy
* status cannot be obtained from the loadGroup or load context (for
* example, when the channel is not associated with any loadGroup or load
* context.) Setting this value directly should be avoided if possible.
*
* Implementations must enforce the ordering semantics of this function by
* raising errors if setPrivate is called on a channel which has a loadGroup
* and/or callbacks that implement nsILoadContext, or if the loadGroup
* or notificationCallbacks are set after setPrivate has been called.
*
* @param aPrivate whether the channel should be opened in private mode.
*/
void setPrivate(in boolean aPrivate);
/*
* This function is used to determine whether the channel's private mode
* has been overridden by a call to setPrivate. It is intended to be used
* by NS_UsePrivateBrowsing(), and you should not call it directly.
*
* @param aValue the overridden value. This will only be set if the function
* returns true.
*/
[noscript] boolean isPrivateModeOverriden(out boolean aValue);
};