static PassRefPtr<Range> makeSearchRange(const Position& pos) { Node* n = pos.deprecatedNode(); if (!n) return 0; Node* de = n->document().documentElement(); if (!de) return 0; Element* boundary = deprecatedEnclosingBlockFlowElement(n); if (!boundary) return 0; RefPtr<Range> searchRange(Range::create(n->document())); ExceptionCode ec = 0; Position start(pos.parentAnchoredEquivalent()); searchRange->selectNodeContents(boundary, ec); searchRange->setStart(start.containerNode(), start.offsetInContainerNode(), ec); ASSERT(!ec); if (ec) return 0; return searchRange.release(); }
static RefPtr<Range> makeSearchRange(const Position& position) { auto* node = position.deprecatedNode(); if (!node) return nullptr; auto* boundary = deprecatedEnclosingBlockFlowElement(node); if (!boundary) return nullptr; auto searchRange = Range::create(node->document()); auto result = searchRange->selectNodeContents(*boundary); if (result.hasException()) return nullptr; Position start { position.parentAnchoredEquivalent() }; result = searchRange->setStart(*start.containerNode(), start.offsetInContainerNode()); if (result.hasException()) return nullptr; return WTFMove(searchRange); }