// Copyright 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_EDITING_SELECTION_ADJUSTER_H_ #define THIRD_PARTY_BLINK_RENDERER_CORE_EDITING_SELECTION_ADJUSTER_H_ #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/core/editing/forward.h" #include "third_party/blink/renderer/core/editing/text_granularity.h" #include "third_party/blink/renderer/platform/wtf/allocator.h" namespace blink { // |SelectionAdjuster| adjusts positions in |VisibleSelection| directly without // calling |validate()|. Users of |SelectionAdjuster| should keep invariant of // |VisibleSelection|, e.g. all positions are canonicalized. class CORE_EXPORT SelectionAdjuster final { STATIC_ONLY(SelectionAdjuster); public: static SelectionInDOMTree AdjustSelectionRespectingGranularity( const SelectionInDOMTree&, TextGranularity); static SelectionInFlatTree AdjustSelectionRespectingGranularity( const SelectionInFlatTree&, TextGranularity); static SelectionInDOMTree AdjustSelectionToAvoidCrossingShadowBoundaries( const SelectionInDOMTree&); static SelectionInFlatTree AdjustSelectionToAvoidCrossingShadowBoundaries( const SelectionInFlatTree&); static SelectionInDOMTree AdjustSelectionToAvoidCrossingEditingBoundaries( const SelectionInDOMTree&); static SelectionInFlatTree AdjustSelectionToAvoidCrossingEditingBoundaries( const SelectionInFlatTree&); static SelectionInDOMTree AdjustSelectionType(const SelectionInDOMTree&); static SelectionInFlatTree AdjustSelectionType(const SelectionInFlatTree&); }; } // namespace blink #endif // THIRD_PARTY_BLINK_RENDERER_CORE_EDITING_SELECTION_ADJUSTER_H_