18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2008 Apple Inc. All Rights Reserved. 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#ifndef StorageAreaImpl_h 270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#define StorageAreaImpl_h 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 29b679b2a6c810dd2f9e8d7072e542b884a4e7060fBen Murdoch#if ENABLE(DOM_STORAGE) 30b679b2a6c810dd2f9e8d7072e542b884a4e7060fBen Murdoch 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "StorageArea.h" 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 33231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include <wtf/PassRefPtr.h> 340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <wtf/RefPtr.h> 350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch class SecurityOrigin; 390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch class StorageMap; 400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch class StorageAreaSync; 410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch class StorageAreaImpl : public StorageArea { 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project public: 44231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block static PassRefPtr<StorageAreaImpl> create(StorageType, PassRefPtr<SecurityOrigin>, PassRefPtr<StorageSyncManager>, unsigned quota); 450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual ~StorageAreaImpl(); 460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch // The HTML5 DOM Storage API (and contains) 480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual unsigned length() const; 490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual String key(unsigned index) const; 500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual String getItem(const String& key) const; 51d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual String setItem(const String& key, const String& value, ExceptionCode& ec, Frame* sourceFrame); 52d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual String removeItem(const String& key, Frame* sourceFrame); 53d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual bool clear(Frame* sourceFrame); 540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual bool contains(const String& key) const; 550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch PassRefPtr<StorageAreaImpl> copy(); 570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void close(); 580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 59643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Only called from a background thread. 600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void importItem(const String& key, const String& value); 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 622bde8e466a4451c7319e3a072d118917957d6554Steve Block // Used to clear a StorageArea and close db before backing db file is deleted. 632bde8e466a4451c7319e3a072d118917957d6554Steve Block void clearForOriginDeletion(); 642bde8e466a4451c7319e3a072d118917957d6554Steve Block 652bde8e466a4451c7319e3a072d118917957d6554Steve Block void sync(); 662bde8e466a4451c7319e3a072d118917957d6554Steve Block 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project private: 68231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block StorageAreaImpl(StorageType, PassRefPtr<SecurityOrigin>, PassRefPtr<StorageSyncManager>, unsigned quota); 690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch StorageAreaImpl(StorageAreaImpl*); 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void blockUntilImportComplete() const; 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch StorageType m_storageType; 740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch RefPtr<SecurityOrigin> m_securityOrigin; 750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch RefPtr<StorageMap> m_storageMap; 760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch RefPtr<StorageAreaSync> m_storageAreaSync; 780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch RefPtr<StorageSyncManager> m_storageSyncManager; 790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#ifndef NDEBUG 810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch bool m_isShutdown; 820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#endif 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }; 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 87b679b2a6c810dd2f9e8d7072e542b884a4e7060fBen Murdoch#endif // ENABLE(DOM_STORAGE) 88b679b2a6c810dd2f9e8d7072e542b884a4e7060fBen Murdoch 890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#endif // StorageAreaImpl_h 90