| Index: content/browser/in_process_webkit/indexed_db_callbacks.cc
 | 
| diff --git a/content/browser/in_process_webkit/indexed_db_callbacks.cc b/content/browser/in_process_webkit/indexed_db_callbacks.cc
 | 
| index 291e2fbdb9dca42c07c2d106f3782b989179584c..f239ddd7f9a7526b8465d8da76dae926730569bb 100644
 | 
| --- a/content/browser/in_process_webkit/indexed_db_callbacks.cc
 | 
| +++ b/content/browser/in_process_webkit/indexed_db_callbacks.cc
 | 
| @@ -11,6 +11,10 @@ using content::IndexedDBKey;
 | 
|  using content::IndexedDBKeyPath;
 | 
|  using content::SerializedScriptValue;
 | 
|  
 | 
| +namespace {
 | 
| +const int32 kDatabaseNotAdded = -1;
 | 
| +}
 | 
| +
 | 
|  IndexedDBCallbacksBase::IndexedDBCallbacksBase(
 | 
|      IndexedDBDispatcherHost* dispatcher_host,
 | 
|      int32 thread_id,
 | 
| @@ -37,8 +41,49 @@ void IndexedDBCallbacksBase::onBlocked() {
 | 
|                                                             response_id_));
 | 
|  }
 | 
|  
 | 
| -template<>
 | 
| -void IndexedDBCallbacks<WebKit::WebIDBDatabase>::onUpgradeNeeded(
 | 
| +IndexedDBCallbacksTransaction::IndexedDBCallbacksTransaction(
 | 
| +      IndexedDBDispatcherHost* dispatcher_host,
 | 
| +      int32 thread_id,
 | 
| +      int32 response_id,
 | 
| +      const GURL& origin_url)
 | 
| +      : IndexedDBCallbacksBase(dispatcher_host, thread_id, response_id),
 | 
| +        origin_url_(origin_url) {
 | 
| +}
 | 
| +
 | 
| +void IndexedDBCallbacksTransaction::onSuccess(
 | 
| +    WebKit::WebIDBTransaction* idb_object) {
 | 
| +  int32 object_id =
 | 
| +      dispatcher_host()->Add(idb_object, thread_id(), origin_url_);
 | 
| +  dispatcher_host()->Send(
 | 
| +      new IndexedDBMsg_CallbacksSuccessIDBTransaction(thread_id(),
 | 
| +          response_id(), object_id));
 | 
| +}
 | 
| +
 | 
| +IndexedDBCallbacksDatabase::IndexedDBCallbacksDatabase(
 | 
| +    IndexedDBDispatcherHost* dispatcher_host,
 | 
| +    int32 thread_id,
 | 
| +    int32 response_id,
 | 
| +    const GURL& origin_url)
 | 
| +    : IndexedDBCallbacksBase(dispatcher_host, thread_id, response_id),
 | 
| +      origin_url_(origin_url),
 | 
| +      database_id_(kDatabaseNotAdded) {
 | 
| +}
 | 
| +
 | 
| +void IndexedDBCallbacksDatabase::onSuccess(
 | 
| +    WebKit::WebIDBDatabase* idb_object) {
 | 
| +  int32 object_id = database_id_;
 | 
| +  if (object_id == kDatabaseNotAdded) {
 | 
| +    object_id = dispatcher_host()->Add(idb_object, thread_id(), origin_url_);
 | 
| +  } else {
 | 
| +    // We already have this database and don't need a new copy of it.
 | 
| +    delete idb_object;
 | 
| +  }
 | 
| +  dispatcher_host()->Send(
 | 
| +      new IndexedDBMsg_CallbacksSuccessIDBDatabase(thread_id(), response_id(),
 | 
| +          object_id));
 | 
| +}
 | 
| +
 | 
| +void IndexedDBCallbacksDatabase::onUpgradeNeeded(
 | 
|      long long old_version,
 | 
|      WebKit::WebIDBTransaction* transaction,
 | 
|      WebKit::WebIDBDatabase* database) {
 | 
| 
 |