OLD | NEW |
1 // Copyright 2015 PDFium Authors. All rights reserved. | 1 // Copyright 2015 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "public/fpdf_formfill.h" | 5 #include "public/fpdf_formfill.h" |
6 #include "testing/embedder_test.h" | 6 #include "testing/embedder_test.h" |
7 #include "testing/embedder_test_mock_delegate.h" | 7 #include "testing/embedder_test_mock_delegate.h" |
8 #include "testing/embedder_test_timer_handling_delegate.h" | 8 #include "testing/embedder_test_timer_handling_delegate.h" |
9 #include "testing/gmock/include/gmock/gmock.h" | 9 #include "testing/gmock/include/gmock/gmock.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
11 | 11 |
12 using testing::_; | 12 using testing::_; |
13 using testing::Return; | 13 using testing::Return; |
14 | 14 |
15 class FPDFFormFillEmbeddertest : public EmbedderTest {}; | 15 class FPDFFormFillEmbeddertest : public EmbedderTest {}; |
16 | 16 |
17 TEST_F(FPDFFormFillEmbeddertest, FirstTest) { | 17 TEST_F(FPDFFormFillEmbeddertest, FirstTest) { |
18 EmbedderTestMockDelegate mock; | 18 EmbedderTestMockDelegate mock; |
19 EXPECT_CALL(mock, Alert(_, _, _, _)).Times(0); | 19 EXPECT_CALL(mock, Alert(_, _, _, _)).Times(0); |
20 EXPECT_CALL(mock, UnsupportedHandler(_)).Times(0); | 20 EXPECT_CALL(mock, UnsupportedHandler(_)).Times(0); |
21 EXPECT_CALL(mock, SetTimer(_, _)).Times(0); | 21 EXPECT_CALL(mock, SetTimer(_, _)).Times(0); |
22 EXPECT_CALL(mock, KillTimer(_)).Times(0); | 22 EXPECT_CALL(mock, KillTimer(_)).Times(0); |
23 SetDelegate(&mock); | 23 SetDelegate(&mock); |
24 | 24 |
25 EXPECT_TRUE(OpenDocument("hello_world.pdf")); | 25 EXPECT_TRUE(OpenDocument("hello_world.pdf")); |
26 FPDF_PAGE page = LoadPage(0); | 26 FPDF_PAGE page = LoadPage(0); |
27 EXPECT_NE(nullptr, page); | 27 EXPECT_TRUE(page); |
28 UnloadPage(page); | 28 UnloadPage(page); |
29 } | 29 } |
30 | 30 |
31 TEST_F(FPDFFormFillEmbeddertest, BUG_487928) { | 31 TEST_F(FPDFFormFillEmbeddertest, BUG_487928) { |
32 EmbedderTestTimerHandlingDelegate delegate; | 32 EmbedderTestTimerHandlingDelegate delegate; |
33 SetDelegate(&delegate); | 33 SetDelegate(&delegate); |
34 | 34 |
35 EXPECT_TRUE(OpenDocument("bug_487928.pdf")); | 35 EXPECT_TRUE(OpenDocument("bug_487928.pdf")); |
36 FPDF_PAGE page = LoadPage(0); | 36 FPDF_PAGE page = LoadPage(0); |
37 EXPECT_NE(nullptr, page); | 37 EXPECT_TRUE(page); |
38 DoOpenActions(); | 38 DoOpenActions(); |
39 delegate.AdvanceTime(5000); | 39 delegate.AdvanceTime(5000); |
40 UnloadPage(page); | 40 UnloadPage(page); |
41 } | 41 } |
42 | 42 |
43 TEST_F(FPDFFormFillEmbeddertest, BUG_507316) { | 43 TEST_F(FPDFFormFillEmbeddertest, BUG_507316) { |
44 EmbedderTestTimerHandlingDelegate delegate; | 44 EmbedderTestTimerHandlingDelegate delegate; |
45 SetDelegate(&delegate); | 45 SetDelegate(&delegate); |
46 | 46 |
47 EXPECT_TRUE(OpenDocument("bug_507316.pdf")); | 47 EXPECT_TRUE(OpenDocument("bug_507316.pdf")); |
48 FPDF_PAGE page = LoadAndCachePage(2); | 48 FPDF_PAGE page = LoadAndCachePage(2); |
49 EXPECT_NE(nullptr, page); | 49 EXPECT_TRUE(page); |
50 DoOpenActions(); | 50 DoOpenActions(); |
51 delegate.AdvanceTime(4000); | 51 delegate.AdvanceTime(4000); |
52 UnloadPage(page); | 52 UnloadPage(page); |
53 } | 53 } |
54 | 54 |
55 TEST_F(FPDFFormFillEmbeddertest, BUG_514690) { | 55 TEST_F(FPDFFormFillEmbeddertest, BUG_514690) { |
56 EXPECT_TRUE(OpenDocument("hello_world.pdf")); | 56 EXPECT_TRUE(OpenDocument("hello_world.pdf")); |
57 FPDF_PAGE page = LoadPage(0); | 57 FPDF_PAGE page = LoadPage(0); |
58 EXPECT_NE(nullptr, page); | 58 EXPECT_TRUE(page); |
59 | 59 |
60 // Test that FORM_OnMouseMove() etc. permit null HANDLES and PAGES. | 60 // Test that FORM_OnMouseMove() etc. permit null HANDLES and PAGES. |
61 FORM_OnMouseMove(nullptr, page, 0, 10.0, 10.0); | 61 FORM_OnMouseMove(nullptr, page, 0, 10.0, 10.0); |
62 FORM_OnMouseMove(form_handle(), nullptr, 0, 10.0, 10.0); | 62 FORM_OnMouseMove(form_handle(), nullptr, 0, 10.0, 10.0); |
63 | 63 |
64 UnloadPage(page); | 64 UnloadPage(page); |
65 } | 65 } |
66 | 66 |
67 #ifdef PDF_ENABLE_V8 | 67 #ifdef PDF_ENABLE_V8 |
68 TEST_F(FPDFFormFillEmbeddertest, BUG_551248) { | 68 TEST_F(FPDFFormFillEmbeddertest, BUG_551248) { |
| 69 // Test that timers fire once and intervals fire repeatedly. |
69 EmbedderTestTimerHandlingDelegate delegate; | 70 EmbedderTestTimerHandlingDelegate delegate; |
70 SetDelegate(&delegate); | 71 SetDelegate(&delegate); |
71 | 72 |
72 EXPECT_TRUE(OpenDocument("bug_551248.pdf")); | 73 EXPECT_TRUE(OpenDocument("bug_551248.pdf")); |
73 FPDF_PAGE page = LoadPage(0); | 74 FPDF_PAGE page = LoadPage(0); |
74 EXPECT_NE(nullptr, page); | 75 EXPECT_TRUE(page); |
| 76 DoOpenActions(); |
| 77 |
| 78 const auto& alerts = delegate.GetAlerts(); |
| 79 EXPECT_EQ(0U, alerts.size()); |
| 80 |
| 81 delegate.AdvanceTime(1000); |
| 82 EXPECT_EQ(0U, alerts.size()); // nothing fired. |
| 83 delegate.AdvanceTime(1000); |
| 84 EXPECT_EQ(1U, alerts.size()); // interval fired. |
| 85 delegate.AdvanceTime(1000); |
| 86 EXPECT_EQ(2U, alerts.size()); // timer fired. |
| 87 delegate.AdvanceTime(1000); |
| 88 EXPECT_EQ(3U, alerts.size()); // interval fired again. |
| 89 delegate.AdvanceTime(1000); |
| 90 EXPECT_EQ(3U, alerts.size()); // nothing fired. |
| 91 delegate.AdvanceTime(1000); |
| 92 EXPECT_EQ(4U, alerts.size()); // interval fired again. |
| 93 delegate.AdvanceTime(1000); |
| 94 EXPECT_EQ(4U, alerts.size()); // nothing fired. |
| 95 UnloadPage(page); |
| 96 |
| 97 ASSERT_EQ(4U, alerts.size()); // nothing else fired. |
| 98 |
| 99 EXPECT_STREQ(L"interval fired", alerts[0].message.c_str()); |
| 100 EXPECT_STREQ(L"Alert", alerts[0].title.c_str()); |
| 101 EXPECT_EQ(0, alerts[0].type); |
| 102 EXPECT_EQ(0, alerts[0].icon); |
| 103 |
| 104 EXPECT_STREQ(L"timer fired", alerts[1].message.c_str()); |
| 105 EXPECT_STREQ(L"Alert", alerts[1].title.c_str()); |
| 106 EXPECT_EQ(0, alerts[1].type); |
| 107 EXPECT_EQ(0, alerts[1].icon); |
| 108 |
| 109 EXPECT_STREQ(L"interval fired", alerts[2].message.c_str()); |
| 110 EXPECT_STREQ(L"Alert", alerts[2].title.c_str()); |
| 111 EXPECT_EQ(0, alerts[2].type); |
| 112 EXPECT_EQ(0, alerts[2].icon); |
| 113 |
| 114 EXPECT_STREQ(L"interval fired", alerts[3].message.c_str()); |
| 115 EXPECT_STREQ(L"Alert", alerts[3].title.c_str()); |
| 116 EXPECT_EQ(0, alerts[3].type); |
| 117 EXPECT_EQ(0, alerts[3].icon); |
| 118 } |
| 119 |
| 120 TEST_F(FPDFFormFillEmbeddertest, BUG_620428) { |
| 121 // Test that timers and intervals are cancelable. |
| 122 EmbedderTestTimerHandlingDelegate delegate; |
| 123 SetDelegate(&delegate); |
| 124 |
| 125 EXPECT_TRUE(OpenDocument("bug_620428.pdf")); |
| 126 FPDF_PAGE page = LoadPage(0); |
| 127 EXPECT_TRUE(page); |
75 DoOpenActions(); | 128 DoOpenActions(); |
76 delegate.AdvanceTime(5000); | 129 delegate.AdvanceTime(5000); |
77 UnloadPage(page); | 130 UnloadPage(page); |
78 | 131 |
79 const auto& alerts = delegate.GetAlerts(); | 132 const auto& alerts = delegate.GetAlerts(); |
80 ASSERT_EQ(1U, alerts.size()); | 133 EXPECT_EQ(0U, alerts.size()); |
| 134 } |
81 | 135 |
82 EXPECT_STREQ(L"hello world", alerts[0].message.c_str()); | |
83 EXPECT_STREQ(L"Alert", alerts[0].title.c_str()); | |
84 EXPECT_EQ(0, alerts[0].type); | |
85 EXPECT_EQ(0, alerts[0].icon); | |
86 } | |
87 #endif // PDF_ENABLE_V8 | 136 #endif // PDF_ENABLE_V8 |
OLD | NEW |