#endif
}
-WebCore::HTMLAnchorElement* WebViewCore::retrieveAnchorElement(int x, int y)
+HTMLElement* WebViewCore::retrieveElement(int x, int y,
+ const QualifiedName& tagName)
{
HitTestResult hitTestResult = m_mainFrame->eventHandler()
->hitTestResultAtPoint(IntPoint(x, y), false, false,
}
Node* node = hitTestResult.innerNode();
Node* element = node;
- while (element && !element->isElementNode())
+ while (element && (!element->isElementNode()
+ || !element->hasTagName(tagName))) {
element = element->parentNode();
+ }
DBG_NAV_LOGD("node=%p element=%p x=%d y=%d nodeName=%s tagName=%s", node,
element, x, y, node->nodeName().utf8().data(),
- ((Element*) element)->tagName().utf8().data());
- if (!element->hasTagName(WebCore::HTMLNames::aTag))
- return 0;
- return static_cast<WebCore::HTMLAnchorElement*>(element);
+ element ? ((Element*) element)->tagName().utf8().data() : "<none>");
+ return static_cast<WebCore::HTMLElement*>(element);
+}
+
+HTMLAnchorElement* WebViewCore::retrieveAnchorElement(int x, int y)
+{
+ return static_cast<HTMLAnchorElement*>
+ (retrieveElement(x, y, HTMLNames::aTag));
+}
+
+HTMLImageElement* WebViewCore::retrieveImageElement(int x, int y)
+{
+ return static_cast<HTMLImageElement*>
+ (retrieveElement(x, y, HTMLNames::imgTag));
}
WTF::String WebViewCore::retrieveHref(int x, int y)
return anchor ? anchor->text() : WTF::String();
}
+WTF::String WebViewCore::retrieveImageSource(int x, int y)
+{
+ HTMLImageElement* image = retrieveImageElement(x, y);
+ return image ? image->src().string() : WTF::String();
+}
+
WTF::String WebViewCore::requestLabel(WebCore::Frame* frame,
WebCore::Node* node)
{
return 0;
}
+static jstring RetrieveImageSource(JNIEnv *env, jobject obj, jint x, jint y)
+{
+ WTF::String result = GET_NATIVE_VIEW(env, obj)->retrieveImageSource(x, y);
+ return !result.isEmpty() ? WtfStringToJstring(env, result) : 0;
+}
static void MoveFocus(JNIEnv *env, jobject obj, jint framePtr, jint nodePtr)
{
(void*) RetrieveHref },
{ "nativeRetrieveAnchorText", "(II)Ljava/lang/String;",
(void*) RetrieveAnchorText },
+ { "nativeRetrieveImageSource", "(II)Ljava/lang/String;",
+ (void*) RetrieveImageSource },
{ "nativeUpdateFrameCache", "()V",
(void*) UpdateFrameCache },
{ "nativeGetContentMinPrefWidth", "()I",
class Color;
class FrameView;
class HTMLAnchorElement;
+ class HTMLElement;
+ class HTMLImageElement;
class HTMLSelectElement;
class RenderPart;
class RenderText;
class Node;
class PlatformKeyboardEvent;
+ class QualifiedName;
class RenderTextControl;
class ScrollView;
class TimerBase;
// Followings support calls from Java to native WebCore
//
-
WTF::String retrieveHref(int x, int y);
WTF::String retrieveAnchorText(int x, int y);
+ WTF::String retrieveImageSource(int x, int y);
WTF::String requestLabel(WebCore::Frame* , WebCore::Node* );
// If the focus is a textfield (<input>), textarea, or contentEditable,
void sendNotifyProgressFinished();
bool handleMouseClick(WebCore::Frame* framePtr, WebCore::Node* nodePtr);
WebCore::HTMLAnchorElement* retrieveAnchorElement(int x, int y);
+ WebCore::HTMLElement* retrieveElement(int x, int y,
+ const WebCore::QualifiedName& );
+ WebCore::HTMLImageElement* retrieveImageElement(int x, int y);
// below are members responsible for accessibility support
String modifySelectionTextNavigationAxis(DOMSelection* selection, int direction, int granularity);
String modifySelectionDomNavigationAxis(DOMSelection* selection, int direction, int granularity);