1// Copyright (c) 2013 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/extensions/event_base.h"
6
7#include "ppapi/cpp/extensions/dev/events_dev.h"
8
9namespace pp {
10namespace ext {
11namespace internal {
12
13GenericEventBase::GenericEventBase(
14    const InstanceHandle& instance,
15    const PP_Ext_EventListener& pp_listener)
16    : instance_(instance),
17      listener_id_(0),
18      pp_listener_(pp_listener) {
19}
20
21GenericEventBase::~GenericEventBase() {
22  StopListening();
23}
24
25bool GenericEventBase::StartListening() {
26  if (IsListening())
27    return true;
28
29  listener_id_ = events::Events_Dev::AddListener(instance_.pp_instance(),
30                                                 pp_listener_);
31  return IsListening();
32}
33
34void GenericEventBase::StopListening() {
35  if (!IsListening())
36    return;
37
38  events::Events_Dev::RemoveListener(instance_.pp_instance(), listener_id_);
39  listener_id_ = 0;
40}
41
42}  // namespace internal
43}  // namespace ext
44}  // namespace pp
45