123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- /* -*- Mode: C++; tab-width: 2; 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"
- %{ C++
- #include "mozilla/BasePrincipal.h"
- %}
- native OriginAttributesNativePtr(const mozilla::NeckoOriginAttributes*);
- interface nsILoadContext;
- interface nsIDOMWindow;
- /**
- * Helper interface to carry informatin about the load context
- * encapsulating origin attributes and IsAnonymous, IsPrivite properties.
- * It shall be used where nsILoadContext cannot be used or is not
- * available.
- */
- [scriptable, builtinclass, uuid(555e2f8a-a1f6-41dd-88ca-ed4ed6b98a22)]
- interface nsILoadContextInfo : nsISupports
- {
- const unsigned long NO_APP_ID = 0;
- const unsigned long UNKNOWN_APP_ID = 4294967295; // UINT32_MAX
- /**
- * Whether the context is in a Private Browsing mode
- */
- readonly attribute boolean isPrivate;
- /**
- * Whether the load is initiated as anonymous
- */
- readonly attribute boolean isAnonymous;
- /**
- * NeckoOriginAttributes hiding all the security context attributes
- */
- [implicit_jscontext]
- readonly attribute jsval originAttributes;
- [noscript, notxpcom, nostdcall, binaryname(OriginAttributesPtr)]
- OriginAttributesNativePtr binaryOriginAttributesPtr();
- %{C++
- /**
- * De-XPCOMed getters
- */
- bool IsPrivate()
- {
- bool pb;
- GetIsPrivate(&pb);
- return pb;
- }
- bool IsAnonymous()
- {
- bool anon;
- GetIsAnonymous(&anon);
- return anon;
- }
- bool Equals(nsILoadContextInfo *aOther)
- {
- return IsAnonymous() == aOther->IsAnonymous() &&
- *OriginAttributesPtr() == *aOther->OriginAttributesPtr();
- }
- %}
- };
- /**
- * Since NeckoOriginAttributes struct limits the implementation of
- * nsILoadContextInfo (that needs to be thread safe) to C++,
- * we need a scriptable factory to create instances of that
- * interface from JS.
- */
- [scriptable, uuid(c1c7023d-4318-4f99-8307-b5ccf0558793)]
- interface nsILoadContextInfoFactory : nsISupports
- {
- readonly attribute nsILoadContextInfo default;
- readonly attribute nsILoadContextInfo private;
- readonly attribute nsILoadContextInfo anonymous;
- [implicit_jscontext]
- nsILoadContextInfo custom(in boolean aAnonymous, in jsval aOriginAttributes);
- nsILoadContextInfo fromLoadContext(in nsILoadContext aLoadContext, in boolean aAnonymous);
- nsILoadContextInfo fromWindow(in nsIDOMWindow aWindow, in boolean aAnonymous);
- };
|