summaryrefslogtreecommitdiffstats
path: root/WebCore/bindings/v8/WorkerContextExecutionProxy.h
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/bindings/v8/WorkerContextExecutionProxy.h')
-rw-r--r--WebCore/bindings/v8/WorkerContextExecutionProxy.h45
1 files changed, 29 insertions, 16 deletions
diff --git a/WebCore/bindings/v8/WorkerContextExecutionProxy.h b/WebCore/bindings/v8/WorkerContextExecutionProxy.h
index dad191c..75024df 100644
--- a/WebCore/bindings/v8/WorkerContextExecutionProxy.h
+++ b/WebCore/bindings/v8/WorkerContextExecutionProxy.h
@@ -34,9 +34,10 @@
#if ENABLE(WORKERS)
-#include <v8.h>
+#include "ScriptValue.h"
#include "V8EventListenerList.h"
#include "V8Index.h"
+#include <v8.h>
#include <wtf/OwnPtr.h>
#include <wtf/Vector.h>
@@ -48,24 +49,27 @@ namespace WebCore {
class V8WorkerContextEventListener;
class WorkerContext;
+ struct WorkerContextExecutionState {
+ WorkerContextExecutionState() : hadException(false), lineNumber(0) { }
+
+ bool hadException;
+ ScriptValue exception;
+ String errorMessage;
+ int lineNumber;
+ String sourceURL;
+ };
+
class WorkerContextExecutionProxy {
public:
WorkerContextExecutionProxy(WorkerContext*);
~WorkerContextExecutionProxy();
- // FIXME: following function sshould have camelCased names once V8 code-generating script is migrated.
- v8::Local<v8::Context> GetContext() { return v8::Local<v8::Context>::New(m_context); }
- v8::Local<v8::Function> GetConstructor(V8ClassIndex::V8WrapperType);
- void RemoveEventListener(V8EventListener*);
-
- static v8::Handle<v8::Value> ToV8Object(V8ClassIndex::V8WrapperType type, void* impl);
- static v8::Handle<v8::Value> EventToV8Object(Event* event);
- static v8::Handle<v8::Value> EventTargetToV8Object(EventTarget* target);
- static v8::Handle<v8::Value> WorkerContextToV8Object(WorkerContext* wc);
+ void removeEventListener(V8EventListener*);
// Finds/creates event listener wrappers.
PassRefPtr<V8EventListener> findOrCreateEventListener(v8::Local<v8::Value> listener, bool isInline, bool findOnly);
PassRefPtr<V8EventListener> findOrCreateObjectEventListener(v8::Local<v8::Value> object, bool isInline, bool findOnly);
+ PassRefPtr<V8EventListener> findOrCreateEventListenerHelper(v8::Local<v8::Value> object, bool isInline, bool findOnly, bool createObjectEventListener);
// Track the event so that we can detach it from the JS wrapper when a worker
// terminates. This is needed because we need to be able to dispose these
@@ -73,7 +77,10 @@ namespace WebCore {
void trackEvent(Event*);
// Evaluate a script file in the current execution environment.
- v8::Local<v8::Value> evaluate(const String& script, const String& fileName, int baseLine);
+ ScriptValue evaluate(const String& script, const String& fileName, int baseLine, WorkerContextExecutionState*);
+
+ // Returns a local handle of the context.
+ v8::Local<v8::Context> context() { return v8::Local<v8::Context>::New(m_context); }
// Returns WorkerContext object.
WorkerContext* workerContext() { return m_workerContext; }
@@ -81,20 +88,26 @@ namespace WebCore {
// Returns WorkerContextExecutionProxy object of the currently executing context. 0 will be returned if the current executing context is not the worker context.
static WorkerContextExecutionProxy* retrieve();
- // Enables HTML5 worker support.
- static bool isWebWorkersEnabled();
- static void setIsWebWorkersEnabled(bool);
+ // We have to keep all these conversion functions here before WorkerContextExecutionProxy is refactor-ed.
+ template<typename T>
+ static v8::Handle<v8::Value> convertToV8Object(V8ClassIndex::V8WrapperType type, PassRefPtr<T> impl)
+ {
+ return convertToV8Object(type, impl.get());
+ }
+ static v8::Handle<v8::Value> convertToV8Object(V8ClassIndex::V8WrapperType, void* impl);
+ static v8::Handle<v8::Value> convertEventToV8Object(Event*);
+ static v8::Handle<v8::Value> convertEventTargetToV8Object(EventTarget*);
+ static v8::Handle<v8::Value> convertWorkerContextToV8Object(WorkerContext*);
private:
void initV8IfNeeded();
void initContextIfNeeded();
void dispose();
- PassRefPtr<V8EventListener> findOrCreateEventListenerHelper(v8::Local<v8::Value> object, bool isInline, bool findOnly, bool createObjectEventListener);
// Run an already compiled script.
v8::Local<v8::Value> runScript(v8::Handle<v8::Script>);
- static v8::Local<v8::Object> toV8(V8ClassIndex::V8WrapperType descType, V8ClassIndex::V8WrapperType cptrType, void* impl);
+ static v8::Local<v8::Object> toV8(V8ClassIndex::V8WrapperType descriptorType, V8ClassIndex::V8WrapperType cptrType, void* impl);
static bool forgetV8EventObject(Event*);