1/*
2 * Copyright (C) 2010 Apple 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
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 *    notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 *    notice, this list of conditions and the following disclaimer in the
11 *    documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23 * THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26#ifndef WebDatabaseManager_h
27#define WebDatabaseManager_h
28
29#include "Arguments.h"
30#include <WebCore/DatabaseTrackerClient.h>
31#include <wtf/Noncopyable.h>
32#include <wtf/text/WTFString.h>
33
34namespace CoreIPC {
35class ArgumentDecoder;
36class Connection;
37class MessageID;
38}
39
40namespace WebKit {
41
42class WebDatabaseManager : public WebCore::DatabaseTrackerClient {
43    WTF_MAKE_NONCOPYABLE(WebDatabaseManager);
44public:
45    static WebDatabaseManager& shared();
46    static void initialize(const String& databaseDirectory);
47
48    void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*);
49    void setQuotaForOrigin(const String& originIdentifier, unsigned long long quota) const;
50
51public:
52    void deleteAllDatabases() const;
53
54private:
55    WebDatabaseManager();
56    virtual ~WebDatabaseManager();
57
58    // Implemented in generated WebDatabaseManagerMessageReceiver.cpp
59    void didReceiveWebDatabaseManagerMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*);
60
61    void getDatabasesByOrigin(uint64_t callbackID) const;
62    void getDatabaseOrigins(uint64_t callbackID) const;
63    void deleteDatabaseWithNameForOrigin(const String& databaseIdentifier, const String& originIdentifier) const;
64    void deleteDatabasesForOrigin(const String& originIdentifier) const;
65
66    // WebCore::DatabaseTrackerClient
67    virtual void dispatchDidModifyOrigin(WebCore::SecurityOrigin*);
68    virtual void dispatchDidModifyDatabase(WebCore::SecurityOrigin*, const String& databaseIdentifier);
69};
70
71} // namespace WebKit
72
73#endif // WebDatabaseManager_h
74