summaryrefslogtreecommitdiffstats
path: root/WebCore/bindings
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2009-10-06 12:05:22 +0100
committerBen Murdoch <benm@google.com>2009-10-06 12:05:22 +0100
commit124602fa9325bb5b26a8305777dcbdef15762f6d (patch)
tree32364bcf9b2f8003aeb3e02e3e532bb4d2b80bf8 /WebCore/bindings
parentfe996bf0a6c5c16a852ae7484bd74421d2492e15 (diff)
downloadexternal_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.cpp41
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);