diff options
-rw-r--r-- | Source/WebKit/android/jni/WebViewCore.cpp | 12 |
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); } |