OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/child/indexed_db/indexed_db_dispatcher.h" | 5 #include "content/child/indexed_db/indexed_db_dispatcher.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/format_macros.h" | 9 #include "base/format_macros.h" |
10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
(...skipping 629 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
640 if (message.empty()) | 640 if (message.empty()) |
641 callbacks->onError(WebIDBDatabaseError(code)); | 641 callbacks->onError(WebIDBDatabaseError(code)); |
642 else | 642 else |
643 callbacks->onError(WebIDBDatabaseError(code, message)); | 643 callbacks->onError(WebIDBDatabaseError(code, message)); |
644 pending_callbacks_.Remove(ipc_callbacks_id); | 644 pending_callbacks_.Remove(ipc_callbacks_id); |
645 cursor_transaction_ids_.erase(ipc_callbacks_id); | 645 cursor_transaction_ids_.erase(ipc_callbacks_id); |
646 } | 646 } |
647 | 647 |
648 void IndexedDBDispatcher::OnDatabaseChanges( | 648 void IndexedDBDispatcher::OnDatabaseChanges( |
649 int32_t ipc_thread_id, | 649 int32_t ipc_thread_id, |
650 int32_t ipc_database_id, | |
651 const IndexedDBMsg_ObserverChanges& changes) { | 650 const IndexedDBMsg_ObserverChanges& changes) { |
652 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); | 651 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); |
653 std::vector<WebIDBObservation> observations( | 652 std::vector<WebIDBObservation> observations( |
654 ConvertObservations(changes.observations)); | 653 ConvertObservations(changes.observations)); |
655 for (auto& it : changes.observation_index) { | 654 for (auto& it : changes.observation_index) { |
656 WebIDBObserver* observer = observers_.Lookup(it.first); | 655 WebIDBObserver* observer = observers_.Lookup(it.first); |
657 // An observer can be removed from the renderer, but still exist in the | 656 // An observer can be removed from the renderer, but still exist in the |
658 // backend. Moreover, observer might have recorded some changes before being | 657 // backend. Moreover, observer might have recorded some changes before being |
659 // removed from the backend and thus, have its id be present in changes. | 658 // removed from the backend and thus, have its id be present in changes. |
660 if (!observer) | 659 if (!observer) |
661 continue; | 660 continue; |
662 observer->onChange(observations, std::move(it.second)); | 661 observer->onChange(observations, std::move(it.second)); |
663 } | 662 } |
664 } | 663 } |
665 | 664 |
666 void IndexedDBDispatcher::ResetCursorPrefetchCaches( | 665 void IndexedDBDispatcher::ResetCursorPrefetchCaches( |
667 int64_t transaction_id, | 666 int64_t transaction_id, |
668 int32_t ipc_exception_cursor_id) { | 667 int32_t ipc_exception_cursor_id) { |
669 typedef std::map<int32_t, WebIDBCursorImpl*>::iterator Iterator; | 668 typedef std::map<int32_t, WebIDBCursorImpl*>::iterator Iterator; |
670 for (Iterator i = cursors_.begin(); i != cursors_.end(); ++i) { | 669 for (Iterator i = cursors_.begin(); i != cursors_.end(); ++i) { |
671 if (i->first == ipc_exception_cursor_id || | 670 if (i->first == ipc_exception_cursor_id || |
672 i->second->transaction_id() != transaction_id) | 671 i->second->transaction_id() != transaction_id) |
673 continue; | 672 continue; |
674 i->second->ResetPrefetchCache(); | 673 i->second->ResetPrefetchCache(); |
675 } | 674 } |
676 } | 675 } |
677 | 676 |
678 } // namespace content | 677 } // namespace content |
OLD | NEW |