1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file.
4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ppapi/cpp/private/input_event_private.h"
6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ppapi/cpp/module_impl.h"
8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace pp {
10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace {
12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)template <> const char* interface_name<PPB_InputEvent_Private>() {
14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return PPB_INPUTEVENT_PRIVATE_INTERFACE;
15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}  // namespace
18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)InputEventPrivate::InputEventPrivate() : InputEvent() {
20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)InputEventPrivate::InputEventPrivate(const InputEvent& event) : InputEvent() {
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  if (!has_interface<PPB_InputEvent_Private_0_1>())
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    return;
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  Module::Get()->core()->AddRefResource(event.pp_resource());
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  PassRefFromConstructor(event.pp_resource());
27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)bool InputEventPrivate::TraceInputLatency(bool has_damage) {
30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  if (!has_interface<PPB_InputEvent_Private_0_1>())
31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    return false;
32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return PP_ToBool(
33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      get_interface<PPB_InputEvent_Private_0_1>()->TraceInputLatency(
34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)          pp_resource(), PP_FromBool(has_damage)));
35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void InputEventPrivate::StartTrackingLatency(const InstanceHandle& instance) {
38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  if (!has_interface<PPB_InputEvent_Private>())
39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    return;
40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return get_interface<PPB_InputEvent_Private>()->StartTrackingLatency(
41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      instance.pp_instance());
42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}  // namespace pp
45