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