blob: 66cc4e87a44eb444afc87f336d2fc8e4f92222cf [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/content_extraction/inner_text.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/public/mojom/content_extraction/inner_text.mojom.h"
namespace content_extraction {
using internal::CreateInnerTextResult;
using internal::IsInnerTextFrameValid;
TEST(InnerTextTest, IsInnerTextFrameValid) {
// Null is not valid.
EXPECT_FALSE(IsInnerTextFrameValid(nullptr));
// All segments must be non-null.
auto frame = blink::mojom::InnerTextFrame::New();
frame->segments.push_back(nullptr);
EXPECT_FALSE(IsInnerTextFrameValid(frame));
// Empty segment is valid.
frame->segments.clear();
EXPECT_TRUE(IsInnerTextFrameValid(frame));
// Single text segment is valid.
frame->segments.push_back(blink::mojom::InnerTextSegment::NewText("a"));
EXPECT_TRUE(IsInnerTextFrameValid(frame));
// Single frame is valid.
frame->segments.clear();
frame->segments.push_back(blink::mojom::InnerTextSegment::NewFrame(
blink::mojom::InnerTextFrame::New()));
EXPECT_TRUE(IsInnerTextFrameValid(frame));
}
TEST(InnerTextTest, CreateInnerTextResult) {
auto frame = blink::mojom::InnerTextFrame::New();
frame->segments.push_back(blink::mojom::InnerTextSegment::NewText("abc"));
auto child_frame = blink::mojom::InnerTextFrame::New();
child_frame->segments.push_back(
blink::mojom::InnerTextSegment::NewText("def"));
child_frame->segments.push_back(
blink::mojom::InnerTextSegment::NewNodeLocation(
blink::mojom::NodeLocationType::kStart));
child_frame->segments.push_back(
blink::mojom::InnerTextSegment::NewText("ghi"));
child_frame->segments.push_back(
blink::mojom::InnerTextSegment::NewText("jkl"));
frame->segments.push_back(
blink::mojom::InnerTextSegment::NewFrame(std::move(child_frame)));
auto result = CreateInnerTextResult(*frame);
EXPECT_EQ("abcdefghijkl", result->inner_text);
ASSERT_TRUE(result->node_offset.has_value());
EXPECT_EQ(6, result->node_offset);
}
} // namespace content_extraction