Commit 2784d3ed authored by Xiaocheng Hu's avatar Xiaocheng Hu Committed by Commit Bot

Add EditingTestBase::GetCaretTextFromBody

This patch adds the above function, so that when writing unit tests, we
can check the correctness of functions returning positions in an easier
way.

This is a preparation patch for crrev.com/c/791856

Bug: 
Change-Id: If7de011090dca69830a4d8a404f1321934971488
Reviewed-on: https://chromium-review.googlesource.com/706575Reviewed-by: default avatarYoshifumi Inoue <yosin@chromium.org>
Commit-Queue: Xiaocheng Hu <xiaochengh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#519579}
parent ae25118d
......@@ -391,6 +391,7 @@ jumbo_source_set("unit_tests") {
"suggestion/TextSuggestionControllerTest.cpp",
"testing/EditingTestBase.cpp",
"testing/EditingTestBase.h",
"testing/EditingTestBaseTest.cpp",
"testing/SelectionSample.cpp",
"testing/SelectionSample.h",
"testing/SelectionSampleTest.cpp",
......
......@@ -77,6 +77,14 @@ std::string EditingTestBase::GetSelectionTextInFlatTreeFromBody(
selection);
}
std::string EditingTestBase::GetCaretTextFromBody(
const Position& position) const {
DCHECK(position.IsValidFor(GetDocument()))
<< "A valid position must be provided " << position;
return GetSelectionTextFromBody(
SelectionInDOMTree::Builder().Collapse(position).Build());
}
ShadowRoot* EditingTestBase::CreateShadowRootForElementWithIDAndSetInnerHTML(
TreeScope& scope,
const char* host_element_id,
......
......@@ -51,6 +51,9 @@ class EditingTestBase : public PageTestBase {
SelectionInDOMTree SetSelectionText(HTMLElement*,
const std::string& selection_text);
// Returns selection text for child nodes of BODY with specific |Position|.
std::string GetCaretTextFromBody(const Position&) const;
// Returns selection text for child nodes of BODY with specified
// |SelectionInDOMTree|.
std::string GetSelectionTextFromBody(const SelectionInDOMTree&) const;
......
// 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 "core/editing/testing/EditingTestBase.h"
#include "core/editing/Position.h"
namespace blink {
class EditingTestBaseTest : public EditingTestBase {};
TEST_F(EditingTestBaseTest, GetCaretTextFromBody) {
SetBodyContent("<div>foo</div>");
Element* const div = GetDocument().QuerySelector("div");
Node* const foo = div->firstChild();
EXPECT_EQ("|<div>foo</div>",
GetCaretTextFromBody(Position::BeforeNode(*div)));
// TODO(editing-dev): Consider different serialization for the following two
// positions.
EXPECT_EQ("<div>|foo</div>",
GetCaretTextFromBody(Position::FirstPositionInNode(*div)));
EXPECT_EQ("<div>|foo</div>", GetCaretTextFromBody(Position(foo, 0)));
// TODO(editing-dev): Consider different serialization for the following two
// positions.
EXPECT_EQ("<div>foo|</div>", GetCaretTextFromBody(Position(foo, 3)));
EXPECT_EQ("<div>foo|</div>",
GetCaretTextFromBody(Position::LastPositionInNode(*div)));
EXPECT_EQ("<div>foo</div>|", GetCaretTextFromBody(Position::AfterNode(*div)));
}
// TODO(editing-dev): Add demos of other functions of EditingTestBase.
} // namespace blink
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment