summaryrefslogtreecommitdiffstats
path: root/Source/WebKit/android/jni/WebViewCore.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit/android/jni/WebViewCore.cpp')
-rw-r--r--Source/WebKit/android/jni/WebViewCore.cpp27
1 files changed, 24 insertions, 3 deletions
diff --git a/Source/WebKit/android/jni/WebViewCore.cpp b/Source/WebKit/android/jni/WebViewCore.cpp
index aa38222..f8cd5ca 100644
--- a/Source/WebKit/android/jni/WebViewCore.cpp
+++ b/Source/WebKit/android/jni/WebViewCore.cpp
@@ -1,5 +1,8 @@
/*
* Copyright 2006, The Android Open Source Project
+ * Copyright (C) 2012 Sony Ericsson Mobile Communications AB.
+ * Copyright (C) 2012 Sony Mobile Communications AB
+ * Copyright (c) 2011,2012 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -2573,7 +2576,7 @@ Node* WebViewCore::getNextAnchorNode(Node* anchorNode, bool ignoreFirstNode, int
|| isContentInputElement(currentNode))
return currentNode;
if (direction == DIRECTION_FORWARD)
- currentNode = currentNode->traverseNextNode();
+ currentNode = currentNode->traverseNextNodeFastPath();
else
currentNode = currentNode->traversePreviousNodePostOrder(body);
}
@@ -2695,7 +2698,7 @@ Node* WebViewCore::getIntermediaryInputElement(Node* fromNode, Node* toNode, int
while (currentNode && currentNode != toNode) {
if (isContentInputElement(currentNode))
return currentNode;
- currentNode = currentNode->traverseNextNode();
+ currentNode = currentNode->traverseNextNodeFastPath();
}
} else {
Node* currentNode = fromNode->traversePreviousNode();
@@ -2827,7 +2830,7 @@ bool WebViewCore::isVisible(Node* node)
else
element = node->parentElement();
// check renderer
- if (!element->renderer()) {
+ if (!element || !element->renderer()) {
return false;
}
// check size
@@ -4859,6 +4862,15 @@ static void Pause(JNIEnv* env, jobject obj, jint nativeClass)
WebViewCore* viewImpl = reinterpret_cast<WebViewCore*>(nativeClass);
Frame* mainFrame = viewImpl->mainFrame();
+
+ for (Frame* frame = mainFrame; frame; frame = frame->tree()->traverseNext()) {
+#if ENABLE(WEBGL)
+ Document* document = frame->document();
+ if (document)
+ document->suspendDocument();
+#endif
+ }
+
if (mainFrame)
mainFrame->settings()->setMinDOMTimerInterval(BACKGROUND_TIMER_INTERVAL);
@@ -4875,6 +4887,15 @@ static void Resume(JNIEnv* env, jobject obj, jint nativeClass)
{
WebViewCore* viewImpl = reinterpret_cast<WebViewCore*>(nativeClass);
Frame* mainFrame = viewImpl->mainFrame();
+
+ for (Frame* frame = mainFrame; frame; frame = frame->tree()->traverseNext()) {
+#if ENABLE(WEBGL)
+ Document* document = frame->document();
+ if (document)
+ document->resumeDocument();
+#endif
+ }
+
if (mainFrame)
mainFrame->settings()->setMinDOMTimerInterval(FOREGROUND_TIMER_INTERVAL);