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

Side by Side Diff: Source/modules/indexeddb/IDBObjectStore.cpp

Issue 1238083002: Oilpan: Move the EventListener hierarchy to Oilpan's heap (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 4 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 | Annotate | Revision Log
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 401 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 } 412 }
413 413
414 namespace { 414 namespace {
415 // This class creates the index keys for a given index by extracting 415 // This class creates the index keys for a given index by extracting
416 // them from the SerializedScriptValue, for all the existing values in 416 // them from the SerializedScriptValue, for all the existing values in
417 // the objectStore. It only needs to be kept alive by virtue of being 417 // the objectStore. It only needs to be kept alive by virtue of being
418 // a listener on an IDBRequest object, in the same way that JavaScript 418 // a listener on an IDBRequest object, in the same way that JavaScript
419 // cursor success handlers are kept alive. 419 // cursor success handlers are kept alive.
420 class IndexPopulator final : public EventListener { 420 class IndexPopulator final : public EventListener {
421 public: 421 public:
422 static PassRefPtr<IndexPopulator> create(ScriptState* scriptState, IDBDataba se* database, int64_t transactionId, int64_t objectStoreId, const IDBIndexMetada ta& indexMetadata) 422 static PassRefPtrWillBeRawPtr<IndexPopulator> create(ScriptState* scriptStat e, IDBDatabase* database, int64_t transactionId, int64_t objectStoreId, const ID BIndexMetadata& indexMetadata)
423 { 423 {
424 return adoptRef(new IndexPopulator(scriptState, database, transactionId, objectStoreId, indexMetadata)); 424 return adoptRefWillBeNoop(new IndexPopulator(scriptState, database, tran sactionId, objectStoreId, indexMetadata));
425 } 425 }
426 426
427 bool operator==(const EventListener& other) override 427 bool operator==(const EventListener& other) override
428 { 428 {
429 return this == &other; 429 return this == &other;
430 } 430 }
431 431
432 DEFINE_INLINE_VIRTUAL_TRACE()
433 {
434 visitor->trace(m_database);
435 EventListener::trace(visitor);
436 }
437
432 private: 438 private:
433 IndexPopulator(ScriptState* scriptState, IDBDatabase* database, int64_t tran sactionId, int64_t objectStoreId, const IDBIndexMetadata& indexMetadata) 439 IndexPopulator(ScriptState* scriptState, IDBDatabase* database, int64_t tran sactionId, int64_t objectStoreId, const IDBIndexMetadata& indexMetadata)
434 : EventListener(CPPEventListenerType) 440 : EventListener(CPPEventListenerType)
435 , m_scriptState(scriptState) 441 , m_scriptState(scriptState)
436 , m_database(database) 442 , m_database(database)
437 , m_transactionId(transactionId) 443 , m_transactionId(transactionId)
438 , m_objectStoreId(objectStoreId) 444 , m_objectStoreId(objectStoreId)
439 , m_indexMetadata(indexMetadata) 445 , m_indexMetadata(indexMetadata)
440 { 446 {
441 } 447 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 } else { 479 } else {
474 // Now that we are done indexing, tell the backend to go 480 // Now that we are done indexing, tell the backend to go
475 // back to processing tasks of type NormalTask. 481 // back to processing tasks of type NormalTask.
476 m_database->backend()->setIndexesReady(m_transactionId, m_objectStor eId, indexIds); 482 m_database->backend()->setIndexesReady(m_transactionId, m_objectStor eId, indexIds);
477 m_database.clear(); 483 m_database.clear();
478 } 484 }
479 485
480 } 486 }
481 487
482 RefPtr<ScriptState> m_scriptState; 488 RefPtr<ScriptState> m_scriptState;
483 Persistent<IDBDatabase> m_database; 489 PersistentWillBeMember<IDBDatabase> m_database;
484 const int64_t m_transactionId; 490 const int64_t m_transactionId;
485 const int64_t m_objectStoreId; 491 const int64_t m_objectStoreId;
486 const IDBIndexMetadata m_indexMetadata; 492 const IDBIndexMetadata m_indexMetadata;
487 }; 493 };
488 } 494 }
489 495
490 IDBIndex* IDBObjectStore::createIndex(ScriptState* scriptState, const String& na me, const IDBKeyPath& keyPath, const IDBIndexParameters& options, ExceptionState & exceptionState) 496 IDBIndex* IDBObjectStore::createIndex(ScriptState* scriptState, const String& na me, const IDBKeyPath& keyPath, const IDBIndexParameters& options, ExceptionState & exceptionState)
491 { 497 {
492 IDB_TRACE("IDBObjectStore::createIndex"); 498 IDB_TRACE("IDBObjectStore::createIndex");
493 if (!m_transaction->isVersionChange()) { 499 if (!m_transaction->isVersionChange()) {
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
536 m_transaction->db()->indexCreated(id(), metadata); 542 m_transaction->db()->indexCreated(id(), metadata);
537 543
538 ASSERT(!exceptionState.hadException()); 544 ASSERT(!exceptionState.hadException());
539 if (exceptionState.hadException()) 545 if (exceptionState.hadException())
540 return nullptr; 546 return nullptr;
541 547
542 IDBRequest* indexRequest = openCursor(scriptState, nullptr, WebIDBCursorDire ctionNext, WebIDBTaskTypePreemptive); 548 IDBRequest* indexRequest = openCursor(scriptState, nullptr, WebIDBCursorDire ctionNext, WebIDBTaskTypePreemptive);
543 indexRequest->preventPropagation(); 549 indexRequest->preventPropagation();
544 550
545 // This is kept alive by being the success handler of the request, which is in turn kept alive by the owning transaction. 551 // This is kept alive by being the success handler of the request, which is in turn kept alive by the owning transaction.
546 RefPtr<IndexPopulator> indexPopulator = IndexPopulator::create(scriptState, transaction()->db(), m_transaction->id(), id(), metadata); 552 RefPtrWillBeRawPtr<IndexPopulator> indexPopulator = IndexPopulator::create(s criptState, transaction()->db(), m_transaction->id(), id(), metadata);
547 indexRequest->setOnsuccess(indexPopulator); 553 indexRequest->setOnsuccess(indexPopulator);
548 return index; 554 return index;
549 } 555 }
550 556
551 IDBIndex* IDBObjectStore::index(const String& name, ExceptionState& exceptionSta te) 557 IDBIndex* IDBObjectStore::index(const String& name, ExceptionState& exceptionSta te)
552 { 558 {
553 IDB_TRACE("IDBObjectStore::index"); 559 IDB_TRACE("IDBObjectStore::index");
554 if (isDeleted()) { 560 if (isDeleted()) {
555 exceptionState.throwDOMException(InvalidStateError, IDBDatabase::objectS toreDeletedErrorMessage); 561 exceptionState.throwDOMException(InvalidStateError, IDBDatabase::objectS toreDeletedErrorMessage);
556 return nullptr; 562 return nullptr;
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
744 } 750 }
745 return IDBIndexMetadata::InvalidId; 751 return IDBIndexMetadata::InvalidId;
746 } 752 }
747 753
748 WebIDBDatabase* IDBObjectStore::backendDB() const 754 WebIDBDatabase* IDBObjectStore::backendDB() const
749 { 755 {
750 return m_transaction->backendDB(); 756 return m_transaction->backendDB();
751 } 757 }
752 758
753 } // namespace blink 759 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698