18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
2dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Copyright (C) 2010 Google Inc. All rights reserved.
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met:
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1.  Redistributions of source code must retain the above copyright
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *     notice, this list of conditions and the following disclaimer.
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2.  Redistributions in binary form must reproduce the above copyright
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *     notice, this list of conditions and the following disclaimer in the
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *     documentation and/or other materials provided with the distribution.
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
255af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke
26dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#ifndef WebIDBCursor_h
27dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#define WebIDBCursor_h
28dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch
29dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include "WebCommon.h"
30a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#include "WebExceptionCode.h"
31dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include "WebIDBCallbacks.h"
32dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include "WebIDBKey.h"
33dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include "WebSerializedScriptValue.h"
34dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include "WebString.h"
35dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch
36dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochnamespace WebKit {
37dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch
38e14391e94c850b8bd03680c23b38978db68687a8John Reck// See comment in WebIDBFactory for a high level overview these classes.
39dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochclass WebIDBCursor {
40dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochpublic:
41dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    virtual ~WebIDBCursor() { }
42dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch
43dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    virtual unsigned short direction() const
44dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    {
45dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        WEBKIT_ASSERT_NOT_REACHED();
46dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return 0;
47dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    }
48dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    virtual WebIDBKey key() const
49dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    {
50dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        WEBKIT_ASSERT_NOT_REACHED();
5168513a70bcd92384395513322f1b801e7bf9c729Steve Block        return WebIDBKey::createInvalid();
52dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    }
5381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    virtual WebIDBKey primaryKey() const
5481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    {
5581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        WEBKIT_ASSERT_NOT_REACHED();
5681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        return WebIDBKey::createInvalid();
5781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    }
5881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    // FIXME: Remove the following 2 methods and uncomment third after roll.
5981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    virtual WebSerializedScriptValue value() const
6081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    {
6181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        WebSerializedScriptValue serializedScriptValue;
6281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        WebIDBKey key;
6381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        value(serializedScriptValue, key);
6481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        return serializedScriptValue;
6581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    }
6681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    virtual void value(WebSerializedScriptValue& serializedScriptValue, WebIDBKey& key) const
6781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    {
6881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        serializedScriptValue = value();
6981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    }
7081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    // virtual WebSerializedScriptValue value() const
7181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    // {
7281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    //     WEBKIT_ASSERT_NOT_REACHED();
7381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    //     return WebSerializedScriptValue();
7481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    // }
75dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch
76a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    virtual void update(const WebSerializedScriptValue&, WebIDBCallbacks*, WebExceptionCode&) { WEBKIT_ASSERT_NOT_REACHED(); }
77a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    virtual void continueFunction(const WebIDBKey&, WebIDBCallbacks*, WebExceptionCode&) { WEBKIT_ASSERT_NOT_REACHED(); }
78f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    // FIXME: Remove after WK roll.
79f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    virtual void remove(WebIDBCallbacks* callbacks, WebExceptionCode& ec) { deleteFunction(callbacks, ec); }
80f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    virtual void deleteFunction(WebIDBCallbacks* callbacks, WebExceptionCode& ec) { remove(callbacks, ec); }
814576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang
824576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangprotected:
834576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang    WebIDBCursor() { }
84dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch};
85dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch
86dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch} // namespace WebKit
87dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch
88dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#endif // WebIDBCursor_h
89