Browse Source

LibWeb: Convert Range to use TRY for error propagation

Timothy Flynn 3 years ago
parent
commit
c3f9cd6dbd
1 changed files with 15 additions and 37 deletions
  1. 15 37
      Userland/Libraries/LibWeb/DOM/Range.cpp

+ 15 - 37
Userland/Libraries/LibWeb/DOM/Range.cpp

@@ -581,10 +581,8 @@ ExceptionOr<NonnullRefPtr<DocumentFragment>> Range::extract()
 
         // 2. Set the data of clone to the result of substringing data with node original start node,
         //    offset original start offset, and count original end offset minus original start offset.
-        auto result = static_cast<CharacterData const&>(*original_start_node).substring_data(original_start_offset, original_end_offset - original_start_offset);
-        if (result.is_exception())
-            return result.exception();
-        verify_cast<CharacterData>(*clone).set_data(result.release_value());
+        auto result = TRY(static_cast<CharacterData const&>(*original_start_node).substring_data(original_start_offset, original_end_offset - original_start_offset));
+        verify_cast<CharacterData>(*clone).set_data(move(result));
 
         // 3. Append clone to fragment.
         fragment->append_child(clone);
@@ -673,10 +671,8 @@ ExceptionOr<NonnullRefPtr<DocumentFragment>> Range::extract()
 
         // 2. Set the data of clone to the result of substringing data with node original start node, offset original start offset,
         //    and count original start node’s length minus original start offset.
-        auto result = static_cast<CharacterData const&>(*original_start_node).substring_data(original_start_offset, original_start_node->length() - original_start_offset);
-        if (result.is_exception())
-            return result.exception();
-        verify_cast<CharacterData>(*clone).set_data(result.release_value());
+        auto result = TRY(static_cast<CharacterData const&>(*original_start_node).substring_data(original_start_offset, original_start_node->length() - original_start_offset));
+        verify_cast<CharacterData>(*clone).set_data(move(result));
 
         // 3. Append clone to fragment.
         fragment->append_child(clone);
@@ -696,10 +692,7 @@ ExceptionOr<NonnullRefPtr<DocumentFragment>> Range::extract()
         auto subrange = Range::create(original_start_node, original_start_offset, *first_partially_contained_child, first_partially_contained_child->length());
 
         // 4. Let subfragment be the result of extracting subrange.
-        auto result = subrange->extract();
-        if (result.is_exception())
-            return result.exception();
-        auto subfragment = result.release_value();
+        auto subfragment = TRY(subrange->extract());
 
         // 5. Append subfragment to clone.
         clone->append_child(subfragment);
@@ -716,10 +709,8 @@ ExceptionOr<NonnullRefPtr<DocumentFragment>> Range::extract()
         auto clone = original_end_node->clone_node();
 
         // 2. Set the data of clone to the result of substringing data with node original end node, offset 0, and count original end offset.
-        auto result = static_cast<CharacterData const&>(*original_end_node).substring_data(0, original_end_offset);
-        if (result.is_exception())
-            return result.exception();
-        verify_cast<CharacterData>(*clone).set_data(result.release_value());
+        auto result = TRY(static_cast<CharacterData const&>(*original_end_node).substring_data(0, original_end_offset));
+        verify_cast<CharacterData>(*clone).set_data(move(result));
 
         // 3. Append clone to fragment.
         fragment->append_child(clone);
@@ -739,10 +730,7 @@ ExceptionOr<NonnullRefPtr<DocumentFragment>> Range::extract()
         auto subrange = Range::create(*last_partially_contained_child, 0, original_end_node, original_end_offset);
 
         // 4. Let subfragment be the result of extracting subrange.
-        auto result = subrange->extract();
-        if (result.is_exception())
-            return result.exception();
-        auto subfragment = result.release_value();
+        auto subfragment = TRY(subrange->extract());
 
         // 5. Append subfragment to clone.
         clone->append_child(subfragment);
@@ -821,16 +809,11 @@ ExceptionOr<void> Range::insert(NonnullRefPtr<Node> node)
         parent = reference_node->parent();
 
     // 6. Ensure pre-insertion validity of node into parent before referenceNode.
-    if (auto result = parent->ensure_pre_insertion_validity(node, reference_node); result.is_exception())
-        return result.exception();
+    TRY(parent->ensure_pre_insertion_validity(node, reference_node));
 
     // 7. If range’s start node is a Text node, set referenceNode to the result of splitting it with offset range’s start offset.
-    if (is<Text>(*m_start_container)) {
-        auto result = static_cast<Text&>(*m_start_container).split_text(m_start_offset);
-        if (result.is_exception())
-            return result.exception();
-        reference_node = result.release_value();
-    }
+    if (is<Text>(*m_start_container))
+        reference_node = TRY(static_cast<Text&>(*m_start_container).split_text(m_start_offset));
 
     // 8. If node is referenceNode, set referenceNode to its next sibling.
     if (node == reference_node)
@@ -854,8 +837,7 @@ ExceptionOr<void> Range::insert(NonnullRefPtr<Node> node)
         new_offset += 1;
 
     // 12. Pre-insert node into parent before referenceNode.
-    if (auto result = parent->pre_insert(node, reference_node); result.is_exception())
-        return result.exception();
+    TRY(parent->pre_insert(node, reference_node));
 
     // 13. If range is collapsed, then set range’s end to (parent, newOffset).
     if (collapsed())
@@ -882,21 +864,17 @@ ExceptionOr<void> Range::surround_contents(NonnullRefPtr<Node> new_parent)
         return InvalidNodeTypeError::create("Invalid parent node type");
 
     // 3. Let fragment be the result of extracting this.
-    auto fragment_or_error = extract();
-    if (fragment_or_error.is_exception())
-        return fragment_or_error.exception();
-    auto fragment = fragment_or_error.release_value();
+    auto fragment = TRY(extract());
 
     // 4. If newParent has children, then replace all with null within newParent.
     if (new_parent->has_children())
         new_parent->replace_all(nullptr);
 
     // 5. Insert newParent into this.
-    if (auto result = insert(new_parent); result.is_exception())
-        return result.exception();
+    TRY(insert(new_parent));
 
     // 6. Append fragment to newParent.
-    new_parent->append_child(fragment);
+    TRY(new_parent->append_child(fragment));
 
     // 7. Select newParent within this.
     return select(*new_parent);