OLD | NEW |
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 395 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
406 | 406 |
407 void IDBDatabase::closeConnection() { | 407 void IDBDatabase::closeConnection() { |
408 DCHECK(m_closePending); | 408 DCHECK(m_closePending); |
409 DCHECK(m_transactions.isEmpty()); | 409 DCHECK(m_transactions.isEmpty()); |
410 | 410 |
411 if (m_backend) { | 411 if (m_backend) { |
412 m_backend->close(); | 412 m_backend->close(); |
413 m_backend.reset(); | 413 m_backend.reset(); |
414 } | 414 } |
415 | 415 |
| 416 if (m_databaseCallbacks) |
| 417 m_databaseCallbacks->detachWebCallbacks(); |
| 418 |
416 if (m_contextStopped || !getExecutionContext()) | 419 if (m_contextStopped || !getExecutionContext()) |
417 return; | 420 return; |
418 | 421 |
419 EventQueue* eventQueue = getExecutionContext()->getEventQueue(); | 422 EventQueue* eventQueue = getExecutionContext()->getEventQueue(); |
420 // Remove any pending versionchange events scheduled to fire on this | 423 // Remove any pending versionchange events scheduled to fire on this |
421 // connection. They would have been scheduled by the backend when another | 424 // connection. They would have been scheduled by the backend when another |
422 // connection attempted an upgrade, but the frontend connection is being | 425 // connection attempted an upgrade, but the frontend connection is being |
423 // closed before they could fire. | 426 // closed before they could fire. |
424 for (size_t i = 0; i < m_enqueuedEvents.size(); ++i) { | 427 for (size_t i = 0; i < m_enqueuedEvents.size(); ++i) { |
425 bool removed = eventQueue->cancelEvent(m_enqueuedEvents[i].get()); | 428 bool removed = eventQueue->cancelEvent(m_enqueuedEvents[i].get()); |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
508 void IDBDatabase::contextDestroyed() { | 511 void IDBDatabase::contextDestroyed() { |
509 m_contextStopped = true; | 512 m_contextStopped = true; |
510 | 513 |
511 // Immediately close the connection to the back end. Don't attempt a | 514 // Immediately close the connection to the back end. Don't attempt a |
512 // normal close() since that may wait on transactions which require a | 515 // normal close() since that may wait on transactions which require a |
513 // round trip to the back-end to abort. | 516 // round trip to the back-end to abort. |
514 if (m_backend) { | 517 if (m_backend) { |
515 m_backend->close(); | 518 m_backend->close(); |
516 m_backend.reset(); | 519 m_backend.reset(); |
517 } | 520 } |
| 521 |
| 522 if (m_databaseCallbacks) |
| 523 m_databaseCallbacks->detachWebCallbacks(); |
518 } | 524 } |
519 | 525 |
520 const AtomicString& IDBDatabase::interfaceName() const { | 526 const AtomicString& IDBDatabase::interfaceName() const { |
521 return EventTargetNames::IDBDatabase; | 527 return EventTargetNames::IDBDatabase; |
522 } | 528 } |
523 | 529 |
524 ExecutionContext* IDBDatabase::getExecutionContext() const { | 530 ExecutionContext* IDBDatabase::getExecutionContext() const { |
525 return ActiveDOMObject::getExecutionContext(); | 531 return ActiveDOMObject::getExecutionContext(); |
526 } | 532 } |
527 | 533 |
528 void IDBDatabase::recordApiCallsHistogram(IndexedDatabaseMethods method) { | 534 void IDBDatabase::recordApiCallsHistogram(IndexedDatabaseMethods method) { |
529 DEFINE_THREAD_SAFE_STATIC_LOCAL( | 535 DEFINE_THREAD_SAFE_STATIC_LOCAL( |
530 EnumerationHistogram, apiCallsHistogram, | 536 EnumerationHistogram, apiCallsHistogram, |
531 new EnumerationHistogram("WebCore.IndexedDB.FrontEndAPICalls", | 537 new EnumerationHistogram("WebCore.IndexedDB.FrontEndAPICalls", |
532 IDBMethodsMax)); | 538 IDBMethodsMax)); |
533 apiCallsHistogram.count(method); | 539 apiCallsHistogram.count(method); |
534 } | 540 } |
535 | 541 |
536 } // namespace blink | 542 } // namespace blink |
OLD | NEW |