startOfDocument(Node*) and endOfDocument(Node*) return a null VisiblePosition if the document is non-editable and contains only an editable pocket. I don't think I can construct a test case for this. VisiblePosition endOfDocument(const Node* node) { if (!node || !node->document() || !node->document()->documentElement()) return VisiblePosition(); Element* doc = node->document()->documentElement(); return VisiblePosition(lastPositionInNode(doc), DOWNSTREAM); } <rdar://problem/9139718>
This has been fixed as part of revision 173287.