diff options
author | tsepez <tsepez@chromium.org> | 2016-08-04 12:47:42 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-08-04 12:47:42 -0700 |
commit | 32e693fe13105fab5baf81b334e932fce62d89b5 (patch) | |
tree | 97620d6affb77fc07974906f86a69e9f4f84d87d /fpdfsdk/fpdfformfill_embeddertest.cpp | |
parent | 0fa54b80d488571f10d8a94f6740006f0bf4957c (diff) | |
download | pdfium-32e693fe13105fab5baf81b334e932fce62d89b5.tar.xz |
Fix issue when firing TimerProc() destroys timerchromium/2820
We must look the timer up a second time since the callback
may have released it.
BUG=634394
Review-Url: https://codereview.chromium.org/2214003003
Diffstat (limited to 'fpdfsdk/fpdfformfill_embeddertest.cpp')
-rw-r--r-- | fpdfsdk/fpdfformfill_embeddertest.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/fpdfsdk/fpdfformfill_embeddertest.cpp b/fpdfsdk/fpdfformfill_embeddertest.cpp index 27b889085c..a1425153a1 100644 --- a/fpdfsdk/fpdfformfill_embeddertest.cpp +++ b/fpdfsdk/fpdfformfill_embeddertest.cpp @@ -134,4 +134,27 @@ TEST_F(FPDFFormFillEmbeddertest, BUG_620428) { EXPECT_STREQ(L"done", alerts[0].message.c_str()); } +TEST_F(FPDFFormFillEmbeddertest, BUG_634394) { + // Cancel timer inside timer callback. + EmbedderTestTimerHandlingDelegate delegate; + SetDelegate(&delegate); + + EXPECT_TRUE(OpenDocument("bug_634394.pdf")); + FPDF_PAGE page = LoadPage(0); + EXPECT_TRUE(page); + DoOpenActions(); + + // Timers fire at most once per AdvanceTime(), allow intervals + // to fire several times if possible. + delegate.AdvanceTime(1000); + delegate.AdvanceTime(1000); + delegate.AdvanceTime(1000); + delegate.AdvanceTime(1000); + delegate.AdvanceTime(1000); + UnloadPage(page); + + const auto& alerts = delegate.GetAlerts(); + EXPECT_EQ(2U, alerts.size()); +} + #endif // PDF_ENABLE_V8 |