From 6efc0ad16665ab74c5033bdc36dbcb7c8aad7e6c Mon Sep 17 00:00:00 2001 From: Tom Sepez Date: Tue, 2 Jun 2015 17:11:18 -0700 Subject: Merge to XFA: Automated test case for 487928. Original Review URL: https://codereview.chromium.org/1153213004 R=thestig@chromium.org TBR=thestig@chromium.org Review URL: https://codereview.chromium.org/1158483004 --- testing/embedder_test_timer_handling_delegate.h | 54 +++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 testing/embedder_test_timer_handling_delegate.h (limited to 'testing/embedder_test_timer_handling_delegate.h') diff --git a/testing/embedder_test_timer_handling_delegate.h b/testing/embedder_test_timer_handling_delegate.h new file mode 100644 index 0000000000..d05a134b4e --- /dev/null +++ b/testing/embedder_test_timer_handling_delegate.h @@ -0,0 +1,54 @@ +// 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. + +#ifndef TESTING_EMBEDDER_TEST_TIMER_HANDLING_DELEGATE_H_ +#define TESTING_EMBEDDER_TEST_TIMER_HANDLING_DELEGATE_H_ + +#include +#include + +#include "embedder_test.h" + +class EmbedderTestTimerHandlingDelegate : public EmbedderTest::Delegate { +public: + int SetTimer(int msecs, TimerCallback fn) override { + expiry_to_timer_map_.insert(std::pair( + msecs + imaginary_elapsed_msecs_, Timer(++next_timer_id_, fn))); + return next_timer_id_; + } + + void KillTimer(int id) override { + for (auto iter = expiry_to_timer_map_.begin(); + iter != expiry_to_timer_map_.end(); ++iter) { + if (iter->second.first == id) { + expiry_to_timer_map_.erase(iter); + break; + } + } + } + + void AdvanceTime(int increment_msecs) { + imaginary_elapsed_msecs_ += increment_msecs; + while (1) { + auto iter = expiry_to_timer_map_.begin(); + if (iter == expiry_to_timer_map_.end()) { + break; + } + Timer t = iter->second; + if (t.first > imaginary_elapsed_msecs_) { + break; + } + expiry_to_timer_map_.erase(iter); + t.second(t.first); // Fire timer. + } + } + +protected: + using Timer = std::pair; // ID, callback pair. + std::multimap expiry_to_timer_map_; // Keyed by timeout. + int next_timer_id_ = 0; + int imaginary_elapsed_msecs_ = 0; +}; + +#endif // TESTING_EMBEDDER_TEST_TIMER_HANDLING_DELEGATE_H_ -- cgit v1.2.3