summaryrefslogtreecommitdiffstats
path: root/WebCore/bindings/js/JSDOMWindowBase.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/bindings/js/JSDOMWindowBase.cpp')
-rw-r--r--WebCore/bindings/js/JSDOMWindowBase.cpp232
1 files changed, 0 insertions, 232 deletions
diff --git a/WebCore/bindings/js/JSDOMWindowBase.cpp b/WebCore/bindings/js/JSDOMWindowBase.cpp
deleted file mode 100644
index 68c0088..0000000
--- a/WebCore/bindings/js/JSDOMWindowBase.cpp
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * Copyright (C) 2000 Harri Porten (porten@kde.org)
- * Copyright (C) 2006 Jon Shier (jshier@iastate.edu)
- * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reseved.
- * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-
-#include "config.h"
-#include "JSDOMWindowBase.h"
-
-#include "Chrome.h"
-#include "Console.h"
-#include "DOMWindow.h"
-#include "Frame.h"
-#include "InspectorController.h"
-#include "JSDOMWindowCustom.h"
-#include "JSNode.h"
-#include "Logging.h"
-#include "Page.h"
-#include "ScriptController.h"
-#include "SecurityOrigin.h"
-#include "Settings.h"
-#include "WebCoreJSClientData.h"
-#include <wtf/Threading.h>
-#include <wtf/text/StringConcatenate.h>
-
-using namespace JSC;
-
-namespace WebCore {
-
-const ClassInfo JSDOMWindowBase::s_info = { "Window", &JSDOMGlobalObject::s_info, 0, 0 };
-
-JSDOMWindowBase::JSDOMWindowBaseData::JSDOMWindowBaseData(PassRefPtr<DOMWindow> window, JSDOMWindowShell* shell)
- : JSDOMGlobalObjectData(shell->world(), destroyJSDOMWindowBaseData)
- , impl(window)
- , shell(shell)
-{
-}
-
-JSDOMWindowBase::JSDOMWindowBase(NonNullPassRefPtr<Structure> structure, PassRefPtr<DOMWindow> window, JSDOMWindowShell* shell)
- : JSDOMGlobalObject(structure, new JSDOMWindowBaseData(window, shell), shell)
-{
- GlobalPropertyInfo staticGlobals[] = {
- GlobalPropertyInfo(Identifier(globalExec(), "document"), jsNull(), DontDelete | ReadOnly),
- GlobalPropertyInfo(Identifier(globalExec(), "window"), d()->shell, DontDelete | ReadOnly)
- };
-
- addStaticGlobals(staticGlobals, WTF_ARRAY_LENGTH(staticGlobals));
-}
-
-void JSDOMWindowBase::updateDocument()
-{
- ASSERT(d()->impl->document());
- ExecState* exec = globalExec();
- symbolTablePutWithAttributes(Identifier(exec, "document"), toJS(exec, this, d()->impl->document()), DontDelete | ReadOnly);
-}
-
-ScriptExecutionContext* JSDOMWindowBase::scriptExecutionContext() const
-{
- return d()->impl->document();
-}
-
-String JSDOMWindowBase::crossDomainAccessErrorMessage(const JSGlobalObject* other) const
-{
- return d()->shell->window()->impl()->crossDomainAccessErrorMessage(asJSDOMWindow(other)->impl());
-}
-
-void JSDOMWindowBase::printErrorMessage(const String& message) const
-{
- printErrorMessageForFrame(impl()->frame(), message);
-}
-
-ExecState* JSDOMWindowBase::globalExec()
-{
- // We need to make sure that any script execution happening in this
- // frame does not destroy it
- if (Frame *frame = impl()->frame())
- frame->keepAlive();
- return Base::globalExec();
-}
-
-bool JSDOMWindowBase::supportsProfiling() const
-{
-#if !ENABLE(JAVASCRIPT_DEBUGGER) || !ENABLE(INSPECTOR)
- return false;
-#else
- Frame* frame = impl()->frame();
- if (!frame)
- return false;
-
- Page* page = frame->page();
- if (!page)
- return false;
-
- return page->inspectorController()->profilerEnabled();
-#endif
-}
-
-bool JSDOMWindowBase::supportsRichSourceInfo() const
-{
-#if PLATFORM(ANDROID)
- return true;
-#elif !ENABLE(JAVASCRIPT_DEBUGGER) || !ENABLE(INSPECTOR)
- return false;
-#else
- Frame* frame = impl()->frame();
- if (!frame)
- return false;
-
- Page* page = frame->page();
- if (!page)
- return false;
-
- bool enabled = page->inspectorController()->enabled();
- ASSERT(enabled || !debugger());
- ASSERT(enabled || !supportsProfiling());
- return enabled;
-#endif
-}
-
-bool JSDOMWindowBase::shouldInterruptScript() const
-{
- ASSERT(impl()->frame());
- Page* page = impl()->frame()->page();
-
- // See <rdar://problem/5479443>. We don't think that page can ever be NULL
- // in this case, but if it is, we've gotten into a state where we may have
- // hung the UI, with no way to ask the client whether to cancel execution.
- // For now, our solution is just to cancel execution no matter what,
- // ensuring that we never hang. We might want to consider other solutions
- // if we discover problems with this one.
- ASSERT(page);
- if (!page)
- return true;
-
- return page->chrome()->shouldInterruptJavaScript();
-}
-
-void JSDOMWindowBase::willRemoveFromWindowShell()
-{
- setCurrentEvent(0);
-}
-
-JSObject* JSDOMWindowBase::toThisObject(ExecState*) const
-{
- return shell();
-}
-
-JSValue JSDOMWindowBase::toStrictThisObject(ExecState*) const
-{
- return shell();
-}
-
-JSDOMWindowShell* JSDOMWindowBase::shell() const
-{
- return d()->shell;
-}
-
-JSGlobalData* JSDOMWindowBase::commonJSGlobalData()
-{
- ASSERT(isMainThread());
-
- static JSGlobalData* globalData = 0;
- if (!globalData) {
- globalData = JSGlobalData::createLeaked(ThreadStackTypeLarge).releaseRef();
- globalData->timeoutChecker.setTimeoutInterval(10000); // 10 seconds
-#ifndef NDEBUG
- globalData->exclusiveThread = currentThread();
-#endif
- initNormalWorldClientData(globalData);
- }
-
- return globalData;
-}
-
-void JSDOMWindowBase::destroyJSDOMWindowBaseData(void* jsDOMWindowBaseData)
-{
- delete static_cast<JSDOMWindowBaseData*>(jsDOMWindowBaseData);
-}
-
-// JSDOMGlobalObject* is ignored, accessing a window in any context will
-// use that DOMWindow's prototype chain.
-JSValue toJS(ExecState* exec, JSDOMGlobalObject*, DOMWindow* domWindow)
-{
- return toJS(exec, domWindow);
-}
-
-JSValue toJS(ExecState* exec, DOMWindow* domWindow)
-{
- if (!domWindow)
- return jsNull();
- Frame* frame = domWindow->frame();
- if (!frame)
- return jsNull();
- return frame->script()->windowShell(currentWorld(exec));
-}
-
-JSDOMWindow* toJSDOMWindow(Frame* frame, DOMWrapperWorld* world)
-{
- if (!frame)
- return 0;
- return frame->script()->windowShell(world)->window();
-}
-
-JSDOMWindow* toJSDOMWindow(JSValue value)
-{
- if (!value.isObject())
- return 0;
- const ClassInfo* classInfo = asObject(value)->classInfo();
- if (classInfo == &JSDOMWindow::s_info)
- return static_cast<JSDOMWindow*>(asObject(value));
- if (classInfo == &JSDOMWindowShell::s_info)
- return static_cast<JSDOMWindowShell*>(asObject(value))->window();
- return 0;
-}
-
-} // namespace WebCore