168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// found in the LICENSE file. 468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "ppapi/cpp/network_monitor.h" 668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "ppapi/c/ppb_network_monitor.h" 868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "ppapi/cpp/completion_callback.h" 968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "ppapi/cpp/instance.h" 1068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "ppapi/cpp/module_impl.h" 1168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "ppapi/cpp/network_list.h" 1268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)namespace pp { 1468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)namespace { 1668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)template <> const char* interface_name<PPB_NetworkMonitor_1_0>() { 1868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) return PPB_NETWORKMONITOR_INTERFACE_1_0; 1968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} 2068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 2168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} // namespace 2268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 2368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)NetworkMonitor::NetworkMonitor(const InstanceHandle& instance) { 2468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) if (has_interface<PPB_NetworkMonitor_1_0>()) { 2568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) PassRefFromConstructor(get_interface<PPB_NetworkMonitor_1_0>()->Create( 2668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) instance.pp_instance())); 2768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) } 2868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} 2968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 3068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)int32_t NetworkMonitor::UpdateNetworkList( 3168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) const CompletionCallbackWithOutput<NetworkList>& callback) { 3268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) if (has_interface<PPB_NetworkMonitor_1_0>()) { 3368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) return get_interface<PPB_NetworkMonitor_1_0>()->UpdateNetworkList( 3468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) pp_resource(), callback.output(), callback.pp_completion_callback()); 3568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) } 3668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) return callback.MayForce(PP_ERROR_NOINTERFACE); 3768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} 3868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 3968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// static 4068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)bool NetworkMonitor::IsAvailable() { 4168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) return has_interface<PPB_NetworkMonitor_1_0>(); 4268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} 4368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 4468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} // namespace pp 45