OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 } | 73 } |
74 return true; | 74 return true; |
75 } | 75 } |
76 | 76 |
77 PassRefPtr<IDBRequest> IDBFactory::getDatabaseNames(ScriptExecutionContext* cont
ext, ExceptionCode& ec) | 77 PassRefPtr<IDBRequest> IDBFactory::getDatabaseNames(ScriptExecutionContext* cont
ext, ExceptionCode& ec) |
78 { | 78 { |
79 IDB_TRACE("IDBFactory::getDatabaseNames"); | 79 IDB_TRACE("IDBFactory::getDatabaseNames"); |
80 if (!isContextValid(context)) | 80 if (!isContextValid(context)) |
81 return 0; | 81 return 0; |
82 if (!context->securityOrigin()->canAccessDatabase(context->topOrigin())) { | 82 if (!context->securityOrigin()->canAccessDatabase(context->topOrigin())) { |
83 ec = SECURITY_ERR; | 83 ec = SecurityError; |
84 return 0; | 84 return 0; |
85 } | 85 } |
86 | 86 |
87 RefPtr<IDBRequest> request = IDBRequest::create(context, IDBAny::create(this
), 0); | 87 RefPtr<IDBRequest> request = IDBRequest::create(context, IDBAny::create(this
), 0); |
88 m_backend->getDatabaseNames(request, createDatabaseIdentifierFromSecurityOri
gin(context->securityOrigin()), context); | 88 m_backend->getDatabaseNames(request, createDatabaseIdentifierFromSecurityOri
gin(context->securityOrigin()), context); |
89 return request; | 89 return request; |
90 } | 90 } |
91 | 91 |
92 PassRefPtr<IDBOpenDBRequest> IDBFactory::open(ScriptExecutionContext* context, c
onst String& name, unsigned long long version, ExceptionCode& ec) | 92 PassRefPtr<IDBOpenDBRequest> IDBFactory::open(ScriptExecutionContext* context, c
onst String& name, unsigned long long version, ExceptionCode& ec) |
93 { | 93 { |
94 IDB_TRACE("IDBFactory::open"); | 94 IDB_TRACE("IDBFactory::open"); |
95 if (!version) { | 95 if (!version) { |
96 ec = TypeError; | 96 ec = TypeError; |
97 return 0; | 97 return 0; |
98 } | 98 } |
99 return openInternal(context, name, version, ec); | 99 return openInternal(context, name, version, ec); |
100 } | 100 } |
101 | 101 |
102 PassRefPtr<IDBOpenDBRequest> IDBFactory::openInternal(ScriptExecutionContext* co
ntext, const String& name, int64_t version, ExceptionCode& ec) | 102 PassRefPtr<IDBOpenDBRequest> IDBFactory::openInternal(ScriptExecutionContext* co
ntext, const String& name, int64_t version, ExceptionCode& ec) |
103 { | 103 { |
104 HistogramSupport::histogramEnumeration("WebCore.IndexedDB.FrontEndAPICalls",
IDBOpenCall, IDBMethodsMax); | 104 HistogramSupport::histogramEnumeration("WebCore.IndexedDB.FrontEndAPICalls",
IDBOpenCall, IDBMethodsMax); |
105 ASSERT(version >= 1 || version == IDBDatabaseMetadata::NoIntVersion); | 105 ASSERT(version >= 1 || version == IDBDatabaseMetadata::NoIntVersion); |
106 if (name.isNull()) { | 106 if (name.isNull()) { |
107 ec = TypeError; | 107 ec = TypeError; |
108 return 0; | 108 return 0; |
109 } | 109 } |
110 if (!isContextValid(context)) | 110 if (!isContextValid(context)) |
111 return 0; | 111 return 0; |
112 if (!context->securityOrigin()->canAccessDatabase(context->topOrigin())) { | 112 if (!context->securityOrigin()->canAccessDatabase(context->topOrigin())) { |
113 ec = SECURITY_ERR; | 113 ec = SecurityError; |
114 return 0; | 114 return 0; |
115 } | 115 } |
116 | 116 |
117 RefPtr<IDBDatabaseCallbacksImpl> databaseCallbacks = IDBDatabaseCallbacksImp
l::create(); | 117 RefPtr<IDBDatabaseCallbacksImpl> databaseCallbacks = IDBDatabaseCallbacksImp
l::create(); |
118 int64_t transactionId = IDBDatabase::nextTransactionId(); | 118 int64_t transactionId = IDBDatabase::nextTransactionId(); |
119 RefPtr<IDBOpenDBRequest> request = IDBOpenDBRequest::create(context, databas
eCallbacks, transactionId, version); | 119 RefPtr<IDBOpenDBRequest> request = IDBOpenDBRequest::create(context, databas
eCallbacks, transactionId, version); |
120 m_backend->open(name, version, transactionId, request, databaseCallbacks, cr
eateDatabaseIdentifierFromSecurityOrigin(context->securityOrigin()), context); | 120 m_backend->open(name, version, transactionId, request, databaseCallbacks, cr
eateDatabaseIdentifierFromSecurityOrigin(context->securityOrigin()), context); |
121 return request; | 121 return request; |
122 } | 122 } |
123 | 123 |
124 PassRefPtr<IDBOpenDBRequest> IDBFactory::open(ScriptExecutionContext* context, c
onst String& name, ExceptionCode& ec) | 124 PassRefPtr<IDBOpenDBRequest> IDBFactory::open(ScriptExecutionContext* context, c
onst String& name, ExceptionCode& ec) |
125 { | 125 { |
126 IDB_TRACE("IDBFactory::open"); | 126 IDB_TRACE("IDBFactory::open"); |
127 return openInternal(context, name, IDBDatabaseMetadata::NoIntVersion, ec); | 127 return openInternal(context, name, IDBDatabaseMetadata::NoIntVersion, ec); |
128 } | 128 } |
129 | 129 |
130 PassRefPtr<IDBOpenDBRequest> IDBFactory::deleteDatabase(ScriptExecutionContext*
context, const String& name, ExceptionCode& ec) | 130 PassRefPtr<IDBOpenDBRequest> IDBFactory::deleteDatabase(ScriptExecutionContext*
context, const String& name, ExceptionCode& ec) |
131 { | 131 { |
132 IDB_TRACE("IDBFactory::deleteDatabase"); | 132 IDB_TRACE("IDBFactory::deleteDatabase"); |
133 HistogramSupport::histogramEnumeration("WebCore.IndexedDB.FrontEndAPICalls",
IDBDeleteDatabaseCall, IDBMethodsMax); | 133 HistogramSupport::histogramEnumeration("WebCore.IndexedDB.FrontEndAPICalls",
IDBDeleteDatabaseCall, IDBMethodsMax); |
134 if (name.isNull()) { | 134 if (name.isNull()) { |
135 ec = TypeError; | 135 ec = TypeError; |
136 return 0; | 136 return 0; |
137 } | 137 } |
138 if (!isContextValid(context)) | 138 if (!isContextValid(context)) |
139 return 0; | 139 return 0; |
140 if (!context->securityOrigin()->canAccessDatabase(context->topOrigin())) { | 140 if (!context->securityOrigin()->canAccessDatabase(context->topOrigin())) { |
141 ec = SECURITY_ERR; | 141 ec = SecurityError; |
142 return 0; | 142 return 0; |
143 } | 143 } |
144 | 144 |
145 RefPtr<IDBOpenDBRequest> request = IDBOpenDBRequest::create(context, 0, 0, I
DBDatabaseMetadata::DefaultIntVersion); | 145 RefPtr<IDBOpenDBRequest> request = IDBOpenDBRequest::create(context, 0, 0, I
DBDatabaseMetadata::DefaultIntVersion); |
146 m_backend->deleteDatabase(name, request, createDatabaseIdentifierFromSecurit
yOrigin(context->securityOrigin()), context); | 146 m_backend->deleteDatabase(name, request, createDatabaseIdentifierFromSecurit
yOrigin(context->securityOrigin()), context); |
147 return request; | 147 return request; |
148 } | 148 } |
149 | 149 |
150 short IDBFactory::cmp(ScriptExecutionContext* context, const ScriptValue& firstV
alue, const ScriptValue& secondValue, ExceptionCode& ec) | 150 short IDBFactory::cmp(ScriptExecutionContext* context, const ScriptValue& firstV
alue, const ScriptValue& secondValue, ExceptionCode& ec) |
151 { | 151 { |
152 DOMRequestState requestState(context); | 152 DOMRequestState requestState(context); |
153 RefPtr<IDBKey> first = scriptValueToIDBKey(&requestState, firstValue); | 153 RefPtr<IDBKey> first = scriptValueToIDBKey(&requestState, firstValue); |
154 RefPtr<IDBKey> second = scriptValueToIDBKey(&requestState, secondValue); | 154 RefPtr<IDBKey> second = scriptValueToIDBKey(&requestState, secondValue); |
155 | 155 |
156 ASSERT(first); | 156 ASSERT(first); |
157 ASSERT(second); | 157 ASSERT(second); |
158 | 158 |
159 if (!first->isValid() || !second->isValid()) { | 159 if (!first->isValid() || !second->isValid()) { |
160 ec = DataError; | 160 ec = DataError; |
161 return 0; | 161 return 0; |
162 } | 162 } |
163 | 163 |
164 return static_cast<short>(first->compare(second.get())); | 164 return static_cast<short>(first->compare(second.get())); |
165 } | 165 } |
166 | 166 |
167 } // namespace WebCore | 167 } // namespace WebCore |
OLD | NEW |