// 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 <string>
#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<TestMessageLoop> callback_factory_;
NestedEvent main_loop_task_ran_;
};
#endif // PAPPI_TESTS_TEST_MESSAGE_LOOP_H_