summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/editing/serializers/serialization.cc
diff options
context:
space:
mode:
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.cc47
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(