diff options
author | Ben Murdoch <benm@google.com> | 2009-10-06 12:05:22 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2009-10-06 12:05:22 +0100 |
commit | 124602fa9325bb5b26a8305777dcbdef15762f6d (patch) | |
tree | 32364bcf9b2f8003aeb3e02e3e532bb4d2b80bf8 /WebCore/bindings | |
parent | fe996bf0a6c5c16a852ae7484bd74421d2492e15 (diff) | |
download | external_webkit-124602fa9325bb5b26a8305777dcbdef15762f6d.zip external_webkit-124602fa9325bb5b26a8305777dcbdef15762f6d.tar.gz external_webkit-124602fa9325bb5b26a8305777dcbdef15762f6d.tar.bz2 |
Cherry pick of WebKit commit r49018, fix for b/2067397. Enable Database.changVersion().
Diffstat (limited to 'WebCore/bindings')
-rw-r--r-- | WebCore/bindings/v8/custom/V8DatabaseCustom.cpp | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/WebCore/bindings/v8/custom/V8DatabaseCustom.cpp b/WebCore/bindings/v8/custom/V8DatabaseCustom.cpp index 300e829..cdcef31 100644 --- a/WebCore/bindings/v8/custom/V8DatabaseCustom.cpp +++ b/WebCore/bindings/v8/custom/V8DatabaseCustom.cpp @@ -45,6 +45,45 @@ namespace WebCore { CALLBACK_FUNC_DECL(DatabaseChangeVersion) { INC_STATS("DOM.Database.changeVersion()"); + + if (args.Length() < 2) + return throwError("The old and new version strings are required.", V8Proxy::SyntaxError); + + if (!(args[0]->IsString() && args[1]->IsString())) + return throwError("The old and new versions must be strings."); + + Database* database = V8DOMWrapper::convertToNativeObject<Database>(V8ClassIndex::DATABASE, args.Holder()); + + Frame* frame = V8Proxy::retrieveFrameForCurrentContext(); + if (!frame) + return v8::Undefined(); + + RefPtr<V8CustomSQLTransactionCallback> callback; + if (args.Length() > 2) { + if (!args[2]->IsObject()) + return throwError("changeVersion transaction callback must be of valid type."); + + callback = V8CustomSQLTransactionCallback::create(args[2], frame); + } + + RefPtr<V8CustomSQLTransactionErrorCallback> errorCallback; + if (args.Length() > 3) { + if (!args[3]->IsObject()) + return throwError("changeVersion error callback must be of valid type."); + + errorCallback = V8CustomSQLTransactionErrorCallback::create(args[3], frame); + } + + RefPtr<V8CustomVoidCallback> successCallback; + if (args.Length() > 4) { + if (!args[4]->IsObject()) + return throwError("changeVersion success callback must be of valid type."); + + successCallback = V8CustomVoidCallback::create(args[4], frame); + } + + database->changeVersion(toWebCoreString(args[0]), toWebCoreString(args[1]), callback.release(), errorCallback.release(), successCallback.release()); + return v8::Undefined(); } @@ -76,7 +115,7 @@ CALLBACK_FUNC_DECL(DatabaseTransaction) RefPtr<V8CustomVoidCallback> successCallback; if (args.Length() > 2) { - if (!args[1]->IsObject()) + if (!args[2]->IsObject()) return throwError("Transaction success callback must be of valid type."); successCallback = V8CustomVoidCallback::create(args[2], frame); |