#define ExecutionContext_h
#include "core/dom/ActiveDOMObject.h"
-#include "core/dom/ExecutionContextClient.h"
#include "core/dom/SandboxFlags.h"
#include "core/dom/SecurityContext.h"
#include "core/fetch/CrossOriginAccessControl.h"
public:
virtual void trace(Visitor*) OVERRIDE;
- // Delegating to ExecutionContextClient
- bool isDocument() const { return m_client && m_client->isDocument(); }
- bool isWorkerGlobalScope() const { return m_client && m_client->isWorkerGlobalScope(); }
- bool isDedicatedWorkerGlobalScope() const { return m_client && m_client->isDedicatedWorkerGlobalScope(); }
- bool isSharedWorkerGlobalScope() const { return m_client && m_client->isSharedWorkerGlobalScope(); }
- bool isServiceWorkerGlobalScope() const { return m_client && m_client->isServiceWorkerGlobalScope(); }
- bool isJSExecutionForbidden() { return m_client && m_client->isJSExecutionForbidden(); }
- SecurityOrigin* securityOrigin() const;
- ContentSecurityPolicy* contentSecurityPolicy() const;
+ virtual bool isDocument() const { return false; }
+ virtual bool isWorkerGlobalScope() const { return false; }
+ virtual bool isDedicatedWorkerGlobalScope() const { return false; }
+ virtual bool isSharedWorkerGlobalScope() const { return false; }
+ virtual bool isServiceWorkerGlobalScope() const { return false; }
+ virtual bool isJSExecutionForbidden() const { return false; }
+ SecurityOrigin* securityOrigin();
+ ContentSecurityPolicy* contentSecurityPolicy();
+ virtual void didUpdateSecurityOrigin() = 0;
const KURL& url() const;
KURL completeURL(const String& url) const;
- void disableEval(const String& errorMessage);
- LocalDOMWindow* executingWindow() const;
- String userAgent(const KURL&) const;
- void postTask(PassOwnPtr<ExecutionContextTask>);
- double timerAlignmentInterval() const;
+ virtual void disableEval(const String& errorMessage) = 0;
+ virtual LocalDOMWindow* executingWindow() { return 0; }
+ virtual String userAgent(const KURL&) const = 0;
+ virtual void postTask(PassOwnPtr<ExecutionContextTask>) = 0; // Executes the task on context's thread asynchronously.
+ virtual double timerAlignmentInterval() const = 0;
virtual void reportBlockedScriptExecutionToInspector(const String& directiveText) = 0;
KURL contextCompleteURL(const String& url) const { return virtualCompleteURL(url); }
bool shouldSanitizeScriptError(const String& sourceURL, AccessControlStatus);
- void reportException(PassRefPtrWillBeRawPtr<ErrorEvent>, PassRefPtrWillBeRawPtr<ScriptCallStack>, AccessControlStatus);
+ void reportException(PassRefPtrWillBeRawPtr<ErrorEvent>, int scriptId, PassRefPtrWillBeRawPtr<ScriptCallStack>, AccessControlStatus);
- void addConsoleMessage(PassRefPtrWillBeRawPtr<ConsoleMessage>);
+ virtual void addConsoleMessage(PassRefPtrWillBeRawPtr<ConsoleMessage>) = 0;
+ virtual void logExceptionToConsole(const String& errorMessage, int scriptId, const String& sourceURL, int lineNumber, int columnNumber, PassRefPtrWillBeRawPtr<ScriptCallStack>) = 0;
PublicURLManager& publicURLManager();
virtual void suspendScheduledTasks();
virtual void resumeScheduledTasks();
virtual bool tasksNeedSuspension() { return false; }
+ virtual void tasksWereSuspended() { }
+ virtual void tasksWereResumed() { }
bool activeDOMObjectsAreSuspended() const { return m_activeDOMObjectsAreSuspended; }
bool activeDOMObjectsAreStopped() const { return m_activeDOMObjectsAreStopped; }
PassOwnPtr<LifecycleNotifier<ExecutionContext> > createLifecycleNotifier();
+ virtual EventTarget* errorEventTarget() = 0;
virtual EventQueue* eventQueue() const = 0;
protected:
ExecutionContext();
virtual ~ExecutionContext();
- void setClient(ExecutionContextClient* client) { m_client = client; }
-
virtual const KURL& virtualURL() const = 0;
virtual KURL virtualCompleteURL(const String&) const = 0;
int installNewTimeout(PassOwnPtr<ScheduledAction>, int timeout, bool singleShot);
void removeTimeoutByID(int timeoutID); // This makes underlying DOMTimer instance destructed.
- ExecutionContextClient* m_client;
SandboxFlags m_sandboxFlags;
int m_circularSequentialID;