#if ENABLE(WORKERS)
#include <v8.h>
+#include "ScriptValue.h"
#include "V8EventListenerList.h"
#include "V8Index.h"
#include <wtf/OwnPtr.h>
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.
+ // FIXME: following function should 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);
- PassRefPtr<V8EventListener> FindOrCreateEventListener(v8::Local<v8::Value> listener, bool isInline, bool findOnly);
void RemoveEventListener(V8EventListener*);
static v8::Handle<v8::Value> ToV8Object(V8ClassIndex::V8WrapperType type, void* impl);
static v8::Handle<v8::Value> WorkerContextToV8Object(WorkerContext* wc);
// 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);
// Track the event so that we can detach it from the JS wrapper when a worker
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 WorkerContext object.
WorkerContext* workerContext() { return m_workerContext; }
// 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);
-
private:
void initV8IfNeeded();
void initContextIfNeeded();