diff --git a/pdf/pdf_view_web_plugin_unittest.cc b/pdf/pdf_view_web_plugin_unittest.cc index 29889cf1694467..92343407d69a28 100644 --- a/pdf/pdf_view_web_plugin_unittest.cc +++ b/pdf/pdf_view_web_plugin_unittest.cc @@ -5,6 +5,7 @@ #include "pdf/pdf_view_web_plugin.h" #include +#include #include #include "cc/paint/paint_canvas.h" @@ -14,6 +15,7 @@ #include "pdf/test/test_helpers.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" +#include "third_party/blink/public/platform/web_string.h" #include "third_party/blink/public/platform/web_text_input_type.h" #include "third_party/blink/public/web/web_associated_url_loader.h" #include "third_party/blink/public/web/web_plugin_params.h" @@ -67,6 +69,10 @@ SkBitmap GenerateExpectedBitmapForPaint(float device_scale, return expected_bitmap; } +MATCHER_P(EqualsWebString, selected_string, "") { + return arg.Utf8() == selected_string; +} + class FakeContainerWrapper final : public PdfViewWebPlugin::ContainerWrapper { public: explicit FakeContainerWrapper(PdfViewWebPlugin* web_plugin) @@ -282,6 +288,31 @@ TEST_F(PdfViewWebPluginTest, PaintSnapshots) { } } +TEST_F(PdfViewWebPluginTest, ChangeTextSelection) { + ASSERT_FALSE(plugin_->HasSelection()); + ASSERT_TRUE(plugin_->SelectionAsText().IsEmpty()); + ASSERT_TRUE(plugin_->SelectionAsMarkup().IsEmpty()); + + testing::InSequence s; + static constexpr char kSelectedText[] = "1234"; + EXPECT_CALL(*wrapper_ptr_, + TextSelectionChanged(EqualsWebString(kSelectedText), 0, + gfx::Range(0, 4))); + + plugin_->SetSelectedText(kSelectedText); + EXPECT_TRUE(plugin_->HasSelection()); + EXPECT_EQ(kSelectedText, plugin_->SelectionAsText().Utf8()); + EXPECT_EQ(kSelectedText, plugin_->SelectionAsMarkup().Utf8()); + + static constexpr char kEmptyText[] = ""; + EXPECT_CALL(*wrapper_ptr_, TextSelectionChanged(EqualsWebString(kEmptyText), + 0, gfx::Range(0, 0))); + plugin_->SetSelectedText(kEmptyText); + EXPECT_FALSE(plugin_->HasSelection()); + EXPECT_TRUE(plugin_->SelectionAsText().IsEmpty()); + EXPECT_TRUE(plugin_->SelectionAsMarkup().IsEmpty()); +} + TEST_F(PdfViewWebPluginTest, FormTextFieldFocusChangeUpdatesTextInputType) { ASSERT_EQ(blink::WebTextInputType::kWebTextInputTypeNone, wrapper_ptr_->widget_text_input_type());