PlugInAutoStartProvider.h [plain text]
#ifndef PlugInAutoStartProvider_h
#define PlugInAutoStartProvider_h
#include <WebCore/SessionIDHash.h>
#include <functional>
#include <wtf/HashMap.h>
#include <wtf/HashSet.h>
#include <wtf/Noncopyable.h>
#include <wtf/Vector.h>
#include <wtf/text/StringHash.h>
#include <wtf/text/WTFString.h>
namespace API {
class Array;
}
namespace WebKit {
class ImmutableDictionary;
class WebContext;
typedef HashMap<unsigned, double> PlugInAutoStartOriginMap;
typedef HashMap<WebCore::SessionID, PlugInAutoStartOriginMap> SessionPlugInAutoStartOriginMap;
typedef Vector<String> PlugInAutoStartOrigins;
class PlugInAutoStartProvider {
WTF_MAKE_NONCOPYABLE(PlugInAutoStartProvider);
public:
explicit PlugInAutoStartProvider(WebContext*);
void addAutoStartOriginHash(const String& pageOrigin, unsigned plugInOriginHash, WebCore::SessionID);
void didReceiveUserInteraction(unsigned plugInOriginHash, WebCore::SessionID);
PassRefPtr<ImmutableDictionary> autoStartOriginsTableCopy() const;
void setAutoStartOriginsTable(ImmutableDictionary&);
void setAutoStartOriginsFilteringOutEntriesAddedAfterTime(ImmutableDictionary&, double time);
void setAutoStartOriginsArray(API::Array&);
SessionPlugInAutoStartOriginMap autoStartOriginHashesCopy() const;
const PlugInAutoStartOrigins& autoStartOrigins() const { return m_autoStartOrigins; }
private:
WebContext* m_context;
void setAutoStartOriginsTableWithItemsPassingTest(ImmutableDictionary&, std::function<bool(double expirationTimestamp)>);
typedef HashMap<String, PlugInAutoStartOriginMap, CaseFoldingHash> AutoStartTable;
typedef HashMap<WebCore::SessionID, AutoStartTable> SessionAutoStartTable;
SessionAutoStartTable m_autoStartTable;
HashMap<WebCore::SessionID, HashMap<unsigned, String>> m_hashToOriginMap;
PlugInAutoStartOrigins m_autoStartOrigins;
};
}
#endif