caps/DomainPolicy.h
author Matt Woodrow <mwoodrow@mozilla.com>
Sun, 04 Nov 2018 20:35:36 +0000
changeset 444341 d7cb17082a13ebeb1c4ba9b5907bc0bf18cc209d
parent 443784 f3a78d65b0590610e4f863db4dce834303fc8b94
child 448947 6f3709b3878117466168c40affa7bca0b60cf75b
permissions -rw-r--r--
Bug 1503730 - Add visual indicator for when WebRender frames record a CONTENT_FRAME_TIME of >200. r=sotaro MozReview-Commit-ID: KdRf3WClD6M Differential Revision: https://phabricator.services.mozilla.com/D10442

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* vim: set ts=8 sts=4 et sw=4 tw=80: */
/* 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/. */

#ifndef DomainPolicy_h__
#define DomainPolicy_h__

#include "nsIDomainPolicy.h"
#include "nsTHashtable.h"
#include "nsURIHashKey.h"

namespace mozilla {

namespace ipc {
class URIParams;
} // namespace ipc

enum DomainSetChangeType{
    ACTIVATE_POLICY,
    DEACTIVATE_POLICY,
    ADD_DOMAIN,
    REMOVE_DOMAIN,
    CLEAR_DOMAINS
};

enum DomainSetType{
    NO_TYPE,
    BLOCKLIST,
    SUPER_BLOCKLIST,
    ALLOWLIST,
    SUPER_ALLOWLIST
};

class DomainSet final : public nsIDomainSet
{
public:
    NS_DECL_ISUPPORTS
    NS_DECL_NSIDOMAINSET

    explicit DomainSet(DomainSetType aType)
        : mType(aType)
    {}

    void CloneSet(InfallibleTArray<mozilla::ipc::URIParams>* aDomains);

protected:
    virtual ~DomainSet() {}
    nsTHashtable<nsURIHashKey> mHashTable;
    DomainSetType mType;
};

class DomainPolicy final : public nsIDomainPolicy
{
public:
    NS_DECL_ISUPPORTS
    NS_DECL_NSIDOMAINPOLICY
    DomainPolicy();

private:
    virtual ~DomainPolicy();

    RefPtr<DomainSet> mBlocklist;
    RefPtr<DomainSet> mSuperBlocklist;
    RefPtr<DomainSet> mAllowlist;
    RefPtr<DomainSet> mSuperAllowlist;
};

} /* namespace mozilla */

#endif /* DomainPolicy_h__ */