| Differences between
and this patch
- WebCore/ChangeLog +16 lines
Lines 1-3 WebCore/ChangeLog_sec1
1
2010-07-21  Dumitru Daniliuc  <dumi@chromium.org>
2
3
        Reviewed by NOBODY (OOPS!).
4
5
        Make db.changeVersion()'s third parameter optional, as required by the spec.
6
        https://bugs.webkit.org/show_bug.cgi?id=42787
7
8
        * bindings/js/JSDatabaseCustom.cpp:
9
        (WebCore::JSDatabase::changeVersion):
10
        * bindings/js/JSDatabaseSyncCustom.cpp:
11
        (WebCore::JSDatabaseSync::changeVersion):
12
        * storage/SQLTransaction.cpp:
13
        (WebCore::SQLTransaction::deliverTransactionCallback):
14
        * storage/SQLTransactionSync.cpp:
15
        (WebCore::SQLTransactionSync::execute):
16
1
2010-07-21  Bo Liu  <boliu@chromium.org>
17
2010-07-21  Bo Liu  <boliu@chromium.org>
2
18
3
        Reviewed by Darin Fisher.
19
        Reviewed by Darin Fisher.
- WebCore/bindings/js/JSDatabaseCustom.cpp -10 / +13 lines
Lines 57-73 JSValue JSDatabase::changeVersion(ExecSt WebCore/bindings/js/JSDatabaseCustom.cpp_sec1
57
    if (exec->hadException())
57
    if (exec->hadException())
58
        return jsUndefined();
58
        return jsUndefined();
59
59
60
    JSObject* object = exec->argument(2).getObject();
60
    RefPtr<SQLTransactionCallback> callback;
61
    if (!object) {
61
    if (exec->argumentCount() > 2 && !exec->argument(2).isNull()) {
62
        setDOMException(exec, TYPE_MISMATCH_ERR);
62
        JSObject* object = exec->argument(2).getObject();
63
        return jsUndefined();
63
        if (!object) {
64
    }
64
            setDOMException(exec, TYPE_MISMATCH_ERR);
65
            return jsUndefined();
66
        }
65
67
66
    RefPtr<SQLTransactionCallback> callback(JSSQLTransactionCallback::create(object, static_cast<JSDOMGlobalObject*>(globalObject())));
68
        callback = JSSQLTransactionCallback::create(object, static_cast<JSDOMGlobalObject*>(globalObject()));
69
    }
67
70
68
    RefPtr<SQLTransactionErrorCallback> errorCallback;
71
    RefPtr<SQLTransactionErrorCallback> errorCallback;
69
    if (!exec->argument(3).isNull()) {
72
    if (exec->argumentCount() > 3 && !exec->argument(3).isNull()) {
70
        object = exec->argument(3).getObject();
73
        JSObject* object = exec->argument(3).getObject();
71
        if (!object) {
74
        if (!object) {
72
            setDOMException(exec, TYPE_MISMATCH_ERR);
75
            setDOMException(exec, TYPE_MISMATCH_ERR);
73
            return jsUndefined();
76
            return jsUndefined();
Lines 77-84 JSValue JSDatabase::changeVersion(ExecSt WebCore/bindings/js/JSDatabaseCustom.cpp_sec2
77
    }
80
    }
78
81
79
    RefPtr<VoidCallback> successCallback;
82
    RefPtr<VoidCallback> successCallback;
80
    if (!exec->argument(4).isNull()) {
83
    if (exec->argumentCount() > 4 && !exec->argument(4).isNull()) {
81
        object = exec->argument(4).getObject();
84
        JSObject* object = exec->argument(4).getObject();
82
        if (!object) {
85
        if (!object) {
83
            setDOMException(exec, TYPE_MISMATCH_ERR);
86
            setDOMException(exec, TYPE_MISMATCH_ERR);
84
            return jsUndefined();
87
            return jsUndefined();
- WebCore/bindings/js/JSDatabaseSyncCustom.cpp -6 / +9 lines
Lines 52-64 JSValue JSDatabaseSync::changeVersion(Ex WebCore/bindings/js/JSDatabaseSyncCustom.cpp_sec1
52
    if (exec->hadException())
52
    if (exec->hadException())
53
        return jsUndefined();
53
        return jsUndefined();
54
54
55
    JSObject* object = exec->argument(2).getObject();
55
    RefPtr<SQLTransactionSyncCallback> callback;
56
    if (!object) {
56
    if (exec->argumentCount() > 2 && !exec->argument(2).isNull()) {
57
        setDOMException(exec, TYPE_MISMATCH_ERR);
57
        JSObject* object = exec->argument(2).getObject();
58
        return jsUndefined();
58
        if (!object) {
59
    }
59
            setDOMException(exec, TYPE_MISMATCH_ERR);
60
            return jsUndefined();
61
        }
60
62
61
    RefPtr<SQLTransactionSyncCallback> callback(JSSQLTransactionSyncCallback::create(object, static_cast<JSDOMGlobalObject*>(globalObject())));
63
        callback = JSSQLTransactionSyncCallback::create(object, static_cast<JSDOMGlobalObject*>(globalObject()));
64
    }
62
65
63
    ExceptionCode ec = 0;
66
    ExceptionCode ec = 0;
64
    m_impl->changeVersion(oldVersion, newVersion, callback.release(), ec);
67
    m_impl->changeVersion(oldVersion, newVersion, callback.release(), ec);
- WebCore/storage/SQLTransaction.cpp -2 / +1 lines
Lines 292-299 void SQLTransaction::deliverTransactionC WebCore/storage/SQLTransaction.cpp_sec1
292
        m_executeSqlAllowed = true;
292
        m_executeSqlAllowed = true;
293
        shouldDeliverErrorCallback = !m_callback->handleEvent(m_database->scriptExecutionContext(), this);
293
        shouldDeliverErrorCallback = !m_callback->handleEvent(m_database->scriptExecutionContext(), this);
294
        m_executeSqlAllowed = false;
294
        m_executeSqlAllowed = false;
295
    } else
295
    }
296
        shouldDeliverErrorCallback = true;
297
296
298
    // Transaction Step 5 - If the transaction callback was null or raised an exception, jump to the error callback
297
    // Transaction Step 5 - If the transaction callback was null or raised an exception, jump to the error callback
299
    if (shouldDeliverErrorCallback) {
298
    if (shouldDeliverErrorCallback) {
- WebCore/storage/SQLTransactionSync.cpp -1 / +1 lines
Lines 150-156 ExceptionCode SQLTransactionSync::begin( WebCore/storage/SQLTransactionSync.cpp_sec1
150
ExceptionCode SQLTransactionSync::execute()
150
ExceptionCode SQLTransactionSync::execute()
151
{
151
{
152
    ASSERT(m_database->scriptExecutionContext()->isContextThread());
152
    ASSERT(m_database->scriptExecutionContext()->isContextThread());
153
    if (!m_database->opened() || !m_callback || !m_callback->handleEvent(m_database->scriptExecutionContext(), this)) {
153
    if (!m_database->opened() || (m_callback && !m_callback->handleEvent(m_database->scriptExecutionContext(), this))) {
154
        m_callback = 0;
154
        m_callback = 0;
155
        return SQLException::UNKNOWN_ERR;
155
        return SQLException::UNKNOWN_ERR;
156
    }
156
    }
- LayoutTests/ChangeLog +11 lines
Lines 1-3 LayoutTests/ChangeLog_sec1
1
2010-07-21  Dumitru Daniliuc  <dumi@chromium.org>
2
3
        Reviewed by NOBODY (OOPS!).
4
5
        Simplify some tests, and make sure db.changeVersion()'s third parameter is optional.
6
        https://bugs.webkit.org/show_bug.cgi?id=42787
7
8
        * fast/workers/storage/resources/change-version-sync-1.js:
9
        * fast/workers/storage/resources/change-version-sync-2.js:
10
        * storage/change-version.html:
11
1
2010-07-21  Adam Barth  <abarth@webkit.org>
12
2010-07-21  Adam Barth  <abarth@webkit.org>
2
13
3
        Reviewed by Eric Seidel.
14
        Reviewed by Eric Seidel.
- LayoutTests/fast/workers/storage/resources/change-version-sync-1.js -3 / +1 lines
Lines 1-13 LayoutTests/fast/workers/storage/resources/change-version-sync-1.js_sec1
1
var EXPECTED_VERSION_AFTER_HIXIE_TEST = "2";
1
var EXPECTED_VERSION_AFTER_HIXIE_TEST = "2";
2
var EXPECTED_VERSION_AFTER_RELOAD = "3";
2
var EXPECTED_VERSION_AFTER_RELOAD = "3";
3
3
4
function emptyFunction() { }
5
6
var db1 = openDatabaseSync("ChangeVersionTest", "1", "Test for the database.changeVersion() function", 1);
4
var db1 = openDatabaseSync("ChangeVersionTest", "1", "Test for the database.changeVersion() function", 1);
7
var db2 = openDatabaseSync("ChangeVersionTest", "1", "Test for the database.changeVersion() function", 1);
5
var db2 = openDatabaseSync("ChangeVersionTest", "1", "Test for the database.changeVersion() function", 1);
8
6
9
// First run Hixie's test to ensure basic changeVersion() functionality works (see bug 28418).
7
// First run Hixie's test to ensure basic changeVersion() functionality works (see bug 28418).
10
db1.changeVersion("1", EXPECTED_VERSION_AFTER_HIXIE_TEST, emptyFunction);
8
db1.changeVersion("1", EXPECTED_VERSION_AFTER_HIXIE_TEST);
11
if (db2.version != db1.version) {
9
if (db2.version != db1.version) {
12
    postMessage("FAIL: changing db1's version (" + db1.version + ") did not change db2's version (" + db2.version + ") as expected.");
10
    postMessage("FAIL: changing db1's version (" + db1.version + ") did not change db2's version (" + db2.version + ") as expected.");
13
    postMessage("fail");
11
    postMessage("fail");
- LayoutTests/fast/workers/storage/resources/change-version-sync-2.js -1 / +1 lines
Lines 7-12 else LayoutTests/fast/workers/storage/resources/change-version-sync-2.js_sec1
7
    postMessage("FAIL: db.version is " + db.version + "; expected " + EXPECTED_VERSION_AFTER_RELOAD);
7
    postMessage("FAIL: db.version is " + db.version + "; expected " + EXPECTED_VERSION_AFTER_RELOAD);
8
8
9
// Reset the version; otherwise this test will fail the next time it's run
9
// Reset the version; otherwise this test will fail the next time it's run
10
db.changeVersion(db.version, "1", function(tx) { });
10
db.changeVersion(db.version, "1");
11
11
12
postMessage("done");
12
postMessage("done");
- LayoutTests/storage/change-version.html -1 / +5 lines
Lines 44-49 function runTest() LayoutTests/storage/change-version.html_sec1
44
    if (window.location.search == "?2") {
44
    if (window.location.search == "?2") {
45
        db1 = window.openDatabase("changeversion-test", "", "Test for the database.changeVersion() function", 1024);
45
        db1 = window.openDatabase("changeversion-test", "", "Test for the database.changeVersion() function", 1024);
46
        log("Finished tests with version " + db1.version + "; expected version: " + EXPECTED_VERSION_AFTER_RELOAD);
46
        log("Finished tests with version " + db1.version + "; expected version: " + EXPECTED_VERSION_AFTER_RELOAD);
47
48
        // Reset the DB version or the next run might fail
49
        db1.changeVersion(db1.version, "1");
50
47
        finishTest();
51
        finishTest();
48
    } else
52
    } else
49
        testPart1();
53
        testPart1();
Lines 60-66 function testPart1() { LayoutTests/storage/change-version.html_sec2
60
    var db2 = window.openDatabase("changeversion-test", "1", "Test for the database.changeVersion() function", 1024);
64
    var db2 = window.openDatabase("changeversion-test", "1", "Test for the database.changeVersion() function", 1024);
61
65
62
    // First run Hixie's test to ensure basic changeVersion functionality works (see bug 28418).
66
    // First run Hixie's test to ensure basic changeVersion functionality works (see bug 28418).
63
    db1.changeVersion("1", EXPECTED_VERSION_AFTER_HIXIE_TEST, emptyFunction, function (e) {
67
    db1.changeVersion("1", EXPECTED_VERSION_AFTER_HIXIE_TEST, null, function (e) {
64
        log("FAIL in changeVersion:" + e);
68
        log("FAIL in changeVersion:" + e);
65
        finishTest();
69
        finishTest();
66
    }, function () {
70
    }, function () {

Return to Bug 42787