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