~ubuntu-branches/ubuntu/lucid/webkit/lucid-security

« back to all changes in this revision

Viewing changes to WebCore/bridge/jni/jni_runtime.h

  • Committer: Bazaar Package Importer
  • Author(s): Gustavo Noronha Silva
  • Date: 2010-01-20 20:09:57 UTC
  • mfrom: (1.2.7 upstream) (4.3.8 sid)
  • Revision ID: james.westby@ubuntu.com-20100120200957-3ng8lah18c7pmm52
* New upstream release
- Fixes crashes related to clearing the clipboard, which many users were
  experiencing (Closes: #565166)

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
 
29
29
#if ENABLE(MAC_JAVA_BRIDGE)
30
30
 
31
 
#include <jni_utility.h>
32
 
#include <jni_instance.h>
33
 
#include <runtime/JSLock.h>
 
31
#include "JNIUtility.h"
 
32
#include "JavaInstanceJSC.h"
34
33
 
 
34
#if USE(JSC)
 
35
#include "JavaStringJSC.h"
 
36
#endif
35
37
 
36
38
namespace JSC
37
39
{
46
48
public:
47
49
    JavaString()
48
50
    {
49
 
        JSLock lock(SilenceAssertionsOnly);
50
 
        _rep = UString().rep();
51
 
    }
52
 
 
53
 
    void _commonInit (JNIEnv *e, jstring s)
54
 
    {
55
 
        int _size = e->GetStringLength (s);
56
 
        const jchar *uc = getUCharactersFromJStringInEnv (e, s);
57
 
        {
58
 
            JSLock lock(SilenceAssertionsOnly);
59
 
            _rep = UString(reinterpret_cast<const UChar*>(uc), _size).rep();
60
 
        }
61
 
        releaseUCharactersForJStringInEnv (e, s, uc);
62
 
    }
63
 
    
64
 
    JavaString (JNIEnv *e, jstring s) {
65
 
        _commonInit (e, s);
66
 
    }
67
 
    
68
 
    JavaString (jstring s) {
69
 
        _commonInit (getJNIEnv(), s);
70
 
    }
71
 
    
72
 
    ~JavaString()
73
 
    {
74
 
        JSLock lock(SilenceAssertionsOnly);
75
 
        _rep = 0;
76
 
    }
77
 
    
78
 
    const char *UTF8String() const { 
79
 
        if (_utf8String.c_str() == 0) {
80
 
            JSLock lock(SilenceAssertionsOnly);
81
 
            _utf8String = UString(_rep).UTF8String();
82
 
        }
83
 
        return _utf8String.c_str();
84
 
    }
85
 
    const jchar *uchars() const { return (const jchar *)_rep->data(); }
86
 
    int length() const { return _rep->size(); }
87
 
    operator UString() const { return UString(_rep); }
 
51
        m_impl.init();
 
52
    }
 
53
 
 
54
    JavaString(JNIEnv* e, jstring s)
 
55
    {
 
56
        m_impl.init(e, s);
 
57
    }
 
58
 
 
59
    JavaString(jstring s)
 
60
    {
 
61
        m_impl.init(getJNIEnv(), s);
 
62
    }
 
63
 
 
64
    const char* UTF8String() const { return m_impl.UTF8String(); }
 
65
    const jchar* uchars() const { return m_impl.uchars(); }
 
66
    int length() const { return m_impl.length(); }
 
67
#if USE(JSC)
 
68
    operator UString() const { return m_impl.uString(); }
 
69
#endif
88
70
 
89
71
private:
90
 
    RefPtr<UString::Rep> _rep;
91
 
    mutable CString _utf8String;
 
72
    JavaStringImpl m_impl;
92
73
};
93
74
 
94
75
class JavaParameter
115
96
    virtual JSValue valueFromInstance(ExecState *exec, const Instance *instance) const;
116
97
    virtual void setValueToInstance(ExecState *exec, const Instance *instance, JSValue aValue) const;
117
98
    
118
 
    UString::Rep* name() const { return ((UString)_name).rep(); }
 
99
    const JavaString& name() const { return _name; }
119
100
    virtual RuntimeType type() const { return _type.UTF8String(); }
120
101
 
121
102
    JNIType getJNIType() const { return _JNIType; }
137
118
    JavaMethod(JNIEnv* env, jobject aMethod);
138
119
    ~JavaMethod();
139
120
 
140
 
    UString::Rep* name() const { return ((UString)_name).rep(); }
 
121
    const JavaString& name() const { return _name; }
141
122
    RuntimeType returnType() const { return _returnType.UTF8String(); };
142
123
    JavaParameter* parameterAt(int i) const { return &_parameters[i]; };
143
124
    int numParameters() const { return _numParameters; };
172
153
    virtual JSValue valueAt(ExecState *exec, unsigned int index) const;
173
154
    virtual unsigned int getLength() const;
174
155
    
175
 
    jobject javaArray() const { return _array->_instance; }
 
156
    jobject javaArray() const { return _array->m_instance; }
176
157
 
177
158
    static JSValue convertJObjectToArray (ExecState* exec, jobject anObject, const char* type, PassRefPtr<RootObject>);
178
159