#ifndef FramePrivate_h
#define FramePrivate_h
#include "AnimationController.h"
#include "Editor.h"
#include "EventHandler.h"
#include "FrameTree.h"
#include "Range.h"
#include "SelectionController.h"
#include "StringHash.h"
#include "kjs_window.h"
#include "KURL.h"
#include "PausedTimeouts.h"
namespace KJS {
class Interpreter;
namespace Bindings {
class Instance;
class RootObject;
}
}
#if PLATFORM(MAC)
#ifdef __OBJC__
@class WebCoreFrameBridge;
@class WebScriptObject;
#else
class WebCoreFrameBridge;
class WebScriptObject;
#endif
#endif
#if PLATFORM(WIN)
#include "FrameWin.h"
#endif
namespace WebCore {
#if FRAME_LOADS_USER_STYLESHEET
class UserStyleSheetLoader;
#endif
typedef HashMap<void*, RefPtr<KJS::Bindings::RootObject> > RootObjectMap;
class FramePrivate {
public:
FramePrivate(Page*, Frame* parent, Frame* thisFrame, HTMLFrameOwnerElement*, FrameLoaderClient*);
~FramePrivate();
Page* m_page;
FrameTree m_treeNode;
RefPtr<DOMWindow> m_domWindow;
HTMLFrameOwnerElement* m_ownerElement;
RefPtr<FrameView> m_view;
RefPtr<Document> m_doc;
KJSProxy* m_jscript;
String m_kjsStatusBarText;
String m_kjsDefaultStatusBarText;
int m_zoomFactor;
TextGranularity m_selectionGranularity;
SelectionController m_selectionController;
Selection m_mark;
Timer<Frame> m_caretBlinkTimer;
Editor m_editor;
EventHandler m_eventHandler;
AnimationController m_animationController;
bool m_caretVisible : 1;
bool m_caretBlinks : 1;
bool m_caretPaint : 1;
bool m_isPainting : 1;
RefPtr<CSSMutableStyleDeclaration> m_typingStyle;
Color m_caretColor;
Timer<Frame> m_overflowAutoScrollTimer;
float m_overflowAutoScrollDelta;
IntPoint m_overflowAutoScrollPos;
int m_layoutInterval;
double m_maxParseDuration;
PausedTimeouts* m_savedPausedTimeouts;
ViewportArguments m_viewportArguments;
bool m_embeddedEditingMode;
#if ENABLE(IPHONE_PPT)
unsigned m_parseCount;
unsigned m_layoutCount;
unsigned m_forcedLayoutCount;
CFTimeInterval m_parseDuration;
CFTimeInterval m_layoutDuration;
#endif
Timer<Frame> m_lifeSupportTimer;
FrameLoader* m_loader;
String m_userStyleSheet;
RefPtr<Node> m_elementToDraw;
PaintRestriction m_paintRestriction;
bool m_highlightTextMatches;
bool m_inViewSourceMode;
unsigned frameCount;
bool m_prohibitsScrolling;
bool m_needsReapplyStyles;
#if ENABLE(HW_COMP)
float m_frameScale;
#endif
bool m_singleLineSelectionBehavior;
RefPtr<KJS::Bindings::RootObject> m_bindingRootObject;
RootObjectMap m_rootObjects;
#if FRAME_LOADS_USER_STYLESHEET
UserStyleSheetLoader* m_userStyleSheetLoader;
#endif
#if PLATFORM(MAC)
RetainPtr<WebScriptObject> m_windowScriptObject;
WebCoreFrameBridge* m_bridge;
#endif
};
}
#endif