Changeset 80339 in webkit


Ignore:
Timestamp:
Mar 4, 2011 1:45:13 AM (13 years ago)
Author:
steveblock@google.com
Message:

2011-03-04 Steve Block <steveblock@google.com>

Reviewed by Jeremy Orlow.

V8 version of JavaString should obtain string from JNI in UTF-16 encoding
https://bugs.webkit.org/show_bug.cgi?id=55566

We obtain the string from JNI in UTF-16 encoding and convert
to UTF-8 using our own routines as required. This matches the
behaviour of the JSC version of JavaString.

No new tests, no change in behaviour.

  • bridge/jni/v8/JavaStringV8.h: (JSC::Bindings::JavaStringImpl::init): (JSC::Bindings::JavaStringImpl::utf8): (JSC::Bindings::JavaStringImpl::impl):
Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r80338 r80339  
     12011-03-04  Steve Block  <steveblock@google.com>
     2
     3        Reviewed by Jeremy Orlow.
     4
     5        V8 version of JavaString should obtain string from JNI in UTF-16 encoding
     6        https://bugs.webkit.org/show_bug.cgi?id=55566
     7
     8        We obtain the string from JNI in UTF-16 encoding and convert
     9        to UTF-8 using our own routines as required. This matches the
     10        behaviour of the JSC version of JavaString.
     11
     12        No new tests, no change in behaviour.
     13
     14        * bridge/jni/v8/JavaStringV8.h:
     15        (JSC::Bindings::JavaStringImpl::init):
     16        (JSC::Bindings::JavaStringImpl::utf8):
     17        (JSC::Bindings::JavaStringImpl::impl):
     18
    1192011-03-03  Pavel Feldman  <pfeldman@chromium.org>
    220
  • trunk/Source/WebCore/bridge/jni/v8/JavaStringV8.h

    r80222 r80339  
    2929#include "JNIUtility.h"
    3030
    31 #include <wtf/Assertions.h>
    3231#include <wtf/text/CString.h>
    33 
    34 namespace WTF {
    35 class StringImpl;
    36 }
     32#include <wtf/text/WTFString.h>
    3733
    3834
     
    4541    void init() {}
    4642
    47     void init(JNIEnv* e, jstring s)
     43    void init(JNIEnv* env, jstring string)
    4844    {
    49         int size = e->GetStringLength(s);
    50         const char* cs = getCharactersFromJStringInEnv(e, s);
    51         m_utf8String = WTF::CString(cs, size);
    52         releaseCharactersForJStringInEnv(e, s, cs);
     45        int size = env->GetStringLength(string);
     46        const jchar* jChars = getUCharactersFromJStringInEnv(env, string);
     47        m_impl = StringImpl::create(jChars, size);
     48        releaseUCharactersForJStringInEnv(env, string, jChars);
    5349    }
    5450
    55     const char* utf8() const { return m_utf8String.data(); }
     51    const char* utf8() const
     52    {
     53        if (!m_utf8String.data())
     54            m_utf8String = String(m_impl).utf8();
     55        return m_utf8String.data();
     56    }
    5657    int length() const { return m_utf8String.length(); }
    57     StringImpl* impl() const { ASSERT_NOT_REACHED(); return 0; }
     58    StringImpl* impl() const { return m_impl.get(); }
    5859
    5960private:
    60     WTF::CString m_utf8String;
     61    RefPtr<StringImpl> m_impl;
     62    mutable CString m_utf8String;
    6163};
    6264
Note: See TracChangeset for help on using the changeset viewer.