1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// found in the LICENSE file. 4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/browser/extensions/api/diagnostics/diagnostics_api.h" 6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace SendPacket = extensions::api::diagnostics::SendPacket; 8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace { 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochconst char kErrorPingNotImplemented[] = "Not implemented"; 12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochconst char kErrorPingFailed[] = "Failed to send ping packet"; 13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace extensions { 17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochDiagnosticsSendPacketFunction::DiagnosticsSendPacketFunction() {} 19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochDiagnosticsSendPacketFunction::~DiagnosticsSendPacketFunction() {} 21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbool DiagnosticsSendPacketFunction::Prepare() { 23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch parameters_ = SendPacket::Params::Create(*args_); 24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch EXTENSION_FUNCTION_VALIDATE(parameters_.get()); 25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return true; 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbool DiagnosticsSendPacketFunction::Respond() { 29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return error_.empty(); 30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid DiagnosticsSendPacketFunction::OnCompleted( 33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SendPacketResultCode result_code, 34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& ip, 35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch double latency) { 36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch switch (result_code) { 37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch case SEND_PACKET_OK: { 38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch extensions::api::diagnostics::SendPacketResult result; 39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch result.ip = ip; 40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch result.latency = latency; 41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch results_ = SendPacket::Results::Create(result); 42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch break; 43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch case SEND_PACKET_NOT_IMPLEMENTED: 45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SetError(kErrorPingNotImplemented); 46eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch break; 47eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch case SEND_PACKET_FAILED: 48eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SetError(kErrorPingFailed); 49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch break; 50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 51eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch AsyncWorkCompleted(); 52eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 54eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} // namespace extensions 55