#ifndef DOMWindow_h
#define DOMWindow_h
#include "Console.h"
#include "PlatformString.h"
#include <wtf/RefCounted.h>
#include <wtf/Forward.h>
#include <wtf/RefPtr.h>
namespace WebCore {
class BarInfo;
class CSSRuleList;
class CSSStyleDeclaration;
class Console;
class DOMSelection;
class Database;
class Document;
class Element;
class FloatRect;
class Frame;
class History;
class Screen;
class WebKitPoint;
class Node;
#if ENABLE(OFFLINE_WEB_APPLICATIONS)
class DOMApplicationCache;
#endif
typedef int ExceptionCode;
class DOMWindow : public RefCounted<DOMWindow> {
public:
DOMWindow(Frame*);
virtual ~DOMWindow();
Frame* frame() { return m_frame; }
void disconnectFrame();
void clear();
int orientation() const;
static void adjustWindowRect(const FloatRect& screen, FloatRect& window, const FloatRect& pendingChanges);
Screen* screen() const;
History* history() const;
BarInfo* locationbar() const;
BarInfo* menubar() const;
BarInfo* personalbar() const;
BarInfo* scrollbars() const;
BarInfo* statusbar() const;
BarInfo* toolbar() const;
DOMSelection* getSelection();
Element* frameElement() const;
void focus();
void blur();
void close();
void print();
void stop();
void alert(const String& message);
bool confirm(const String& message);
String prompt(const String& message, const String& defaultValue);
bool find(const String&, bool caseSensitive, bool backwards, bool wrap, bool wholeWord, bool searchInFrames, bool showDialog) const;
bool offscreenBuffering() const;
int outerHeight() const;
int outerWidth() const;
int innerHeight() const;
int innerWidth() const;
int screenX() const;
int screenY() const;
int screenLeft() const { return screenX(); }
int screenTop() const { return screenY(); }
int scrollX() const;
int scrollY() const;
int pageXOffset() const { return scrollX(); }
int pageYOffset() const { return scrollY(); }
bool closed() const;
unsigned length() const;
String name() const;
void setName(const String&);
String status() const;
void setStatus(const String&);
String defaultStatus() const;
void setDefaultStatus(const String&);
String defaultstatus() const { return defaultStatus(); }
void setDefaultstatus(const String& status) { setDefaultStatus(status); }
DOMWindow* self() const;
DOMWindow* window() const { return self(); }
DOMWindow* frames() const { return self(); }
DOMWindow* opener() const;
DOMWindow* parent() const;
DOMWindow* top() const;
Document* document() const;
PassRefPtr<CSSStyleDeclaration> getComputedStyle(Element*, const String& pseudoElt) const;
PassRefPtr<CSSRuleList> getMatchedCSSRules(Element*, const String& pseudoElt, bool authorOnly = true) const;
double devicePixelRatio() const;
PassRefPtr<WebKitPoint> webkitConvertPointFromPageToNode(Node* node, const WebKitPoint* p) const;
PassRefPtr<WebKitPoint> webkitConvertPointFromNodeToPage(Node* node, const WebKitPoint* p) const;
#if ENABLE(DATABASE)
PassRefPtr<Database> openDatabase(const String& name, const String& version, const String& displayName, unsigned long estimatedSize, ExceptionCode&);
#endif
Console* console() const;
#if ENABLE(OFFLINE_WEB_APPLICATIONS)
DOMApplicationCache* applicationCache() const;
#endif
#if ENABLE(CROSS_DOCUMENT_MESSAGING)
void postMessage(const String& message, const String& domain, const String& uri, DOMWindow* source) const;
#endif
void scrollBy(int x, int y) const;
void scrollTo(int x, int y) const;
void scroll(int x, int y) const { scrollTo(x, y); }
void moveBy(float x, float y) const;
void moveTo(float x, float y) const;
void resizeBy(float x, float y) const;
void resizeTo(float width, float height) const;
#if ENABLE(OFFLINE_WEB_APPLICATIONS)
DOMApplicationCache* optionalApplicationCache() const { return m_applicationCache.get(); }
#endif
private:
Frame* m_frame;
mutable RefPtr<Screen> m_screen;
mutable RefPtr<DOMSelection> m_selection;
mutable RefPtr<History> m_history;
mutable RefPtr<BarInfo> m_locationbar;
mutable RefPtr<BarInfo> m_menubar;
mutable RefPtr<BarInfo> m_personalbar;
mutable RefPtr<BarInfo> m_scrollbars;
mutable RefPtr<BarInfo> m_statusbar;
mutable RefPtr<BarInfo> m_toolbar;
mutable RefPtr<Console> m_console;
#if ENABLE(OFFLINE_WEB_APPLICATIONS)
mutable RefPtr<DOMApplicationCache> m_applicationCache;
#endif
};
}
#endif