Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / public / platform / WebIDBMetadata.h
1 /*
2  * Copyright (C) 2012 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
6  * are met:
7  *
8  * 1.  Redistributions of source code must retain the above copyright
9  *     notice, this list of conditions and the following disclaimer.
10  * 2.  Redistributions in binary form must reproduce the above copyright
11  *     notice, this list of conditions and the following disclaimer in the
12  *     documentation and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
15  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
18  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
21  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #ifndef WebIDBMetadata_h
27 #define WebIDBMetadata_h
28
29 #include "WebCommon.h"
30 #include "WebIDBKeyPath.h"
31 #include "WebString.h"
32 #include "WebVector.h"
33
34 namespace blink {
35
36 struct IDBDatabaseMetadata;
37
38 struct WebIDBMetadata {
39     enum {
40         NoIntVersion = -1
41     };
42     struct Index;
43     struct ObjectStore;
44
45     WebString name;
46     // FIXME: Both version members need to be present while we support both the
47     // old setVersion and new upgradeneeded API. Once we no longer support
48     // setVersion, WebString version can be removed.
49     WebString version;
50     long long intVersion;
51     long long id;
52     long long maxObjectStoreId;
53     WebVector<ObjectStore> objectStores;
54     WebIDBMetadata()
55         : intVersion(NoIntVersion) { }
56
57     struct ObjectStore {
58         WebString name;
59         WebIDBKeyPath keyPath;
60         bool autoIncrement;
61         long long id;
62         long long maxIndexId;
63         WebVector<Index> indexes;
64         ObjectStore()
65             : keyPath(WebIDBKeyPath::createNull())
66             , autoIncrement(false) { }
67     };
68
69     struct Index {
70         WebString name;
71         WebIDBKeyPath keyPath;
72         bool unique;
73         bool multiEntry;
74         long long id;
75         Index()
76             : keyPath(WebIDBKeyPath::createNull())
77             , unique(false)
78             , multiEntry(false) { }
79     };
80
81 #if BLINK_IMPLEMENTATION
82     WebIDBMetadata(const IDBDatabaseMetadata&);
83     operator IDBDatabaseMetadata() const;
84 #endif
85 };
86
87 } // namespace blink
88
89 #endif // WebIDBMetadata_h