// Copyright 2015 PDFium 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 "public/fpdf_formfill.h" #include "testing/embedder_test.h" #include "testing/embedder_test_mock_delegate.h" #include "testing/embedder_test_timer_handling_delegate.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" using testing::_; using testing::Return; class FPDFFormFillEmbeddertest : public EmbedderTest {}; TEST_F(FPDFFormFillEmbeddertest, FirstTest) { EmbedderTestMockDelegate mock; EXPECT_CALL(mock, Alert(_, _, _, _)).Times(0); EXPECT_CALL(mock, UnsupportedHandler(_)).Times(0); EXPECT_CALL(mock, SetTimer(_, _)).Times(0); EXPECT_CALL(mock, KillTimer(_)).Times(0); SetDelegate(&mock); EXPECT_TRUE(OpenDocument("hello_world.pdf")); FPDF_PAGE page = LoadPage(0); EXPECT_NE(nullptr, page); UnloadPage(page); } TEST_F(FPDFFormFillEmbeddertest, BUG_487928) { EmbedderTestTimerHandlingDelegate delegate; SetDelegate(&delegate); EXPECT_TRUE(OpenDocument("bug_487928.pdf")); FPDF_PAGE page = LoadPage(0); EXPECT_NE(nullptr, page); DoOpenActions(); delegate.AdvanceTime(5000); UnloadPage(page); } TEST_F(FPDFFormFillEmbeddertest, BUG_507316) { EmbedderTestTimerHandlingDelegate delegate; SetDelegate(&delegate); EXPECT_TRUE(OpenDocument("bug_507316.pdf")); FPDF_PAGE page = LoadAndCachePage(2); EXPECT_NE(nullptr, page); DoOpenActions(); delegate.AdvanceTime(4000); UnloadPage(page); } TEST_F(FPDFFormFillEmbeddertest, BUG_514690) { EXPECT_TRUE(OpenDocument("hello_world.pdf")); FPDF_PAGE page = LoadPage(0); EXPECT_NE(nullptr, page); // Test that FORM_OnMouseMove() etc. permit null HANDLES and PAGES. FORM_OnMouseMove(nullptr, page, 0, 10.0, 10.0); FORM_OnMouseMove(form_handle(), nullptr, 0, 10.0, 10.0); UnloadPage(page); } #ifdef PDF_ENABLE_V8 TEST_F(FPDFFormFillEmbeddertest, BUG_551248) { EmbedderTestTimerHandlingDelegate delegate; SetDelegate(&delegate); EXPECT_TRUE(OpenDocument("bug_551248.pdf")); FPDF_PAGE page = LoadPage(0); EXPECT_NE(nullptr, page); DoOpenActions(); delegate.AdvanceTime(5000); UnloadPage(page); const auto& alerts = delegate.GetAlerts(); ASSERT_EQ(1U, alerts.size()); EXPECT_STREQ(L"hello world", alerts[0].message.c_str()); EXPECT_STREQ(L"Alert", alerts[0].title.c_str()); EXPECT_EQ(0, alerts[0].type); EXPECT_EQ(0, alerts[0].icon); } #endif // PDF_ENABLE_V8