#ifndef XSSFilter_h
#define XSSFilter_h
#include "HTMLToken.h"
#include "HTTPParsers.h"
#include "SuffixTree.h"
namespace WebCore {
class HTMLDocumentParser;
class XSSFilter {
WTF_MAKE_NONCOPYABLE(XSSFilter);
public:
explicit XSSFilter(HTMLDocumentParser*);
void filterToken(HTMLToken&);
private:
enum State {
Uninitialized,
Initial,
AfterScriptStartTag,
};
void init();
bool filterTokenInitial(HTMLToken&);
bool filterTokenAfterScriptStartTag(HTMLToken&);
bool filterScriptToken(HTMLToken&);
bool filterObjectToken(HTMLToken&);
bool filterParamToken(HTMLToken&);
bool filterEmbedToken(HTMLToken&);
bool filterAppletToken(HTMLToken&);
bool filterIframeToken(HTMLToken&);
bool filterMetaToken(HTMLToken&);
bool filterBaseToken(HTMLToken&);
bool filterFormToken(HTMLToken&);
bool eraseDangerousAttributesIfInjected(HTMLToken&);
bool eraseAttributeIfInjected(HTMLToken&, const QualifiedName&, const String& replacementValue = String());
String snippetForRange(const HTMLToken&, int start, int end);
String snippetForAttribute(const HTMLToken&, const HTMLToken::Attribute&);
bool isContainedInRequest(const String&);
bool isSameOriginResource(const String& url);
HTMLDocumentParser* m_parser;
bool m_isEnabled;
XSSProtectionDisposition m_xssProtection;
String m_decodedURL;
String m_decodedHTTPBody;
OwnPtr<SuffixTree<ASCIICodebook> > m_decodedHTTPBodySuffixTree;
State m_state;
String m_cachedSnippet;
};
}
#endif