WebNavigationPolicy WebViewHost::decidePolicyForNavigation( WebFrame*, const WebURLRequest& request, WebNavigationType type, const WebNode& originatingNode, WebNavigationPolicy defaultPolicy, bool isRedirect) { WebNavigationPolicy result; if (!m_policyDelegateEnabled) return defaultPolicy; printf("Policy delegate: attempt to load %s with navigation type '%s'", URLDescription(request.url()).c_str(), webNavigationTypeToString(type)); if (!originatingNode.isNull()) { fputs(" originating from ", stdout); printNodeDescription(originatingNode, 0); } fputs("\n", stdout); if (m_policyDelegateIsPermissive) result = WebKit::WebNavigationPolicyCurrentTab; else result = WebKit::WebNavigationPolicyIgnore; if (m_policyDelegateShouldNotifyDone) layoutTestController()->policyDelegateDone(); return result; }
static void printNodeDescription(const WebNode& node, int exception) { if (exception) { fputs("ERROR", stdout); return; } if (node.isNull()) { fputs("(null)", stdout); return; } fputs(node.nodeName().utf8().data(), stdout); const WebNode& parent = node.parentNode(); if (!parent.isNull()) { fputs(" > ", stdout); printNodeDescription(parent, 0); } }
AccessibilityUIElement* AccessibilityController::findAccessibleElementByIdRecursive(const WebAccessibilityObject& obj, const WebString& id) { if (obj.isNull() || obj.isDetached()) return 0; WebNode node = obj.node(); if (!node.isNull() && node.isElementNode()) { WebElement element = node.to<WebElement>(); element.getAttribute("id"); if (element.getAttribute("id") == id) return m_elements.getOrCreate(obj); } unsigned childCount = obj.childCount(); for (unsigned i = 0; i < childCount; i++) { if (AccessibilityUIElement* result = findAccessibleElementByIdRecursive(obj.childAt(i), id)) return result; } return 0; }
void TestRunner::textSurroundingNode(const CppArgumentList& arguments, CppVariant* result) { result->setNull(); if (arguments.size() < 4 || !arguments[0].isObject() || !arguments[1].isNumber() || !arguments[2].isNumber() || !arguments[3].isNumber()) return; WebNode node; if (!WebBindings::getNode(arguments[0].value.objectValue, &node)) return; if (node.isNull() || !node.isTextNode()) return; WebPoint point(arguments[1].toInt32(), arguments[2].toInt32()); unsigned maxLength = arguments[3].toInt32(); WebSurroundingText surroundingText; surroundingText.initialize(node, point, maxLength); if (surroundingText.isNull()) return; result->set(surroundingText.textContent().utf8()); }