// Copyright (c) 2012 The Chromium 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 PAPPI_TESTS_TEST_MESSAGE_LOOP_H_ #define PAPPI_TESTS_TEST_MESSAGE_LOOP_H_ #include #include "ppapi/c/pp_stdint.h" #include "ppapi/tests/test_case.h" #include "ppapi/utility/completion_callback_factory.h" namespace pp { class MessageLoop; } class TestMessageLoop : public TestCase { public: explicit TestMessageLoop(TestingInstance* instance); virtual ~TestMessageLoop(); private: // TestCase implementation. virtual void RunTests(const std::string& filter); std::string TestBasics(); std::string TestPost(); // This just ensures we have a unique number for each little thing we test. enum TestParam { kInvalid, kMainToMain, kBeforeStart, kAfterStart}; // A task to run on the main thread. It sets param_ and quits the main loop. void SetParamAndQuitTask(int32_t result, TestParam param); // A task to run on a background thread. It posts SetResultAndQuitTask to the // main loop, echoing result. void EchoParamToMainTask(int32_t result, TestParam param); // The last test param we received in SetParamAndQuitTask (or kInvalid if // none). TestParam param_; pp::CompletionCallbackFactory callback_factory_; NestedEvent main_loop_task_ran_; }; #endif // PAPPI_TESTS_TEST_MESSAGE_LOOP_H_