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

Side by Side Diff: Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp

Issue 10534013: Revert 119486 - Merge 117978 - IndexedDB: Fire error when there are problems opening a DB (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1132/
Patch Set: Created 8 years, 6 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) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 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 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 : m_version(version) 86 : m_version(version)
87 , m_callbacks(callbacks) 87 , m_callbacks(callbacks)
88 , m_databaseCallbacks(databaseCallbacks) 88 , m_databaseCallbacks(databaseCallbacks)
89 { 89 {
90 } 90 }
91 String m_version; 91 String m_version;
92 RefPtr<IDBCallbacks> m_callbacks; 92 RefPtr<IDBCallbacks> m_callbacks;
93 RefPtr<IDBDatabaseCallbacks> m_databaseCallbacks; 93 RefPtr<IDBDatabaseCallbacks> m_databaseCallbacks;
94 }; 94 };
95 95
96 PassRefPtr<IDBDatabaseBackendImpl> IDBDatabaseBackendImpl::create(const String& name, IDBBackingStore* database, IDBTransactionCoordinator* coordinator, IDBFact oryBackendImpl* factory, const String& uniqueIdentifier)
97 {
98 RefPtr<IDBDatabaseBackendImpl> backend = adoptRef(new IDBDatabaseBackendImpl (name, database, coordinator, factory, uniqueIdentifier));
99 if (!backend->openInternal())
100 return 0;
101 return backend.release();
102 }
103
104 IDBDatabaseBackendImpl::IDBDatabaseBackendImpl(const String& name, IDBBackingSto re* backingStore, IDBTransactionCoordinator* coordinator, IDBFactoryBackendImpl* factory, const String& uniqueIdentifier) 96 IDBDatabaseBackendImpl::IDBDatabaseBackendImpl(const String& name, IDBBackingSto re* backingStore, IDBTransactionCoordinator* coordinator, IDBFactoryBackendImpl* factory, const String& uniqueIdentifier)
105 : m_backingStore(backingStore) 97 : m_backingStore(backingStore)
106 , m_id(InvalidId) 98 , m_id(InvalidId)
107 , m_name(name) 99 , m_name(name)
108 , m_version("") 100 , m_version("")
109 , m_identifier(uniqueIdentifier) 101 , m_identifier(uniqueIdentifier)
110 , m_factory(factory) 102 , m_factory(factory)
111 , m_transactionCoordinator(coordinator) 103 , m_transactionCoordinator(coordinator)
112 { 104 {
113 ASSERT(!m_name.isNull()); 105 ASSERT(!m_name.isNull());
106 openInternal();
114 } 107 }
115 108
116 bool IDBDatabaseBackendImpl::openInternal() 109 void IDBDatabaseBackendImpl::openInternal()
117 { 110 {
118 bool success = m_backingStore->getIDBDatabaseMetaData(m_name, m_version, m_i d); 111 bool success = m_backingStore->getIDBDatabaseMetaData(m_name, m_version, m_i d);
119 ASSERT(success == (m_id != InvalidId)); 112 ASSERT(success == (m_id != InvalidId));
120 if (success) { 113 if (success) {
121 loadObjectStores(); 114 loadObjectStores();
122 return true; 115 return;
123 } 116 }
124 return m_backingStore->createIDBDatabaseMetaData(m_name, m_version, m_id); 117 if (!m_backingStore->createIDBDatabaseMetaData(m_name, m_version, m_id))
118 ASSERT_NOT_REACHED(); // FIXME: Need better error handling.
125 } 119 }
126 120
127 IDBDatabaseBackendImpl::~IDBDatabaseBackendImpl() 121 IDBDatabaseBackendImpl::~IDBDatabaseBackendImpl()
128 { 122 {
129 m_factory->removeIDBDatabaseBackend(m_identifier); 123 m_factory->removeIDBDatabaseBackend(m_identifier);
130 } 124 }
131 125
132 PassRefPtr<IDBBackingStore> IDBDatabaseBackendImpl::backingStore() const 126 PassRefPtr<IDBBackingStore> IDBDatabaseBackendImpl::backingStore() const
133 { 127 {
134 return m_backingStore; 128 return m_backingStore;
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 void IDBDatabaseBackendImpl::open(PassRefPtr<IDBDatabaseCallbacks> callbacks) 318 void IDBDatabaseBackendImpl::open(PassRefPtr<IDBDatabaseCallbacks> callbacks)
325 { 319 {
326 m_databaseCallbacksSet.add(RefPtr<IDBDatabaseCallbacks>(callbacks)); 320 m_databaseCallbacksSet.add(RefPtr<IDBDatabaseCallbacks>(callbacks));
327 } 321 }
328 322
329 void IDBDatabaseBackendImpl::openConnection(PassRefPtr<IDBCallbacks> callbacks) 323 void IDBDatabaseBackendImpl::openConnection(PassRefPtr<IDBCallbacks> callbacks)
330 { 324 {
331 if (!m_pendingDeleteCalls.isEmpty() || m_runningVersionChangeTransaction || !m_pendingSetVersionCalls.isEmpty()) 325 if (!m_pendingDeleteCalls.isEmpty() || m_runningVersionChangeTransaction || !m_pendingSetVersionCalls.isEmpty())
332 m_pendingOpenCalls.append(PendingOpenCall::create(callbacks)); 326 m_pendingOpenCalls.append(PendingOpenCall::create(callbacks));
333 else { 327 else {
334 if (m_id == InvalidId && !openInternal()) 328 if (m_id == InvalidId)
335 callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::UN KNOWN_ERR, "Internal error.")); 329 openInternal();
336 else 330 callbacks->onSuccess(this);
337 callbacks->onSuccess(this);
338 } 331 }
339 } 332 }
340 333
341 void IDBDatabaseBackendImpl::deleteDatabase(PassRefPtr<IDBCallbacks> prpCallback s) 334 void IDBDatabaseBackendImpl::deleteDatabase(PassRefPtr<IDBCallbacks> prpCallback s)
342 { 335 {
343 if (m_runningVersionChangeTransaction || !m_pendingSetVersionCalls.isEmpty() ) { 336 if (m_runningVersionChangeTransaction || !m_pendingSetVersionCalls.isEmpty() ) {
344 m_pendingDeleteCalls.append(PendingDeleteCall::create(prpCallbacks)); 337 m_pendingDeleteCalls.append(PendingDeleteCall::create(prpCallbacks));
345 return; 338 return;
346 } 339 }
347 RefPtr<IDBCallbacks> callbacks = prpCallbacks; 340 RefPtr<IDBCallbacks> callbacks = prpCallbacks;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
410 403
411 void IDBDatabaseBackendImpl::resetVersion(ScriptExecutionContext*, PassRefPtr<ID BDatabaseBackendImpl> database, const String& version) 404 void IDBDatabaseBackendImpl::resetVersion(ScriptExecutionContext*, PassRefPtr<ID BDatabaseBackendImpl> database, const String& version)
412 { 405 {
413 database->m_version = version; 406 database->m_version = version;
414 } 407 }
415 408
416 409
417 } // namespace WebCore 410 } // namespace WebCore
418 411
419 #endif // ENABLE(INDEXED_DATABASE) 412 #endif // ENABLE(INDEXED_DATABASE)
OLDNEW
« no previous file with comments | « Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.h ('k') | Source/WebCore/Modules/indexeddb/IDBFactoryBackendImpl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698