[unseasoned-pdf] Add PdfViewPluginBase::HandleInputEvent() test
Adds a minimal unit test for PdfViewPluginBase::HandleInputEvent(). Bug: 1191817 Change-Id: I98c131242d1d0ebce1fb4889d890f7b307ee17a0 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3373134 Commit-Queue: K. Moon <kmoon@chromium.org> Auto-Submit: K. Moon <kmoon@chromium.org> Reviewed-by: Hui Yingst <nigi@chromium.org> Commit-Queue: Hui Yingst <nigi@chromium.org> Cr-Commit-Position: refs/heads/main@{#956572}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
dfe741e94a
commit
59f3b67233
@ -567,8 +567,6 @@ void PdfViewPluginBase::SetLinkUnderCursor(
|
|||||||
NotifyLinkUnderCursor();
|
NotifyLinkUnderCursor();
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(crbug.com/1191817): Add tests for input events. Unit testing should be
|
|
||||||
// feasible now that the Pepper dependency is removed for input events.
|
|
||||||
bool PdfViewPluginBase::HandleInputEvent(const blink::WebInputEvent& event) {
|
bool PdfViewPluginBase::HandleInputEvent(const blink::WebInputEvent& event) {
|
||||||
// Ignore user input in read-only mode.
|
// Ignore user input in read-only mode.
|
||||||
if (engine()->IsReadOnly())
|
if (engine()->IsReadOnly())
|
||||||
|
@ -31,7 +31,10 @@
|
|||||||
#include "testing/gmock/include/gmock/gmock.h"
|
#include "testing/gmock/include/gmock/gmock.h"
|
||||||
#include "testing/gtest/include/gtest/gtest.h"
|
#include "testing/gtest/include/gtest/gtest.h"
|
||||||
#include "third_party/abseil-cpp/absl/types/optional.h"
|
#include "third_party/abseil-cpp/absl/types/optional.h"
|
||||||
|
#include "third_party/blink/public/common/input/web_input_event.h"
|
||||||
|
#include "third_party/blink/public/common/input/web_mouse_event.h"
|
||||||
#include "third_party/skia/include/core/SkColor.h"
|
#include "third_party/skia/include/core/SkColor.h"
|
||||||
|
#include "ui/gfx/geometry/point_f.h"
|
||||||
#include "ui/gfx/geometry/size.h"
|
#include "ui/gfx/geometry/size.h"
|
||||||
|
|
||||||
namespace chrome_pdf {
|
namespace chrome_pdf {
|
||||||
@ -160,6 +163,7 @@ class FakePdfViewPluginBase : public PdfViewPluginBase {
|
|||||||
using PdfViewPluginBase::accessibility_state;
|
using PdfViewPluginBase::accessibility_state;
|
||||||
using PdfViewPluginBase::engine;
|
using PdfViewPluginBase::engine;
|
||||||
using PdfViewPluginBase::full_frame;
|
using PdfViewPluginBase::full_frame;
|
||||||
|
using PdfViewPluginBase::HandleInputEvent;
|
||||||
using PdfViewPluginBase::HandleMessage;
|
using PdfViewPluginBase::HandleMessage;
|
||||||
using PdfViewPluginBase::LoadUrl;
|
using PdfViewPluginBase::LoadUrl;
|
||||||
using PdfViewPluginBase::SetZoom;
|
using PdfViewPluginBase::SetZoom;
|
||||||
@ -780,6 +784,25 @@ TEST_F(PdfViewPluginBaseTest, DocumentHasUnsupportedFeatureWithoutFullFrame) {
|
|||||||
fake_plugin_.GetNotifiedBrowserAboutUnsupportedFeatureForTesting());
|
fake_plugin_.GetNotifiedBrowserAboutUnsupportedFeatureForTesting());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(PdfViewPluginBaseWithEngineTest, HandleInputEvent) {
|
||||||
|
auto* engine = static_cast<TestPDFiumEngine*>(fake_plugin_.engine());
|
||||||
|
EXPECT_CALL(*engine, HandleInputEvent)
|
||||||
|
.WillRepeatedly([](const blink::WebInputEvent& event) {
|
||||||
|
const auto& mouse_event =
|
||||||
|
static_cast<const blink::WebMouseEvent&>(event);
|
||||||
|
EXPECT_EQ(blink::WebInputEvent::Type::kMouseDown,
|
||||||
|
mouse_event.GetType());
|
||||||
|
EXPECT_EQ(gfx::PointF(10.0f, 20.0f), mouse_event.PositionInWidget());
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
|
||||||
|
blink::WebMouseEvent mouse_event;
|
||||||
|
mouse_event.SetType(blink::WebInputEvent::Type::kMouseDown);
|
||||||
|
mouse_event.SetPositionInWidget(10.0f, 20.0f);
|
||||||
|
|
||||||
|
EXPECT_TRUE(fake_plugin_.HandleInputEvent(mouse_event));
|
||||||
|
}
|
||||||
|
|
||||||
TEST_F(PdfViewPluginBaseTest, EnteredEditMode) {
|
TEST_F(PdfViewPluginBaseTest, EnteredEditMode) {
|
||||||
EXPECT_CALL(fake_plugin_, SetPluginCanSave(true));
|
EXPECT_CALL(fake_plugin_, SetPluginCanSave(true));
|
||||||
fake_plugin_.EnteredEditMode();
|
fake_plugin_.EnteredEditMode();
|
||||||
|
@ -721,28 +721,8 @@ TEST_F(PdfViewWebPluginMouseEventsTest,
|
|||||||
|
|
||||||
class PdfViewWebPluginImeTest : public PdfViewWebPluginTest {
|
class PdfViewWebPluginImeTest : public PdfViewWebPluginTest {
|
||||||
public:
|
public:
|
||||||
class TestPDFiumEngineForIme : public TestPDFiumEngine {
|
|
||||||
public:
|
|
||||||
explicit TestPDFiumEngineForIme(PDFEngine::Client* client)
|
|
||||||
: TestPDFiumEngine(client) {}
|
|
||||||
|
|
||||||
// TestPDFiumEngine:
|
|
||||||
MOCK_METHOD(bool,
|
|
||||||
HandleInputEvent,
|
|
||||||
(const blink::WebInputEvent&),
|
|
||||||
(override));
|
|
||||||
};
|
|
||||||
|
|
||||||
std::unique_ptr<TestPDFiumEngine> CreateEngine() override {
|
|
||||||
return std::make_unique<NiceMock<TestPDFiumEngineForIme>>(plugin_.get());
|
|
||||||
}
|
|
||||||
|
|
||||||
TestPDFiumEngineForIme* engine() {
|
|
||||||
return static_cast<TestPDFiumEngineForIme*>(engine_ptr_);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TestImeSetCompositionForPlugin(const blink::WebString& text) {
|
void TestImeSetCompositionForPlugin(const blink::WebString& text) {
|
||||||
EXPECT_CALL(*engine(), HandleInputEvent).Times(0);
|
EXPECT_CALL(*engine_ptr_, HandleInputEvent).Times(0);
|
||||||
plugin_->ImeSetCompositionForPlugin(text, std::vector<ui::ImeTextSpan>(),
|
plugin_->ImeSetCompositionForPlugin(text, std::vector<ui::ImeTextSpan>(),
|
||||||
gfx::Range(),
|
gfx::Range(),
|
||||||
/*selection_start=*/0,
|
/*selection_start=*/0,
|
||||||
@ -756,12 +736,12 @@ class PdfViewWebPluginImeTest : public PdfViewWebPluginTest {
|
|||||||
if (expected_text16.size()) {
|
if (expected_text16.size()) {
|
||||||
for (const auto& c : expected_text16) {
|
for (const auto& c : expected_text16) {
|
||||||
base::StringPiece16 expected_key(&c, 1);
|
base::StringPiece16 expected_key(&c, 1);
|
||||||
EXPECT_CALL(*engine(),
|
EXPECT_CALL(*engine_ptr_,
|
||||||
HandleInputEvent(IsExpectedImeKeyEvent(expected_key)))
|
HandleInputEvent(IsExpectedImeKeyEvent(expected_key)))
|
||||||
.WillOnce(Return(true));
|
.WillOnce(Return(true));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
EXPECT_CALL(*engine(), HandleInputEvent).Times(0);
|
EXPECT_CALL(*engine_ptr_, HandleInputEvent).Times(0);
|
||||||
}
|
}
|
||||||
plugin_->ImeFinishComposingTextForPlugin(false);
|
plugin_->ImeFinishComposingTextForPlugin(false);
|
||||||
}
|
}
|
||||||
@ -772,11 +752,12 @@ class PdfViewWebPluginImeTest : public PdfViewWebPluginTest {
|
|||||||
if (expected_text16.size()) {
|
if (expected_text16.size()) {
|
||||||
for (const auto& c : expected_text16) {
|
for (const auto& c : expected_text16) {
|
||||||
base::StringPiece16 event(&c, 1);
|
base::StringPiece16 event(&c, 1);
|
||||||
EXPECT_CALL(*engine(), HandleInputEvent(IsExpectedImeKeyEvent(event)))
|
EXPECT_CALL(*engine_ptr_,
|
||||||
|
HandleInputEvent(IsExpectedImeKeyEvent(event)))
|
||||||
.WillOnce(Return(true));
|
.WillOnce(Return(true));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
EXPECT_CALL(*engine(), HandleInputEvent).Times(0);
|
EXPECT_CALL(*engine_ptr_, HandleInputEvent).Times(0);
|
||||||
}
|
}
|
||||||
plugin_->ImeCommitTextForPlugin(text, std::vector<ui::ImeTextSpan>(),
|
plugin_->ImeCommitTextForPlugin(text, std::vector<ui::ImeTextSpan>(),
|
||||||
gfx::Range(),
|
gfx::Range(),
|
||||||
|
@ -42,6 +42,11 @@ class TestPDFiumEngine : public PDFiumEngine {
|
|||||||
MOCK_METHOD(void, ScrolledToXPosition, (int), (override));
|
MOCK_METHOD(void, ScrolledToXPosition, (int), (override));
|
||||||
MOCK_METHOD(void, ScrolledToYPosition, (int), (override));
|
MOCK_METHOD(void, ScrolledToYPosition, (int), (override));
|
||||||
|
|
||||||
|
MOCK_METHOD(bool,
|
||||||
|
HandleInputEvent,
|
||||||
|
(const blink::WebInputEvent&),
|
||||||
|
(override));
|
||||||
|
|
||||||
MOCK_METHOD(void, ZoomUpdated, (double), (override));
|
MOCK_METHOD(void, ZoomUpdated, (double), (override));
|
||||||
|
|
||||||
MOCK_METHOD(gfx::Size,
|
MOCK_METHOD(gfx::Size,
|
||||||
|
Reference in New Issue
Block a user