Source code

Revision control

Other Tools

1
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
/* This Source Code Form is subject to the terms of the Mozilla Public
3
* License, v. 2.0. If a copy of the MPL was not distributed with this
4
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5
6
#include "nsISupports.idl"
7
8
%{ C++
9
#include "mozilla/BasePrincipal.h"
10
%}
11
native OriginAttributesNativePtr(const mozilla::OriginAttributes*);
12
13
interface nsILoadContext;
14
interface nsIDOMWindow;
15
16
/**
17
* Helper interface to carry informatin about the load context
18
* encapsulating origin attributes and IsAnonymous, IsPrivite properties.
19
* It shall be used where nsILoadContext cannot be used or is not
20
* available.
21
*/
22
23
[scriptable, builtinclass, uuid(555e2f8a-a1f6-41dd-88ca-ed4ed6b98a22)]
24
interface nsILoadContextInfo : nsISupports
25
{
26
/**
27
* Whether the context is in a Private Browsing mode
28
*/
29
readonly attribute boolean isPrivate;
30
31
/**
32
* Whether the load is initiated as anonymous
33
*/
34
readonly attribute boolean isAnonymous;
35
36
/**
37
* OriginAttributes hiding all the security context attributes
38
*/
39
[implicit_jscontext]
40
readonly attribute jsval originAttributes;
41
[noscript, notxpcom, nostdcall, binaryname(OriginAttributesPtr)]
42
OriginAttributesNativePtr binaryOriginAttributesPtr();
43
44
%{C++
45
/**
46
* De-XPCOMed getters
47
*/
48
bool IsPrivate()
49
{
50
bool pb;
51
GetIsPrivate(&pb);
52
return pb;
53
}
54
55
bool IsAnonymous()
56
{
57
bool anon;
58
GetIsAnonymous(&anon);
59
return anon;
60
}
61
62
bool Equals(nsILoadContextInfo *aOther)
63
{
64
return IsAnonymous() == aOther->IsAnonymous() &&
65
*OriginAttributesPtr() == *aOther->OriginAttributesPtr();
66
}
67
%}
68
};
69
70
/**
71
* Since OriginAttributes struct limits the implementation of
72
* nsILoadContextInfo (that needs to be thread safe) to C++,
73
* we need a scriptable factory to create instances of that
74
* interface from JS.
75
*/
76
[scriptable, uuid(c1c7023d-4318-4f99-8307-b5ccf0558793)]
77
interface nsILoadContextInfoFactory : nsISupports
78
{
79
readonly attribute nsILoadContextInfo default;
80
readonly attribute nsILoadContextInfo private;
81
readonly attribute nsILoadContextInfo anonymous;
82
[implicit_jscontext]
83
nsILoadContextInfo custom(in boolean aAnonymous, in jsval aOriginAttributes);
84
nsILoadContextInfo fromLoadContext(in nsILoadContext aLoadContext, in boolean aAnonymous);
85
nsILoadContextInfo fromWindow(in nsIDOMWindow aWindow, in boolean aAnonymous);
86
};