diff options
Diffstat (limited to 'Source/WebCore/Modules/indexeddb/IDBFactory.h')
-rw-r--r-- | Source/WebCore/Modules/indexeddb/IDBFactory.h | 99 |
1 files changed, 45 insertions, 54 deletions
diff --git a/Source/WebCore/Modules/indexeddb/IDBFactory.h b/Source/WebCore/Modules/indexeddb/IDBFactory.h index 778fd54e4..8dbc11ce6 100644 --- a/Source/WebCore/Modules/indexeddb/IDBFactory.h +++ b/Source/WebCore/Modules/indexeddb/IDBFactory.h @@ -1,83 +1,74 @@ /* - * Copyright (C) 2010 Google Inc. All rights reserved. + * Copyright (C) 2015, 2016 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef IDBFactory_h -#define IDBFactory_h -#include "IDBOpenDBRequest.h" -#include "ScriptWrappable.h" -#include <wtf/PassRefPtr.h> -#include <wtf/RefCounted.h> -#include <wtf/RefPtr.h> -#include <wtf/text/WTFString.h> +#pragma once #if ENABLE(INDEXED_DATABASE) +#include "ExceptionOr.h" +#include <functional> +#include <wtf/Forward.h> +#include <wtf/Ref.h> +#include <wtf/ThreadSafeRefCounted.h> +#include <wtf/Vector.h> + +namespace JSC { +class ExecState; +class JSValue; +} + namespace WebCore { -class IDBKey; -class IDBKeyRange; -class IDBFactoryBackendInterface; +class IDBOpenDBRequest; class ScriptExecutionContext; +class SecurityOrigin; -typedef int ExceptionCode; +namespace IDBClient { +class IDBConnectionProxy; +} -class IDBFactory : public ScriptWrappable, public RefCounted<IDBFactory> { +class IDBFactory : public ThreadSafeRefCounted<IDBFactory> { public: - static PassRefPtr<IDBFactory> create(IDBFactoryBackendInterface* factory) - { - // FIXME: While the feature is under development we'll handle a null factory backend here, - // returning null, so javascript can't try to use the feature. - // Once the feature is fully functional we should remove the null factory backend. - return factory ? adoptRef(new IDBFactory(factory)) : nullptr; - } + static Ref<IDBFactory> create(IDBClient::IDBConnectionProxy&); ~IDBFactory(); - // FIXME: getDatabaseNames is no longer a web-facing API, and should be removed from IDBFactory. - // The Web Inspector currently uses this to enumerate the list of databases, but is more complicated as a result. - // We should provide a simpler API to the Web Inspector then remove getDatabaseNames. - PassRefPtr<IDBRequest> getDatabaseNames(ScriptExecutionContext*, ExceptionCode&); + ExceptionOr<Ref<IDBOpenDBRequest>> open(ScriptExecutionContext&, const String& name, std::optional<uint64_t> version); + ExceptionOr<Ref<IDBOpenDBRequest>> deleteDatabase(ScriptExecutionContext&, const String& name); - PassRefPtr<IDBOpenDBRequest> open(ScriptExecutionContext*, const String& name, ExceptionCode&); - PassRefPtr<IDBOpenDBRequest> open(ScriptExecutionContext*, const String& name, unsigned long long version, ExceptionCode&); - PassRefPtr<IDBOpenDBRequest> deleteDatabase(ScriptExecutionContext*, const String& name, ExceptionCode&); + ExceptionOr<short> cmp(JSC::ExecState&, JSC::JSValue first, JSC::JSValue second); - short cmp(ScriptExecutionContext*, const Deprecated::ScriptValue& first, const Deprecated::ScriptValue& second, ExceptionCode&); + WEBCORE_EXPORT void getAllDatabaseNames(const SecurityOrigin& mainFrameOrigin, const SecurityOrigin& openingOrigin, std::function<void (const Vector<String>&)>); private: - IDBFactory(IDBFactoryBackendInterface*); + explicit IDBFactory(IDBClient::IDBConnectionProxy&); - PassRefPtr<IDBOpenDBRequest> openInternal(ScriptExecutionContext*, const String& name, uint64_t version, IndexedDB::VersionNullness, ExceptionCode&); + ExceptionOr<Ref<IDBOpenDBRequest>> openInternal(ScriptExecutionContext&, const String& name, uint64_t version); - RefPtr<IDBFactoryBackendInterface> m_backend; + Ref<IDBClient::IDBConnectionProxy> m_connectionProxy; }; } // namespace WebCore -#endif - -#endif // IDBFactory_h +#endif // ENABLE(INDEXED_DATABASE) |