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); }
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; }
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); }
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); }
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; }
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); }
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); }