/*
 * 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"
#include "nsICookie.idl"

/**
 * Rule which specifies a cookie to be set in order to handle a cookie banner.
 */

[builtinclass, scriptable, uuid(bf049b1e-8a05-481f-a120-332ea1bd65ef)]
interface nsICookieRule : nsISupports {
    /**
     * The cookie to set.
     * When calling this getter creation, expiry and last accessed time are
     * computed.
     */
    readonly attribute nsICookie cookie;

    /**
     * Expiry time of the cookie in seconds relative to the injection time.
     * If you want a cookie to expire in 1 month after it has been set, set this
     * to 2592000.
     * Defaults to 'cookiebanners.cookieInjector.defaultExpiryRelative'.
     */
    readonly attribute int64_t expiryRelative;

    /**
     * If an existing cookie sets this value it may be overwritten.
     * This is used for sites which set an explicit cookie state, even if a
     * cookie banner is still pending.
     */
    readonly attribute AUTF8String unsetValue;

    /**
     * Create a copy of this rule for a domain. If the cookie host is unset it
     * is set to ".<domain>".
     * Non-empty host fields will be preserved.
     */
    [noscript]
    nsICookieRule copyForDomain(in ACString aDomain);
};
