blob: 0f6e8d286d2a56464dab7146096bc81f0d56fd3f [file] [log] [blame]
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/extensions/api/diagnostics/diagnostics_api.h"
namespace SendPacket = extensions::api::diagnostics::SendPacket;
namespace {
const char kErrorPingNotImplemented[] = "Not implemented";
const char kErrorPingFailed[] = "Failed to send ping packet";
}
namespace extensions {
DiagnosticsSendPacketFunction::DiagnosticsSendPacketFunction() {}
DiagnosticsSendPacketFunction::~DiagnosticsSendPacketFunction() {}
bool DiagnosticsSendPacketFunction::Prepare() {
parameters_ = SendPacket::Params::Create(*args_);
EXTENSION_FUNCTION_VALIDATE(parameters_.get());
return true;
}
bool DiagnosticsSendPacketFunction::Respond() {
return error_.empty();
}
void DiagnosticsSendPacketFunction::OnCompleted(
SendPacketResultCode result_code,
const std::string& ip,
double latency) {
switch (result_code) {
case SEND_PACKET_OK: {
extensions::api::diagnostics::SendPacketResult result;
result.ip = ip;
result.latency = latency;
results_ = SendPacket::Results::Create(result);
break;
}
case SEND_PACKET_NOT_IMPLEMENTED:
SetError(kErrorPingNotImplemented);
break;
case SEND_PACKET_FAILED:
SetError(kErrorPingFailed);
break;
}
AsyncWorkCompleted();
}
} // namespace extensions