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_ProxyJavaClassAudio); if (!clazz) return; FrameView* frameView = m_player->mediaPlayerClient()->mediaPlayerOwningDocument()->view(); if (!frameView) return; AutoJObject javaObject = WebViewCore::getWebViewCore(frameView)->getJavaObject(); if (!javaObject.get()) return; jobject obj = 0; // Get the HTML5Audio instance obj = env->NewObject(clazz, m_glue->m_newInstance, javaObject.get(), this); m_glue->m_javaProxy = env->NewGlobalRef(obj); // Clean up. if (obj) env->DeleteLocalRef(obj); env->DeleteLocalRef(clazz); checkException(env); }
void JavaBridge::setSharedTimer(long long timemillis) { JNIEnv* env = JSC::Bindings::getJNIEnv(); AutoJObject obj = getRealObject(env, mJavaObject); env->CallVoidMethod(obj.get(), mSetSharedTimer, timemillis); }
void WebHistory::AddItem(const AutoJObject& list, WebCore::HistoryItem* item) { LOG_ASSERT(item, "newItem must take a valid HistoryItem!"); // Item already added. Should only happen when we are inflating the list. if (item->bridge() || !list.get()) return; JNIEnv* env = list.env(); // Allocate a blank WebHistoryItem jclass clazz = env->FindClass("android/webkit/WebHistoryItem"); jobject newItem = env->NewObject(clazz, gWebHistoryItem.mInit); // Create the bridge, make it active, and attach it to the item. WebHistoryItem* bridge = new WebHistoryItem(env, newItem, item); bridge->setActive(); item->setBridge(bridge); // Update the history item which will flatten the data and call update on // the java item. bridge->updateHistoryItem(item); // Add it to the list. env->CallVoidMethod(list.get(), gWebBackForwardList.mAddHistoryItem, newItem); // Delete our local reference. env->DeleteLocalRef(newItem); }
void JavaBridge::stopSharedTimer() { JNIEnv* env = JSC::Bindings::getJNIEnv(); AutoJObject obj = getRealObject(env, mJavaObject); env->CallVoidMethod(obj.get(), mStopSharedTimer); }
bool JavaBridge::cookiesEnabled() { JNIEnv* env = JSC::Bindings::getJNIEnv(); AutoJObject obj = getRealObject(env, mJavaObject); jboolean ret = env->CallBooleanMethod(obj.get(), mCookiesEnabled); return (ret != 0); }
void JavaBridge::setSharedTimer(long long timemillis) { JNIEnv* env = JSC::Bindings::getJNIEnv(); AutoJObject obj = javaObject(env); if (!obj.get()) return; env->CallVoidMethod(obj.get(), mSetSharedTimer, timemillis); }
void JavaBridge::signalServiceFuncPtrQueue() { // In order to signal the main thread we must go through JNI. This // is the only usage on most threads, so we need to ensure a JNI // environment is setup. JNIEnv* env = JSC::Bindings::getJNIEnv(); AutoJObject obj = getRealObject(env, mJavaObject); env->CallVoidMethod(obj.get(), mSignalFuncPtrQueue); }
void JavaBridge::stopSharedTimer() { JNIEnv* env = JSC::Bindings::getJNIEnv(); AutoJObject obj = javaObject(env); if (!obj.get()) return; env->CallVoidMethod(obj.get(), mStopSharedTimer); }
bool JavaBridge::cookiesEnabled() { JNIEnv* env = JSC::Bindings::getJNIEnv(); AutoJObject obj = javaObject(env); if (!obj.get()) return false; jboolean ret = env->CallBooleanMethod(obj.get(), mCookiesEnabled); return (ret != 0); }
WebCore::String JavaBridge::getPluginSharedDataDirectory() { JNIEnv* env = JSC::Bindings::getJNIEnv(); AutoJObject obj = getRealObject(env, mJavaObject); jstring ret = (jstring)env->CallObjectMethod(obj.get(), mGetPluginSharedDataDirectory); WebCore::String path = to_string(env, ret); checkException(env); return path; }
WTF::String JavaBridge::getPluginSharedDataDirectory() { JNIEnv* env = JSC::Bindings::getJNIEnv(); AutoJObject obj = javaObject(env); if (!obj.get()) return String(); jstring ret = (jstring)env->CallObjectMethod(obj.get(), mGetPluginSharedDataDirectory); WTF::String path = jstringToWtfString(env, ret); checkException(env); return path; }
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 JavaBridge::setCookies(WebCore::KURL const& url, WebCore::String const& value) { JNIEnv* env = JSC::Bindings::getJNIEnv(); const WebCore::String& urlStr = url.string(); jstring jUrlStr = env->NewString(urlStr.characters(), urlStr.length()); jstring jValueStr = env->NewString(value.characters(), value.length()); AutoJObject obj = getRealObject(env, mJavaObject); env->CallVoidMethod(obj.get(), mSetCookies, jUrlStr, jValueStr); env->DeleteLocalRef(jUrlStr); env->DeleteLocalRef(jValueStr); }
WebCore::String JavaBridge::cookies(WebCore::KURL const& url) { JNIEnv* env = JSC::Bindings::getJNIEnv(); const WebCore::String& urlStr = url.string(); jstring jUrlStr = env->NewString(urlStr.characters(), urlStr.length()); AutoJObject obj = getRealObject(env, mJavaObject); jstring string = (jstring)(env->CallObjectMethod(obj.get(), mCookies, jUrlStr)); WebCore::String ret = to_string(env, string); env->DeleteLocalRef(jUrlStr); env->DeleteLocalRef(string); return ret; }
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); }
void JavaBridge::setCookies(WebCore::KURL const& url, WTF::String const& value) { JNIEnv* env = JSC::Bindings::getJNIEnv(); AutoJObject obj = javaObject(env); if (!obj.get()) return; const WTF::String& urlStr = url.string(); jstring jUrlStr = wtfStringToJstring(env, urlStr); jstring jValueStr = wtfStringToJstring(env, value); env->CallVoidMethod(obj.get(), mSetCookies, jUrlStr, jValueStr); env->DeleteLocalRef(jUrlStr); env->DeleteLocalRef(jValueStr); }
WTF::Vector<WebCore::String>JavaBridge::getSupportedKeyStrengthList() { WTF::Vector<WebCore::String> list; JNIEnv* env = JSC::Bindings::getJNIEnv(); AutoJObject obj = getRealObject(env, mJavaObject); jobjectArray array = (jobjectArray) env->CallObjectMethod(obj.get(), mGetKeyStrengthList); int count = env->GetArrayLength(array); for (int i = 0; i < count; ++i) { jstring keyStrength = (jstring) env->GetObjectArrayElement(array, i); list.append(to_string(env, keyStrength)); env->DeleteLocalRef(keyStrength); } env->DeleteLocalRef(array); checkException(env); return list; }
WebCore::String JavaBridge::getSignedPublicKeyAndChallengeString(unsigned index, const WebCore::String& challenge, const WebCore::KURL& url) { JNIEnv* env = JSC::Bindings::getJNIEnv(); jstring jChallenge = env->NewString(challenge.characters(), challenge.length()); const WebCore::String& urlStr = url.string(); jstring jUrl = env->NewString(urlStr.characters(), urlStr.length()); AutoJObject obj = getRealObject(env, mJavaObject); jstring key = (jstring) env->CallObjectMethod(obj.get(), mGetSignedPublicKey, index, jChallenge, jUrl); WebCore::String ret = to_string(env, key); env->DeleteLocalRef(jChallenge); env->DeleteLocalRef(jUrl); env->DeleteLocalRef(key); return ret; }
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::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; }
WTF::Vector<WebCore::String> JavaBridge::getPluginDirectories() { WTF::Vector<WebCore::String> directories; JNIEnv* env = JSC::Bindings::getJNIEnv(); AutoJObject obj = getRealObject(env, mJavaObject); jobjectArray array = (jobjectArray) env->CallObjectMethod(obj.get(), mGetPluginDirectories); int count = env->GetArrayLength(array); for (int i = 0; i < count; i++) { jstring dir = (jstring) env->GetObjectArrayElement(array, i); directories.append(to_string(env, dir)); env->DeleteLocalRef(dir); } env->DeleteLocalRef(array); checkException(env); return directories; }
bool PluginWidgetAndroid::setDrawingModel(ANPDrawingModel model) { if (model == kOpenGL_ANPDrawingModel && m_layer == 0) { jobject webview = m_core->getWebViewJavaObject(); AutoJObject webViewCore = m_core->getJavaObject(); m_layer = new WebCore::MediaLayer(webview, webViewCore.get()); } else if (model != kOpenGL_ANPDrawingModel && m_layer != 0) { m_layer->unref(); m_layer = 0; } if (m_drawingModel != model) { // Trigger layer computation in RenderLayerCompositor m_pluginView->getElement()->setNeedsStyleRecalc(SyntheticStyleChange); } m_drawingModel = model; return true; }
void WebHistory::UpdateHistoryIndex(const AutoJObject& list, int newIndex) { if (list.get()) list.env()->CallVoidMethod(list.get(), gWebBackForwardList.mSetCurrentIndex, newIndex); }
void WebHistory::RemoveItem(const AutoJObject& list, int index) { if (list.get()) list.env()->CallVoidMethod(list.get(), gWebBackForwardList.mRemoveHistoryItem, index); }
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 WebCore::String& urlString = item->urlString(); jstring urlStr = NULL; if (!urlString.isNull()) urlStr = env->NewString((unsigned short*)urlString.characters(), urlString.length()); const WebCore::String& originalUrlString = item->originalURLString(); jstring originalUrlStr = NULL; if (!originalUrlString.isNull()) { originalUrlStr = env->NewString( (unsigned short*) originalUrlString.characters(), originalUrlString.length()); } const WebCore::String& titleString = item->title(); jstring titleStr = NULL; if (!titleString.isNull()) titleStr = env->NewString((unsigned short*)titleString.characters(), titleString.length()); // 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; WebCore::String url = item->urlString(); if (item->url().hasFragmentIdentifier()) { int refIndex = url.reverseFind('#'); url = url.substring(0, refIndex); } WebCore::Image* icon = WebCore::iconDatabase()->iconForPageURL(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); }