caps/nsIDomainPolicy.idl
author Bob Owen <bobowencode@gmail.com>
Mon, 21 Dec 2015 20:33:12 +0000
changeset 314195 79733166f05ef2e5c2fecf2a041410345497aac4
parent 265656 90d9af9b861a816df7da099934525c8ead0ae270
child 389815 e9d8a75a0dcceedeaabf2924bcf8459db2da01f5
permissions -rw-r--r--
Bug 1156742 Part 1: Change Moz2D recording, so that it can be used in isolation. r=bas These are mainly changes to make sure we have recorded relevant dependencies to each draw operation. Where we can't record them on the fly like this, it makes sure the object has originated from our DrawTarget.

/* -*- 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"

interface nsIURI;
interface nsIDomainSet;

%{ C++
namespace mozilla {
namespace dom {
class DomainPolicyClone;
}
}
%}

[ptr] native DomainPolicyClonePtr(mozilla::dom::DomainPolicyClone);

/*
 * When a domain policy is instantiated by invoking activateDomainPolicy() on
 * nsIScriptSecurityManager, these domain sets are consulted when each new
 * global is created (they have no effect on already-created globals).
 * If javascript is globally enabled with |javascript.enabled|, the blacklists
 * are consulted. If globally disabled, the whitelists are consulted. Lookups
 * on blacklist and whitelist happen with contains(), and lookups on
 * superBlacklist and superWhitelist happen with containsSuperDomain().
 *
 * When deactivate() is invoked, the domain sets are emptied, and the
 * nsIDomainPolicy ceases to have any effect on the system.
 */
[scriptable, builtinclass, uuid(82b24a20-6701-4d40-a0f9-f5dc7321b555)]
interface nsIDomainPolicy : nsISupports
{
    readonly attribute nsIDomainSet blacklist;
    readonly attribute nsIDomainSet superBlacklist;
    readonly attribute nsIDomainSet whitelist;
    readonly attribute nsIDomainSet superWhitelist;

    void deactivate();

    [noscript, notxpcom] void cloneDomainPolicy(in DomainPolicyClonePtr aClone);
    [noscript, notxpcom] void applyClone(in DomainPolicyClonePtr aClone);
};

[scriptable, builtinclass, uuid(665c981b-0a0f-4229-ac06-a826e02d4f69)]
interface nsIDomainSet : nsISupports
{
    /*
     * The type of the set. See: DomainSetType
     */
    [noscript] readonly attribute uint32_t type;

    /*
     * Add a domain to the set. No-op if it already exists.
     */
    void add(in nsIURI aDomain);

    /*
     * Remove a domain from the set. No-op if it doesn't exist.
     */
    void remove(in nsIURI aDomain);

    /*
     * Remove all entries from the set.
     */
    void clear();

    /*
     * Returns true if a given domain is in the set.
     */
    bool contains(in nsIURI aDomain);

    /*
     * Returns true if a given domain is a subdomain of one of the entries in
     * the set.
     */
    bool containsSuperDomain(in nsIURI aDomain);
};