blob: 1b0ac200a0627467f963b99be353c74589acbc85 [file] [log] [blame]
// Copyright 2017 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.
#include "third_party/blink/renderer/core/editing/selection_modifier.h"
#include "third_party/blink/renderer/core/editing/testing/editing_test_base.h"
#include "third_party/blink/renderer/core/editing/visible_position.h"
#include "third_party/blink/renderer/platform/testing/runtime_enabled_features_test_helpers.h"
namespace blink {
class SelectionModifierTest : public EditingTestBase {};
TEST_F(SelectionModifierTest, ExtendForwardByWordNone) {
SetBodyContent("abc");
SelectionModifier modifier(GetFrame(), SelectionInDOMTree());
modifier.Modify(SelectionModifyAlteration::kExtend,
SelectionModifyDirection::kForward, TextGranularity::kWord);
// We should not crash here. See http://crbug.com/832061
EXPECT_EQ(SelectionInDOMTree(), modifier.Selection().AsSelection());
}
TEST_F(SelectionModifierTest, MoveForwardByWordNone) {
SetBodyContent("abc");
SelectionModifier modifier(GetFrame(), SelectionInDOMTree());
modifier.Modify(SelectionModifyAlteration::kMove,
SelectionModifyDirection::kForward, TextGranularity::kWord);
// We should not crash here. See http://crbug.com/832061
EXPECT_EQ(SelectionInDOMTree(), modifier.Selection().AsSelection());
}
TEST_F(SelectionModifierTest, PreviousLineWithDisplayNone) {
InsertStyleElement("body{font-family: monospace}");
const SelectionInDOMTree selection = SetSelectionTextToBody(
"<div contenteditable>"
"<div>foo bar</div>"
"<div>foo <b style=\"display:none\">qux</b> bar baz|</div>"
"</div>");
SelectionModifier modifier(GetFrame(), selection);
modifier.Modify(SelectionModifyAlteration::kMove,
SelectionModifyDirection::kBackward, TextGranularity::kLine);
EXPECT_EQ(
"<div contenteditable>"
"<div>foo bar|</div>"
"<div>foo <b style=\"display:none\">qux</b> bar baz</div>"
"</div>",
GetSelectionTextFromBody(modifier.Selection().AsSelection()));
}
} // namespace blink