Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(910)

Side by Side Diff: third_party/WebKit/Source/modules/indexeddb/IDBRequest.cpp

Issue 1479923002: Enumerate the return value of dispatchEvent so it is clear. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master_passive_uma_add
Patch Set: Fix typo Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
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 392 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 const AtomicString& IDBRequest::interfaceName() const 403 const AtomicString& IDBRequest::interfaceName() const
404 { 404 {
405 return EventTargetNames::IDBRequest; 405 return EventTargetNames::IDBRequest;
406 } 406 }
407 407
408 ExecutionContext* IDBRequest::executionContext() const 408 ExecutionContext* IDBRequest::executionContext() const
409 { 409 {
410 return ActiveDOMObject::executionContext(); 410 return ActiveDOMObject::executionContext();
411 } 411 }
412 412
413 bool IDBRequest::dispatchEventInternal(PassRefPtrWillBeRawPtr<Event> event) 413 DispatchEventResult IDBRequest::dispatchEventInternal(PassRefPtrWillBeRawPtr<Eve nt> event)
414 { 414 {
415 IDB_TRACE("IDBRequest::dispatchEvent"); 415 IDB_TRACE("IDBRequest::dispatchEvent");
416 if (m_contextStopped || !executionContext()) 416 if (m_contextStopped || !executionContext())
417 return false; 417 return DispatchEventResult::CanceledBeforeDispatch;
418 ASSERT(m_readyState == PENDING); 418 ASSERT(m_readyState == PENDING);
419 ASSERT(m_hasPendingActivity); 419 ASSERT(m_hasPendingActivity);
420 ASSERT(m_enqueuedEvents.size()); 420 ASSERT(m_enqueuedEvents.size());
421 ASSERT(event->target() == this); 421 ASSERT(event->target() == this);
422 422
423 ScriptState::Scope scope(m_scriptState.get()); 423 ScriptState::Scope scope(m_scriptState.get());
424 424
425 if (event->type() != EventTypeNames::blocked) 425 if (event->type() != EventTypeNames::blocked)
426 m_readyState = DONE; 426 m_readyState = DONE;
427 dequeueEvent(event.get()); 427 dequeueEvent(event.get());
(...skipping 22 matching lines...) Expand all
450 m_didFireUpgradeNeededEvent = true; 450 m_didFireUpgradeNeededEvent = true;
451 } 451 }
452 452
453 // FIXME: When we allow custom event dispatching, this will probably need to change. 453 // FIXME: When we allow custom event dispatching, this will probably need to change.
454 ASSERT_WITH_MESSAGE(event->type() == EventTypeNames::success || event->type( ) == EventTypeNames::error || event->type() == EventTypeNames::blocked || event- >type() == EventTypeNames::upgradeneeded, "event type was %s", event->type().utf 8().data()); 454 ASSERT_WITH_MESSAGE(event->type() == EventTypeNames::success || event->type( ) == EventTypeNames::error || event->type() == EventTypeNames::blocked || event- >type() == EventTypeNames::upgradeneeded, "event type was %s", event->type().utf 8().data());
455 const bool setTransactionActive = m_transaction && (event->type() == EventTy peNames::success || event->type() == EventTypeNames::upgradeneeded || (event->ty pe() == EventTypeNames::error && !m_requestAborted)); 455 const bool setTransactionActive = m_transaction && (event->type() == EventTy peNames::success || event->type() == EventTypeNames::upgradeneeded || (event->ty pe() == EventTypeNames::error && !m_requestAborted));
456 456
457 if (setTransactionActive) 457 if (setTransactionActive)
458 m_transaction->setActive(true); 458 m_transaction->setActive(true);
459 459
460 bool dontPreventDefault = IDBEventDispatcher::dispatch(event.get(), targets) ; 460 DispatchEventResult dispatchResult = IDBEventDispatcher::dispatch(event.get( ), targets);
461 461
462 if (m_transaction) { 462 if (m_transaction) {
463 if (m_readyState == DONE) 463 if (m_readyState == DONE)
464 m_transaction->unregisterRequest(this); 464 m_transaction->unregisterRequest(this);
465 465
466 // Possibly abort the transaction. This must occur after unregistering ( so this request 466 // Possibly abort the transaction. This must occur after unregistering ( so this request
467 // doesn't receive a second error) and before deactivating (which might trigger commit). 467 // doesn't receive a second error) and before deactivating (which might trigger commit).
468 if (event->type() == EventTypeNames::error && dontPreventDefault && !m_r equestAborted) { 468 if (event->type() == EventTypeNames::error && dispatchResult == Dispatch EventResult::NotCanceled && !m_requestAborted) {
469 m_transaction->setError(m_error); 469 m_transaction->setError(m_error);
470 m_transaction->abort(IGNORE_EXCEPTION); 470 m_transaction->abort(IGNORE_EXCEPTION);
471 } 471 }
472 472
473 // If this was the last request in the transaction's list, it may commit here. 473 // If this was the last request in the transaction's list, it may commit here.
474 if (setTransactionActive) 474 if (setTransactionActive)
475 m_transaction->setActive(false); 475 m_transaction->setActive(false);
476 } 476 }
477 477
478 if (cursorToNotify) 478 if (cursorToNotify)
479 cursorToNotify->postSuccessHandlerCallback(); 479 cursorToNotify->postSuccessHandlerCallback();
480 480
481 // An upgradeneeded event will always be followed by a success or error even t, so must 481 // An upgradeneeded event will always be followed by a success or error even t, so must
482 // be kept alive. 482 // be kept alive.
483 if (m_readyState == DONE && event->type() != EventTypeNames::upgradeneeded) 483 if (m_readyState == DONE && event->type() != EventTypeNames::upgradeneeded)
484 m_hasPendingActivity = false; 484 m_hasPendingActivity = false;
485 485
486 return dontPreventDefault; 486 return dispatchResult;
487 } 487 }
488 488
489 void IDBRequest::uncaughtExceptionInEventHandler() 489 void IDBRequest::uncaughtExceptionInEventHandler()
490 { 490 {
491 if (m_transaction && !m_requestAborted) { 491 if (m_transaction && !m_requestAborted) {
492 m_transaction->setError(DOMException::create(AbortError, "Uncaught excep tion in event handler.")); 492 m_transaction->setError(DOMException::create(AbortError, "Uncaught excep tion in event handler."));
493 m_transaction->abort(IGNORE_EXCEPTION); 493 m_transaction->abort(IGNORE_EXCEPTION);
494 } 494 }
495 } 495 }
496 496
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
530 530
531 void IDBRequest::dequeueEvent(Event* event) 531 void IDBRequest::dequeueEvent(Event* event)
532 { 532 {
533 for (size_t i = 0; i < m_enqueuedEvents.size(); ++i) { 533 for (size_t i = 0; i < m_enqueuedEvents.size(); ++i) {
534 if (m_enqueuedEvents[i].get() == event) 534 if (m_enqueuedEvents[i].get() == event)
535 m_enqueuedEvents.remove(i); 535 m_enqueuedEvents.remove(i);
536 } 536 }
537 } 537 }
538 538
539 } // namespace blink 539 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/modules/indexeddb/IDBRequest.h ('k') | third_party/WebKit/Source/modules/indexeddb/IDBTransaction.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698