| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. | 2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. |
| 3 * Copyright (C) 2012 Google Inc. All Rights Reserved. | 3 * Copyright (C) 2012 Google Inc. All Rights Reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 194 { | 194 { |
| 195 RefPtr<ErrorEvent> errorEvent = event; | 195 RefPtr<ErrorEvent> errorEvent = event; |
| 196 if (m_inDispatchErrorEvent) { | 196 if (m_inDispatchErrorEvent) { |
| 197 if (!m_pendingExceptions) | 197 if (!m_pendingExceptions) |
| 198 m_pendingExceptions = adoptPtr(new Vector<OwnPtr<PendingException> >
()); | 198 m_pendingExceptions = adoptPtr(new Vector<OwnPtr<PendingException> >
()); |
| 199 m_pendingExceptions->append(adoptPtr(new PendingException(errorEvent->me
ssageForConsole(), errorEvent->lineno(), errorEvent->colno(), errorEvent->filena
me(), callStack))); | 199 m_pendingExceptions->append(adoptPtr(new PendingException(errorEvent->me
ssageForConsole(), errorEvent->lineno(), errorEvent->colno(), errorEvent->filena
me(), callStack))); |
| 200 return; | 200 return; |
| 201 } | 201 } |
| 202 | 202 |
| 203 // First report the original exception and only then all the nested ones. | 203 // First report the original exception and only then all the nested ones. |
| 204 if (!dispatchErrorEvent(errorEvent, corsStatus)) | 204 if (!dispatchErrorEvent(errorEvent, corsStatus) && m_client) |
| 205 logExceptionToConsole(errorEvent->messageForConsole(), errorEvent->filen
ame(), errorEvent->lineno(), errorEvent->colno(), callStack); | 205 m_client->logExceptionToConsole(errorEvent->messageForConsole(), errorEv
ent->filename(), errorEvent->lineno(), errorEvent->colno(), callStack); |
| 206 | 206 |
| 207 if (!m_pendingExceptions) | 207 if (!m_pendingExceptions) |
| 208 return; | 208 return; |
| 209 | 209 |
| 210 for (size_t i = 0; i < m_pendingExceptions->size(); i++) { | 210 for (size_t i = 0; i < m_pendingExceptions->size(); i++) { |
| 211 PendingException* e = m_pendingExceptions->at(i).get(); | 211 PendingException* e = m_pendingExceptions->at(i).get(); |
| 212 logExceptionToConsole(e->m_errorMessage, e->m_sourceURL, e->m_lineNumber
, e->m_columnNumber, e->m_callStack); | 212 if (m_client) |
| 213 m_client->logExceptionToConsole(e->m_errorMessage, e->m_sourceURL, e
->m_lineNumber, e->m_columnNumber, e->m_callStack); |
| 213 } | 214 } |
| 214 m_pendingExceptions.clear(); | 215 m_pendingExceptions.clear(); |
| 215 } | 216 } |
| 216 | 217 |
| 217 void ExecutionContext::addConsoleMessage(MessageSource source, MessageLevel leve
l, const String& message, const String& sourceURL, unsigned lineNumber) | 218 void ExecutionContext::addConsoleMessage(MessageSource source, MessageLevel leve
l, const String& message, const String& sourceURL, unsigned lineNumber) |
| 218 { | 219 { |
| 219 addMessage(source, level, message, sourceURL, lineNumber, 0); | 220 if (!m_client) |
| 221 return; |
| 222 m_client->addMessage(source, level, message, sourceURL, lineNumber, 0); |
| 220 } | 223 } |
| 221 | 224 |
| 222 void ExecutionContext::addConsoleMessage(MessageSource source, MessageLevel leve
l, const String& message, ScriptState* state) | 225 void ExecutionContext::addConsoleMessage(MessageSource source, MessageLevel leve
l, const String& message, ScriptState* state) |
| 223 { | 226 { |
| 224 addMessage(source, level, message, String(), 0, state); | 227 if (!m_client) |
| 228 return; |
| 229 m_client->addMessage(source, level, message, String(), 0, state); |
| 225 } | 230 } |
| 226 | 231 |
| 227 bool ExecutionContext::dispatchErrorEvent(PassRefPtr<ErrorEvent> event, AccessCo
ntrolStatus corsStatus) | 232 bool ExecutionContext::dispatchErrorEvent(PassRefPtr<ErrorEvent> event, AccessCo
ntrolStatus corsStatus) |
| 228 { | 233 { |
| 229 EventTarget* target = errorEventTarget(); | 234 if (!m_client) |
| 235 return false; |
| 236 EventTarget* target = m_client->errorEventTarget(); |
| 230 if (!target) | 237 if (!target) |
| 231 return false; | 238 return false; |
| 232 | 239 |
| 233 RefPtr<ErrorEvent> errorEvent = event; | 240 RefPtr<ErrorEvent> errorEvent = event; |
| 234 if (shouldSanitizeScriptError(errorEvent->filename(), corsStatus)) | 241 if (shouldSanitizeScriptError(errorEvent->filename(), corsStatus)) |
| 235 errorEvent = ErrorEvent::createSanitizedError(errorEvent->world()); | 242 errorEvent = ErrorEvent::createSanitizedError(errorEvent->world()); |
| 236 | 243 |
| 237 ASSERT(!m_inDispatchErrorEvent); | 244 ASSERT(!m_inDispatchErrorEvent); |
| 238 m_inDispatchErrorEvent = true; | 245 m_inDispatchErrorEvent = true; |
| 239 target->dispatchEvent(errorEvent); | 246 target->dispatchEvent(errorEvent); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 279 m_publicURLManager = PublicURLManager::create(this); | 286 m_publicURLManager = PublicURLManager::create(this); |
| 280 return *m_publicURLManager; | 287 return *m_publicURLManager; |
| 281 } | 288 } |
| 282 | 289 |
| 283 void ExecutionContext::didChangeTimerAlignmentInterval() | 290 void ExecutionContext::didChangeTimerAlignmentInterval() |
| 284 { | 291 { |
| 285 for (TimeoutMap::iterator iter = m_timeouts.begin(); iter != m_timeouts.end(
); ++iter) | 292 for (TimeoutMap::iterator iter = m_timeouts.begin(); iter != m_timeouts.end(
); ++iter) |
| 286 iter->value->didChangeAlignmentInterval(); | 293 iter->value->didChangeAlignmentInterval(); |
| 287 } | 294 } |
| 288 | 295 |
| 296 EventQueue* ExecutionContext::eventQueue() const |
| 297 { |
| 298 if (!m_client) |
| 299 return 0; |
| 300 return m_client->eventQueue(); |
| 301 } |
| 302 |
| 303 const KURL& ExecutionContext::url() const |
| 304 { |
| 305 if (!m_client) { |
| 306 DEFINE_STATIC_LOCAL(KURL, emptyURL, ()); |
| 307 return emptyURL; |
| 308 } |
| 309 |
| 310 return m_client->virtualURL(); |
| 311 } |
| 312 |
| 313 KURL ExecutionContext::completeURL(const String& url) const |
| 314 { |
| 315 |
| 316 if (!m_client) { |
| 317 DEFINE_STATIC_LOCAL(KURL, emptyURL, ()); |
| 318 return emptyURL; |
| 319 } |
| 320 |
| 321 return m_client->virtualCompleteURL(url); |
| 322 } |
| 323 |
| 324 void ExecutionContext::userEventWasHandled() |
| 325 { |
| 326 if (!m_client) |
| 327 return; |
| 328 m_client->userEventWasHandled(); |
| 329 } |
| 330 |
| 331 void ExecutionContext::disableEval(const String& errorMessage) |
| 332 { |
| 333 if (!m_client) |
| 334 return; |
| 335 return m_client->disableEval(errorMessage); |
| 336 } |
| 337 |
| 338 DOMWindow* ExecutionContext::executingWindow() const |
| 339 { |
| 340 if (!m_client) |
| 341 return 0; |
| 342 return m_client->executingWindow(); |
| 343 } |
| 344 |
| 345 String ExecutionContext::userAgent(const KURL& url) const |
| 346 { |
| 347 if (!m_client) |
| 348 return String(); |
| 349 return m_client->userAgent(url); |
| 350 } |
| 351 |
| 289 double ExecutionContext::timerAlignmentInterval() const | 352 double ExecutionContext::timerAlignmentInterval() const |
| 290 { | 353 { |
| 291 return DOMTimer::visiblePageAlignmentInterval(); | 354 if (!m_client) |
| 355 return DOMTimer::visiblePageAlignmentInterval(); |
| 356 return m_client->timerAlignmentInterval(); |
| 357 } |
| 358 |
| 359 void ExecutionContext::postTask(PassOwnPtr<ExecutionContextTask> task) |
| 360 { |
| 361 if (!m_client) |
| 362 return; |
| 363 m_client->postTask(task); |
| 364 } |
| 365 |
| 366 PassOwnPtr<LifecycleNotifier> ExecutionContext::createLifecycleNotifier() |
| 367 { |
| 368 if (!m_client) |
| 369 return PassOwnPtr<LifecycleNotifier>(); |
| 370 return m_client->createLifecycleNotifier(); |
| 292 } | 371 } |
| 293 | 372 |
| 294 ContextLifecycleNotifier* ExecutionContext::lifecycleNotifier() | 373 ContextLifecycleNotifier* ExecutionContext::lifecycleNotifier() |
| 295 { | 374 { |
| 296 return static_cast<ContextLifecycleNotifier*>(LifecycleContext::lifecycleNot
ifier()); | 375 return static_cast<ContextLifecycleNotifier*>(LifecycleContext::lifecycleNot
ifier()); |
| 297 } | 376 } |
| 298 | 377 |
| 299 PassOwnPtr<LifecycleNotifier> ExecutionContext::createLifecycleNotifier() | |
| 300 { | |
| 301 return ContextLifecycleNotifier::create(this); | |
| 302 } | |
| 303 | |
| 304 bool ExecutionContext::isIteratingOverObservers() const | 378 bool ExecutionContext::isIteratingOverObservers() const |
| 305 { | 379 { |
| 306 return m_lifecycleNotifier && m_lifecycleNotifier->isIteratingOverObservers(
); | 380 return m_lifecycleNotifier && m_lifecycleNotifier->isIteratingOverObservers(
); |
| 307 } | 381 } |
| 308 | 382 |
| 309 void ExecutionContext::setDatabaseContext(DatabaseContext* databaseContext) | 383 void ExecutionContext::setDatabaseContext(DatabaseContext* databaseContext) |
| 310 { | 384 { |
| 311 m_databaseContext = databaseContext; | 385 m_databaseContext = databaseContext; |
| 312 } | 386 } |
| 313 | 387 |
| 314 } // namespace WebCore | 388 } // namespace WebCore |
| OLD | NEW |