Changeset 59095 in webkit
- Timestamp:
- May 10, 2010 1:46:34 PM (14 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r59094 r59095 1 2010-05-10 Dumitru Daniliuc <dumi@chromium.org> 2 3 Reviewed by Adam Barth. 4 5 Clean up and fix the existing V8 DB bindings. 6 https://bugs.webkit.org/show_bug.cgi?id=34994 7 8 * bindings/v8/custom/V8DOMWindowCustom.cpp: 9 (WebCore::V8DOMWindow::openDatabaseCallback): 10 * bindings/v8/custom/V8DatabaseCustom.cpp: 11 (WebCore::V8Database::changeVersionCallback): 12 (WebCore::createTransaction): 13 * bindings/v8/custom/V8SQLTransactionCustom.cpp: 14 (WebCore::V8SQLTransaction::executeSqlCallback): 15 1 16 2010-05-10 Kevin Ollivier <kevino@theolliviers.com> 2 17 -
trunk/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp
r57865 r59095 53 53 #include "V8Binding.h" 54 54 #include "V8BindingDOMWindow.h" 55 #include "V8BindingMacros.h" 55 56 #include "V8BindingState.h" 56 57 #include "V8CustomEventListener.h" … … 720 721 INC_STATS("DOM.DOMWindow.openDatabase"); 721 722 if (args.Length() < 4) 722 return v8::Undefined(); 723 return throwError(SYNTAX_ERR); 724 725 EXCEPTION_BLOCK(String, name, toWebCoreString(args[0])); 726 EXCEPTION_BLOCK(String, version, toWebCoreString(args[1])); 727 EXCEPTION_BLOCK(String, displayName, toWebCoreString(args[2])); 728 EXCEPTION_BLOCK(unsigned long, estimatedSize, args[3]->Uint32Value()); 723 729 724 730 DOMWindow* imp = V8DOMWindow::toNative(args.Holder()); … … 726 732 return v8::Undefined(); 727 733 734 RefPtr<DatabaseCallback> creationCallback; 735 if (args.Length() >= 5) { 736 if (!args[4]->IsObject()) 737 return throwError(TYPE_MISMATCH_ERR); 738 739 creationCallback = V8DatabaseCallback::create(args[4], imp->frame()); 740 } 741 728 742 ExceptionCode ec = 0; 729 String name = toWebCoreString(args[0]);730 String version = toWebCoreString(args[1]);731 String displayName = toWebCoreString(args[2]);732 unsigned long estimatedSize = args[3]->IntegerValue();733 RefPtr<DatabaseCallback> creationCallback;734 if ((args.Length() >= 5) && args[4]->IsObject())735 creationCallback = V8DatabaseCallback::create(args[4], imp->frame());736 737 743 v8::Handle<v8::Value> result = toV8(imp->openDatabase(name, version, displayName, estimatedSize, creationCallback.release(), ec)); 738 744 -
trunk/WebCore/bindings/v8/custom/V8DatabaseCustom.cpp
r58801 r59095 1 1 /* 2 2 * Copyright (C) 2009 Google Inc. All rights reserved. 3 * 3 * 4 4 * Redistribution and use in source and binary forms, with or without 5 5 * modification, are permitted provided that the following conditions are 6 6 * met: 7 * 7 * 8 8 * * Redistributions of source code must retain the above copyright 9 9 * notice, this list of conditions and the following disclaimer. … … 15 15 * contributors may be used to endorse or promote products derived from 16 16 * this software without specific prior written permission. 17 * 17 * 18 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT … … 36 36 #include "Database.h" 37 37 #include "V8Binding.h" 38 #include "V8BindingMacros.h" 38 39 #include "V8SQLTransactionCallback.h" 39 40 #include "V8SQLTransactionErrorCallback.h" … … 48 49 49 50 if (args.Length() < 2) 50 return throwError( "The old and new version strings are required.", V8Proxy::SyntaxError);51 return throwError(SYNTAX_ERR); 51 52 52 if (!(args[0]->IsString() && args[1]->IsString()))53 return throwError("The old and new versions must be strings.");53 EXCEPTION_BLOCK(String, oldVersion, toWebCoreString(args[0])); 54 EXCEPTION_BLOCK(String, newVersion, toWebCoreString(args[1])); 54 55 55 56 Database* database = V8Database::toNative(args.Holder()); … … 62 63 if (args.Length() > 2) { 63 64 if (!args[2]->IsObject()) 64 return throwError( "changeVersion transaction callback must be of valid type.");65 return throwError(TYPE_MISMATCH_ERR); 65 66 66 67 callback = V8SQLTransactionCallback::create(args[2], frame); … … 70 71 if (args.Length() > 3) { 71 72 if (!args[3]->IsObject()) 72 return throwError( "changeVersion error callback must be of valid type.");73 return throwError(TYPE_MISMATCH_ERR); 73 74 74 75 errorCallback = V8SQLTransactionErrorCallback::create(args[3], frame); … … 78 79 if (args.Length() > 4) { 79 80 if (!args[4]->IsObject()) 80 return throwError( "changeVersion success callback must be of valid type.");81 return throwError(TYPE_MISMATCH_ERR); 81 82 82 83 successCallback = V8CustomVoidCallback::create(args[4], frame); 83 84 } 84 85 85 database->changeVersion( toWebCoreString(args[0]), toWebCoreString(args[1]), callback.release(), errorCallback.release(), successCallback.release());86 database->changeVersion(oldVersion, newVersion, callback.release(), errorCallback.release(), successCallback.release()); 86 87 87 88 return v8::Undefined(); … … 91 92 { 92 93 if (!args.Length()) 93 return throwError( "Transaction callback is required.", V8Proxy::SyntaxError);94 return throwError(SYNTAX_ERR); 94 95 95 96 if (!args[0]->IsObject()) 96 return throwError( "Transaction callback must be of valid type.");97 return throwError(TYPE_MISMATCH_ERR); 97 98 98 99 Database* database = V8Database::toNative(args.Holder()); … … 107 108 if (args.Length() > 1 && !isUndefinedOrNull(args[1])) { 108 109 if (!args[1]->IsObject()) 109 return throwError( "Transaction error callback must be of valid type.");110 return throwError(TYPE_MISMATCH_ERR); 110 111 111 112 errorCallback = V8SQLTransactionErrorCallback::create(args[1], frame); … … 115 116 if (args.Length() > 2 && !isUndefinedOrNull(args[2])) { 116 117 if (!args[2]->IsObject()) 117 return throwError( "Transaction success callback must be of valid type.");118 return throwError(TYPE_MISMATCH_ERR); 118 119 119 120 successCallback = V8CustomVoidCallback::create(args[2], frame); -
trunk/WebCore/bindings/v8/custom/V8SQLTransactionCustom.cpp
r58801 r59095 1 1 /* 2 2 * Copyright (C) 2009 Google Inc. All rights reserved. 3 * 3 * 4 4 * Redistribution and use in source and binary forms, with or without 5 5 * modification, are permitted provided that the following conditions are 6 6 * met: 7 * 7 * 8 8 * * Redistributions of source code must retain the above copyright 9 9 * notice, this list of conditions and the following disclaimer. … … 15 15 * contributors may be used to endorse or promote products derived from 16 16 * this software without specific prior written permission. 17 * 17 * 18 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT … … 38 38 #include "SQLValue.h" 39 39 #include "V8Binding.h" 40 #include "V8BindingMacros.h" 40 41 #include "V8SQLStatementCallback.h" 41 42 #include "V8SQLStatementErrorCallback.h" … … 52 53 53 54 if (args.Length() == 0) 54 return throwError( "SQL statement is required.", V8Proxy::SyntaxError);55 return throwError(SYNTAX_ERR); 55 56 56 String statement = toWebCoreString(args[0]);57 EXCEPTION_BLOCK(String, statement, toWebCoreString(args[0])); 57 58 58 59 Vector<SQLValue> sqlValues; 59 60 60 61 if (args.Length() > 1 && !isUndefinedOrNull(args[1])) { 61 if (args[1]->IsObject()) { 62 uint32_t sqlArgsLength = 0; 63 v8::Local<v8::Object> sqlArgsObject = args[1]->ToObject(); 64 v8::Local<v8::Value> lengthGetter; 65 { 66 v8::TryCatch block; 67 lengthGetter = sqlArgsObject->Get(v8::String::New("length")); 68 if (block.HasCaught()) 69 return throwError(block.Exception()); 62 if (!args[1]->IsObject()) 63 return throwError(TYPE_MISMATCH_ERR); 64 65 uint32_t sqlArgsLength = 0; 66 v8::Local<v8::Object> sqlArgsObject = args[1]->ToObject(); 67 EXCEPTION_BLOCK(v8::Local<v8::Value>, length, sqlArgsObject->Get(v8::String::New("length"))); 68 69 if (isUndefinedOrNull(length)) 70 sqlArgsLength = sqlArgsObject->GetPropertyNames()->Length(); 71 else 72 sqlArgsLength = length->Uint32Value(); 73 74 for (unsigned int i = 0; i < sqlArgsLength; ++i) { 75 v8::Local<v8::Integer> key = v8::Integer::New(i); 76 EXCEPTION_BLOCK(v8::Local<v8::Value>, value, sqlArgsObject->Get(key)); 77 78 if (value.IsEmpty() || value->IsNull()) 79 sqlValues.append(SQLValue()); 80 else if (value->IsNumber()) { 81 EXCEPTION_BLOCK(double, sqlValue, value->NumberValue()); 82 sqlValues.append(SQLValue(sqlValue)); 83 } else { 84 EXCEPTION_BLOCK(String, sqlValue, toWebCoreString(value)); 85 sqlValues.append(SQLValue(sqlValue)); 70 86 } 71 72 if (isUndefinedOrNull(lengthGetter)) 73 sqlArgsLength = sqlArgsObject->GetPropertyNames()->Length(); 74 else 75 sqlArgsLength = lengthGetter->Uint32Value(); 76 77 for (unsigned int i = 0; i < sqlArgsLength; ++i) { 78 v8::Local<v8::Integer> key = v8::Integer::New(i); 79 v8::Local<v8::Value> value; 80 { 81 v8::TryCatch block; 82 value = sqlArgsObject->Get(key); 83 if (block.HasCaught()) 84 return throwError(block.Exception()); 85 } 86 87 if (value.IsEmpty() || value->IsNull()) 88 sqlValues.append(SQLValue()); 89 else if (value->IsNumber()) 90 sqlValues.append(SQLValue(value->NumberValue())); 91 else 92 sqlValues.append(SQLValue(toWebCoreString(value))); 93 } 94 } else 95 return throwError("sqlArgs should be array or object!", V8Proxy::TypeError); 87 } 96 88 } 97 89 … … 103 95 if (args.Length() > 2 && !isUndefinedOrNull(args[2])) { 104 96 if (!args[2]->IsObject()) 105 return throwError( "Statement callback must be of valid type.", V8Proxy::TypeError);97 return throwError(TYPE_MISMATCH_ERR); 106 98 107 99 if (frame) … … 112 104 if (args.Length() > 3 && !isUndefinedOrNull(args[3])) { 113 105 if (!args[3]->IsObject()) 114 return throwError( "Statement error callback must be of valid type.", V8Proxy::TypeError);106 return throwError(TYPE_MISMATCH_ERR); 115 107 116 108 if (frame)
Note: See TracChangeset
for help on using the changeset viewer.