#ifndef DocumentInit_h
#define DocumentInit_h
#include "core/dom/SandboxFlags.h"
#include "core/dom/SecurityContext.h"
#include "platform/weborigin/KURL.h"
#include "wtf/PassRefPtr.h"
#include "wtf/RefPtr.h"
#include "wtf/WeakPtr.h"
namespace WebCore {
class CustomElementRegistrationContext;
class Document;
class LocalFrame;
class HTMLImport;
class Settings;
class DocumentInit {
public:
explicit DocumentInit(const KURL& = KURL(), LocalFrame* = 0, WeakPtr<Document> = WeakPtr<Document>(), HTMLImport* = 0);
DocumentInit(const DocumentInit&);
~DocumentInit();
const KURL& url() const { return m_url; }
LocalFrame* frame() const { return m_frame; }
HTMLImport* import() const { return m_import; }
bool hasSecurityContext() const { return frameForSecurityContext(); }
bool shouldTreatURLAsSrcdocDocument() const;
bool shouldSetURL() const;
bool isSeamlessAllowedFor(Document* child) const;
SandboxFlags sandboxFlags() const;
Document* parent() const { return m_parent.get(); }
Document* owner() const { return m_owner.get(); }
KURL parentBaseURL() const;
LocalFrame* ownerFrame() const;
Settings* settings() const;
DocumentInit& withRegistrationContext(CustomElementRegistrationContext*);
DocumentInit& withNewRegistrationContext();
PassRefPtr<CustomElementRegistrationContext> registrationContext(Document*) const;
WeakPtr<Document> contextDocument() const;
static DocumentInit fromContext(WeakPtr<Document> contextDocument, const KURL& = KURL());
private:
LocalFrame* frameForSecurityContext() const;
KURL m_url;
LocalFrame* m_frame;
RefPtr<Document> m_parent;
RefPtr<Document> m_owner;
WeakPtr<Document> m_contextDocument;
HTMLImport* m_import;
RefPtr<CustomElementRegistrationContext> m_registrationContext;
bool m_createNewRegistrationContext;
};
}
#endif