1563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark/* 2d0825bca7fe65beaee391d30da42e937db621564Steve Block * Copyright (C) 2010 Google Inc. All rights reserved. 3563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 4563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * Redistribution and use in source and binary forms, with or without 5563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * modification, are permitted provided that the following conditions 6563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * are met: 7563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 8563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 1. Redistributions of source code must retain the above copyright 9563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * notice, this list of conditions and the following disclaimer. 10563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 2. Redistributions in binary form must reproduce the above copyright 11563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * notice, this list of conditions and the following disclaimer in the 12563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * documentation and/or other materials provided with the distribution. 13563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 14563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 15563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 16563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 17563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 18563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 19563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 20563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 21563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 23563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark */ 255af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 26d0825bca7fe65beaee391d30da42e937db621564Steve Block#ifndef IDBDatabaseException_h 27d0825bca7fe65beaee391d30da42e937db621564Steve Block#define IDBDatabaseException_h 28563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 29d0825bca7fe65beaee391d30da42e937db621564Steve Block#if ENABLE(INDEXED_DATABASE) 30563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 314a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch#include "ExceptionBase.h" 324a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch 33d0825bca7fe65beaee391d30da42e937db621564Steve Blocknamespace WebCore { 34d0825bca7fe65beaee391d30da42e937db621564Steve Block 354a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdochclass IDBDatabaseException : public ExceptionBase { 360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochpublic: 374a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch static PassRefPtr<IDBDatabaseException> create(const ExceptionCodeDescription& description) 38d0825bca7fe65beaee391d30da42e937db621564Steve Block { 394a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch return adoptRef(new IDBDatabaseException(description)); 40d0825bca7fe65beaee391d30da42e937db621564Steve Block } 415af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 424a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch static const int IDBDatabaseExceptionOffset = 1200; 434a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch static const int IDBDatabaseExceptionMax = 1299; 444a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch 454a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch enum IDBDatabaseExceptionCode { 4681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch NO_ERR = IDBDatabaseExceptionOffset + 0, 474a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch UNKNOWN_ERR = IDBDatabaseExceptionOffset + 1, 484a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch NON_TRANSIENT_ERR = IDBDatabaseExceptionOffset + 2, 494a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch NOT_FOUND_ERR = IDBDatabaseExceptionOffset + 3, 504a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch CONSTRAINT_ERR = IDBDatabaseExceptionOffset + 4, 514a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch DATA_ERR = IDBDatabaseExceptionOffset + 5, 524a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch NOT_ALLOWED_ERR = IDBDatabaseExceptionOffset + 6, 534a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch SERIAL_ERR = IDBDatabaseExceptionOffset + 7, 544a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch RECOVERABLE_ERR = IDBDatabaseExceptionOffset + 8, 554a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch TRANSIENT_ERR = IDBDatabaseExceptionOffset + 9, 564a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch TIMEOUT_ERR = IDBDatabaseExceptionOffset + 10, 5765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch DEADLOCK_ERR = IDBDatabaseExceptionOffset + 11, 5881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch READ_ONLY_ERR = IDBDatabaseExceptionOffset + 12, 5981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch ABORT_ERR = IDBDatabaseExceptionOffset + 13 605af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke }; 61d0825bca7fe65beaee391d30da42e937db621564Steve Block 624a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch static int ErrorCodeToExceptionCode(int errorCode) 634a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch { 644a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch if (!errorCode) 654a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch return 0; 664a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch return errorCode + IDBDatabaseExceptionOffset; 674a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch } 680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 694a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdochprivate: 704a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch IDBDatabaseException(const ExceptionCodeDescription& description) 714a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch : ExceptionBase(description) 724a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch { 734a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch } 740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch}; 750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 76d0825bca7fe65beaee391d30da42e937db621564Steve Block} // namespace WebCore 77d0825bca7fe65beaee391d30da42e937db621564Steve Block 78563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#endif 79d0825bca7fe65beaee391d30da42e937db621564Steve Block 80d0825bca7fe65beaee391d30da42e937db621564Steve Block#endif // IDBDatabaseException_h 81