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/cpp/private/flash_message_loop.h"
6
7#include "ppapi/c/pp_errors.h"
8#include "ppapi/c/private/ppb_flash_message_loop.h"
9#include "ppapi/cpp/instance_handle.h"
10#include "ppapi/cpp/module_impl.h"
11
12namespace pp {
13
14namespace {
15
16template <> const char* interface_name<PPB_Flash_MessageLoop>() {
17  return PPB_FLASH_MESSAGELOOP_INTERFACE;
18}
19
20}  // namespace
21
22namespace flash {
23
24MessageLoop::MessageLoop(const InstanceHandle& instance) {
25  if (has_interface<PPB_Flash_MessageLoop>()) {
26    PassRefFromConstructor(get_interface<PPB_Flash_MessageLoop>()->Create(
27        instance.pp_instance()));
28  }
29}
30
31MessageLoop::~MessageLoop() {
32}
33
34// static
35bool MessageLoop::IsAvailable() {
36  return has_interface<PPB_Flash_MessageLoop>();
37}
38
39int32_t MessageLoop::Run() {
40  if (!has_interface<PPB_Flash_MessageLoop>())
41    return PP_ERROR_NOINTERFACE;
42  return get_interface<PPB_Flash_MessageLoop>()->Run(pp_resource());
43}
44
45void MessageLoop::Quit() {
46  if (has_interface<PPB_Flash_MessageLoop>())
47    get_interface<PPB_Flash_MessageLoop>()->Quit(pp_resource());
48}
49
50}  // namespace flash
51}  // namespace pp
52