1e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block/* 2e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * Copyright (C) 2010 Google Inc. All rights reserved. 3e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * 4e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * Redistribution and use in source and binary forms, with or without 5e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * modification, are permitted provided that the following conditions 6e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * are met: 7e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * 8e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * 1. Redistributions of source code must retain the above copyright 9e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * notice, this list of conditions and the following disclaimer. 10e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * 2. Redistributions in binary form must reproduce the above copyright 11e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * notice, this list of conditions and the following disclaimer in the 12e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * documentation and/or other materials provided with the distribution. 13e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * 14e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 15e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 16e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 17e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 18e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 19e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 20e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 21e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 23e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block */ 25e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 26e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block#include "config.h" 27e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block#include "WebIDBTransactionImpl.h" 28e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 29e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block#if ENABLE(INDEXED_DATABASE) 30e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 31e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block#include "IDBTransaction.h" 32e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block#include "IDBTransactionCallbacksProxy.h" 33e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block#include "WebIDBObjectStoreImpl.h" 34e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block#include "WebIDBTransactionCallbacks.h" 35e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 36e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockusing namespace WebCore; 37e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 38e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blocknamespace WebKit { 39e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 40e8b154fd68f9b33be40a3590e58347f353835f5cSteve BlockWebIDBTransactionImpl::WebIDBTransactionImpl(PassRefPtr<IDBTransactionBackendInterface> backend) 41e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block : m_backend(backend) 42e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block{ 43e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block} 44e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 45e8b154fd68f9b33be40a3590e58347f353835f5cSteve BlockWebIDBTransactionImpl::~WebIDBTransactionImpl() 46e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block{ 47e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block} 48e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 49e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockint WebIDBTransactionImpl::mode() const 50e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block{ 51e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block return m_backend->mode(); 52e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block} 53e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 544576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) WangWebIDBObjectStore* WebIDBTransactionImpl::objectStore(const WebString& name, ExceptionCode& ec) 55e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block{ 564576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang RefPtr<IDBObjectStoreBackendInterface> objectStore = m_backend->objectStore(name, ec); 57e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block if (!objectStore) 58e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block return 0; 59e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block return new WebIDBObjectStoreImpl(objectStore); 60e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block} 61e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 62e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockvoid WebIDBTransactionImpl::abort() 63e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block{ 64e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block m_backend->abort(); 65e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block} 66e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 67bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsenvoid WebIDBTransactionImpl::didCompleteTaskEvents() 68bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen{ 69bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen m_backend->didCompleteTaskEvents(); 70bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen} 71bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 72e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockvoid WebIDBTransactionImpl::setCallbacks(WebIDBTransactionCallbacks* callbacks) 73e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block{ 74e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block RefPtr<IDBTransactionCallbacks> idbCallbacks = IDBTransactionCallbacksProxy::create(callbacks); 75e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block m_backend->setCallbacks(idbCallbacks.get()); 76e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block} 77e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 78bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian MonsenIDBTransactionBackendInterface* WebIDBTransactionImpl::getIDBTransactionBackendInterface() const 79bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen{ 80bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen return m_backend.get(); 81bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen} 82bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen 83e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block} // namespace WebKit 84e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 85e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block#endif // ENABLE(INDEXED_DATABASE) 86