Index: Source/core/dom/ExecutionContext.cpp |
diff --git a/Source/core/dom/ExecutionContext.cpp b/Source/core/dom/ExecutionContext.cpp |
index 1f835c06ed54d6aca07b3ef1350336ef3468bbff..cec6df5035e1744a71b1cabb6b9da1f2c95c3830 100644 |
--- a/Source/core/dom/ExecutionContext.cpp |
+++ b/Source/core/dom/ExecutionContext.cpp |
@@ -201,32 +201,39 @@ void ExecutionContext::reportException(PassRefPtr<ErrorEvent> event, PassRefPtr< |
} |
// First report the original exception and only then all the nested ones. |
- if (!dispatchErrorEvent(errorEvent, corsStatus)) |
- logExceptionToConsole(errorEvent->messageForConsole(), errorEvent->filename(), errorEvent->lineno(), errorEvent->colno(), callStack); |
+ if (!dispatchErrorEvent(errorEvent, corsStatus) && m_client) |
+ m_client->logExceptionToConsole(errorEvent->messageForConsole(), errorEvent->filename(), errorEvent->lineno(), errorEvent->colno(), callStack); |
if (!m_pendingExceptions) |
return; |
for (size_t i = 0; i < m_pendingExceptions->size(); i++) { |
PendingException* e = m_pendingExceptions->at(i).get(); |
- logExceptionToConsole(e->m_errorMessage, e->m_sourceURL, e->m_lineNumber, e->m_columnNumber, e->m_callStack); |
+ if (m_client) |
+ m_client->logExceptionToConsole(e->m_errorMessage, e->m_sourceURL, e->m_lineNumber, e->m_columnNumber, e->m_callStack); |
} |
m_pendingExceptions.clear(); |
} |
void ExecutionContext::addConsoleMessage(MessageSource source, MessageLevel level, const String& message, const String& sourceURL, unsigned lineNumber) |
{ |
- addMessage(source, level, message, sourceURL, lineNumber, 0); |
+ if (!m_client) |
+ return; |
+ m_client->addMessage(source, level, message, sourceURL, lineNumber, 0); |
} |
void ExecutionContext::addConsoleMessage(MessageSource source, MessageLevel level, const String& message, ScriptState* state) |
{ |
- addMessage(source, level, message, String(), 0, state); |
+ if (!m_client) |
+ return; |
+ m_client->addMessage(source, level, message, String(), 0, state); |
} |
bool ExecutionContext::dispatchErrorEvent(PassRefPtr<ErrorEvent> event, AccessControlStatus corsStatus) |
{ |
- EventTarget* target = errorEventTarget(); |
+ if (!m_client) |
+ return false; |
+ EventTarget* target = m_client->errorEventTarget(); |
if (!target) |
return false; |
@@ -286,19 +293,86 @@ void ExecutionContext::didChangeTimerAlignmentInterval() |
iter->value->didChangeAlignmentInterval(); |
} |
+EventQueue* ExecutionContext::eventQueue() const |
+{ |
+ if (!m_client) |
+ return 0; |
+ return m_client->eventQueue(); |
+} |
+ |
+const KURL& ExecutionContext::url() const |
+{ |
+ if (!m_client) { |
+ DEFINE_STATIC_LOCAL(KURL, emptyURL, ()); |
+ return emptyURL; |
+ } |
+ |
+ return m_client->virtualURL(); |
+} |
+ |
+KURL ExecutionContext::completeURL(const String& url) const |
+{ |
+ |
+ if (!m_client) { |
+ DEFINE_STATIC_LOCAL(KURL, emptyURL, ()); |
+ return emptyURL; |
+ } |
+ |
+ return m_client->virtualCompleteURL(url); |
+} |
+ |
+void ExecutionContext::userEventWasHandled() |
+{ |
+ if (!m_client) |
+ return; |
+ m_client->userEventWasHandled(); |
+} |
+ |
+void ExecutionContext::disableEval(const String& errorMessage) |
+{ |
+ if (!m_client) |
+ return; |
+ return m_client->disableEval(errorMessage); |
+} |
+ |
+DOMWindow* ExecutionContext::executingWindow() const |
+{ |
+ if (!m_client) |
+ return 0; |
+ return m_client->executingWindow(); |
+} |
+ |
+String ExecutionContext::userAgent(const KURL& url) const |
+{ |
+ if (!m_client) |
+ return String(); |
+ return m_client->userAgent(url); |
+} |
+ |
double ExecutionContext::timerAlignmentInterval() const |
{ |
- return DOMTimer::visiblePageAlignmentInterval(); |
+ if (!m_client) |
+ return DOMTimer::visiblePageAlignmentInterval(); |
+ return m_client->timerAlignmentInterval(); |
} |
-ContextLifecycleNotifier* ExecutionContext::lifecycleNotifier() |
+void ExecutionContext::postTask(PassOwnPtr<ExecutionContextTask> task) |
{ |
- return static_cast<ContextLifecycleNotifier*>(LifecycleContext::lifecycleNotifier()); |
+ if (!m_client) |
+ return; |
+ m_client->postTask(task); |
} |
PassOwnPtr<LifecycleNotifier> ExecutionContext::createLifecycleNotifier() |
{ |
- return ContextLifecycleNotifier::create(this); |
+ if (!m_client) |
+ return PassOwnPtr<LifecycleNotifier>(); |
+ return m_client->createLifecycleNotifier(); |
+} |
+ |
+ContextLifecycleNotifier* ExecutionContext::lifecycleNotifier() |
+{ |
+ return static_cast<ContextLifecycleNotifier*>(LifecycleContext::lifecycleNotifier()); |
} |
bool ExecutionContext::isIteratingOverObservers() const |