1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_EXTENSIONS_API_DIAGNOSTICS_DIAGNOSTICS_API_H_ 6 #define CHROME_BROWSER_EXTENSIONS_API_DIAGNOSTICS_DIAGNOSTICS_API_H_ 7 8 #include <string> 9 10 #include "base/memory/scoped_ptr.h" 11 #include "chrome/browser/extensions/api/api_function.h" 12 #include "chrome/common/extensions/api/diagnostics.h" 13 14 namespace extensions { 15 16 class DiagnosticsSendPacketFunction : public AsyncApiFunction { 17 public: 18 // Result code for sending packet. Platform specific AsyncWorkStart() will 19 // finish with this ResultCode so we can maximize shared code. 20 enum SendPacketResultCode { 21 // Ping packed is sent and ICMP reply is received before time out. 22 SEND_PACKET_OK, 23 24 // Not implemented on the platform. 25 SEND_PACKET_NOT_IMPLEMENTED, 26 27 // The ping operation failed because of timeout or network unreachable. 28 SEND_PACKET_FAILED, 29 }; 30 31 DECLARE_EXTENSION_FUNCTION("diagnostics.sendPacket", 32 DIAGNOSTICS_SENDPACKET); 33 34 DiagnosticsSendPacketFunction(); 35 36 protected: 37 virtual ~DiagnosticsSendPacketFunction(); 38 39 // AsyncApiFunction: 40 virtual bool Prepare() OVERRIDE; 41 // This methods will be implemented differently on different platforms. 42 virtual void AsyncWorkStart() OVERRIDE; 43 virtual bool Respond() OVERRIDE; 44 45 private: 46 void SendPingPacket(); 47 void OnCompleted(SendPacketResultCode result_code, 48 const std::string& ip, 49 double latency); 50 51 scoped_ptr<extensions::api::diagnostics::SendPacket::Params> 52 parameters_; 53 }; 54 55 } // namespace extensions 56 57 #endif // CHROME_BROWSER_EXTENSIONS_API_DIAGNOSTICS_DIAGNOSTICS_API_H_ 58