/* * Copyright (C) 2006, 2007, 2009, 2010 Apple Inc. All rights reserved. * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef SKY_ENGINE_CORE_FRAME_LOCALDOMWINDOW_H_ #define SKY_ENGINE_CORE_FRAME_LOCALDOMWINDOW_H_ #include "sky/engine/core/events/Event.h" #include "sky/engine/core/frame/DOMWindowBase64.h" #include "sky/engine/core/frame/FrameDestructionObserver.h" #include "sky/engine/platform/Supplementable.h" #include "sky/engine/platform/heap/Handle.h" #include "sky/engine/wtf/Forward.h" #include "sky/engine/wtf/HashSet.h" namespace blink { class CSSStyleDeclaration; class DOMWindowProperty; class Database; class DatabaseCallback; class Document; class DocumentInit; class Element; class EventListener; class ExceptionState; class FloatRect; class IDBFactory; class LocalFrame; class MediaQueryList; class Node; class Page; class RequestAnimationFrameCallback; class ScheduledAction; class ScriptCallStack; class StyleMedia; class Tracing; enum PageshowEventPersistence { PageshowEventNotPersisted = 0, PageshowEventPersisted = 1 }; class LocalDOMWindow final : public DartWrappable, public RefCounted, public DOMWindowBase64, public FrameDestructionObserver, public Supplementable { DEFINE_WRAPPERTYPEINFO(); public: static PassRefPtr create(LocalFrame& frame) { return adoptRef(new LocalDOMWindow(frame)); } virtual ~LocalDOMWindow(); PassRefPtr installNewDocument(const DocumentInit&); void AcceptDartGCVisitor(DartGCVisitor& visitor) const override; void registerProperty(DOMWindowProperty*); void unregisterProperty(DOMWindowProperty*); void reset(); PassRefPtr matchMedia(const String&); // DOM Level 0 int outerHeight() const; int outerWidth() const; int innerHeight() const; int innerWidth() const; Tracing& tracing() const; // FIXME(sky): keeping self for now since js-test.html uses it. LocalDOMWindow* window() const; // DOM Level 2 AbstractView Interface Document* document() const; // CSSOM View Module StyleMedia& styleMedia() const; // DOM Level 2 Style Interface PassRefPtr getComputedStyle(Element*) const; // WebKit extensions double devicePixelRatio() const; void printErrorMessage(const String&); 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; // WebKit animation extensions int requestAnimationFrame(PassOwnPtr); void cancelAnimationFrame(int id); // This is the interface orientation in degrees. Some examples are: // 0 is straight up; -90 is when the device is rotated 90 clockwise; // 90 is when rotated counter clockwise. int orientation() const; void willDetachDocumentFromFrame(); bool isInsecureScriptAccess(LocalDOMWindow& callingWindow, const String& urlString); private: explicit LocalDOMWindow(LocalFrame&); Page* page(); virtual void frameDestroyed() override; virtual void willDetachFrameHost() override; void clearDocument(); void resetDOMWindowProperties(); void willDestroyDocumentInFrame(); RefPtr m_document; #if ENABLE(ASSERT) bool m_hasBeenReset; #endif HashSet m_properties; mutable RefPtr m_tracing; }; } // namespace blink #endif // SKY_ENGINE_CORE_FRAME_LOCALDOMWINDOW_H_