Changeset 56572 in webkit
- Timestamp:
- Mar 25, 2010 3:29:39 PM (14 years ago)
- Location:
- trunk
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r56567 r56572 1 2010-03-24 Dumitru Daniliuc <dumi@chromium.org> 2 3 Reviewed by Dimitri Glazkov. 4 5 Updating the test to conform to the latest spec changes. 6 7 * storage/statement-error-callback-expected.txt: 8 * storage/statement-error-callback.html: 9 1 10 2010-03-25 Ojan Vafai <ojan@chromium.org> 2 11 -
trunk/LayoutTests/storage/statement-error-callback-expected.txt
r54981 r56572 7 7 PASS - the transaction error callback was invoked. 8 8 PASS - the transaction error callback was invoked. 9 PASS - the transaction error callback was invoked. 9 PASS - the transaction success callback was invoked. 10 PASS - the transaction success callback was invoked. 11 PASS - the transaction success callback was invoked. 12 PASS - the transaction success callback was invoked. 10 13 Test Complete 11 14 -
trunk/LayoutTests/storage/statement-error-callback.html
r54981 r56572 16 16 17 17 var txCallbackCount = 0; 18 var NUMBER_OF_TRANSACTIONS = 7;18 var NUMBER_OF_TRANSACTIONS = 10; 19 19 var database; 20 20 21 function transactionErrorFunction(error) 22 { 23 log("PASS - the transaction error callback was invoked."); 24 if (++txCallbackCount == NUMBER_OF_TRANSACTIONS) 25 finishTest(); 26 } 27 28 function transactionSuccessFunction(message) 29 { 30 log("FAIL - the transaction success callback should not be invoked."); 31 if (++txCallbackCount == NUMBER_OF_TRANSACTIONS) 32 finishTest(); 33 } 34 35 function runTransactionExpectedToFail(statementErrorCallback) 21 function runTransaction(expectedToFail, statementErrorCallback) 36 22 { 37 23 database.transaction(function(tx) { 38 tx.executeSql("CREATE TABLE IF NOT EXISTS StatementErrorCallbackTest (randomData)");39 tx.executeSql("INSERT INTO StatementErrorCallbackTest (randomData)VALUES (?)", ['test']);24 tx.executeSql("CREATE TABLE IF NOT EXISTS TestTable (RandomData TEXT)"); 25 tx.executeSql("INSERT INTO TestTable VALUES (?)", ['test']); 40 26 tx.executeSql("THIS STATEMENT WILL FAIL", [], 41 27 function(tx, data) { … … 43 29 finishTest(); 44 30 }, statementErrorCallback); 45 tx.executeSql("INSERT INTO StatementErrorCallbackTest (randomData) VALUES (?)", ['test1'], 46 function(error) { log("FAIL - This statement should not have been executed"); }, 47 function() { log("FAIL - This statement should not have been executed"); }); 48 }, transactionErrorFunction, transactionSuccessFunction); 31 tx.executeSql("INSERT INTO TestTable VALUES (?)", ['test1'], 32 function(error) { 33 if (expectedToFail) 34 log("FAIL - This statement should not have been executed"); 35 }, function() { 36 if (expectedToFail) 37 log("FAIL - This statement should not have been executed"); 38 }); 39 }, function(error) { 40 if (expectedToFail) 41 log("PASS - the transaction error callback was invoked."); 42 else 43 log("FAIL - the transaction error callback should not have been invoked."); 44 if (++txCallbackCount == NUMBER_OF_TRANSACTIONS) 45 finishTest(); 46 }, function() { 47 if (expectedToFail) 48 log("FAIL - the transaction success callback should not have been invoked."); 49 else 50 log("PASS - the transaction success callback was invoked."); 51 if (++txCallbackCount == NUMBER_OF_TRANSACTIONS) 52 finishTest(); 53 }); 49 54 } 50 55 … … 57 62 } 58 63 59 database = openDatabase("bug-28872", "1.0", "statement error callback test", 1024); 60 database.transaction(function(tx) { 61 tx.executeSql("CREATE TABLE IF NOT EXISTS StatementErrorCallbackTest (randomData)"); 62 tx.executeSql("INSERT INTO StatementErrorCallbackTest (randomData) VALUES (?)", ['test']); 63 tx.executeSql("THIS STATEMENT WILL FAIL", [], 64 function(tx, data) { 65 log("FAIL - this statement should have failed"); 66 finishTest(); 67 }, function(tx, error) { return false; }); 68 tx.executeSql("INSERT INTO StatementErrorCallbackTest (randomData) VALUES (?)", ['test1'], 69 function(tx, data) { }, 70 function(tx, error) { log("FAIL - This statement should not have caused an error"); }); 71 }, function(error) { log("FAIL - The transaction error callback should not have been invoked"); }, 72 function() { }); 64 database = openDatabase("StatementErrorCallbackTest", "1.0", "statement error callback test", 1024); 73 65 74 runTransactionExpectedToFail(function(error) { return true; }); 75 runTransactionExpectedToFail(function(error) { throw "Exception in statement error callback"; return false; }); 76 runTransactionExpectedToFail(function(error) {}); 77 runTransactionExpectedToFail(function(error) { return null; }); 78 runTransactionExpectedToFail(function(error) { return "some string"; }); 79 runTransactionExpectedToFail(function(error) { return 1234; }); 80 runTransactionExpectedToFail(function(error) { return {a: 2, b: "abc"}; }); 66 runTransaction(true, function(error) { return true; }); 67 runTransaction(true, function(error) { throw "Exception in statement error callback"; return false; }); 68 runTransaction(true, function(error) { return "some string"; }); 69 runTransaction(true, function(error) { return 1234; }); 70 runTransaction(true, function(error) { return {a: 2, b: "abc"}; }); 71 runTransaction(true, function(error) { return "false"; }); 72 runTransaction(false, function(error) {}); 73 runTransaction(false, function(error) { return false; }); 74 runTransaction(false, function(error) { return 0; }); 75 runTransaction(false, function(error) { return null; }); 81 76 } 82 77 -
trunk/WebCore/ChangeLog
r56570 r56572 1 2010-03-24 Dumitru Daniliuc <dumi@chromium.org> 2 3 Reviewed by Dimitri Glazkov. 4 5 Changing the V8 and JSC implementations of 6 SQLStatementErrorCallback to interpret as false all results that 7 could be converted to a false boolean. Pretty much a revert of 8 r54981. 9 10 https://bugs.webkit.org/show_bug.cgi?id=36569 11 12 * bindings/js/JSCustomSQLStatementErrorCallback.cpp: 13 (WebCore::JSCustomSQLStatementErrorCallback::handleEvent): 14 * bindings/v8/custom/V8CustomSQLStatementErrorCallback.cpp: 15 (WebCore::V8CustomSQLStatementErrorCallback::handleEvent): 16 * bindings/v8/custom/V8CustomVoidCallback.cpp: 17 (WebCore::invokeCallback): 18 * bindings/v8/custom/V8CustomVoidCallback.h: 19 1 20 2010-03-25 Dmitry Titov <dimich@chromium.org> 2 21 -
trunk/WebCore/bindings/js/JSCustomSQLStatementErrorCallback.cpp
r54981 r56572 78 78 return true; 79 79 } 80 return !result.isFalse();80 return result.toBoolean(exec); 81 81 } 82 82 -
trunk/WebCore/bindings/v8/custom/V8CustomSQLStatementErrorCallback.cpp
r54981 r56572 76 76 // the error callback did not return false, or there was no error callback. 77 77 // Jump to the last step in the overall steps. 78 return invokeCallback TreatOnlyExplicitFalseAsFalse(m_callback, 2, argv, callbackReturnValue) || callbackReturnValue;78 return invokeCallback(m_callback, 2, argv, callbackReturnValue) || callbackReturnValue; 79 79 } 80 80 -
trunk/WebCore/bindings/v8/custom/V8CustomVoidCallback.cpp
r54981 r56572 30 30 31 31 #include "config.h" 32 #include "V8Binding.h"33 32 #include "V8CustomVoidCallback.h" 34 33 35 34 #include "Frame.h" 35 #include "V8Binding.h" 36 36 37 37 namespace WebCore { … … 65 65 } 66 66 67 static bool invokeCallbackHelper(v8::Persistent<v8::Object> callback, int argc, v8::Handle<v8::Value> argv[], v8::Handle<v8::Value>& returnValue)67 bool invokeCallback(v8::Persistent<v8::Object> callback, int argc, v8::Handle<v8::Value> argv[], bool& callbackReturnValue) 68 68 { 69 69 v8::TryCatch exceptionCatcher; … … 74 74 } else if (callback->IsObject()) { 75 75 v8::Local<v8::Value> handleEventFunction = callback->Get(v8::String::NewSymbol("handleEvent")); 76 if (handleEventFunction->IsFunction()) {76 if (handleEventFunction->IsFunction()) 77 77 callbackFunction = v8::Local<v8::Function>::Cast(handleEventFunction); 78 }79 78 } else 80 79 return false; … … 88 87 ASSERT(proxy); 89 88 90 returnValue = proxy->callFunction(callbackFunction, thisObject, argc, argv); 89 v8::Handle<v8::Value> result = proxy->callFunction(callbackFunction, thisObject, argc, argv); 90 callbackReturnValue = !result.IsEmpty() && result->IsBoolean() && result->BooleanValue(); 91 91 92 92 if (exceptionCatcher.HasCaught()) { … … 99 99 } 100 100 101 bool invokeCallback(v8::Persistent<v8::Object> callback, int argc, v8::Handle<v8::Value> argv[], bool& callbackReturnValue)102 {103 v8::Handle<v8::Value> returnValue;104 bool result = invokeCallbackHelper(callback, argc, argv, returnValue);105 callbackReturnValue = !returnValue.IsEmpty() && returnValue->IsBoolean() && returnValue->BooleanValue();106 return result;107 }108 109 bool invokeCallbackTreatOnlyExplicitFalseAsFalse(v8::Persistent<v8::Object> callback, int argc, v8::Handle<v8::Value> argv[], bool& callbackReturnValue)110 {111 v8::Handle<v8::Value> returnValue;112 bool result = invokeCallbackHelper(callback, argc, argv, returnValue);113 callbackReturnValue = !returnValue.IsEmpty() && !returnValue->IsFalse();114 return result;115 }116 117 101 } // namespace WebCore -
trunk/WebCore/bindings/v8/custom/V8CustomVoidCallback.h
r54981 r56572 61 61 // Returns false if callback failed (null, wrong type, or threw exception). 62 62 bool invokeCallback(v8::Persistent<v8::Object> callback, int argc, v8::Handle<v8::Value> argv[], bool& callbackReturnValue); 63 bool invokeCallbackTreatOnlyExplicitFalseAsFalse(v8::Persistent<v8::Object> callback, int argc, v8::Handle<v8::Value> argv[], bool& callbackReturnValue);64 63 65 64 } // namespace WebCore
Note: See TracChangeset
for help on using the changeset viewer.