static jobject WebHistoryGetOriginalUrl(JNIEnv* env, jobject obj, jint ptr)
{
    if (!ptr)
        return 0;
    WebHistoryItem* item = reinterpret_cast<WebHistoryItem*>(ptr);
    MutexLocker locker(item->m_lock);
    return wtfStringToJstring(env, item->m_originalUrl, false);
}
Beispiel #2
0
WTF::String JavaBridge::getSignedPublicKeyAndChallengeString(unsigned index,
        const WTF::String& challenge, const WebCore::KURL& url) {
    JNIEnv* env = JSC::Bindings::getJNIEnv();
    AutoJObject obj = javaObject(env);
    if (!obj.get())
        return String();
    jstring jChallenge = wtfStringToJstring(env, challenge);
    const WTF::String& urlStr = url.string();
    jstring jUrl = wtfStringToJstring(env, urlStr);
    jstring key = (jstring) env->CallObjectMethod(obj.get(),
                  mGetSignedPublicKey, index, jChallenge, jUrl);
    WTF::String ret = jstringToWtfString(env, key);
    env->DeleteLocalRef(jChallenge);
    env->DeleteLocalRef(jUrl);
    env->DeleteLocalRef(key);
    return ret;
}
Beispiel #3
0
WTF::String JavaBridge::resolveFilePathForContentUri(const WTF::String& uri) {
    JNIEnv* env = JSC::Bindings::getJNIEnv();
    AutoJObject obj = javaObject(env);
    if (!obj.get())
        return String();
    jstring jUri = wtfStringToJstring(env, uri);
    jstring path = static_cast<jstring>(env->CallObjectMethod(obj.get(), mResolveFilePathForContentUri, jUri));
    WTF::String ret = jstringToWtfString(env, path);
    env->DeleteLocalRef(jUri);
    env->DeleteLocalRef(path);
    return ret;
}
    void setPoster(const String& url)
    {
        if (m_posterUrl == url)
            return;

        m_posterUrl = url;
        JNIEnv* env = JSC::Bindings::getJNIEnv();
        if (!env || !m_glue->m_javaProxy || !m_posterUrl.length())
            return;
        // Send the poster
        jstring jUrl = wtfStringToJstring(env, m_posterUrl);
        env->CallVoidMethod(m_glue->m_javaProxy, m_glue->m_loadPoster, jUrl);
        env->DeleteLocalRef(jUrl);
    }
    void enterFullscreenMode()
    {
        JNIEnv* env = JSC::Bindings::getJNIEnv();
        if (!env || !m_url.length() || !m_glue->m_javaProxy)
            return;

        jstring jUrl = wtfStringToJstring(env, m_url);
        env->CallVoidMethod(m_glue->m_javaProxy,
                            m_glue->m_enterFullscreenForVideoLayer, jUrl,
                            m_videoLayer->uniqueId());
        env->DeleteLocalRef(jUrl);

        checkException(env);
    }
Beispiel #6
0
    void createJavaPlayerIfNeeded()
    {
        // Check if we have been already created.
        if (m_glue->m_javaProxy)
            return;

        JNIEnv* env = JSC::Bindings::getJNIEnv();
        if (!env)
            return;

        jclass clazz = env->FindClass(g_ProxyJavaClass);

        if (!clazz)
            return;

        jobject obj = 0;

        FrameView* frameView = m_player->frameView();

        //CAPPFIX_WEB_HTML5FULLVIDEO_LINKAGE_TO_STREAMING_PLAYER_JB_PLUS_FIX2
        if (!frameView && m_player->mediaPlayerClient()->mediaPlayerOwningDocument()->webkitIsFullScreen()) {
            frameView = m_player->mediaPlayerClient()->mediaPlayerOwningDocument()->view();
        }
        //CAPPFIX_WEB_HTML5FULLVIDEO_LINKAGE_TO_STREAMING_PLAYER_JB_PLUS_FIX2_END

        if (!frameView)
            return;
        AutoJObject javaObject = WebViewCore::getWebViewCore(frameView)->getJavaObject();
        if (!javaObject.get())
            return;

        // Get the HTML5VideoViewProxy instance
        obj = env->CallStaticObjectMethod(clazz, m_glue->m_getInstance, javaObject.get(), this);
        m_glue->m_javaProxy = env->NewGlobalRef(obj);
        // Send the poster
        jstring jUrl = 0;
        if (m_posterUrl.length())
            jUrl = wtfStringToJstring(env, m_posterUrl);
        // Sending a NULL jUrl allows the Java side to try to load the default poster.
        env->CallVoidMethod(m_glue->m_javaProxy, m_glue->m_loadPoster, jUrl);
        if (jUrl)
            env->DeleteLocalRef(jUrl);

        // Clean up.
        env->DeleteLocalRef(obj);
        env->DeleteLocalRef(clazz);
        checkException(env);
    }
Beispiel #7
0
WTF::String
JavaBridge::cookies(WebCore::KURL const& url)
{
    JNIEnv* env = JSC::Bindings::getJNIEnv();
    AutoJObject obj = javaObject(env);
    if (!obj.get())
        return String();

    const WTF::String& urlStr = url.string();
    jstring jUrlStr = wtfStringToJstring(env, urlStr);
    jstring string = (jstring)(env->CallObjectMethod(obj.get(), mCookies, jUrlStr));
    
    WTF::String ret = jstringToWtfString(env, string);
    env->DeleteLocalRef(jUrlStr);
    env->DeleteLocalRef(string);
    return ret;
}
    void load(const String& url)
    {
        m_url = url;
        JNIEnv* env = JSC::Bindings::getJNIEnv();
        if (!env || !m_url.length())
            return;

        createJavaPlayerIfNeeded();

        if (!m_glue->m_javaProxy)
            return;

        jstring jUrl = wtfStringToJstring(env, m_url);
        // start loading the data asynchronously
        env->CallVoidMethod(m_glue->m_javaProxy, m_glue->m_setDataSource, jUrl);
        env->DeleteLocalRef(jUrl);
        checkException(env);
    }
//SISO_HTMLCOMPOSER begin
String MIMETypeRegistry::getPreferredExtensionForMIMEType(const String& mimeType)
{
    JNIEnv* env = JSC::Bindings::getJNIEnv();
    jclass mimeClass = env->FindClass("android/webkit/MimeTypeMap");
    LOG_ASSERT(mimeClass, "Could not find class MimeTypeMap");
    jmethodID extensionFromMimeType = env->GetStaticMethodID(mimeClass,
            "extensionFromMimeType",
            "(Ljava/lang/String;)Ljava/lang/String;");
    LOG_ASSERT(extensionFromMimeType,
            "Could not find method extensionFrommimeType");
    jstring mimeString = wtfStringToJstring(env , mimeType);
    jobject extString = env->CallStaticObjectMethod(mimeClass,
            extensionFromMimeType, mimeString);
    String result = android::jstringToWtfString(env, (jstring) extString);
    env->DeleteLocalRef(mimeClass);
    env->DeleteLocalRef(mimeString);
    env->DeleteLocalRef(extString);
    return result;
}
    void play()
    {
        JNIEnv* env = JSC::Bindings::getJNIEnv();
        if (!env || !m_url.length() || !m_glue->m_javaProxy)
            return;

        m_paused = false;
        m_player->playbackStateChanged();

        if (m_currentTime == duration())
            m_currentTime = 0;

        jstring jUrl = wtfStringToJstring(env, m_url);
        env->CallVoidMethod(m_glue->m_javaProxy, m_glue->m_play, jUrl,
                            static_cast<jint>(m_currentTime * 1000.0f),
                            m_videoLayer->uniqueId());
        env->DeleteLocalRef(jUrl);

        checkException(env);
    }
String MIMETypeRegistry::getMIMETypeForExtension(const String& ext)
{
    ASSERT(isMainThread());
    JNIEnv* env = JSC::Bindings::getJNIEnv();
    jclass mimeClass = env->FindClass("android/webkit/MimeTypeMap");
    LOG_ASSERT(mimeClass, "Could not find class MimeTypeMap");
    jmethodID mimeTypeFromExtension = env->GetStaticMethodID(mimeClass,
            "mimeTypeFromExtension",
            "(Ljava/lang/String;)Ljava/lang/String;");
    LOG_ASSERT(mimeTypeFromExtension,
            "Could not find method mimeTypeFromExtension");
    jstring extString = wtfStringToJstring(env, ext);
    jobject mimeType = env->CallStaticObjectMethod(mimeClass,
            mimeTypeFromExtension, extString);
    String result = android::jstringToWtfString(env, (jstring) mimeType);
    env->DeleteLocalRef(mimeClass);
    env->DeleteLocalRef(extString);
    env->DeleteLocalRef(mimeType);
    return result;
}
Beispiel #12
0
    void enterFullscreenMode()
    {
        JNIEnv* env = JSC::Bindings::getJNIEnv();

        //CAPPFIX_WEB_HTML5FULLVIDEO_LINKAGE_TO_STREAMING_PLAYER_JB_PLUS_FIX2
        createJavaPlayerIfNeeded();

        if (!env || !m_url.length() || !m_glue->m_javaProxy){
            //CAPPFIX_WEB_HTML5FULLVIDEO_LINKAGE_TO_STREAMING_PLAYER_JB_PLUS_FIX2
            //CAPPFIX_WEB_HTML5FULLVIDEO_LINKAGE_TO_STREAMING_PLAYER_JB_PLUS_FIX1
            //m_should_enterFullscreen = true;
            return;
        }

        jstring jUrl = wtfStringToJstring(env, m_url);
        env->CallVoidMethod(m_glue->m_javaProxy,
                            m_glue->m_enterFullscreenForVideoLayer, jUrl,
                            m_videoLayer->uniqueId());
        env->DeleteLocalRef(jUrl);

        checkException(env);
    }
Beispiel #13
0
void WebHistoryItem::updateHistoryItem(WebCore::HistoryItem* item) {
    // Do not want to update during inflation.
    if (!m_active)
        return;
    WebHistoryItem* webItem = this;
    // Now we need to update the top-most WebHistoryItem based on the top-most
    // HistoryItem.
    if (m_parent) {
        webItem = m_parent.get();
        if (webItem->hasOneRef()) {
            // if the parent only has one ref, it is from this WebHistoryItem.
            // This means that the matching WebCore::HistoryItem has been freed.
            // This can happen during clear().
            LOGW("Can't updateHistoryItem as the top HistoryItem is gone");
            return;
        }
        while (webItem->parent())
            webItem = webItem->parent();
        item = webItem->historyItem();
        if (!item) {
            // If a HistoryItem only exists for page cache, it is possible that
            // the parent HistoryItem destroyed before the child HistoryItem. If
            // it happens, skip updating.
            LOGW("Can't updateHistoryItem as the top HistoryItem is gone");
            return;
        }
    }
    JNIEnv* env = JSC::Bindings::getJNIEnv();
    if (!env)
        return;

    // Don't do anything if the item has been gc'd already
    AutoJObject realItem = getRealObject(env, webItem->m_object);
    if (!realItem.get())
        return;

    const WTF::String urlString = WebFrame::convertIDNToUnicode(item->url());
    jstring urlStr = NULL;
    if (!urlString.isNull())
        urlStr = wtfStringToJstring(env, urlString);
    const WTF::String originalUrlString = WebFrame::convertIDNToUnicode(item->originalURL());
    jstring originalUrlStr = NULL;
    if (!originalUrlString.isNull())
        originalUrlStr = wtfStringToJstring(env, originalUrlString);
    const WTF::String& titleString = item->title();
    jstring titleStr = NULL;
    if (!titleString.isNull())
        titleStr = wtfStringToJstring(env, titleString);

    // Try to get the favicon from the history item. For some pages like Grand
    // Prix, there are history items with anchors. If the icon fails for the
    // item, try to get the icon using the url without the ref.
    jobject favicon = NULL;
    WTF::String url = item->urlString();
    if (item->url().hasFragmentIdentifier()) {
        int refIndex = url.reverseFind('#');
        url = url.substring(0, refIndex);
    }
    // FIXME: This method should not be used from outside WebCore and will be removed.
    // http://trac.webkit.org/changeset/81484
    WebCore::Image* icon = WebCore::iconDatabase().synchronousIconForPageURL(url, WebCore::IntSize(16, 16));

    if (icon)
        favicon = webcoreImageToJavaBitmap(env, icon);

    WTF::Vector<char> data;
    jbyteArray array = WebHistory::Flatten(env, data, item);
    env->CallVoidMethod(realItem.get(), gWebHistoryItem.mUpdate, urlStr,
            originalUrlStr, titleStr, favicon, array);
    env->DeleteLocalRef(urlStr);
    env->DeleteLocalRef(originalUrlStr);
    env->DeleteLocalRef(titleStr);
    if (favicon)
        env->DeleteLocalRef(favicon);
    env->DeleteLocalRef(array);
}