bool ScriptExecutionContext::dispatchErrorEvent(const String& errorMessage, int lineNumber, int columnNumber, const String& sourceURL, JSC::Exception* exception, CachedScript* cachedScript) { EventTarget* target = errorEventTarget(); if (!target) return false; #if PLATFORM(IOS) if (target->toDOMWindow() && is<Document>(*this)) { Settings* settings = downcast<Document>(*this).settings(); if (settings && !settings->shouldDispatchJavaScriptWindowOnErrorEvents()) return false; } #endif String message = errorMessage; int line = lineNumber; int column = columnNumber; String sourceName = sourceURL; Deprecated::ScriptValue error = exception && exception->value() ? Deprecated::ScriptValue(vm(), exception->value()) : Deprecated::ScriptValue(); sanitizeScriptError(message, line, column, sourceName, error, cachedScript); ASSERT(!m_inDispatchErrorEvent); m_inDispatchErrorEvent = true; Ref<ErrorEvent> errorEvent = ErrorEvent::create(message, sourceName, line, column, error); target->dispatchEvent(errorEvent); m_inDispatchErrorEvent = false; return errorEvent->defaultPrevented(); }
bool ScriptExecutionContext::dispatchErrorEvent(const String& errorMessage, int lineNumber, const String& sourceURL) { EventTarget* target = errorEventTarget(); if (!target) return false; String message; int line; String sourceName; KURL targetUrl = completeURL(sourceURL); if (securityOrigin()->canRequest(targetUrl)) { message = errorMessage; line = lineNumber; sourceName = sourceURL; } else { message = "Script error."; sourceName = String(); line = 0; } ASSERT(!m_inDispatchErrorEvent); m_inDispatchErrorEvent = true; RefPtr<ErrorEvent> errorEvent = ErrorEvent::create(message, sourceName, line); target->dispatchEvent(errorEvent); m_inDispatchErrorEvent = false; return errorEvent->defaultPrevented(); }
bool ScriptExecutionContext::dispatchErrorEvent(const String& errorMessage, int lineNumber, int columnNumber, const String& sourceURL, CachedScript* cachedScript) { EventTarget* target = errorEventTarget(); if (!target) return false; #if PLATFORM(IOS) if (target == target->toDOMWindow() && isDocument()) { Settings* settings = static_cast<Document*>(this)->settings(); if (settings && !settings->shouldDispatchJavaScriptWindowOnErrorEvents()) return false; } #endif String message = errorMessage; int line = lineNumber; int column = columnNumber; String sourceName = sourceURL; sanitizeScriptError(message, line, column, sourceName, cachedScript); ASSERT(!m_inDispatchErrorEvent); m_inDispatchErrorEvent = true; RefPtr<ErrorEvent> errorEvent = ErrorEvent::create(message, sourceName, line, column); target->dispatchEvent(errorEvent); m_inDispatchErrorEvent = false; return errorEvent->defaultPrevented(); }
bool ExecutionContext::dispatchErrorEventInternal( ErrorEvent* errorEvent, AccessControlStatus corsStatus) { EventTarget* target = errorEventTarget(); if (!target) return false; if (shouldSanitizeScriptError(errorEvent->filename(), corsStatus)) errorEvent = ErrorEvent::createSanitizedError(errorEvent->world()); DCHECK(!m_inDispatchErrorEvent); m_inDispatchErrorEvent = true; target->dispatchEvent(errorEvent); m_inDispatchErrorEvent = false; return errorEvent->defaultPrevented(); }
bool ExecutionContext::dispatchErrorEvent(PassRefPtrWillBeRawPtr<ErrorEvent> event, AccessControlStatus corsStatus) { EventTarget* target = errorEventTarget(); if (!target) return false; RefPtrWillBeRawPtr<ErrorEvent> errorEvent = event; if (shouldSanitizeScriptError(errorEvent->filename(), corsStatus)) errorEvent = ErrorEvent::createSanitizedError(errorEvent->world()); ASSERT(!m_inDispatchErrorEvent); m_inDispatchErrorEvent = true; target->dispatchEvent(errorEvent); m_inDispatchErrorEvent = false; return errorEvent->defaultPrevented(); }
bool ScriptExecutionContext::dispatchErrorEvent(const String& errorMessage, int lineNumber, const String& sourceURL) { EventTarget* target = errorEventTarget(); if (!target) return false; String message = errorMessage; int line = lineNumber; String sourceName = sourceURL; sanitizeScriptError(message, line, sourceName); ASSERT(!m_inDispatchErrorEvent); m_inDispatchErrorEvent = true; RefPtr<ErrorEvent> errorEvent = ErrorEvent::create(message, sourceName, line); target->dispatchEvent(errorEvent); m_inDispatchErrorEvent = false; return errorEvent->defaultPrevented(); }