diff options
Diffstat (limited to 'Source/WebKit/android/jni/WebViewCore.cpp')
-rw-r--r-- | Source/WebKit/android/jni/WebViewCore.cpp | 27 |
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); |