📄 scriptcontroller.h
字号:
/* * Copyright (C) 1999 Harri Porten (porten@kde.org) * Copyright (C) 2001 Peter Kelly (pmk@post.com) * Copyright (C) 2008 Apple Inc. All rights reserved. * Copyright (C) 2008 Eric Seidel <eric@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 */#ifndef ScriptController_h#define ScriptController_h#include "JSDOMWindowShell.h"#include "ScriptInstance.h"#include <runtime/Protect.h>#include <wtf/RefPtr.h>#if PLATFORM(MAC)#include <wtf/RetainPtr.h>#ifdef __OBJC__@class WebScriptObject;#elseclass WebScriptObject;#endif#endifstruct NPObject;namespace JSC { class JSGlobalObject; namespace Bindings { class RootObject; }}namespace WebCore {class Event;class EventListener;class HTMLPlugInElement;class Frame;class Node;class ScriptSourceCode;class ScriptValue;class String;class Widget;typedef HashMap<void*, RefPtr<JSC::Bindings::RootObject> > RootObjectMap;class ScriptController {public: ScriptController(Frame*); ~ScriptController(); bool haveWindowShell() const { return m_windowShell; } JSDOMWindowShell* windowShell() { initScriptIfNeeded(); return m_windowShell; } JSDOMWindow* globalObject() { initScriptIfNeeded(); return m_windowShell->window(); } ScriptValue evaluate(const ScriptSourceCode&); PassRefPtr<EventListener> createInlineEventListener(const String& functionName, const String& code, Node*);#if ENABLE(SVG) PassRefPtr<EventListener> createSVGEventHandler(const String& functionName, const String& code, Node*);#endif void setEventHandlerLineno(int lineno) { m_handlerLineno = lineno; } void setProcessingTimerCallback(bool b) { m_processingTimerCallback = b; } bool processingUserGesture() const; bool anyPageIsProcessingUserGesture() const; bool isEnabled(); void attachDebugger(JSC::Debugger*); void setPaused(bool b) { m_paused = b; } bool isPaused() const { return m_paused; } const String* sourceURL() const { return m_sourceURL; } // 0 if we are not evaluating any script void clearWindowShell(); void clearFormerWindow(JSDOMWindow* window) { m_liveFormerWindows.remove(window); } void updateDocument(); // Notifies the ScriptController that the securityOrigin of the current // document was modified. For example, this method is called when // document.domain is set. This method is *not* called when a new document // is attached to a frame because updateDocument() is called instead. void updateSecurityOrigin(); void clearScriptObjects(); void cleanupScriptObjectsForPlugin(void*); void updatePlatformScriptObjects(); PassScriptInstance createScriptInstanceForWidget(Widget*); JSC::Bindings::RootObject* bindingRootObject(); PassRefPtr<JSC::Bindings::RootObject> createRootObject(void* nativeHandle);#if PLATFORM(MAC)#if ENABLE(MAC_JAVA_BRIDGE) static void initJavaJSBindings();#endif WebScriptObject* windowScriptObject();#endif JSC::JSObject* jsObjectForPluginElement(HTMLPlugInElement*); #if ENABLE(NETSCAPE_PLUGIN_API) NPObject* createScriptObjectForPluginElement(HTMLPlugInElement*); NPObject* windowScriptNPObject();#endifprivate: void initScriptIfNeeded() { if (!m_windowShell) initScript(); } void initScript(); void disconnectPlatformScriptObjects(); bool processingUserGestureEvent() const; bool isJavaScriptAnchorNavigation() const; JSC::ProtectedPtr<JSDOMWindowShell> m_windowShell; HashSet<JSDOMWindow*> m_liveFormerWindows; Frame* m_frame; int m_handlerLineno; const String* m_sourceURL; bool m_processingTimerCallback; bool m_paused; // The root object used for objects bound outside the context of a plugin. RefPtr<JSC::Bindings::RootObject> m_bindingRootObject; RootObjectMap m_rootObjects;#if ENABLE(NETSCAPE_PLUGIN_API) NPObject* m_windowScriptNPObject;#endif#if PLATFORM(MAC) RetainPtr<WebScriptObject> m_windowScriptObject;#endif};} // namespace WebCore#endif // ScriptController_h
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -