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