summaryrefslogtreecommitdiffstats
path: root/WebKit/android
diff options
context:
space:
mode:
Diffstat (limited to 'WebKit/android')
-rw-r--r--WebKit/android/jni/WebViewCore.cpp39
-rw-r--r--WebKit/android/jni/WebViewCore.h5
2 files changed, 39 insertions, 5 deletions
diff --git a/WebKit/android/jni/WebViewCore.cpp b/WebKit/android/jni/WebViewCore.cpp
index 0578081..7874598 100644
--- a/WebKit/android/jni/WebViewCore.cpp
+++ b/WebKit/android/jni/WebViewCore.cpp
@@ -1182,14 +1182,25 @@ void WebViewCore::dumpNavTree()
#endif
}
-WebCore::String WebViewCore::retrieveHref(WebCore::Frame* frame, WebCore::Node* node)
+WebCore::HTMLAnchorElement* WebViewCore::retrieveAnchorElement(WebCore::Frame* frame, WebCore::Node* node)
{
if (!CacheBuilder::validNode(m_mainFrame, frame, node))
- return WebCore::String();
+ return 0;
if (!node->hasTagName(WebCore::HTMLNames::aTag))
- return WebCore::String();
- WebCore::HTMLAnchorElement* anchor = static_cast<WebCore::HTMLAnchorElement*>(node);
- return anchor->href();
+ return 0;
+ return static_cast<WebCore::HTMLAnchorElement*>(node);
+}
+
+WebCore::String WebViewCore::retrieveHref(WebCore::Frame* frame, WebCore::Node* node)
+{
+ WebCore::HTMLAnchorElement* anchor = retrieveAnchorElement(frame, node);
+ return anchor ? anchor->href() : WebCore::String();
+}
+
+WebCore::String WebViewCore::retrieveAnchorText(WebCore::Frame* frame, WebCore::Node* node)
+{
+ WebCore::HTMLAnchorElement* anchor = retrieveAnchorElement(frame, node);
+ return anchor ? anchor->text() : WebCore::String();
}
void WebViewCore::updateCacheOnNodeChange()
@@ -2796,6 +2807,22 @@ static jstring RetrieveHref(JNIEnv *env, jobject obj, jint frame,
return 0;
}
+static jstring RetrieveAnchorText(JNIEnv *env, jobject obj, jint frame,
+ jint node)
+{
+#ifdef ANDROID_INSTRUMENT
+ TimeCounterAuto counter(TimeCounter::WebViewCoreTimeCounter);
+#endif
+ WebViewCore* viewImpl = GET_NATIVE_VIEW(env, obj);
+ LOG_ASSERT(viewImpl, "viewImpl not set in %s", __FUNCTION__);
+ WebCore::String result = viewImpl->retrieveAnchorText((WebCore::Frame*) frame,
+ (WebCore::Node*) node);
+ if (!result.isEmpty())
+ return WebCoreStringToJString(env, result);
+ return 0;
+}
+
+
static void MoveMouse(JNIEnv *env, jobject obj, jint frame,
jint x, jint y)
{
@@ -3124,6 +3151,8 @@ static JNINativeMethod gJavaWebViewCoreMethods[] = {
(void*) TouchUp },
{ "nativeRetrieveHref", "(II)Ljava/lang/String;",
(void*) RetrieveHref },
+ { "nativeRetrieveAnchorText", "(II)Ljava/lang/String;",
+ (void*) RetrieveAnchorText },
{ "nativeUpdateFrameCache", "()V",
(void*) UpdateFrameCache },
{ "nativeGetContentMinPrefWidth", "()I",
diff --git a/WebKit/android/jni/WebViewCore.h b/WebKit/android/jni/WebViewCore.h
index 9702d3e..1ff5678 100644
--- a/WebKit/android/jni/WebViewCore.h
+++ b/WebKit/android/jni/WebViewCore.h
@@ -46,6 +46,7 @@ namespace WebCore {
class AtomicString;
class Color;
class FrameView;
+ class HTMLAnchorElement;
class HTMLSelectElement;
class RenderPart;
class RenderText;
@@ -237,7 +238,9 @@ namespace android {
// Followings support calls from Java to native WebCore
//
+
WebCore::String retrieveHref(WebCore::Frame* frame, WebCore::Node* node);
+ WebCore::String retrieveAnchorText(WebCore::Frame* frame, WebCore::Node* node);
WebCore::String getSelection(SkRegion* );
@@ -500,6 +503,8 @@ namespace android {
void rebuildPictureSet(PictureSet* );
void sendNotifyProgressFinished();
bool handleMouseClick(WebCore::Frame* framePtr, WebCore::Node* nodePtr);
+ WebCore::HTMLAnchorElement* retrieveAnchorElement(WebCore::Frame* frame, WebCore::Node* node);
+
#if DEBUG_NAV_UI
uint32_t m_now;
#endif