diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/core/editing/serializers/serialization.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/core/editing/serializers/serialization.cc | 47 |
1 files changed, 17 insertions, 30 deletions
diff --git a/chromium/third_party/blink/renderer/core/editing/serializers/serialization.cc b/chromium/third_party/blink/renderer/core/editing/serializers/serialization.cc index 7810ae7f6ac..19603ed22c5 100644 --- a/chromium/third_party/blink/renderer/core/editing/serializers/serialization.cc +++ b/chromium/third_party/blink/renderer/core/editing/serializers/serialization.cc @@ -172,8 +172,7 @@ template <typename Strategy> static HTMLElement* HighestAncestorToWrapMarkup( const PositionTemplate<Strategy>& start_position, const PositionTemplate<Strategy>& end_position, - AnnotateForInterchange should_annotate, - Node* constraining_ancestor) { + const CreateMarkupOptions& options) { Node* first_node = start_position.NodeAsRangeFirstNode(); // For compatibility reason, we use container node of start and end // positions rather than first node and last node in selection. @@ -182,7 +181,7 @@ static HTMLElement* HighestAncestorToWrapMarkup( *end_position.ComputeContainerNode()); DCHECK(common_ancestor); HTMLElement* special_common_ancestor = nullptr; - if (should_annotate == kAnnotateForInterchange) { + if (options.ShouldAnnotateForInterchange()) { // Include ancestors that aren't completely inside the range but are // required to retain the structure and appearance of the copied markup. special_common_ancestor = @@ -223,9 +222,12 @@ static HTMLElement* HighestAncestorToWrapMarkup( // Ex: <b><p></p></b> is an ill-formed html and we don't want to return <b> // as the ancestor because paragraph element is the enclosing block of the // start and end positions provided to this API. - constraining_ancestor = constraining_ancestor - ? constraining_ancestor - : EnclosingBlock(check_ancestor); + // TODO(editing-dev): Make |HighestEnclosingNodeOfType| take const pointer + // to remove the |const_cast| below. + Node* constraining_ancestor = + options.ConstrainingAncestor() + ? const_cast<Node*>(options.ConstrainingAncestor()) + : EnclosingBlock(check_ancestor); auto* new_special_common_ancestor = To<HTMLElement>(HighestEnclosingNodeOfType( Position::FirstPositionInNode(*check_ancestor), @@ -264,10 +266,7 @@ class CreateMarkupAlgorithm { static String CreateMarkup( const PositionTemplate<Strategy>& start_position, const PositionTemplate<Strategy>& end_position, - AnnotateForInterchange should_annotate = kDoNotAnnotateForInterchange, - ConvertBlocksToInlines = ConvertBlocksToInlines::kNotConvert, - AbsoluteURLs should_resolve_urls = kDoNotResolveURLs, - Node* constraining_ancestor = nullptr); + const CreateMarkupOptions& options = CreateMarkupOptions()); }; // FIXME: Shouldn't we omit style info when annotate == @@ -278,10 +277,7 @@ template <typename Strategy> String CreateMarkupAlgorithm<Strategy>::CreateMarkup( const PositionTemplate<Strategy>& start_position, const PositionTemplate<Strategy>& end_position, - AnnotateForInterchange should_annotate, - ConvertBlocksToInlines convert_blocks_to_inlines, - AbsoluteURLs should_resolve_urls, - Node* constraining_ancestor) { + const CreateMarkupOptions& options) { if (start_position.IsNull() || end_position.IsNull()) return g_empty_string; @@ -303,33 +299,24 @@ String CreateMarkupAlgorithm<Strategy>::CreateMarkup( document->Lifecycle()); HTMLElement* special_common_ancestor = HighestAncestorToWrapMarkup<Strategy>( - start_position, end_position, should_annotate, constraining_ancestor); - StyledMarkupSerializer<Strategy> serializer( - should_resolve_urls, should_annotate, start_position, end_position, - special_common_ancestor, convert_blocks_to_inlines); + start_position, end_position, options); + StyledMarkupSerializer<Strategy> serializer(start_position, end_position, + special_common_ancestor, options); return serializer.CreateMarkup(); } String CreateMarkup(const Position& start_position, const Position& end_position, - AnnotateForInterchange should_annotate, - ConvertBlocksToInlines convert_blocks_to_inlines, - AbsoluteURLs should_resolve_urls, - Node* constraining_ancestor) { + const CreateMarkupOptions& options) { return CreateMarkupAlgorithm<EditingStrategy>::CreateMarkup( - start_position, end_position, should_annotate, convert_blocks_to_inlines, - should_resolve_urls, constraining_ancestor); + start_position, end_position, options); } String CreateMarkup(const PositionInFlatTree& start_position, const PositionInFlatTree& end_position, - AnnotateForInterchange should_annotate, - ConvertBlocksToInlines convert_blocks_to_inlines, - AbsoluteURLs should_resolve_urls, - Node* constraining_ancestor) { + const CreateMarkupOptions& options) { return CreateMarkupAlgorithm<EditingInFlatTreeStrategy>::CreateMarkup( - start_position, end_position, should_annotate, convert_blocks_to_inlines, - should_resolve_urls, constraining_ancestor); + start_position, end_position, options); } DocumentFragment* CreateFragmentFromMarkup( |