summaryrefslogtreecommitdiffstats
path: root/WebKit/android
diff options
context:
space:
mode:
Diffstat (limited to 'WebKit/android')
-rw-r--r--WebKit/android/RenderSkinCombo.cpp8
-rw-r--r--WebKit/android/RenderSkinRadio.cpp17
-rw-r--r--WebKit/android/WebCoreSupport/FrameLoaderClientAndroid.cpp16
-rw-r--r--WebKit/android/WebCoreSupport/FrameLoaderClientAndroid.h7
-rw-r--r--WebKit/android/WebCoreSupport/InspectorClientAndroid.h1
-rw-r--r--WebKit/android/jni/JavaBridge.cpp7
-rw-r--r--WebKit/android/jni/WebHistory.cpp1
-rw-r--r--WebKit/android/jni/WebSettings.cpp4
-rw-r--r--WebKit/android/jni/WebViewCore.cpp8
-rw-r--r--WebKit/android/nav/CacheBuilder.cpp147
-rw-r--r--WebKit/android/nav/CacheBuilder.h4
11 files changed, 131 insertions, 89 deletions
diff --git a/WebKit/android/RenderSkinCombo.cpp b/WebKit/android/RenderSkinCombo.cpp
index 902f2c0..a336257 100644
--- a/WebKit/android/RenderSkinCombo.cpp
+++ b/WebKit/android/RenderSkinCombo.cpp
@@ -27,6 +27,7 @@
#include "RenderSkinCombo.h"
#include "Document.h"
+#include "FormControlElement.h"
#include "Node.h"
#include "SkCanvas.h"
#include "SkNinePatch.h"
@@ -58,7 +59,12 @@ bool RenderSkinCombo::Draw(SkCanvas* canvas, Node* element, int x, int y, int wi
{
if (!s_decoded)
return true;
- State state = element && element->isEnabled() ? kNormal : kDisabled;
+ bool enabled = false;
+ if (FormControlElement* controlElement = toFormControlElement(static_cast<Element*>(element))) {
+ enabled = controlElement->isEnabled();
+ }
+
+ State state = enabled ? kNormal : kDisabled;
if (height < (s_margin<<1) + 1) {
height = (s_margin<<1) + 1;
}
diff --git a/WebKit/android/RenderSkinRadio.cpp b/WebKit/android/RenderSkinRadio.cpp
index 2fca175..7b55567 100644
--- a/WebKit/android/RenderSkinRadio.cpp
+++ b/WebKit/android/RenderSkinRadio.cpp
@@ -28,6 +28,8 @@
#include "android_graphics.h"
#include "Document.h"
+#include "FormControlElement.h"
+#include "InputElement.h"
#include "IntRect.h"
#include "Node.h"
#include "RenderSkinAndroid.h"
@@ -64,7 +66,13 @@ void RenderSkinRadio::Draw(SkCanvas* canvas, Node* element, const IntRect& ir,
android_setrect(&r, ir);
int saveLayerCount = 0;
int saveScaleCount = 0;
- if (!element->isEnabled()) {
+
+ bool enabled = false;
+ if (FormControlElement* control = toFormControlElement(static_cast<Element*>(element))) {
+ enabled = control->isEnabled();
+ }
+
+ if (!enabled) {
saveLayerCount = canvas->saveLayerAlpha(&r, 0x80);
}
SkScalar width = r.width();
@@ -72,7 +80,12 @@ void RenderSkinRadio::Draw(SkCanvas* canvas, Node* element, const IntRect& ir,
SkScalar scale = SkScalarDiv(width, SIZE);
saveScaleCount = canvas->scale(scale, scale);
}
- canvas->drawBitmap(s_bitmap[element->isChecked() + 2*(!isCheckBox)],
+ bool checked = false;
+ if (InputElement* inputElement = toInputElement(static_cast<Element*>(element))) {
+ checked = inputElement->isChecked();
+ }
+
+ canvas->drawBitmap(s_bitmap[checked + 2*(!isCheckBox)],
r.fLeft, r.fTop, NULL);
if (saveLayerCount != 0) {
canvas->restoreToCount(saveLayerCount);
diff --git a/WebKit/android/WebCoreSupport/FrameLoaderClientAndroid.cpp b/WebKit/android/WebCoreSupport/FrameLoaderClientAndroid.cpp
index a99fedd..3e821cc 100644
--- a/WebKit/android/WebCoreSupport/FrameLoaderClientAndroid.cpp
+++ b/WebKit/android/WebCoreSupport/FrameLoaderClientAndroid.cpp
@@ -37,6 +37,7 @@
// HTMLFormElement needed for a bad include
#include "HTMLFormElement.h"
#include "HTMLFrameOwnerElement.h"
+#include "HTMLPlugInElement.h"
#include "IconDatabase.h"
#include "MIMETypeRegistry.h"
#include "NotImplemented.h"
@@ -110,7 +111,7 @@ void FrameLoaderClientAndroid::makeRepresentation(DocumentLoader*) {
void FrameLoaderClientAndroid::forceLayout() {
ASSERT(m_frame);
- m_frame->forceLayout();
+ m_frame->view()->forceLayout();
// FIXME, should we adjust view size here?
m_frame->view()->adjustViewSize();
}
@@ -572,7 +573,7 @@ void FrameLoaderClientAndroid::updateGlobalHistory() {
m_webFrame->updateVisitedHistory(m_frame->loader()->documentLoader()->urlForHistory(), false);
}
-void FrameLoaderClientAndroid::updateGlobalHistoryForRedirectWithoutHistoryItem() {
+void FrameLoaderClientAndroid::updateGlobalHistoryRedirectLinks() {
// Note, do we need to do anything where there is no HistoryItem? If we call
// updateGlobalHistory(), we will add bunch of "data:xxx" urls for gmail.com
// which is not what we want. Opt to do nothing now.
@@ -676,7 +677,6 @@ String FrameLoaderClientAndroid::generatedMIMETypeForURLScheme(const String& URL
void FrameLoaderClientAndroid::frameLoadCompleted() {
// copied from Apple port, without this back with sub-frame will trigger ASSERT
ASSERT(m_frame);
- m_frame->loader()->setPreviousHistoryItem(0);
}
void FrameLoaderClientAndroid::saveViewStateToItem(HistoryItem* item) {
@@ -889,7 +889,7 @@ static bool isYouTubeUrl(const KURL& url, const String& mimeType)
Widget* FrameLoaderClientAndroid::createPlugin(
const IntSize& size,
- Element* element,
+ HTMLPlugInElement* element,
const KURL& url,
const WTF::Vector<String, 0u>& names,
const WTF::Vector<String, 0u>& values,
@@ -897,8 +897,7 @@ Widget* FrameLoaderClientAndroid::createPlugin(
bool loadManually) {
// Create an iframe for youtube urls.
if (isYouTubeUrl(url, mimeType)) {
- RefPtr<Frame> frame = createFrame(blankURL(), String(),
- static_cast<HTMLFrameOwnerElement*>(element),
+ RefPtr<Frame> frame = createFrame(blankURL(), String(), element,
String(), false, 0, 0);
if (frame) {
// grab everything after /v/
@@ -944,7 +943,7 @@ void FrameLoaderClientAndroid::redirectDataToPlugin(Widget* pluginWidget) {
notImplemented();
}
-Widget* FrameLoaderClientAndroid::createJavaAppletWidget(const IntSize&, Element*,
+Widget* FrameLoaderClientAndroid::createJavaAppletWidget(const IntSize&, HTMLAppletElement*,
const KURL& baseURL, const WTF::Vector<String>& paramNames,
const WTF::Vector<String>& paramValues) {
// don't support widget yet
@@ -1004,6 +1003,9 @@ void FrameLoaderClientAndroid::windowObjectCleared() {
m_webFrame->windowObjectCleared(m_frame);
}
+void FrameLoaderClientAndroid::documentElementAvailable() {
+}
+
// functions new to Jun-07 tip of tree merge:
ResourceError FrameLoaderClientAndroid::blockedError(ResourceRequest const& request) {
return ResourceError(String(), InternalErrorFileDoesNotExist, String(), String());
diff --git a/WebKit/android/WebCoreSupport/FrameLoaderClientAndroid.h b/WebKit/android/WebCoreSupport/FrameLoaderClientAndroid.h
index 9d71c9d..143537f 100644
--- a/WebKit/android/WebCoreSupport/FrameLoaderClientAndroid.h
+++ b/WebKit/android/WebCoreSupport/FrameLoaderClientAndroid.h
@@ -122,7 +122,7 @@ namespace android {
virtual void finishedLoading(DocumentLoader*);
virtual void updateGlobalHistory();
- virtual void updateGlobalHistoryForRedirectWithoutHistoryItem();
+ virtual void updateGlobalHistoryRedirectLinks();
virtual bool shouldGoToHistoryItem(HistoryItem*) const;
#ifdef ANDROID_HISTORY_CLIENT
@@ -168,17 +168,18 @@ namespace android {
virtual WTF::PassRefPtr<Frame> createFrame(const KURL& url, const String& name, HTMLFrameOwnerElement* ownerElement,
const String& referrer, bool allowsScrolling, int marginWidth, int marginHeight);
- virtual Widget* createPlugin(const IntSize&, Element*, const KURL&,
+ virtual Widget* createPlugin(const IntSize&, HTMLPlugInElement*, const KURL&,
const WTF::Vector<WebCore::String, 0u>&, const WTF::Vector<String, 0u>&,
const String&, bool);
virtual void redirectDataToPlugin(Widget* pluginWidget);
- virtual Widget* createJavaAppletWidget(const IntSize&, Element*, const KURL& baseURL, const Vector<String>& paramNames, const Vector<String>& paramValues);
+ virtual Widget* createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const KURL& baseURL, const Vector<String>& paramNames, const Vector<String>& paramValues);
virtual ObjectContentType objectContentType(const KURL& url, const String& mimeType);
virtual String overrideMediaType() const;
virtual void windowObjectCleared();
+ virtual void documentElementAvailable();
virtual void didPerformFirstNavigation() const;
virtual void registerForIconNotification(bool listen = true);
diff --git a/WebKit/android/WebCoreSupport/InspectorClientAndroid.h b/WebKit/android/WebCoreSupport/InspectorClientAndroid.h
index 9eb85e5..2fb3d2a 100644
--- a/WebKit/android/WebCoreSupport/InspectorClientAndroid.h
+++ b/WebKit/android/WebCoreSupport/InspectorClientAndroid.h
@@ -57,6 +57,7 @@ public:
virtual void populateSetting(const String&, InspectorController::Setting&) {}
virtual void storeSetting(const String&, const InspectorController::Setting&) {}
virtual void removeSetting(const String&) {}
+ virtual String hiddenPanels() { return String(); }
};
}
diff --git a/WebKit/android/jni/JavaBridge.cpp b/WebKit/android/jni/JavaBridge.cpp
index 24ca71c..d62fd91 100644
--- a/WebKit/android/jni/JavaBridge.cpp
+++ b/WebKit/android/jni/JavaBridge.cpp
@@ -262,11 +262,6 @@ void JavaBridge::SetNetworkOnLine(JNIEnv* env, jobject obj, jboolean online)
WebCore::networkStateNotifier().networkStateChange(online);
}
-void JavaBridge::SetDeferringTimers(JNIEnv* env, jobject obj, jboolean defer)
-{
- WebCore::setDeferringTimers(defer);
-}
-
void JavaBridge::ServiceFuncPtrQueue(JNIEnv*)
{
JavaSharedClient::ServiceFunctionPtrQueue();
@@ -289,8 +284,6 @@ static JNINativeMethod gWebCoreJavaBridgeMethods[] = {
(void*) JavaBridge::SetCacheSize },
{ "setNetworkOnLine", "(Z)V",
(void*) JavaBridge::SetNetworkOnLine },
- { "setDeferringTimers", "(Z)V",
- (void*) JavaBridge::SetDeferringTimers },
{ "nativeServiceFuncPtrQueue", "()V",
(void*) JavaBridge::ServiceFuncPtrQueue },
};
diff --git a/WebKit/android/jni/WebHistory.cpp b/WebKit/android/jni/WebHistory.cpp
index cd6e0f1..01fd543 100644
--- a/WebKit/android/jni/WebHistory.cpp
+++ b/WebKit/android/jni/WebHistory.cpp
@@ -153,7 +153,6 @@ static void WebHistoryRestoreIndex(JNIEnv* env, jobject obj, jint frame, jint in
// Update the current and previous history item.
WebCore::FrameLoader* loader = pFrame->loader();
loader->setCurrentHistoryItem(currentItem);
- loader->setPreviousHistoryItem(list->backItem());
// load the current page with FrameLoadTypeIndexedBackForward so that it
// will use cache when it is possible
diff --git a/WebKit/android/jni/WebSettings.cpp b/WebKit/android/jni/WebSettings.cpp
index 407544a..a3701af 100644
--- a/WebKit/android/jni/WebSettings.cpp
+++ b/WebKit/android/jni/WebSettings.cpp
@@ -328,10 +328,6 @@ public:
#endif
flag = env->GetBooleanField(obj, gFieldIds->mShrinksStandaloneImagesToFit);
s->setShrinksStandaloneImagesToFit(flag);
-#if USE(LOW_BANDWIDTH_DISPLAY)
- flag = env->GetBooleanField(obj, gFieldIds->mUseDoubleTree);
- pFrame->loader()->setUseLowBandwidthDisplay(flag);
-#endif
}
};
diff --git a/WebKit/android/jni/WebViewCore.cpp b/WebKit/android/jni/WebViewCore.cpp
index 7a60447..529fbdf 100644
--- a/WebKit/android/jni/WebViewCore.cpp
+++ b/WebKit/android/jni/WebViewCore.cpp
@@ -39,6 +39,7 @@
#include "EventHandler.h"
#include "EventNames.h"
#include "Font.h"
+#include "Frame.h"
#include "FrameLoader.h"
#include "FrameLoaderClientAndroid.h"
#include "FrameTree.h"
@@ -793,7 +794,7 @@ void WebViewCore::setScrollOffset(int dx, int dy)
// testing work correctly.
m_mainFrame->view()->platformWidget()->setLocation(m_scrollOffsetX,
m_scrollOffsetY);
- m_mainFrame->sendScrollEvent();
+ m_mainFrame->eventHandler()->sendScrollEvent();
}
}
@@ -846,7 +847,7 @@ void WebViewCore::setSizeScreenWidthAndScale(int width, int height,
}
}
r->setNeedsLayoutAndPrefWidthsRecalc();
- m_mainFrame->forceLayout();
+ m_mainFrame->view()->forceLayout();
// scroll to restore current screen center
if (!node)
return;
@@ -1797,8 +1798,7 @@ bool WebViewCore::handleMouseClick(WebCore::Frame* framePtr, WebCore::Node* node
// so when attempting to get the default, the point chosen would be follow the wrong link.
if (nodePtr->hasTagName(WebCore::HTMLNames::areaTag)) {
webFrame->setUserInitiatedClick(true);
- WebCore::EventTargetNodeCast(nodePtr)->dispatchSimulatedClick(0,
- true, true);
+ nodePtr->dispatchSimulatedClick(0, true, true);
webFrame->setUserInitiatedClick(false);
return true;
}
diff --git a/WebKit/android/nav/CacheBuilder.cpp b/WebKit/android/nav/CacheBuilder.cpp
index b042ec7..44beffc 100644
--- a/WebKit/android/nav/CacheBuilder.cpp
+++ b/WebKit/android/nav/CacheBuilder.cpp
@@ -27,8 +27,8 @@
#include "CachedNode.h"
#include "CachedRoot.h"
#include "Document.h"
+#include "EventListener.h"
#include "EventNames.h"
-#include "EventTargetNode.h"
#include "Frame.h"
#include "FrameLoader.h"
#include "FrameLoaderClientAndroid.h"
@@ -45,6 +45,7 @@
#include "InlineTextBox.h"
#include "KURL.h"
#include "PluginView.h"
+#include "RegisteredEventListener.h"
#include "RenderImage.h"
#include "RenderInline.h"
#include "RenderListBox.h"
@@ -88,8 +89,20 @@ Frame* CacheBuilder::FrameAnd(const CacheBuilder* cacheBuilder) {
return loader->getFrame();
}
+
#if DUMP_NAV_CACHE
+static bool hasEventListener(Node* node, const AtomicString& eventType) {
+ const RegisteredEventListenerVector& listeners = node->eventListeners();
+ size_t size = listeners.size();
+ for (size_t i = 0; i < size; ++i) {
+ const RegisteredEventListener& r = *listeners[i];
+ if (r.eventType() == eventType)
+ return true;
+ }
+ return false;
+}
+
#define DEBUG_BUFFER_SIZE 256
#define DEBUG_WRAP_SIZE 150
#define DEBUG_WRAP_MAX 170
@@ -345,24 +358,20 @@ void CacheBuilder::Debug::groups() {
DUMP_NAV_LOGD("static DebugTestNode TEST%s_RECTS[] = {\n", name);
do {
String properties;
- EventTargetNode* elementTarget = node->isEventTargetNode() ?
- (EventTargetNode*) node : NULL;
- if (elementTarget) {
- if (elementTarget->getEventListener(eventNames().clickEvent))
- properties.append("ONCLICK | ");
- if (elementTarget->getEventListener(eventNames().mousedownEvent))
- properties.append("MOUSEDOWN | ");
- if (elementTarget->getEventListener(eventNames().mouseupEvent))
- properties.append("MOUSEUP | ");
- if (elementTarget->getEventListener(eventNames().mouseoverEvent))
- properties.append("MOUSEOVER | ");
- if (elementTarget->getEventListener(eventNames().mouseoutEvent))
- properties.append("MOUSEOUT | ");
- if (elementTarget->getEventListener(eventNames().keydownEvent))
- properties.append("KEYDOWN | ");
- if (elementTarget->getEventListener(eventNames().keyupEvent))
- properties.append("KEYUP | ");
- }
+ if (hasEventListener(node, eventNames().clickEvent))
+ properties.append("ONCLICK | ");
+ if (hasEventListener(node, eventNames().mousedownEvent))
+ properties.append("MOUSEDOWN | ");
+ if (hasEventListener(node, eventNames().mouseupEvent))
+ properties.append("MOUSEUP | ");
+ if (hasEventListener(node, eventNames().mouseoverEvent))
+ properties.append("MOUSEOVER | ");
+ if (hasEventListener(node, eventNames().mouseoutEvent))
+ properties.append("MOUSEOUT | ");
+ if (hasEventListener(node, eventNames().keydownEvent))
+ properties.append("KEYDOWN | ");
+ if (hasEventListener(node, eventNames().keyupEvent))
+ properties.append("KEYUP | ");
if (CacheBuilder::HasFrame(node))
properties.append("FRAME | ");
if (focus == node) {
@@ -553,8 +562,6 @@ bool CacheBuilder::Debug::isFocusable(Node* node) {
return true;
if (node->isFocusable())
return true;
- if (node->isEventTargetNode())
- return true;
if (CacheBuilder::AnyIsClick(node))
return false;
if (CacheBuilder::HasTriggerEvent(node))
@@ -807,20 +814,35 @@ void CacheBuilder::adjustForColumns(const ClipColumnTracker& track,
}
}
+// Checks if a node has one of event listener types.
+bool CacheBuilder::NodeHasEventListeners(Node* node, AtomicString* eventTypes, int length) {
+ const RegisteredEventListenerVector& listeners = node->eventListeners();
+ size_t size = listeners.size();
+ for (size_t i = 0; i < size; ++i) {
+ const RegisteredEventListener& r = *listeners[i];
+ for (int j = 0; j < length; ++j) {
+ if (r.eventType() == eventTypes[j])
+ return true;
+ }
+ }
+ return false;
+}
+
bool CacheBuilder::AnyChildIsClick(Node* node)
{
+ AtomicString eventTypes[5] = {
+ eventNames().clickEvent,
+ eventNames().mousedownEvent,
+ eventNames().mouseupEvent,
+ eventNames().keydownEvent,
+ eventNames().keyupEvent
+ };
+
Node* child = node->firstChild();
while (child != NULL) {
- if (child->isEventTargetNode()) {
- EventTargetNode* target = (EventTargetNode*) child;
- if (target->isFocusable() ||
- target->getEventListener(eventNames().clickEvent) ||
- target->getEventListener(eventNames().mousedownEvent) ||
- target->getEventListener(eventNames().mouseupEvent) ||
- target->getEventListener(eventNames().keydownEvent) ||
- target->getEventListener(eventNames().keyupEvent))
+ if (child->isFocusable() ||
+ NodeHasEventListeners(child, eventTypes, 5))
return true;
- }
if (AnyChildIsClick(child))
return true;
child = child->nextSibling();
@@ -832,18 +854,26 @@ bool CacheBuilder::AnyIsClick(Node* node)
{
if (node->hasTagName(HTMLNames::bodyTag))
return AnyChildIsClick(node);
- EventTargetNode* target = (EventTargetNode*) node;
- if (target->getEventListener(eventNames().mouseoverEvent) == NULL &&
- target->getEventListener(eventNames().mouseoutEvent) == NULL &&
- target->getEventListener(eventNames().keydownEvent) == NULL &&
- target->getEventListener(eventNames().keyupEvent) == NULL)
- return false;
- if (target->getEventListener(eventNames().clickEvent))
- return false;
- if (target->getEventListener(eventNames().mousedownEvent))
+
+ AtomicString eventTypeSetOne[4] = {
+ eventNames().mouseoverEvent,
+ eventNames().mouseoutEvent,
+ eventNames().keydownEvent,
+ eventNames().keyupEvent
+ };
+
+ if (!NodeHasEventListeners(node, eventTypeSetOne, 4))
return false;
- if (target->getEventListener(eventNames().mouseupEvent))
+
+ AtomicString eventTypeSetTwo[3] = {
+ eventNames().clickEvent,
+ eventNames().mousedownEvent,
+ eventNames().mouseupEvent
+ };
+
+ if (NodeHasEventListeners(node, eventTypeSetTwo, 3))
return false;
+
return AnyChildIsClick(node);
}
@@ -1162,10 +1192,9 @@ void CacheBuilder::BuildFrame(Frame* root, Frame* frame,
(const HTMLAnchorElement*) node;
if (!anchorNode->isFocusable() && !HasTriggerEvent(node))
continue;
- EventTargetNode* target = (EventTargetNode*) node;
- if (target->disabled())
+ if (node->disabled())
continue;
- hasMouseOver = target->getEventListener(eventNames().mouseoverEvent);
+ hasMouseOver = NodeHasEventListeners(node, &eventNames().mouseoverEvent, 1);
isAnchor = true;
KURL href = anchorNode->href();
if (!href.isEmpty() && !href.protocolIs("javascript"))
@@ -1198,10 +1227,7 @@ void CacheBuilder::BuildFrame(Frame* root, Frame* frame,
bool isFocusable = node->isKeyboardFocusable(NULL) ||
node->isMouseFocusable() || node->isFocusable();
if (isFocusable == false) {
- if (node->isEventTargetNode() == false)
- continue;
- EventTargetNode* eventTargetNode = (EventTargetNode*) node;
- if (eventTargetNode->disabled())
+ if (node->disabled())
continue;
bool overOrOut = HasOverOrOut(node);
bool hasTrigger = HasTriggerEvent(node);
@@ -1345,7 +1371,6 @@ bool CacheBuilder::CleanUpContainedNodes(CachedFrame* cachedFrame,
lastNode->isKeyboardFocusable(NULL) == false &&
lastNode->isMouseFocusable() == false &&
lastNode->isFocusable() == false &&
- lastNode->isEventTargetNode() == true &&
HasOverOrOut(lastNode) == true &&
HasTriggerEvent(lastNode) == false;
if (cachedFrame->focusIndex() == lastChildIndex)
@@ -2432,20 +2457,26 @@ Frame* CacheBuilder::HasFrame(Node* node)
bool CacheBuilder::HasOverOrOut(Node* node)
{
- EventTargetNode* target = (EventTargetNode*) node;
- return target->getEventListener(eventNames().mouseoverEvent) ||
- target->getEventListener(eventNames().mouseoutEvent);
+ // eventNames are thread-local data, I avoid using 'static' variable here.
+ AtomicString eventTypes[2] = {
+ eventNames().mouseoverEvent,
+ eventNames().mouseoutEvent
+ };
+ return NodeHasEventListeners(node, eventTypes, 2);
}
bool CacheBuilder::HasTriggerEvent(Node* node)
{
- EventTargetNode* target = (EventTargetNode*) node;
- return target->getEventListener(eventNames().clickEvent) ||
- target->getEventListener(eventNames().mousedownEvent) ||
- target->getEventListener(eventNames().mouseupEvent) ||
- target->getEventListener(eventNames().keydownEvent) ||
- target->getEventListener(eventNames().keyupEvent);
+ AtomicString eventTypes[5] = {
+ eventNames().clickEvent,
+ eventNames().mousedownEvent,
+ eventNames().mouseupEvent,
+ eventNames().keydownEvent,
+ eventNames().keyupEvent
+ };
+
+ return NodeHasEventListeners(node, eventTypes, 5);
}
// #define EMAIL_PATTERN "x@y.d" // where 'x' is letters, numbers, and '-', '.', '_' ; 'y' is 'x' without the underscore, and 'd' is a valid domain
@@ -2504,8 +2535,6 @@ Node* CacheBuilder::findByCenter(int x, int y) const
return node;
if (node->isFocusable())
return node;
- if (node->isEventTargetNode() == false)
- continue;
if (AnyIsClick(node))
continue;
if (HasTriggerEvent(node) == false)
diff --git a/WebKit/android/nav/CacheBuilder.h b/WebKit/android/nav/CacheBuilder.h
index 32ae0af..dbed6e8 100644
--- a/WebKit/android/nav/CacheBuilder.h
+++ b/WebKit/android/nav/CacheBuilder.h
@@ -39,7 +39,8 @@
using namespace WebCore;
namespace WebCore {
-
+
+class AtomicString;
class Document;
class Frame;
class HTMLAreaElement;
@@ -194,6 +195,7 @@ private:
WTF::Vector<IntRect>* result, IntRect* focusBounds);
static bool AnyIsClick(Node* node);
static bool AnyChildIsClick(Node* node);
+ static bool NodeHasEventListeners(Node* node, AtomicString* eventTypes, int length);
void BuildFrame(Frame* root, Frame* frame,
CachedRoot* cachedRoot, CachedFrame* cachedFrame);
bool CleanUpContainedNodes(CachedFrame* cachedFrame,