~oif-team/ubuntu/natty/qt4-x11/xi2.1

« back to all changes in this revision

Viewing changes to src/3rdparty/webkit/WebCore/bindings/js/JSDatabaseCustom.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Alessandro Ghersi
  • Date: 2009-11-02 18:30:08 UTC
  • mfrom: (1.2.2 upstream)
  • mto: (15.2.5 experimental)
  • mto: This revision was merged to the branch mainline in revision 88.
  • Revision ID: james.westby@ubuntu.com-20091102183008-b6a4gcs128mvfb3m
Tags: upstream-4.6.0~beta1
ImportĀ upstreamĀ versionĀ 4.6.0~beta1

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
#include "config.h"
30
30
#include "JSDatabase.h"
31
31
 
 
32
#if ENABLE(DATABASE)
 
33
 
32
34
#include "DOMWindow.h"
33
35
#include "Database.h"
34
36
#include "Document.h"
45
47
 
46
48
using namespace JSC;
47
49
 
48
 
JSValuePtr JSDatabase::changeVersion(ExecState* exec, const ArgList& args)
 
50
JSValue JSDatabase::changeVersion(ExecState* exec, const ArgList& args)
49
51
{
50
 
    String oldVersion = args.at(exec, 0)->toString(exec);
51
 
    String newVersion = args.at(exec, 1)->toString(exec);
 
52
    String oldVersion = args.at(0).toString(exec);
 
53
    String newVersion = args.at(1).toString(exec);
52
54
 
53
 
    Frame* frame = asJSDOMWindow(exec->dynamicGlobalObject())->impl()->frame();
54
 
    if (!frame)
55
 
        return jsUndefined();
56
 
    
57
 
    JSObject *object;
58
 
    if (!(object = args.at(exec, 2)->getObject())) {
 
55
    JSObject* object;
 
56
    if (!(object = args.at(2).getObject())) {
59
57
        setDOMException(exec, TYPE_MISMATCH_ERR);
60
58
        return jsUndefined();
61
59
    }
62
60
    
63
 
    RefPtr<SQLTransactionCallback> callback(JSCustomSQLTransactionCallback::create(object, frame));
 
61
    RefPtr<SQLTransactionCallback> callback(JSCustomSQLTransactionCallback::create(object, static_cast<JSDOMGlobalObject*>(exec->dynamicGlobalObject())));
64
62
    
65
63
    RefPtr<SQLTransactionErrorCallback> errorCallback;
66
 
    if (!args.at(exec, 3)->isNull()) {
67
 
        if (!(object = args.at(exec, 3)->getObject())) {
 
64
    if (!args.at(3).isNull()) {
 
65
        if (!(object = args.at(3).getObject())) {
68
66
            setDOMException(exec, TYPE_MISMATCH_ERR);
69
67
            return jsUndefined();
70
68
        }
71
69
        
72
 
        errorCallback = JSCustomSQLTransactionErrorCallback::create(object, frame);
 
70
        errorCallback = JSCustomSQLTransactionErrorCallback::create(object, static_cast<JSDOMGlobalObject*>(exec->dynamicGlobalObject()));
73
71
    }
74
72
    
75
73
    RefPtr<VoidCallback> successCallback;
76
 
    if (!args.at(exec, 4)->isNull()) {
77
 
        successCallback = toVoidCallback(exec, args.at(exec, 4));
78
 
        if (!successCallback) {
 
74
    if (!args.at(4).isNull()) {
 
75
        if (!(object = args.at(4).getObject())) {
79
76
            setDOMException(exec, TYPE_MISMATCH_ERR);
80
77
            return jsUndefined();
81
78
        }
 
79
 
 
80
        successCallback = JSCustomVoidCallback::create(object, static_cast<JSDOMGlobalObject*>(exec->dynamicGlobalObject()));
82
81
    }
83
 
    
 
82
 
84
83
    m_impl->changeVersion(oldVersion, newVersion, callback.release(), errorCallback.release(), successCallback.release());
85
84
    
86
85
    return jsUndefined();
87
86
}
88
87
 
89
 
JSValuePtr JSDatabase::transaction(ExecState* exec, const ArgList& args)
 
88
static JSValue createTransaction(ExecState* exec, const ArgList& args, Database* database, JSDOMGlobalObject* globalObject, bool readOnly)
90
89
{
91
90
    JSObject* object;
92
91
    
93
 
    if (!(object = args.at(exec, 0)->getObject())) {
 
92
    if (!(object = args.at(0).getObject())) {
94
93
        setDOMException(exec, TYPE_MISMATCH_ERR);
95
94
        return jsUndefined();
96
95
    }        
97
 
 
98
 
    Frame* frame = asJSDOMWindow(exec->dynamicGlobalObject())->impl()->frame();
99
 
    if (!frame)
100
 
        return jsUndefined();
101
 
    
102
 
    RefPtr<SQLTransactionCallback> callback(JSCustomSQLTransactionCallback::create(object, frame));
 
96
     
 
97
    RefPtr<SQLTransactionCallback> callback(JSCustomSQLTransactionCallback::create(object, globalObject));
103
98
    RefPtr<SQLTransactionErrorCallback> errorCallback;
104
99
    
105
 
    if (args.size() > 1 && !args.at(exec, 1)->isNull()) {
106
 
        if (!(object = args.at(exec, 1)->getObject())) {
 
100
    if (args.size() > 1 && !args.at(1).isNull()) {
 
101
        if (!(object = args.at(1).getObject())) {
107
102
            setDOMException(exec, TYPE_MISMATCH_ERR);
108
103
            return jsUndefined();
109
104
        }
110
105
 
111
 
        errorCallback = JSCustomSQLTransactionErrorCallback::create(object, frame);
 
106
        errorCallback = JSCustomSQLTransactionErrorCallback::create(object, globalObject);
112
107
    }
113
108
 
114
109
    RefPtr<VoidCallback> successCallback;
115
 
    if (args.size() > 2 && !args.at(exec, 2)->isNull()) {
116
 
        successCallback = toVoidCallback(exec, args.at(exec, 2));
117
 
        if (!successCallback) {
 
110
    if (args.size() > 2 && !args.at(2).isNull()) {
 
111
        if (!(object = args.at(2).getObject())) {
118
112
            setDOMException(exec, TYPE_MISMATCH_ERR);
119
113
            return jsUndefined();
120
114
        }
 
115
 
 
116
        successCallback = JSCustomVoidCallback::create(object, globalObject);
121
117
    }
122
118
    
123
 
    m_impl->transaction(callback.release(), errorCallback.release(), successCallback.release());
124
 
 
 
119
    database->transaction(callback.release(), errorCallback.release(), successCallback.release(), readOnly);
125
120
    return jsUndefined();
126
121
}
 
122
 
 
123
JSValue JSDatabase::transaction(ExecState* exec, const ArgList& args)
 
124
{
 
125
    return createTransaction(exec, args, m_impl.get(), static_cast<JSDOMGlobalObject*>(exec->dynamicGlobalObject()), false);
 
126
}
127
127
    
128
 
}
 
128
JSValue JSDatabase::readTransaction(ExecState* exec, const ArgList& args)
 
129
{
 
130
    return createTransaction(exec, args, m_impl.get(), static_cast<JSDOMGlobalObject*>(exec->dynamicGlobalObject()), true);
 
131
}
 
132
 
 
133
}
 
134
 
 
135
#endif // ENABLE(DATABASE)