16c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen/* 26c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * Copyright (C) 2010 Google Inc. All rights reserved. 36c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * 46c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * Redistribution and use in source and binary forms, with or without 56c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * modification, are permitted provided that the following conditions 66c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * are met: 76c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * 86c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * 1. Redistributions of source code must retain the above copyright 96c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * notice, this list of conditions and the following disclaimer. 106c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * 2. Redistributions in binary form must reproduce the above copyright 116c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * notice, this list of conditions and the following disclaimer in the 126c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * documentation and/or other materials provided with the distribution. 136c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * 146c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 156c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 166c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 176c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 186c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 196c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 206c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 216c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 226c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 236c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 246c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen */ 256c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 266c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#include "config.h" 276c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#include "IDBAny.h" 286c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 296c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#if ENABLE(INDEXED_DATABASE) 306c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 3181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include "IDBCursorWithValue.h" 32dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include "IDBDatabase.h" 33db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#include "IDBFactory.h" 34db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block#include "IDBIndex.h" 35dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include "IDBObjectStore.h" 366c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#include "SerializedScriptValue.h" 376c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 386c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsennamespace WebCore { 396c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 405abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain MerrickPassRefPtr<IDBAny> IDBAny::createInvalid() 416c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{ 426c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen return adoptRef(new IDBAny()); 436c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen} 446c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 455abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain MerrickPassRefPtr<IDBAny> IDBAny::createNull() 465abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick{ 475abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick RefPtr<IDBAny> idbAny = adoptRef(new IDBAny()); 485abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick idbAny->setNull(); 495abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick return idbAny.release(); 505abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick} 515abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick 526c2af9490927c3c5959b5cb07461b646f8b32f6cKristian MonsenIDBAny::IDBAny() 536c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen : m_type(UndefinedType) 546c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{ 556c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen} 566c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 576c2af9490927c3c5959b5cb07461b646f8b32f6cKristian MonsenIDBAny::~IDBAny() 586c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{ 596c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen} 606c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 61dd8bb3de4f353a81954234999f1fea748aee2ea9Ben MurdochPassRefPtr<IDBCursor> IDBAny::idbCursor() 626c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{ 63dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch ASSERT(m_type == IDBCursorType); 64dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch return m_idbCursor; 65dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch} 66dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 6781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 6881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen MurdochPassRefPtr<IDBCursorWithValue> IDBAny::idbCursorWithValue() 6981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 7081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch ASSERT(m_type == IDBCursorWithValueType); 7181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return m_idbCursorWithValue; 7281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 7381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 74dd8bb3de4f353a81954234999f1fea748aee2ea9Ben MurdochPassRefPtr<IDBDatabase> IDBAny::idbDatabase() 75dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch{ 76dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch ASSERT(m_type == IDBDatabaseType); 77dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch return m_idbDatabase; 786c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen} 796c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 80a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochPassRefPtr<IDBFactory> IDBAny::idbFactory() 81a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{ 82a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch ASSERT(m_type == IDBFactoryType); 83a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch return m_idbFactory; 84a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch} 85a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 86db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve BlockPassRefPtr<IDBIndex> IDBAny::idbIndex() 875af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke{ 88db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block ASSERT(m_type == IDBIndexType); 89db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block return m_idbIndex; 905af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke} 915af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 92e458d70a0d18538346f41b503114c9ebe6b2ce12Leon ClarkePassRefPtr<IDBKey> IDBAny::idbKey() 93e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{ 94e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke ASSERT(m_type == IDBKeyType); 95e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke return m_idbKey; 96e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke} 97e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 98dd8bb3de4f353a81954234999f1fea748aee2ea9Ben MurdochPassRefPtr<IDBObjectStore> IDBAny::idbObjectStore() 995af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke{ 100dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch ASSERT(m_type == IDBObjectStoreType); 101dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch return m_idbObjectStore; 1025af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke} 1035af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 104a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochPassRefPtr<IDBTransaction> IDBAny::idbTransaction() 1056c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{ 106a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch ASSERT(m_type == IDBTransactionType); 107a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch return m_idbTransaction; 1086c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen} 1096c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 1106c2af9490927c3c5959b5cb07461b646f8b32f6cKristian MonsenPassRefPtr<SerializedScriptValue> IDBAny::serializedScriptValue() 1116c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{ 1126c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen ASSERT(m_type == SerializedScriptValueType); 1136c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen return m_serializedScriptValue; 1146c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen} 1156c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 1165abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickvoid IDBAny::setNull() 1175af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke{ 1185af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke ASSERT(m_type == UndefinedType); 1195af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke m_type = NullType; 1205af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke} 1215af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 12281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid IDBAny::set(PassRefPtr<IDBCursorWithValue> value) 12381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 12481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch ASSERT(m_type == UndefinedType); 12581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_type = IDBCursorWithValueType; 12681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_idbCursorWithValue = value; 12781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 12881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 129dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochvoid IDBAny::set(PassRefPtr<IDBCursor> value) 130dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch{ 131dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch ASSERT(m_type == UndefinedType); 132dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch m_type = IDBCursorType; 133dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch m_idbCursor = value; 134dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch} 135dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch 136dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochvoid IDBAny::set(PassRefPtr<IDBDatabase> value) 1376c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{ 1385af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke ASSERT(m_type == UndefinedType); 139dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch m_type = IDBDatabaseType; 140dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch m_idbDatabase = value; 1415af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke} 1425af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 143a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochvoid IDBAny::set(PassRefPtr<IDBFactory> value) 144a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{ 145a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch ASSERT(m_type == UndefinedType); 146a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch m_type = IDBFactoryType; 147a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch m_idbFactory = value; 148a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch} 149a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 150db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Blockvoid IDBAny::set(PassRefPtr<IDBIndex> value) 1515af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke{ 1525af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke ASSERT(m_type == UndefinedType); 15368513a70bcd92384395513322f1b801e7bf9c729Steve Block m_type = IDBIndexType; 154db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block m_idbIndex = value; 1555af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke} 1565af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 157e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarkevoid IDBAny::set(PassRefPtr<IDBKey> value) 158e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{ 159e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke ASSERT(m_type == UndefinedType); 160e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke m_type = IDBKeyType; 161e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke m_idbKey = value; 162e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke} 163e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 164a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochvoid IDBAny::set(PassRefPtr<IDBTransaction> value) 1655af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke{ 1665af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke ASSERT(m_type == UndefinedType); 167a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch m_type = IDBTransactionType; 168a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch m_idbTransaction = value; 1696c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen} 1706c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 171a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochvoid IDBAny::set(PassRefPtr<IDBObjectStore> value) 1726c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{ 1735af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke ASSERT(m_type == UndefinedType); 174a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch m_type = IDBObjectStoreType; 175a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch m_idbObjectStore = value; 1766c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen} 1776c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 1786c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenvoid IDBAny::set(PassRefPtr<SerializedScriptValue> value) 1796c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{ 1805af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke ASSERT(m_type == UndefinedType); 1816c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen m_type = SerializedScriptValueType; 1826c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen m_serializedScriptValue = value; 1836c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen} 1846c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 1856c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen} // namespace WebCore 1866c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 1876c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen#endif 188