1/*
2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
6 * met:
7 *
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 *
11 * 2. Redistributions in binary form must reproduce the above
12 * copyright notice, this list of conditions and the following disclaimer
13 * in the documentation and/or other materials provided with the
14 * distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. AND ITS CONTRIBUTORS
17 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GOOGLE INC.
20 * OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29#ifndef WebIDBCallbacksImpl_h
30#define WebIDBCallbacksImpl_h
31
32#include "public/platform/WebIDBCallbacks.h"
33#include "wtf/PassOwnPtr.h"
34#include "wtf/PassRefPtr.h"
35#include "wtf/RefPtr.h"
36
37namespace blink {
38class WebData;
39class WebIDBCursor;
40class WebIDBDatabase;
41class WebIDBDatabaseError;
42class WebIDBIndex;
43class WebIDBKey;
44class WebIDBKeyPath;
45struct WebIDBMetadata;
46}
47
48namespace WebCore {
49class IDBRequest;
50
51class WebIDBCallbacksImpl : public blink::WebIDBCallbacks {
52public:
53    static PassOwnPtr<WebIDBCallbacksImpl> create(PassRefPtr<IDBRequest>);
54
55    virtual ~WebIDBCallbacksImpl();
56
57    // Pointers transfer ownership.
58    virtual void onError(const blink::WebIDBDatabaseError&);
59    virtual void onSuccess(const blink::WebVector<blink::WebString>&);
60    virtual void onSuccess(blink::WebIDBCursor*, const blink::WebIDBKey&, const blink::WebIDBKey& primaryKey, const blink::WebData&);
61    virtual void onSuccess(blink::WebIDBDatabase*, const blink::WebIDBMetadata&);
62    virtual void onSuccess(const blink::WebIDBKey&);
63    virtual void onSuccess(const blink::WebData&);
64    virtual void onSuccess(const blink::WebData&, const blink::WebIDBKey&, const blink::WebIDBKeyPath&);
65    virtual void onSuccess(long long);
66    virtual void onSuccess();
67    virtual void onSuccess(const blink::WebIDBKey&, const blink::WebIDBKey& primaryKey, const blink::WebData&);
68    virtual void onBlocked(long long oldVersion);
69    virtual void onUpgradeNeeded(long long oldVersion, blink::WebIDBDatabase*, const blink::WebIDBMetadata&, unsigned short dataLoss, blink::WebString dataLossMessage);
70
71private:
72    explicit WebIDBCallbacksImpl(PassRefPtr<IDBRequest>);
73
74    RefPtr<IDBRequest> m_request;
75};
76
77} // namespace WebCore
78
79#endif // WebIDBCallbacksImpl_h
80