summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/WebKit/android/jni/WebViewCore.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/Source/WebKit/android/jni/WebViewCore.cpp b/Source/WebKit/android/jni/WebViewCore.cpp
index 9b5a6fa..8b2029f 100644
--- a/Source/WebKit/android/jni/WebViewCore.cpp
+++ b/Source/WebKit/android/jni/WebViewCore.cpp
@@ -1729,7 +1729,7 @@ Vector<IntRect> WebViewCore::getTouchHighlightRects(int x, int y, int slop)
Node* eventNode = it->get();
while (eventNode) {
RenderObject* render = eventNode->renderer();
- if (render->isBody() || render->isRenderView())
+ if (render && (render->isBody() || render->isRenderView()))
break;
if (eventNode->supportsFocus()
|| eventNode->hasEventListeners(eventNames().clickEvent)
@@ -1755,7 +1755,7 @@ Vector<IntRect> WebViewCore::getTouchHighlightRects(int x, int y, int slop)
// If the fat point touches everyone, the order in the list should be "b", "d", "c"
// and "a". When we search for the event node for "b", we really don't want "a" as
// in the z-order it is behind everything else.
- if (!render->style()->hasAutoZIndex())
+ if (render && !render->style()->hasAutoZIndex())
break;
eventNode = eventNode->parentNode();
}
@@ -2219,12 +2219,16 @@ void WebViewCore::scrollNodeIntoView(Frame* frame, Node* node)
if (!node->isElementNode()) {
HTMLElement* body = frame->document()->body();
do {
- if (!node || node == body)
+ if (node == body)
return;
node = node->parentNode();
- } while (!node->isElementNode() && !isVisible(node));
+ } while (node && !node->isElementNode() && !isVisible(node));
}
+ // Couldn't find a visible predecessor.
+ if (!node)
+ return;
+
elementNode = static_cast<Element*>(node);
elementNode->scrollIntoViewIfNeeded(true);
}