summaryrefslogtreecommitdiff
path: root/Source/WebCore/bindings/js/JSMainThreadExecState.h
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-02-09 14:16:12 +0100
committerSimon Hausmann <simon.hausmann@nokia.com>2012-02-09 14:16:12 +0100
commit03e12282df9aa1e1fb05a8b90f1cfc2e08764cec (patch)
tree52599cd0ab782b1768e23ad176f7618f98333cb6 /Source/WebCore/bindings/js/JSMainThreadExecState.h
parentcd44dc59cdfc39534aef4d417e9f3c412e3be139 (diff)
downloadqtwebkit-03e12282df9aa1e1fb05a8b90f1cfc2e08764cec.tar.gz
Imported WebKit commit e09a82039aa4273ab318b71122e92d8e5f233525 (http://svn.webkit.org/repository/webkit/trunk@107223)
Diffstat (limited to 'Source/WebCore/bindings/js/JSMainThreadExecState.h')
-rw-r--r--Source/WebCore/bindings/js/JSMainThreadExecState.h17
1 files changed, 16 insertions, 1 deletions
diff --git a/Source/WebCore/bindings/js/JSMainThreadExecState.h b/Source/WebCore/bindings/js/JSMainThreadExecState.h
index 55b820324..5e4c4e2dc 100644
--- a/Source/WebCore/bindings/js/JSMainThreadExecState.h
+++ b/Source/WebCore/bindings/js/JSMainThreadExecState.h
@@ -92,19 +92,34 @@ protected:
ASSERT(isMainThread());
s_mainThreadState = exec;
};
-
+
~JSMainThreadExecState()
{
ASSERT(isMainThread());
+
+#if ENABLE(MUTATION_OBSERVERS)
+ bool didExitJavaScript = s_mainThreadState && !m_previousState;
+#endif
+
s_mainThreadState = m_previousState;
+
+#if ENABLE(MUTATION_OBSERVERS)
+ if (didExitJavaScript)
+ didLeaveScriptContext();
+#endif
}
private:
static JSC::ExecState* s_mainThreadState;
JSC::ExecState* m_previousState;
+
+#if ENABLE(MUTATION_OBSERVERS)
+ static void didLeaveScriptContext();
+#endif
};
// Null state prevents origin security checks.
+// Used by non-JavaScript bindings (ObjC, GObject).
class JSMainThreadNullState : private JSMainThreadExecState {
public:
explicit JSMainThreadNullState() : JSMainThreadExecState(0) {};