#ifndef WorkerGlobalScope_h
#define WorkerGlobalScope_h
-#include "bindings/v8/ScriptWrappable.h"
-#include "bindings/v8/WorkerScriptController.h"
+#include "bindings/core/v8/WorkerScriptController.h"
#include "core/dom/ExecutionContext.h"
#include "core/events/EventListener.h"
#include "core/events/EventTarget.h"
+#include "core/frame/DOMWindowBase64.h"
+#include "core/frame/UseCounter.h"
#include "core/frame/csp/ContentSecurityPolicy.h"
-#include "core/workers/WorkerConsole.h"
#include "core/workers/WorkerEventQueue.h"
-#include "heap/Handle.h"
+#include "platform/heap/Handle.h"
#include "platform/network/ContentSecurityPolicyParsers.h"
#include "wtf/Assertions.h"
#include "wtf/HashMap.h"
#include "wtf/RefPtr.h"
#include "wtf/text/AtomicStringHash.h"
-namespace WebCore {
+namespace blink {
- class Blob;
- class ExceptionState;
- class ScheduledAction;
- class WorkerClients;
- class WorkerConsole;
- class WorkerInspectorController;
- class WorkerLocation;
- class WorkerNavigator;
- class WorkerThread;
+class Blob;
+class ConsoleMessage;
+class ConsoleMessageStorage;
+class ExceptionState;
+class ScheduledAction;
+class WorkerClients;
+class WorkerConsole;
+class WorkerInspectorController;
+class WorkerLocation;
+class WorkerNavigator;
+class WorkerThread;
- class WorkerGlobalScope : public RefCountedWillBeRefCountedGarbageCollected<WorkerGlobalScope>, public ScriptWrappable, public SecurityContext, public ExecutionContext, public ExecutionContextClient, public WillBeHeapSupplementable<WorkerGlobalScope>, public EventTargetWithInlineData {
- WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(WorkerGlobalScope);
- DEFINE_EVENT_TARGET_REFCOUNTING(RefCountedWillBeRefCountedGarbageCollected<WorkerGlobalScope>);
- public:
- virtual ~WorkerGlobalScope();
+class WorkerGlobalScope : public RefCountedWillBeGarbageCollectedFinalized<WorkerGlobalScope>, public SecurityContext, public ExecutionContext, public WillBeHeapSupplementable<WorkerGlobalScope>, public EventTargetWithInlineData, public DOMWindowBase64 {
+ DEFINE_WRAPPERTYPEINFO();
+ REFCOUNTED_EVENT_TARGET(WorkerGlobalScope);
+ WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(WorkerGlobalScope);
+public:
+ virtual ~WorkerGlobalScope();
- virtual bool isWorkerGlobalScope() const OVERRIDE FINAL { return true; }
+ virtual bool isWorkerGlobalScope() const override final { return true; }
- virtual ExecutionContext* executionContext() const OVERRIDE FINAL;
+ virtual ExecutionContext* executionContext() const override final;
- virtual bool isSharedWorkerGlobalScope() const { return false; }
- virtual bool isDedicatedWorkerGlobalScope() const { return false; }
- virtual bool isServiceWorkerGlobalScope() const { return false; }
+ virtual void countFeature(UseCounter::Feature) const;
+ virtual void countDeprecation(UseCounter::Feature) const;
- const KURL& url() const { return m_url; }
- KURL completeURL(const String&) const;
+ const KURL& url() const { return m_url; }
+ KURL completeURL(const String&) const;
- virtual String userAgent(const KURL&) const OVERRIDE FINAL;
- virtual void disableEval(const String& errorMessage) OVERRIDE FINAL;
+ virtual String userAgent(const KURL&) const override final;
+ virtual void disableEval(const String& errorMessage) override final;
- WorkerScriptController* script() { return m_script.get(); }
- void clearScript() { m_script.clear(); }
- void clearInspector();
+ WorkerScriptController* script() { return m_script.get(); }
+ void clearScript() { m_script.clear(); }
+ void clearInspector();
- void willStopActiveDOMObjects();
- void dispose();
+ virtual void didEvaluateWorkerScript();
+ void dispose();
- WorkerThread* thread() const { return m_thread; }
+ WorkerThread* thread() const { return m_thread; }
- virtual void postTask(PassOwnPtr<ExecutionContextTask>) OVERRIDE FINAL; // Executes the task on context's thread asynchronously.
+ virtual void postTask(PassOwnPtr<ExecutionContextTask>) override final; // Executes the task on context's thread asynchronously.
- // WorkerGlobalScope
- WorkerGlobalScope* self() { return this; }
- WorkerConsole* console();
- WorkerLocation* location() const;
- void close();
+ // WorkerGlobalScope
+ WorkerGlobalScope* self() { return this; }
+ WorkerConsole* console();
+ WorkerLocation* location() const;
+ void close();
- DEFINE_ATTRIBUTE_EVENT_LISTENER(error);
+ DEFINE_ATTRIBUTE_EVENT_LISTENER(error);
- // WorkerUtils
- virtual void importScripts(const Vector<String>& urls, ExceptionState&);
- WorkerNavigator* navigator() const;
+ // WorkerUtils
+ virtual void importScripts(const Vector<String>& urls, ExceptionState&);
+ WorkerNavigator* navigator() const;
- // ExecutionContextClient
- virtual WorkerEventQueue* eventQueue() const OVERRIDE FINAL;
- virtual SecurityContext& securityContext() OVERRIDE FINAL { return *this; }
+ // ExecutionContextClient
+ virtual WorkerEventQueue* eventQueue() const override final;
+ virtual SecurityContext& securityContext() override final { return *this; }
- virtual bool isContextThread() const OVERRIDE FINAL;
- virtual bool isJSExecutionForbidden() const OVERRIDE FINAL;
+ virtual bool isContextThread() const override final;
+ virtual bool isJSExecutionForbidden() const override final;
- virtual double timerAlignmentInterval() const OVERRIDE FINAL;
+ virtual double timerAlignmentInterval() const override final;
- WorkerInspectorController* workerInspectorController() { return m_workerInspectorController.get(); }
- // These methods are used for GC marking. See JSWorkerGlobalScope::visitChildrenVirtual(SlotVisitor&) in
- // JSWorkerGlobalScopeCustom.cpp.
- WorkerConsole* optionalConsole() const { return m_console.get(); }
- WorkerNavigator* optionalNavigator() const { return m_navigator.get(); }
- WorkerLocation* optionalLocation() const { return m_location.get(); }
+ WorkerInspectorController* workerInspectorController() { return m_workerInspectorController.get(); }
- bool isClosing() { return m_closing; }
+ bool isClosing() { return m_closing; }
- bool idleNotification();
+ virtual void stopFetch() { }
- double timeOrigin() const { return m_timeOrigin; }
+ bool idleNotification();
- WorkerClients* clients() { return m_workerClients.get(); }
+ double timeOrigin() const { return m_timeOrigin; }
- using SecurityContext::securityOrigin;
- using SecurityContext::contentSecurityPolicy;
+ WorkerClients* clients() { return m_workerClients.get(); }
- virtual void trace(Visitor*);
+ using SecurityContext::securityOrigin;
+ using SecurityContext::contentSecurityPolicy;
- protected:
- WorkerGlobalScope(const KURL&, const String& userAgent, WorkerThread*, double timeOrigin, PassOwnPtr<WorkerClients>);
- void applyContentSecurityPolicyFromString(const String& contentSecurityPolicy, ContentSecurityPolicyHeaderType);
+ virtual void addConsoleMessage(PassRefPtrWillBeRawPtr<ConsoleMessage>) override final;
+ ConsoleMessageStorage* messageStorage();
- virtual void logExceptionToConsole(const String& errorMessage, const String& sourceURL, int lineNumber, int columnNumber, PassRefPtr<ScriptCallStack>) OVERRIDE;
- void addMessageToWorkerConsole(MessageSource, MessageLevel, const String& message, const String& sourceURL, unsigned lineNumber, PassRefPtr<ScriptCallStack>, ScriptState*);
+ virtual void trace(Visitor*) override;
- private:
- virtual void refExecutionContext() OVERRIDE FINAL { ref(); }
- virtual void derefExecutionContext() OVERRIDE FINAL { deref(); }
+protected:
+ WorkerGlobalScope(const KURL&, const String& userAgent, WorkerThread*, double timeOrigin, const SecurityOrigin*, PassOwnPtrWillBeRawPtr<WorkerClients>);
+ void applyContentSecurityPolicyFromString(const String& contentSecurityPolicy, ContentSecurityPolicyHeaderType);
- virtual const KURL& virtualURL() const OVERRIDE FINAL;
- virtual KURL virtualCompleteURL(const String&) const OVERRIDE FINAL;
+ virtual void logExceptionToConsole(const String& errorMessage, int scriptId, const String& sourceURL, int lineNumber, int columnNumber, PassRefPtrWillBeRawPtr<ScriptCallStack>) override;
+ void addMessageToWorkerConsole(PassRefPtrWillBeRawPtr<ConsoleMessage>);
- virtual void reportBlockedScriptExecutionToInspector(const String& directiveText) OVERRIDE FINAL;
- virtual void addMessage(MessageSource, MessageLevel, const String& message, const String& sourceURL, unsigned lineNumber, ScriptState* = 0) OVERRIDE FINAL;
+private:
+#if !ENABLE(OILPAN)
+ virtual void refExecutionContext() override final { ref(); }
+ virtual void derefExecutionContext() override final { deref(); }
+#endif
- virtual EventTarget* errorEventTarget() OVERRIDE FINAL;
- virtual void didUpdateSecurityOrigin() OVERRIDE FINAL { }
+ virtual const KURL& virtualURL() const override final;
+ virtual KURL virtualCompleteURL(const String&) const override final;
- KURL m_url;
- String m_userAgent;
+ virtual void reportBlockedScriptExecutionToInspector(const String& directiveText) override final;
- mutable RefPtrWillBeMember<WorkerConsole> m_console;
- mutable RefPtrWillBeMember<WorkerLocation> m_location;
- mutable RefPtrWillBeMember<WorkerNavigator> m_navigator;
+ virtual EventTarget* errorEventTarget() override final;
+ virtual void didUpdateSecurityOrigin() override final { }
- OwnPtr<WorkerScriptController> m_script;
- WorkerThread* m_thread;
+ KURL m_url;
+ String m_userAgent;
- OwnPtr<WorkerInspectorController> m_workerInspectorController;
- bool m_closing;
+ mutable RefPtrWillBeMember<WorkerConsole> m_console;
+ mutable RefPtrWillBeMember<WorkerLocation> m_location;
+ mutable RefPtrWillBeMember<WorkerNavigator> m_navigator;
- OwnPtr<WorkerEventQueue> m_eventQueue;
+ OwnPtr<WorkerScriptController> m_script;
+ WorkerThread* m_thread;
- OwnPtr<WorkerClients> m_workerClients;
+ RefPtrWillBeMember<WorkerInspectorController> m_workerInspectorController;
+ bool m_closing;
- double m_timeOrigin;
- };
+ OwnPtrWillBeMember<WorkerEventQueue> m_eventQueue;
+
+ OwnPtrWillBeMember<WorkerClients> m_workerClients;
+
+ double m_timeOrigin;
+
+ OwnPtrWillBeMember<ConsoleMessageStorage> m_messageStorage;
+};
DEFINE_TYPE_CASTS(WorkerGlobalScope, ExecutionContext, context, context->isWorkerGlobalScope(), context.isWorkerGlobalScope());
-} // namespace WebCore
+} // namespace blink
#endif // WorkerGlobalScope_h