- add sources.
[platform/framework/web/crosswalk.git] / src / ppapi / tests / test_flash_message_loop.cc
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "ppapi/tests/test_flash_message_loop.h"
6
7 #include "ppapi/c/pp_macros.h"
8 #include "ppapi/cpp/core.h"
9 #include "ppapi/cpp/logging.h"
10 #include "ppapi/cpp/module.h"
11 #include "ppapi/cpp/private/flash_message_loop.h"
12 #include "ppapi/tests/testing_instance.h"
13
14 REGISTER_TEST_CASE(FlashMessageLoop);
15
16 TestFlashMessageLoop::TestFlashMessageLoop(TestingInstance* instance)
17     : TestCase(instance),
18       message_loop_(NULL),
19       PP_ALLOW_THIS_IN_INITIALIZER_LIST(callback_factory_(this)) {
20 }
21
22 TestFlashMessageLoop::~TestFlashMessageLoop() {
23   PP_DCHECK(!message_loop_);
24 }
25
26 void TestFlashMessageLoop::RunTests(const std::string& filter) {
27   RUN_TEST(Basics, filter);
28   RUN_TEST(RunWithoutQuit, filter);
29 }
30
31 std::string TestFlashMessageLoop::TestBasics() {
32   message_loop_ = new pp::flash::MessageLoop(instance_);
33
34   pp::CompletionCallback callback = callback_factory_.NewCallback(
35       &TestFlashMessageLoop::QuitMessageLoopTask);
36   pp::Module::Get()->core()->CallOnMainThread(0, callback);
37   int32_t result = message_loop_->Run();
38
39   ASSERT_TRUE(message_loop_);
40   delete message_loop_;
41   message_loop_ = NULL;
42
43   ASSERT_EQ(result, PP_OK);
44   PASS();
45 }
46
47 std::string TestFlashMessageLoop::TestRunWithoutQuit() {
48   message_loop_ = new pp::flash::MessageLoop(instance_);
49
50   pp::CompletionCallback callback = callback_factory_.NewCallback(
51       &TestFlashMessageLoop::DestroyMessageLoopResourceTask);
52   pp::Module::Get()->core()->CallOnMainThread(0, callback);
53   int32_t result = message_loop_->Run();
54
55   if (message_loop_) {
56     delete message_loop_;
57     message_loop_ = NULL;
58     ASSERT_TRUE(false);
59   }
60
61   ASSERT_EQ(result, PP_ERROR_ABORTED);
62   PASS();
63 }
64
65 void TestFlashMessageLoop::QuitMessageLoopTask(int32_t unused) {
66   if (message_loop_)
67     message_loop_->Quit();
68   else
69     PP_NOTREACHED();
70 }
71
72 void TestFlashMessageLoop::DestroyMessageLoopResourceTask(int32_t unused) {
73   if (message_loop_) {
74     delete message_loop_;
75     message_loop_ = NULL;
76   } else {
77     PP_NOTREACHED();
78   }
79 }