Home | History | Annotate | Download | only in debugd
      1 // Automatic generation of D-Bus interfaces:
      2 //  - org.chromium.debugd
      3 #ifndef ____CHROMEOS_DBUS_BINDING____________________BUILD_LINK_VAR_CACHE_PORTAGE_CHROMEOS_BASE_DEBUGD_CLIENT_OUT_DEFAULT_GEN_INCLUDE_DEBUGD_DBUS_PROXIES_H
      4 #define ____CHROMEOS_DBUS_BINDING____________________BUILD_LINK_VAR_CACHE_PORTAGE_CHROMEOS_BASE_DEBUGD_CLIENT_OUT_DEFAULT_GEN_INCLUDE_DEBUGD_DBUS_PROXIES_H
      5 #include <memory>
      6 #include <string>
      7 #include <vector>
      8 
      9 #include <base/bind.h>
     10 #include <base/callback.h>
     11 #include <base/logging.h>
     12 #include <base/macros.h>
     13 #include <base/memory/ref_counted.h>
     14 #include <brillo/any.h>
     15 #include <brillo/dbus/dbus_method_invoker.h>
     16 #include <brillo/dbus/dbus_property.h>
     17 #include <brillo/dbus/dbus_signal_handler.h>
     18 #include <brillo/errors/error.h>
     19 #include <brillo/variant_dictionary.h>
     20 #include <dbus/bus.h>
     21 #include <dbus/message.h>
     22 #include <dbus/object_manager.h>
     23 #include <dbus/object_path.h>
     24 #include <dbus/object_proxy.h>
     25 
     26 namespace org {
     27 namespace chromium {
     28 
     29 // Abstract interface proxy for org::chromium::debugd.
     30 class debugdProxyInterface {
     31  public:
     32   virtual ~debugdProxyInterface() = default;
     33 
     34   // Starts pinging the specified hostname with the specified options, with
     35   // output directed to the given output file descriptor. The returned opaque
     36   // string functions as a handle for this particular ping. Multiple pings
     37   // can be running at once.
     38   virtual bool PingStart(
     39       const dbus::FileDescriptor& in_outfd,
     40       const std::string& in_destination,
     41       const brillo::VariantDictionary& in_options,
     42       std::string* out_handle,
     43       brillo::ErrorPtr* error,
     44       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
     45 
     46   // Starts pinging the specified hostname with the specified options, with
     47   // output directed to the given output file descriptor. The returned opaque
     48   // string functions as a handle for this particular ping. Multiple pings
     49   // can be running at once.
     50   virtual void PingStartAsync(
     51       const dbus::FileDescriptor& in_outfd,
     52       const std::string& in_destination,
     53       const brillo::VariantDictionary& in_options,
     54       const base::Callback<void(const std::string& /*handle*/)>& success_callback,
     55       const base::Callback<void(brillo::Error*)>& error_callback,
     56       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
     57 
     58   // Stops a running ping.
     59   virtual bool PingStop(
     60       const std::string& in_handle,
     61       brillo::ErrorPtr* error,
     62       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
     63 
     64   // Stops a running ping.
     65   virtual void PingStopAsync(
     66       const std::string& in_handle,
     67       const base::Callback<void()>& success_callback,
     68       const base::Callback<void(brillo::Error*)>& error_callback,
     69       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
     70 
     71   // Start system/kernel tracing.  If tracing is already enabled it is
     72   // stopped first and any collected events are discarded.  The kernel
     73   // must have been configured to support tracing.
     74   virtual bool SystraceStart(
     75       const std::string& in_categories,
     76       brillo::ErrorPtr* error,
     77       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
     78 
     79   // Start system/kernel tracing.  If tracing is already enabled it is
     80   // stopped first and any collected events are discarded.  The kernel
     81   // must have been configured to support tracing.
     82   virtual void SystraceStartAsync(
     83       const std::string& in_categories,
     84       const base::Callback<void()>& success_callback,
     85       const base::Callback<void(brillo::Error*)>& error_callback,
     86       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
     87 
     88   // Stop system/kernel tracing and write the collected event data.
     89   virtual bool SystraceStop(
     90       const dbus::FileDescriptor& in_outfd,
     91       brillo::ErrorPtr* error,
     92       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
     93 
     94   // Stop system/kernel tracing and write the collected event data.
     95   virtual void SystraceStopAsync(
     96       const dbus::FileDescriptor& in_outfd,
     97       const base::Callback<void()>& success_callback,
     98       const base::Callback<void(brillo::Error*)>& error_callback,
     99       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    100 
    101   // Return current status for system/kernel tracing including whether it
    102   // is enabled, the tracing clock, and the set of events enabled.
    103   virtual bool SystraceStatus(
    104       std::string* out_status,
    105       brillo::ErrorPtr* error,
    106       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    107 
    108   // Return current status for system/kernel tracing including whether it
    109   // is enabled, the tracing clock, and the set of events enabled.
    110   virtual void SystraceStatusAsync(
    111       const base::Callback<void(const std::string& /*status*/)>& success_callback,
    112       const base::Callback<void(brillo::Error*)>& error_callback,
    113       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    114 
    115   virtual bool TracePathStart(
    116       const dbus::FileDescriptor& in_outfd,
    117       const std::string& in_destination,
    118       const brillo::VariantDictionary& in_options,
    119       std::string* out_handle,
    120       brillo::ErrorPtr* error,
    121       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    122 
    123   virtual void TracePathStartAsync(
    124       const dbus::FileDescriptor& in_outfd,
    125       const std::string& in_destination,
    126       const brillo::VariantDictionary& in_options,
    127       const base::Callback<void(const std::string& /*handle*/)>& success_callback,
    128       const base::Callback<void(brillo::Error*)>& error_callback,
    129       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    130 
    131   // Stops a running tracepath.
    132   virtual bool TracePathStop(
    133       const std::string& in_handle,
    134       brillo::ErrorPtr* error,
    135       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    136 
    137   // Stops a running tracepath.
    138   virtual void TracePathStopAsync(
    139       const std::string& in_handle,
    140       const base::Callback<void()>& success_callback,
    141       const base::Callback<void(brillo::Error*)>& error_callback,
    142       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    143 
    144   // Returns the routing table.
    145   virtual bool GetRoutes(
    146       const brillo::VariantDictionary& in_options,
    147       std::vector<std::string>* out_result,
    148       brillo::ErrorPtr* error,
    149       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    150 
    151   // Returns the routing table.
    152   virtual void GetRoutesAsync(
    153       const brillo::VariantDictionary& in_options,
    154       const base::Callback<void(const std::vector<std::string>& /*result*/)>& success_callback,
    155       const base::Callback<void(brillo::Error*)>& error_callback,
    156       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    157 
    158   // Returns modem information as a JSON string. See the design document for
    159   // a rationale.
    160   virtual bool GetModemStatus(
    161       std::string* out_status,
    162       brillo::ErrorPtr* error,
    163       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    164 
    165   // Returns modem information as a JSON string. See the design document for
    166   // a rationale.
    167   virtual void GetModemStatusAsync(
    168       const base::Callback<void(const std::string& /*status*/)>& success_callback,
    169       const base::Callback<void(brillo::Error*)>& error_callback,
    170       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    171 
    172   // Runs the specified command through the modem serial interface and
    173   // returns the output.
    174   virtual bool RunModemCommand(
    175       const std::string& in_command,
    176       std::string* out_status,
    177       brillo::ErrorPtr* error,
    178       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    179 
    180   // Runs the specified command through the modem serial interface and
    181   // returns the output.
    182   virtual void RunModemCommandAsync(
    183       const std::string& in_command,
    184       const base::Callback<void(const std::string& /*status*/)>& success_callback,
    185       const base::Callback<void(brillo::Error*)>& error_callback,
    186       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    187 
    188   // Returns network information as a JSON string. See the design document
    189   // for a rationale.
    190   virtual bool GetNetworkStatus(
    191       std::string* out_status,
    192       brillo::ErrorPtr* error,
    193       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    194 
    195   // Returns network information as a JSON string. See the design document
    196   // for a rationale.
    197   virtual void GetNetworkStatusAsync(
    198       const base::Callback<void(const std::string& /*status*/)>& success_callback,
    199       const base::Callback<void(brillo::Error*)>& error_callback,
    200       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    201 
    202   // Returns WiMAX information as a JSON string. See the design document for
    203   // a rationale.
    204   virtual bool GetWiMaxStatus(
    205       std::string* out_status,
    206       brillo::ErrorPtr* error,
    207       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    208 
    209   // Returns WiMAX information as a JSON string. See the design document for
    210   // a rationale.
    211   virtual void GetWiMaxStatusAsync(
    212       const base::Callback<void(const std::string& /*status*/)>& success_callback,
    213       const base::Callback<void(brillo::Error*)>& error_callback,
    214       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    215 
    216   // Runs system-wide perf profiling. The profile parameters are selected by
    217   // perf_args.
    218   virtual bool GetPerfOutput(
    219       uint32_t in_duration_sec,
    220       const std::vector<std::string>& in_perf_args,
    221       int32_t* out_status,
    222       std::vector<uint8_t>* out_perf_data,
    223       std::vector<uint8_t>* out_perf_stat,
    224       brillo::ErrorPtr* error,
    225       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    226 
    227   // Runs system-wide perf profiling. The profile parameters are selected by
    228   // perf_args.
    229   virtual void GetPerfOutputAsync(
    230       uint32_t in_duration_sec,
    231       const std::vector<std::string>& in_perf_args,
    232       const base::Callback<void(int32_t /*status*/, const std::vector<uint8_t>& /*perf_data*/, const std::vector<uint8_t>& /*perf_stat*/)>& success_callback,
    233       const base::Callback<void(brillo::Error*)>& error_callback,
    234       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    235 
    236   // Runs system-wide perf profiling. It can can profile events other than
    237   // cycles (example: iTLB-misses), and can collect branch profiles. It can
    238   // also return raw counter values. The exact profile or counters to be
    239   // collected is chosen at random and depends on what CPU is used by the
    240   // system (certain CPUs do not support certain profiling modes).
    241   virtual bool GetRandomPerfOutput(
    242       uint32_t in_duration_sec,
    243       int32_t* out_status,
    244       std::vector<uint8_t>* out_perf_data,
    245       std::vector<uint8_t>* out_perf_stat,
    246       brillo::ErrorPtr* error,
    247       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    248 
    249   // Runs system-wide perf profiling. It can can profile events other than
    250   // cycles (example: iTLB-misses), and can collect branch profiles. It can
    251   // also return raw counter values. The exact profile or counters to be
    252   // collected is chosen at random and depends on what CPU is used by the
    253   // system (certain CPUs do not support certain profiling modes).
    254   virtual void GetRandomPerfOutputAsync(
    255       uint32_t in_duration_sec,
    256       const base::Callback<void(int32_t /*status*/, const std::vector<uint8_t>& /*perf_data*/, const std::vector<uint8_t>& /*perf_stat*/)>& success_callback,
    257       const base::Callback<void(brillo::Error*)>& error_callback,
    258       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    259 
    260   // Returns perf event data. Does systemwide profiling. It can profile
    261   // events other than cycles (example: iTLB-misses), and can collect branch
    262   // profiles. The exact profile to be collected is chosen at random
    263   // and depends on what CPU is used by the system (certain CPUs do not
    264   // support certain profiling modes).
    265   virtual bool GetRichPerfData(
    266       uint32_t in_duration_sec,
    267       std::vector<uint8_t>* out_status,
    268       brillo::ErrorPtr* error,
    269       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    270 
    271   // Returns perf event data. Does systemwide profiling. It can profile
    272   // events other than cycles (example: iTLB-misses), and can collect branch
    273   // profiles. The exact profile to be collected is chosen at random
    274   // and depends on what CPU is used by the system (certain CPUs do not
    275   // support certain profiling modes).
    276   virtual void GetRichPerfDataAsync(
    277       uint32_t in_duration_sec,
    278       const base::Callback<void(const std::vector<uint8_t>& /*status*/)>& success_callback,
    279       const base::Callback<void(brillo::Error*)>& error_callback,
    280       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    281 
    282   // DEPRECATED: Use DumpDebugLogs instead.
    283   // Packages up system logs into a .tar.gz and returns it over the supplied
    284   // file descriptor.
    285   virtual bool GetDebugLogs(
    286       const dbus::FileDescriptor& in_outfd,
    287       brillo::ErrorPtr* error,
    288       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    289 
    290   // DEPRECATED: Use DumpDebugLogs instead.
    291   // Packages up system logs into a .tar.gz and returns it over the supplied
    292   // file descriptor.
    293   virtual void GetDebugLogsAsync(
    294       const dbus::FileDescriptor& in_outfd,
    295       const base::Callback<void()>& success_callback,
    296       const base::Callback<void(brillo::Error*)>& error_callback,
    297       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    298 
    299   // Packages up system logs into a .tar(.gz) and returns it over the
    300   // supplied file descriptor.
    301   virtual bool DumpDebugLogs(
    302       bool in_is_compressed,
    303       const dbus::FileDescriptor& in_outfd,
    304       brillo::ErrorPtr* error,
    305       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    306 
    307   // Packages up system logs into a .tar(.gz) and returns it over the
    308   // supplied file descriptor.
    309   virtual void DumpDebugLogsAsync(
    310       bool in_is_compressed,
    311       const dbus::FileDescriptor& in_outfd,
    312       const base::Callback<void()>& success_callback,
    313       const base::Callback<void(brillo::Error*)>& error_callback,
    314       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    315 
    316   // Enables or disables debug mode for a specified subsystem.
    317   virtual bool SetDebugMode(
    318       const std::string& in_subsystem,
    319       brillo::ErrorPtr* error,
    320       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    321 
    322   // Enables or disables debug mode for a specified subsystem.
    323   virtual void SetDebugModeAsync(
    324       const std::string& in_subsystem,
    325       const base::Callback<void()>& success_callback,
    326       const base::Callback<void(brillo::Error*)>& error_callback,
    327       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    328 
    329   // Fetches the contents of a single system log, identified by name. See
    330   // /src/log_tool.cc for a list of valid names.
    331   virtual bool GetLog(
    332       const std::string& in_log,
    333       std::string* out_contents,
    334       brillo::ErrorPtr* error,
    335       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    336 
    337   // Fetches the contents of a single system log, identified by name. See
    338   // /src/log_tool.cc for a list of valid names.
    339   virtual void GetLogAsync(
    340       const std::string& in_log,
    341       const base::Callback<void(const std::string& /*contents*/)>& success_callback,
    342       const base::Callback<void(brillo::Error*)>& error_callback,
    343       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    344 
    345   // Returns all the system logs.
    346   virtual bool GetAllLogs(
    347       std::map<std::string, std::string>* out_logs,
    348       brillo::ErrorPtr* error,
    349       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    350 
    351   // Returns all the system logs.
    352   virtual void GetAllLogsAsync(
    353       const base::Callback<void(const std::map<std::string, std::string>& /*logs*/)>& success_callback,
    354       const base::Callback<void(brillo::Error*)>& error_callback,
    355       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    356 
    357   // Returns system logs for feedback reports.
    358   virtual bool GetFeedbackLogs(
    359       std::map<std::string, std::string>* out_logs,
    360       brillo::ErrorPtr* error,
    361       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    362 
    363   // Returns system logs for feedback reports.
    364   virtual void GetFeedbackLogsAsync(
    365       const base::Callback<void(const std::map<std::string, std::string>& /*logs*/)>& success_callback,
    366       const base::Callback<void(brillo::Error*)>& error_callback,
    367       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    368 
    369   // Returns list of User log file names that Chrome itself must collect.
    370   // These logfiles are relative to the user's profile path and must be
    371   // collected separately for each user.
    372   virtual bool GetUserLogFiles(
    373       std::map<std::string, std::string>* out_user_log_files,
    374       brillo::ErrorPtr* error,
    375       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    376 
    377   // Returns list of User log file names that Chrome itself must collect.
    378   // These logfiles are relative to the user's profile path and must be
    379   // collected separately for each user.
    380   virtual void GetUserLogFilesAsync(
    381       const base::Callback<void(const std::map<std::string, std::string>& /*user_log_files*/)>& success_callback,
    382       const base::Callback<void(brillo::Error*)>& error_callback,
    383       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    384 
    385   // Example method. See /doc/hacking.md.
    386   virtual bool GetExample(
    387       std::string* out_result,
    388       brillo::ErrorPtr* error,
    389       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    390 
    391   // Example method. See /doc/hacking.md.
    392   virtual void GetExampleAsync(
    393       const base::Callback<void(const std::string& /*result*/)>& success_callback,
    394       const base::Callback<void(brillo::Error*)>& error_callback,
    395       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    396 
    397   // Returns information about network interfaces as a JSON string.
    398   virtual bool GetInterfaces(
    399       std::string* out_result,
    400       brillo::ErrorPtr* error,
    401       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    402 
    403   // Returns information about network interfaces as a JSON string.
    404   virtual void GetInterfacesAsync(
    405       const base::Callback<void(const std::string& /*result*/)>& success_callback,
    406       const base::Callback<void(brillo::Error*)>& error_callback,
    407       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    408 
    409   // Tests ICMP connectivity to a specified host.
    410   virtual bool TestICMP(
    411       const std::string& in_host,
    412       std::string* out_result,
    413       brillo::ErrorPtr* error,
    414       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    415 
    416   // Tests ICMP connectivity to a specified host.
    417   virtual void TestICMPAsync(
    418       const std::string& in_host,
    419       const base::Callback<void(const std::string& /*result*/)>& success_callback,
    420       const base::Callback<void(brillo::Error*)>& error_callback,
    421       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    422 
    423   // Tests ICMP connectivity to a specified host (with options).
    424   virtual bool TestICMPWithOptions(
    425       const std::string& in_host,
    426       const std::map<std::string, std::string>& in_options,
    427       std::string* out_result,
    428       brillo::ErrorPtr* error,
    429       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    430 
    431   // Tests ICMP connectivity to a specified host (with options).
    432   virtual void TestICMPWithOptionsAsync(
    433       const std::string& in_host,
    434       const std::map<std::string, std::string>& in_options,
    435       const base::Callback<void(const std::string& /*result*/)>& success_callback,
    436       const base::Callback<void(brillo::Error*)>& error_callback,
    437       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    438 
    439   // Runs BatteryFirmware utility.
    440   virtual bool BatteryFirmware(
    441       const std::string& in_option,
    442       std::string* out_result,
    443       brillo::ErrorPtr* error,
    444       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    445 
    446   // Runs BatteryFirmware utility.
    447   virtual void BatteryFirmwareAsync(
    448       const std::string& in_option,
    449       const base::Callback<void(const std::string& /*result*/)>& success_callback,
    450       const base::Callback<void(brillo::Error*)>& error_callback,
    451       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    452 
    453   // Runs Smartctl utility.
    454   virtual bool Smartctl(
    455       const std::string& in_option,
    456       std::string* out_result,
    457       brillo::ErrorPtr* error,
    458       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    459 
    460   // Runs Smartctl utility.
    461   virtual void SmartctlAsync(
    462       const std::string& in_option,
    463       const base::Callback<void(const std::string& /*result*/)>& success_callback,
    464       const base::Callback<void(brillo::Error*)>& error_callback,
    465       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    466 
    467   // Starts running memtester.
    468   virtual bool MemtesterStart(
    469       const dbus::FileDescriptor& in_outfd,
    470       uint32_t in_memory,
    471       std::string* out_status,
    472       brillo::ErrorPtr* error,
    473       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    474 
    475   // Starts running memtester.
    476   virtual void MemtesterStartAsync(
    477       const dbus::FileDescriptor& in_outfd,
    478       uint32_t in_memory,
    479       const base::Callback<void(const std::string& /*status*/)>& success_callback,
    480       const base::Callback<void(brillo::Error*)>& error_callback,
    481       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    482 
    483   // Stops running memtester.
    484   virtual bool MemtesterStop(
    485       const std::string& in_handle,
    486       brillo::ErrorPtr* error,
    487       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    488 
    489   // Stops running memtester.
    490   virtual void MemtesterStopAsync(
    491       const std::string& in_handle,
    492       const base::Callback<void()>& success_callback,
    493       const base::Callback<void(brillo::Error*)>& error_callback,
    494       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    495 
    496   // Starts running badblocks test.
    497   virtual bool BadblocksStart(
    498       const dbus::FileDescriptor& in_outfd,
    499       std::string* out_status,
    500       brillo::ErrorPtr* error,
    501       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    502 
    503   // Starts running badblocks test.
    504   virtual void BadblocksStartAsync(
    505       const dbus::FileDescriptor& in_outfd,
    506       const base::Callback<void(const std::string& /*status*/)>& success_callback,
    507       const base::Callback<void(brillo::Error*)>& error_callback,
    508       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    509 
    510   // Stops running badblocks.
    511   virtual bool BadblocksStop(
    512       const std::string& in_handle,
    513       brillo::ErrorPtr* error,
    514       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    515 
    516   // Stops running badblocks.
    517   virtual void BadblocksStopAsync(
    518       const std::string& in_handle,
    519       const base::Callback<void()>& success_callback,
    520       const base::Callback<void(brillo::Error*)>& error_callback,
    521       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    522 
    523   // Starts a packet capture with the specified options, with diagnostic
    524   // status directed to the "statfd" file descriptor and packet capture
    525   // data sent to the "outfd" file descriptor.  The returned opaque string
    526   // functions as a handle for this particular packet capture.  Multiple
    527   // captures can be running at once.  Captures can be initiated on
    528   // Ethernet-like devices or WiFi devices in "client mode" (showing only
    529   // Ethernet frames) by specifying the "device" parameter (see below).
    530   // By specifying a channel, the script will find or create a "monitor
    531   // mode" interface if one is available and produce an "over the air"
    532   // packet capture.  The name of the output packet capture file is sent
    533   // to the output file descriptor.
    534   virtual bool PacketCaptureStart(
    535       const dbus::FileDescriptor& in_statfd,
    536       const dbus::FileDescriptor& in_outfd,
    537       const brillo::VariantDictionary& in_options,
    538       std::string* out_handle,
    539       brillo::ErrorPtr* error,
    540       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    541 
    542   // Starts a packet capture with the specified options, with diagnostic
    543   // status directed to the "statfd" file descriptor and packet capture
    544   // data sent to the "outfd" file descriptor.  The returned opaque string
    545   // functions as a handle for this particular packet capture.  Multiple
    546   // captures can be running at once.  Captures can be initiated on
    547   // Ethernet-like devices or WiFi devices in "client mode" (showing only
    548   // Ethernet frames) by specifying the "device" parameter (see below).
    549   // By specifying a channel, the script will find or create a "monitor
    550   // mode" interface if one is available and produce an "over the air"
    551   // packet capture.  The name of the output packet capture file is sent
    552   // to the output file descriptor.
    553   virtual void PacketCaptureStartAsync(
    554       const dbus::FileDescriptor& in_statfd,
    555       const dbus::FileDescriptor& in_outfd,
    556       const brillo::VariantDictionary& in_options,
    557       const base::Callback<void(const std::string& /*handle*/)>& success_callback,
    558       const base::Callback<void(brillo::Error*)>& error_callback,
    559       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    560 
    561   // Stops a running packet capture.
    562   virtual bool PacketCaptureStop(
    563       const std::string& in_handle,
    564       brillo::ErrorPtr* error,
    565       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    566 
    567   // Stops a running packet capture.
    568   virtual void PacketCaptureStopAsync(
    569       const std::string& in_handle,
    570       const base::Callback<void()>& success_callback,
    571       const base::Callback<void(brillo::Error*)>& error_callback,
    572       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    573 
    574   // Triggers show-task-states(T) SysRq.
    575   // See https://www.kernel.org/doc/Documentation/sysrq.txt.
    576   virtual bool LogKernelTaskStates(
    577       brillo::ErrorPtr* error,
    578       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    579 
    580   // Triggers show-task-states(T) SysRq.
    581   // See https://www.kernel.org/doc/Documentation/sysrq.txt.
    582   virtual void LogKernelTaskStatesAsync(
    583       const base::Callback<void()>& success_callback,
    584       const base::Callback<void(brillo::Error*)>& error_callback,
    585       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    586 
    587   // Triggers uploading of system crashes (the crash_sender program).
    588   virtual bool UploadCrashes(
    589       brillo::ErrorPtr* error,
    590       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    591 
    592   // Triggers uploading of system crashes (the crash_sender program).
    593   virtual void UploadCrashesAsync(
    594       const base::Callback<void()>& success_callback,
    595       const base::Callback<void(brillo::Error*)>& error_callback,
    596       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    597 
    598   // Removes rootfs verification. Requires a system reboot before it will
    599   // take effect. Restricted to pre-owner dev mode.
    600   virtual bool RemoveRootfsVerification(
    601       brillo::ErrorPtr* error,
    602       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    603 
    604   // Removes rootfs verification. Requires a system reboot before it will
    605   // take effect. Restricted to pre-owner dev mode.
    606   virtual void RemoveRootfsVerificationAsync(
    607       const base::Callback<void()>& success_callback,
    608       const base::Callback<void(brillo::Error*)>& error_callback,
    609       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    610 
    611   // Enables OS booting from a USB image. Restricted to pre-owner dev mode.
    612   virtual bool EnableBootFromUsb(
    613       brillo::ErrorPtr* error,
    614       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    615 
    616   // Enables OS booting from a USB image. Restricted to pre-owner dev mode.
    617   virtual void EnableBootFromUsbAsync(
    618       const base::Callback<void()>& success_callback,
    619       const base::Callback<void(brillo::Error*)>& error_callback,
    620       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    621 
    622   // Sets up sshd to provide an SSH server immediately and on future reboots.
    623   // Also installs the test SSH keys to allow access by cros tools. Requires
    624   // that rootfs verification has been removed. Restricted to pre-owner dev
    625   // mode.
    626   virtual bool ConfigureSshServer(
    627       brillo::ErrorPtr* error,
    628       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    629 
    630   // Sets up sshd to provide an SSH server immediately and on future reboots.
    631   // Also installs the test SSH keys to allow access by cros tools. Requires
    632   // that rootfs verification has been removed. Restricted to pre-owner dev
    633   // mode.
    634   virtual void ConfigureSshServerAsync(
    635       const base::Callback<void()>& success_callback,
    636       const base::Callback<void(brillo::Error*)>& error_callback,
    637       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    638 
    639   // Sets both the system and dev mode password for the indicated account.
    640   // Restricted to pre-owner dev mode.
    641   virtual bool SetUserPassword(
    642       const std::string& in_username,
    643       const std::string& in_password,
    644       brillo::ErrorPtr* error,
    645       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    646 
    647   // Sets both the system and dev mode password for the indicated account.
    648   // Restricted to pre-owner dev mode.
    649   virtual void SetUserPasswordAsync(
    650       const std::string& in_username,
    651       const std::string& in_password,
    652       const base::Callback<void()>& success_callback,
    653       const base::Callback<void(brillo::Error*)>& error_callback,
    654       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    655 
    656   // Sets up Chrome for remote debugging. It will take effect after a reboot
    657   // and using port 9222.
    658   // Requires that rootfs verification has been removed. Restricted to
    659   // pre-owner dev mode.
    660   virtual bool EnableChromeRemoteDebugging(
    661       brillo::ErrorPtr* error,
    662       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    663 
    664   // Sets up Chrome for remote debugging. It will take effect after a reboot
    665   // and using port 9222.
    666   // Requires that rootfs verification has been removed. Restricted to
    667   // pre-owner dev mode.
    668   virtual void EnableChromeRemoteDebuggingAsync(
    669       const base::Callback<void()>& success_callback,
    670       const base::Callback<void(brillo::Error*)>& error_callback,
    671       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    672 
    673   // Convenience function to enable a predefined set of tools from the Chrome
    674   // UI. Equivalent to calling these functions in order:
    675   //   1. EnableBootFromUsb()
    676   //   2. ConfigureSshServer()
    677   //   3. SetUserPassword("root", root_password)
    678   // Requires that rootfs verification has been removed. If any sub-function
    679   // fails, this function will exit with an error without attempting any
    680   // further configuration or rollback. Restricted to pre-owner dev mode.
    681   virtual bool EnableChromeDevFeatures(
    682       const std::string& in_root_password,
    683       brillo::ErrorPtr* error,
    684       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    685 
    686   // Convenience function to enable a predefined set of tools from the Chrome
    687   // UI. Equivalent to calling these functions in order:
    688   //   1. EnableBootFromUsb()
    689   //   2. ConfigureSshServer()
    690   //   3. SetUserPassword("root", root_password)
    691   // Requires that rootfs verification has been removed. If any sub-function
    692   // fails, this function will exit with an error without attempting any
    693   // further configuration or rollback. Restricted to pre-owner dev mode.
    694   virtual void EnableChromeDevFeaturesAsync(
    695       const std::string& in_root_password,
    696       const base::Callback<void()>& success_callback,
    697       const base::Callback<void(brillo::Error*)>& error_callback,
    698       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    699 
    700   // Queries which dev features have been enabled. Each dev feature will be
    701   // indicated by a bit flag in the return value. Flags are defined in the
    702   // DevFeatureFlag enumeration. If the dev tools are unavailable (system is
    703   // not in dev mode/pre-login state), the DEV_FEATURES_DISABLED flag will be
    704   // set and the rest of the bits will always be set to 0.
    705   virtual bool QueryDevFeatures(
    706       int32_t* out_features,
    707       brillo::ErrorPtr* error,
    708       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    709 
    710   // Queries which dev features have been enabled. Each dev feature will be
    711   // indicated by a bit flag in the return value. Flags are defined in the
    712   // DevFeatureFlag enumeration. If the dev tools are unavailable (system is
    713   // not in dev mode/pre-login state), the DEV_FEATURES_DISABLED flag will be
    714   // set and the rest of the bits will always be set to 0.
    715   virtual void QueryDevFeaturesAsync(
    716       const base::Callback<void(int32_t /*features*/)>& success_callback,
    717       const base::Callback<void(brillo::Error*)>& error_callback,
    718       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    719 
    720   // Allow uploading of device coredump files.
    721   virtual bool EnableDevCoredumpUpload(
    722       brillo::ErrorPtr* error,
    723       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    724 
    725   // Allow uploading of device coredump files.
    726   virtual void EnableDevCoredumpUploadAsync(
    727       const base::Callback<void()>& success_callback,
    728       const base::Callback<void(brillo::Error*)>& error_callback,
    729       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    730 
    731   // Disallow uploading of device coredump files.
    732   virtual bool DisableDevCoredumpUpload(
    733       brillo::ErrorPtr* error,
    734       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    735 
    736   // Disallow uploading of device coredump files.
    737   virtual void DisableDevCoredumpUploadAsync(
    738       const base::Callback<void()>& success_callback,
    739       const base::Callback<void(brillo::Error*)>& error_callback,
    740       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) = 0;
    741 };
    742 
    743 }  // namespace chromium
    744 }  // namespace org
    745 
    746 namespace org {
    747 namespace chromium {
    748 
    749 // Interface proxy for org::chromium::debugd.
    750 class debugdProxy final : public debugdProxyInterface {
    751  public:
    752   debugdProxy(const scoped_refptr<dbus::Bus>& bus) :
    753       bus_{bus},
    754       dbus_object_proxy_{
    755           bus_->GetObjectProxy(service_name_, object_path_)} {
    756   }
    757 
    758   ~debugdProxy() override {
    759     bus_->RemoveObjectProxy(
    760         service_name_, object_path_, base::Bind(&base::DoNothing));
    761   }
    762 
    763   void ReleaseObjectProxy(const base::Closure& callback) {
    764     bus_->RemoveObjectProxy(service_name_, object_path_, callback);
    765   }
    766 
    767   const dbus::ObjectPath& GetObjectPath() const {
    768     return object_path_;
    769   }
    770 
    771   dbus::ObjectProxy* GetObjectProxy() const { return dbus_object_proxy_; }
    772 
    773   // Starts pinging the specified hostname with the specified options, with
    774   // output directed to the given output file descriptor. The returned opaque
    775   // string functions as a handle for this particular ping. Multiple pings
    776   // can be running at once.
    777   bool PingStart(
    778       const dbus::FileDescriptor& in_outfd,
    779       const std::string& in_destination,
    780       const brillo::VariantDictionary& in_options,
    781       std::string* out_handle,
    782       brillo::ErrorPtr* error,
    783       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
    784     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
    785         timeout_ms,
    786         dbus_object_proxy_,
    787         "org.chromium.debugd",
    788         "PingStart",
    789         error,
    790         in_outfd,
    791         in_destination,
    792         in_options);
    793     return response && brillo::dbus_utils::ExtractMethodCallResults(
    794         response.get(), error, out_handle);
    795   }
    796 
    797   // Starts pinging the specified hostname with the specified options, with
    798   // output directed to the given output file descriptor. The returned opaque
    799   // string functions as a handle for this particular ping. Multiple pings
    800   // can be running at once.
    801   void PingStartAsync(
    802       const dbus::FileDescriptor& in_outfd,
    803       const std::string& in_destination,
    804       const brillo::VariantDictionary& in_options,
    805       const base::Callback<void(const std::string& /*handle*/)>& success_callback,
    806       const base::Callback<void(brillo::Error*)>& error_callback,
    807       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
    808     brillo::dbus_utils::CallMethodWithTimeout(
    809         timeout_ms,
    810         dbus_object_proxy_,
    811         "org.chromium.debugd",
    812         "PingStart",
    813         success_callback,
    814         error_callback,
    815         in_outfd,
    816         in_destination,
    817         in_options);
    818   }
    819 
    820   // Stops a running ping.
    821   bool PingStop(
    822       const std::string& in_handle,
    823       brillo::ErrorPtr* error,
    824       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
    825     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
    826         timeout_ms,
    827         dbus_object_proxy_,
    828         "org.chromium.debugd",
    829         "PingStop",
    830         error,
    831         in_handle);
    832     return response && brillo::dbus_utils::ExtractMethodCallResults(
    833         response.get(), error);
    834   }
    835 
    836   // Stops a running ping.
    837   void PingStopAsync(
    838       const std::string& in_handle,
    839       const base::Callback<void()>& success_callback,
    840       const base::Callback<void(brillo::Error*)>& error_callback,
    841       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
    842     brillo::dbus_utils::CallMethodWithTimeout(
    843         timeout_ms,
    844         dbus_object_proxy_,
    845         "org.chromium.debugd",
    846         "PingStop",
    847         success_callback,
    848         error_callback,
    849         in_handle);
    850   }
    851 
    852   // Start system/kernel tracing.  If tracing is already enabled it is
    853   // stopped first and any collected events are discarded.  The kernel
    854   // must have been configured to support tracing.
    855   bool SystraceStart(
    856       const std::string& in_categories,
    857       brillo::ErrorPtr* error,
    858       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
    859     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
    860         timeout_ms,
    861         dbus_object_proxy_,
    862         "org.chromium.debugd",
    863         "SystraceStart",
    864         error,
    865         in_categories);
    866     return response && brillo::dbus_utils::ExtractMethodCallResults(
    867         response.get(), error);
    868   }
    869 
    870   // Start system/kernel tracing.  If tracing is already enabled it is
    871   // stopped first and any collected events are discarded.  The kernel
    872   // must have been configured to support tracing.
    873   void SystraceStartAsync(
    874       const std::string& in_categories,
    875       const base::Callback<void()>& success_callback,
    876       const base::Callback<void(brillo::Error*)>& error_callback,
    877       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
    878     brillo::dbus_utils::CallMethodWithTimeout(
    879         timeout_ms,
    880         dbus_object_proxy_,
    881         "org.chromium.debugd",
    882         "SystraceStart",
    883         success_callback,
    884         error_callback,
    885         in_categories);
    886   }
    887 
    888   // Stop system/kernel tracing and write the collected event data.
    889   bool SystraceStop(
    890       const dbus::FileDescriptor& in_outfd,
    891       brillo::ErrorPtr* error,
    892       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
    893     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
    894         timeout_ms,
    895         dbus_object_proxy_,
    896         "org.chromium.debugd",
    897         "SystraceStop",
    898         error,
    899         in_outfd);
    900     return response && brillo::dbus_utils::ExtractMethodCallResults(
    901         response.get(), error);
    902   }
    903 
    904   // Stop system/kernel tracing and write the collected event data.
    905   void SystraceStopAsync(
    906       const dbus::FileDescriptor& in_outfd,
    907       const base::Callback<void()>& success_callback,
    908       const base::Callback<void(brillo::Error*)>& error_callback,
    909       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
    910     brillo::dbus_utils::CallMethodWithTimeout(
    911         timeout_ms,
    912         dbus_object_proxy_,
    913         "org.chromium.debugd",
    914         "SystraceStop",
    915         success_callback,
    916         error_callback,
    917         in_outfd);
    918   }
    919 
    920   // Return current status for system/kernel tracing including whether it
    921   // is enabled, the tracing clock, and the set of events enabled.
    922   bool SystraceStatus(
    923       std::string* out_status,
    924       brillo::ErrorPtr* error,
    925       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
    926     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
    927         timeout_ms,
    928         dbus_object_proxy_,
    929         "org.chromium.debugd",
    930         "SystraceStatus",
    931         error);
    932     return response && brillo::dbus_utils::ExtractMethodCallResults(
    933         response.get(), error, out_status);
    934   }
    935 
    936   // Return current status for system/kernel tracing including whether it
    937   // is enabled, the tracing clock, and the set of events enabled.
    938   void SystraceStatusAsync(
    939       const base::Callback<void(const std::string& /*status*/)>& success_callback,
    940       const base::Callback<void(brillo::Error*)>& error_callback,
    941       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
    942     brillo::dbus_utils::CallMethodWithTimeout(
    943         timeout_ms,
    944         dbus_object_proxy_,
    945         "org.chromium.debugd",
    946         "SystraceStatus",
    947         success_callback,
    948         error_callback);
    949   }
    950 
    951   bool TracePathStart(
    952       const dbus::FileDescriptor& in_outfd,
    953       const std::string& in_destination,
    954       const brillo::VariantDictionary& in_options,
    955       std::string* out_handle,
    956       brillo::ErrorPtr* error,
    957       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
    958     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
    959         timeout_ms,
    960         dbus_object_proxy_,
    961         "org.chromium.debugd",
    962         "TracePathStart",
    963         error,
    964         in_outfd,
    965         in_destination,
    966         in_options);
    967     return response && brillo::dbus_utils::ExtractMethodCallResults(
    968         response.get(), error, out_handle);
    969   }
    970 
    971   void TracePathStartAsync(
    972       const dbus::FileDescriptor& in_outfd,
    973       const std::string& in_destination,
    974       const brillo::VariantDictionary& in_options,
    975       const base::Callback<void(const std::string& /*handle*/)>& success_callback,
    976       const base::Callback<void(brillo::Error*)>& error_callback,
    977       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
    978     brillo::dbus_utils::CallMethodWithTimeout(
    979         timeout_ms,
    980         dbus_object_proxy_,
    981         "org.chromium.debugd",
    982         "TracePathStart",
    983         success_callback,
    984         error_callback,
    985         in_outfd,
    986         in_destination,
    987         in_options);
    988   }
    989 
    990   // Stops a running tracepath.
    991   bool TracePathStop(
    992       const std::string& in_handle,
    993       brillo::ErrorPtr* error,
    994       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
    995     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
    996         timeout_ms,
    997         dbus_object_proxy_,
    998         "org.chromium.debugd",
    999         "TracePathStop",
   1000         error,
   1001         in_handle);
   1002     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1003         response.get(), error);
   1004   }
   1005 
   1006   // Stops a running tracepath.
   1007   void TracePathStopAsync(
   1008       const std::string& in_handle,
   1009       const base::Callback<void()>& success_callback,
   1010       const base::Callback<void(brillo::Error*)>& error_callback,
   1011       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1012     brillo::dbus_utils::CallMethodWithTimeout(
   1013         timeout_ms,
   1014         dbus_object_proxy_,
   1015         "org.chromium.debugd",
   1016         "TracePathStop",
   1017         success_callback,
   1018         error_callback,
   1019         in_handle);
   1020   }
   1021 
   1022   // Returns the routing table.
   1023   bool GetRoutes(
   1024       const brillo::VariantDictionary& in_options,
   1025       std::vector<std::string>* out_result,
   1026       brillo::ErrorPtr* error,
   1027       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1028     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1029         timeout_ms,
   1030         dbus_object_proxy_,
   1031         "org.chromium.debugd",
   1032         "GetRoutes",
   1033         error,
   1034         in_options);
   1035     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1036         response.get(), error, out_result);
   1037   }
   1038 
   1039   // Returns the routing table.
   1040   void GetRoutesAsync(
   1041       const brillo::VariantDictionary& in_options,
   1042       const base::Callback<void(const std::vector<std::string>& /*result*/)>& success_callback,
   1043       const base::Callback<void(brillo::Error*)>& error_callback,
   1044       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1045     brillo::dbus_utils::CallMethodWithTimeout(
   1046         timeout_ms,
   1047         dbus_object_proxy_,
   1048         "org.chromium.debugd",
   1049         "GetRoutes",
   1050         success_callback,
   1051         error_callback,
   1052         in_options);
   1053   }
   1054 
   1055   // Returns modem information as a JSON string. See the design document for
   1056   // a rationale.
   1057   bool GetModemStatus(
   1058       std::string* out_status,
   1059       brillo::ErrorPtr* error,
   1060       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1061     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1062         timeout_ms,
   1063         dbus_object_proxy_,
   1064         "org.chromium.debugd",
   1065         "GetModemStatus",
   1066         error);
   1067     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1068         response.get(), error, out_status);
   1069   }
   1070 
   1071   // Returns modem information as a JSON string. See the design document for
   1072   // a rationale.
   1073   void GetModemStatusAsync(
   1074       const base::Callback<void(const std::string& /*status*/)>& success_callback,
   1075       const base::Callback<void(brillo::Error*)>& error_callback,
   1076       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1077     brillo::dbus_utils::CallMethodWithTimeout(
   1078         timeout_ms,
   1079         dbus_object_proxy_,
   1080         "org.chromium.debugd",
   1081         "GetModemStatus",
   1082         success_callback,
   1083         error_callback);
   1084   }
   1085 
   1086   // Runs the specified command through the modem serial interface and
   1087   // returns the output.
   1088   bool RunModemCommand(
   1089       const std::string& in_command,
   1090       std::string* out_status,
   1091       brillo::ErrorPtr* error,
   1092       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1093     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1094         timeout_ms,
   1095         dbus_object_proxy_,
   1096         "org.chromium.debugd",
   1097         "RunModemCommand",
   1098         error,
   1099         in_command);
   1100     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1101         response.get(), error, out_status);
   1102   }
   1103 
   1104   // Runs the specified command through the modem serial interface and
   1105   // returns the output.
   1106   void RunModemCommandAsync(
   1107       const std::string& in_command,
   1108       const base::Callback<void(const std::string& /*status*/)>& success_callback,
   1109       const base::Callback<void(brillo::Error*)>& error_callback,
   1110       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1111     brillo::dbus_utils::CallMethodWithTimeout(
   1112         timeout_ms,
   1113         dbus_object_proxy_,
   1114         "org.chromium.debugd",
   1115         "RunModemCommand",
   1116         success_callback,
   1117         error_callback,
   1118         in_command);
   1119   }
   1120 
   1121   // Returns network information as a JSON string. See the design document
   1122   // for a rationale.
   1123   bool GetNetworkStatus(
   1124       std::string* out_status,
   1125       brillo::ErrorPtr* error,
   1126       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1127     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1128         timeout_ms,
   1129         dbus_object_proxy_,
   1130         "org.chromium.debugd",
   1131         "GetNetworkStatus",
   1132         error);
   1133     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1134         response.get(), error, out_status);
   1135   }
   1136 
   1137   // Returns network information as a JSON string. See the design document
   1138   // for a rationale.
   1139   void GetNetworkStatusAsync(
   1140       const base::Callback<void(const std::string& /*status*/)>& success_callback,
   1141       const base::Callback<void(brillo::Error*)>& error_callback,
   1142       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1143     brillo::dbus_utils::CallMethodWithTimeout(
   1144         timeout_ms,
   1145         dbus_object_proxy_,
   1146         "org.chromium.debugd",
   1147         "GetNetworkStatus",
   1148         success_callback,
   1149         error_callback);
   1150   }
   1151 
   1152   // Returns WiMAX information as a JSON string. See the design document for
   1153   // a rationale.
   1154   bool GetWiMaxStatus(
   1155       std::string* out_status,
   1156       brillo::ErrorPtr* error,
   1157       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1158     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1159         timeout_ms,
   1160         dbus_object_proxy_,
   1161         "org.chromium.debugd",
   1162         "GetWiMaxStatus",
   1163         error);
   1164     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1165         response.get(), error, out_status);
   1166   }
   1167 
   1168   // Returns WiMAX information as a JSON string. See the design document for
   1169   // a rationale.
   1170   void GetWiMaxStatusAsync(
   1171       const base::Callback<void(const std::string& /*status*/)>& success_callback,
   1172       const base::Callback<void(brillo::Error*)>& error_callback,
   1173       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1174     brillo::dbus_utils::CallMethodWithTimeout(
   1175         timeout_ms,
   1176         dbus_object_proxy_,
   1177         "org.chromium.debugd",
   1178         "GetWiMaxStatus",
   1179         success_callback,
   1180         error_callback);
   1181   }
   1182 
   1183   // Runs system-wide perf profiling. The profile parameters are selected by
   1184   // perf_args.
   1185   bool GetPerfOutput(
   1186       uint32_t in_duration_sec,
   1187       const std::vector<std::string>& in_perf_args,
   1188       int32_t* out_status,
   1189       std::vector<uint8_t>* out_perf_data,
   1190       std::vector<uint8_t>* out_perf_stat,
   1191       brillo::ErrorPtr* error,
   1192       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1193     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1194         timeout_ms,
   1195         dbus_object_proxy_,
   1196         "org.chromium.debugd",
   1197         "GetPerfOutput",
   1198         error,
   1199         in_duration_sec,
   1200         in_perf_args);
   1201     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1202         response.get(), error, out_status, out_perf_data, out_perf_stat);
   1203   }
   1204 
   1205   // Runs system-wide perf profiling. The profile parameters are selected by
   1206   // perf_args.
   1207   void GetPerfOutputAsync(
   1208       uint32_t in_duration_sec,
   1209       const std::vector<std::string>& in_perf_args,
   1210       const base::Callback<void(int32_t /*status*/, const std::vector<uint8_t>& /*perf_data*/, const std::vector<uint8_t>& /*perf_stat*/)>& success_callback,
   1211       const base::Callback<void(brillo::Error*)>& error_callback,
   1212       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1213     brillo::dbus_utils::CallMethodWithTimeout(
   1214         timeout_ms,
   1215         dbus_object_proxy_,
   1216         "org.chromium.debugd",
   1217         "GetPerfOutput",
   1218         success_callback,
   1219         error_callback,
   1220         in_duration_sec,
   1221         in_perf_args);
   1222   }
   1223 
   1224   // Runs system-wide perf profiling. It can can profile events other than
   1225   // cycles (example: iTLB-misses), and can collect branch profiles. It can
   1226   // also return raw counter values. The exact profile or counters to be
   1227   // collected is chosen at random and depends on what CPU is used by the
   1228   // system (certain CPUs do not support certain profiling modes).
   1229   bool GetRandomPerfOutput(
   1230       uint32_t in_duration_sec,
   1231       int32_t* out_status,
   1232       std::vector<uint8_t>* out_perf_data,
   1233       std::vector<uint8_t>* out_perf_stat,
   1234       brillo::ErrorPtr* error,
   1235       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1236     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1237         timeout_ms,
   1238         dbus_object_proxy_,
   1239         "org.chromium.debugd",
   1240         "GetRandomPerfOutput",
   1241         error,
   1242         in_duration_sec);
   1243     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1244         response.get(), error, out_status, out_perf_data, out_perf_stat);
   1245   }
   1246 
   1247   // Runs system-wide perf profiling. It can can profile events other than
   1248   // cycles (example: iTLB-misses), and can collect branch profiles. It can
   1249   // also return raw counter values. The exact profile or counters to be
   1250   // collected is chosen at random and depends on what CPU is used by the
   1251   // system (certain CPUs do not support certain profiling modes).
   1252   void GetRandomPerfOutputAsync(
   1253       uint32_t in_duration_sec,
   1254       const base::Callback<void(int32_t /*status*/, const std::vector<uint8_t>& /*perf_data*/, const std::vector<uint8_t>& /*perf_stat*/)>& success_callback,
   1255       const base::Callback<void(brillo::Error*)>& error_callback,
   1256       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1257     brillo::dbus_utils::CallMethodWithTimeout(
   1258         timeout_ms,
   1259         dbus_object_proxy_,
   1260         "org.chromium.debugd",
   1261         "GetRandomPerfOutput",
   1262         success_callback,
   1263         error_callback,
   1264         in_duration_sec);
   1265   }
   1266 
   1267   // Returns perf event data. Does systemwide profiling. It can profile
   1268   // events other than cycles (example: iTLB-misses), and can collect branch
   1269   // profiles. The exact profile to be collected is chosen at random
   1270   // and depends on what CPU is used by the system (certain CPUs do not
   1271   // support certain profiling modes).
   1272   bool GetRichPerfData(
   1273       uint32_t in_duration_sec,
   1274       std::vector<uint8_t>* out_status,
   1275       brillo::ErrorPtr* error,
   1276       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1277     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1278         timeout_ms,
   1279         dbus_object_proxy_,
   1280         "org.chromium.debugd",
   1281         "GetRichPerfData",
   1282         error,
   1283         in_duration_sec);
   1284     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1285         response.get(), error, out_status);
   1286   }
   1287 
   1288   // Returns perf event data. Does systemwide profiling. It can profile
   1289   // events other than cycles (example: iTLB-misses), and can collect branch
   1290   // profiles. The exact profile to be collected is chosen at random
   1291   // and depends on what CPU is used by the system (certain CPUs do not
   1292   // support certain profiling modes).
   1293   void GetRichPerfDataAsync(
   1294       uint32_t in_duration_sec,
   1295       const base::Callback<void(const std::vector<uint8_t>& /*status*/)>& success_callback,
   1296       const base::Callback<void(brillo::Error*)>& error_callback,
   1297       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1298     brillo::dbus_utils::CallMethodWithTimeout(
   1299         timeout_ms,
   1300         dbus_object_proxy_,
   1301         "org.chromium.debugd",
   1302         "GetRichPerfData",
   1303         success_callback,
   1304         error_callback,
   1305         in_duration_sec);
   1306   }
   1307 
   1308   // DEPRECATED: Use DumpDebugLogs instead.
   1309   // Packages up system logs into a .tar.gz and returns it over the supplied
   1310   // file descriptor.
   1311   bool GetDebugLogs(
   1312       const dbus::FileDescriptor& in_outfd,
   1313       brillo::ErrorPtr* error,
   1314       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1315     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1316         timeout_ms,
   1317         dbus_object_proxy_,
   1318         "org.chromium.debugd",
   1319         "GetDebugLogs",
   1320         error,
   1321         in_outfd);
   1322     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1323         response.get(), error);
   1324   }
   1325 
   1326   // DEPRECATED: Use DumpDebugLogs instead.
   1327   // Packages up system logs into a .tar.gz and returns it over the supplied
   1328   // file descriptor.
   1329   void GetDebugLogsAsync(
   1330       const dbus::FileDescriptor& in_outfd,
   1331       const base::Callback<void()>& success_callback,
   1332       const base::Callback<void(brillo::Error*)>& error_callback,
   1333       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1334     brillo::dbus_utils::CallMethodWithTimeout(
   1335         timeout_ms,
   1336         dbus_object_proxy_,
   1337         "org.chromium.debugd",
   1338         "GetDebugLogs",
   1339         success_callback,
   1340         error_callback,
   1341         in_outfd);
   1342   }
   1343 
   1344   // Packages up system logs into a .tar(.gz) and returns it over the
   1345   // supplied file descriptor.
   1346   bool DumpDebugLogs(
   1347       bool in_is_compressed,
   1348       const dbus::FileDescriptor& in_outfd,
   1349       brillo::ErrorPtr* error,
   1350       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1351     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1352         timeout_ms,
   1353         dbus_object_proxy_,
   1354         "org.chromium.debugd",
   1355         "DumpDebugLogs",
   1356         error,
   1357         in_is_compressed,
   1358         in_outfd);
   1359     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1360         response.get(), error);
   1361   }
   1362 
   1363   // Packages up system logs into a .tar(.gz) and returns it over the
   1364   // supplied file descriptor.
   1365   void DumpDebugLogsAsync(
   1366       bool in_is_compressed,
   1367       const dbus::FileDescriptor& in_outfd,
   1368       const base::Callback<void()>& success_callback,
   1369       const base::Callback<void(brillo::Error*)>& error_callback,
   1370       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1371     brillo::dbus_utils::CallMethodWithTimeout(
   1372         timeout_ms,
   1373         dbus_object_proxy_,
   1374         "org.chromium.debugd",
   1375         "DumpDebugLogs",
   1376         success_callback,
   1377         error_callback,
   1378         in_is_compressed,
   1379         in_outfd);
   1380   }
   1381 
   1382   // Enables or disables debug mode for a specified subsystem.
   1383   bool SetDebugMode(
   1384       const std::string& in_subsystem,
   1385       brillo::ErrorPtr* error,
   1386       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1387     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1388         timeout_ms,
   1389         dbus_object_proxy_,
   1390         "org.chromium.debugd",
   1391         "SetDebugMode",
   1392         error,
   1393         in_subsystem);
   1394     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1395         response.get(), error);
   1396   }
   1397 
   1398   // Enables or disables debug mode for a specified subsystem.
   1399   void SetDebugModeAsync(
   1400       const std::string& in_subsystem,
   1401       const base::Callback<void()>& success_callback,
   1402       const base::Callback<void(brillo::Error*)>& error_callback,
   1403       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1404     brillo::dbus_utils::CallMethodWithTimeout(
   1405         timeout_ms,
   1406         dbus_object_proxy_,
   1407         "org.chromium.debugd",
   1408         "SetDebugMode",
   1409         success_callback,
   1410         error_callback,
   1411         in_subsystem);
   1412   }
   1413 
   1414   // Fetches the contents of a single system log, identified by name. See
   1415   // /src/log_tool.cc for a list of valid names.
   1416   bool GetLog(
   1417       const std::string& in_log,
   1418       std::string* out_contents,
   1419       brillo::ErrorPtr* error,
   1420       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1421     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1422         timeout_ms,
   1423         dbus_object_proxy_,
   1424         "org.chromium.debugd",
   1425         "GetLog",
   1426         error,
   1427         in_log);
   1428     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1429         response.get(), error, out_contents);
   1430   }
   1431 
   1432   // Fetches the contents of a single system log, identified by name. See
   1433   // /src/log_tool.cc for a list of valid names.
   1434   void GetLogAsync(
   1435       const std::string& in_log,
   1436       const base::Callback<void(const std::string& /*contents*/)>& success_callback,
   1437       const base::Callback<void(brillo::Error*)>& error_callback,
   1438       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1439     brillo::dbus_utils::CallMethodWithTimeout(
   1440         timeout_ms,
   1441         dbus_object_proxy_,
   1442         "org.chromium.debugd",
   1443         "GetLog",
   1444         success_callback,
   1445         error_callback,
   1446         in_log);
   1447   }
   1448 
   1449   // Returns all the system logs.
   1450   bool GetAllLogs(
   1451       std::map<std::string, std::string>* out_logs,
   1452       brillo::ErrorPtr* error,
   1453       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1454     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1455         timeout_ms,
   1456         dbus_object_proxy_,
   1457         "org.chromium.debugd",
   1458         "GetAllLogs",
   1459         error);
   1460     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1461         response.get(), error, out_logs);
   1462   }
   1463 
   1464   // Returns all the system logs.
   1465   void GetAllLogsAsync(
   1466       const base::Callback<void(const std::map<std::string, std::string>& /*logs*/)>& success_callback,
   1467       const base::Callback<void(brillo::Error*)>& error_callback,
   1468       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1469     brillo::dbus_utils::CallMethodWithTimeout(
   1470         timeout_ms,
   1471         dbus_object_proxy_,
   1472         "org.chromium.debugd",
   1473         "GetAllLogs",
   1474         success_callback,
   1475         error_callback);
   1476   }
   1477 
   1478   // Returns system logs for feedback reports.
   1479   bool GetFeedbackLogs(
   1480       std::map<std::string, std::string>* out_logs,
   1481       brillo::ErrorPtr* error,
   1482       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1483     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1484         timeout_ms,
   1485         dbus_object_proxy_,
   1486         "org.chromium.debugd",
   1487         "GetFeedbackLogs",
   1488         error);
   1489     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1490         response.get(), error, out_logs);
   1491   }
   1492 
   1493   // Returns system logs for feedback reports.
   1494   void GetFeedbackLogsAsync(
   1495       const base::Callback<void(const std::map<std::string, std::string>& /*logs*/)>& success_callback,
   1496       const base::Callback<void(brillo::Error*)>& error_callback,
   1497       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1498     brillo::dbus_utils::CallMethodWithTimeout(
   1499         timeout_ms,
   1500         dbus_object_proxy_,
   1501         "org.chromium.debugd",
   1502         "GetFeedbackLogs",
   1503         success_callback,
   1504         error_callback);
   1505   }
   1506 
   1507   // Returns list of User log file names that Chrome itself must collect.
   1508   // These logfiles are relative to the user's profile path and must be
   1509   // collected separately for each user.
   1510   bool GetUserLogFiles(
   1511       std::map<std::string, std::string>* out_user_log_files,
   1512       brillo::ErrorPtr* error,
   1513       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1514     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1515         timeout_ms,
   1516         dbus_object_proxy_,
   1517         "org.chromium.debugd",
   1518         "GetUserLogFiles",
   1519         error);
   1520     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1521         response.get(), error, out_user_log_files);
   1522   }
   1523 
   1524   // Returns list of User log file names that Chrome itself must collect.
   1525   // These logfiles are relative to the user's profile path and must be
   1526   // collected separately for each user.
   1527   void GetUserLogFilesAsync(
   1528       const base::Callback<void(const std::map<std::string, std::string>& /*user_log_files*/)>& success_callback,
   1529       const base::Callback<void(brillo::Error*)>& error_callback,
   1530       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1531     brillo::dbus_utils::CallMethodWithTimeout(
   1532         timeout_ms,
   1533         dbus_object_proxy_,
   1534         "org.chromium.debugd",
   1535         "GetUserLogFiles",
   1536         success_callback,
   1537         error_callback);
   1538   }
   1539 
   1540   // Example method. See /doc/hacking.md.
   1541   bool GetExample(
   1542       std::string* out_result,
   1543       brillo::ErrorPtr* error,
   1544       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1545     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1546         timeout_ms,
   1547         dbus_object_proxy_,
   1548         "org.chromium.debugd",
   1549         "GetExample",
   1550         error);
   1551     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1552         response.get(), error, out_result);
   1553   }
   1554 
   1555   // Example method. See /doc/hacking.md.
   1556   void GetExampleAsync(
   1557       const base::Callback<void(const std::string& /*result*/)>& success_callback,
   1558       const base::Callback<void(brillo::Error*)>& error_callback,
   1559       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1560     brillo::dbus_utils::CallMethodWithTimeout(
   1561         timeout_ms,
   1562         dbus_object_proxy_,
   1563         "org.chromium.debugd",
   1564         "GetExample",
   1565         success_callback,
   1566         error_callback);
   1567   }
   1568 
   1569   // Returns information about network interfaces as a JSON string.
   1570   bool GetInterfaces(
   1571       std::string* out_result,
   1572       brillo::ErrorPtr* error,
   1573       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1574     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1575         timeout_ms,
   1576         dbus_object_proxy_,
   1577         "org.chromium.debugd",
   1578         "GetInterfaces",
   1579         error);
   1580     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1581         response.get(), error, out_result);
   1582   }
   1583 
   1584   // Returns information about network interfaces as a JSON string.
   1585   void GetInterfacesAsync(
   1586       const base::Callback<void(const std::string& /*result*/)>& success_callback,
   1587       const base::Callback<void(brillo::Error*)>& error_callback,
   1588       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1589     brillo::dbus_utils::CallMethodWithTimeout(
   1590         timeout_ms,
   1591         dbus_object_proxy_,
   1592         "org.chromium.debugd",
   1593         "GetInterfaces",
   1594         success_callback,
   1595         error_callback);
   1596   }
   1597 
   1598   // Tests ICMP connectivity to a specified host.
   1599   bool TestICMP(
   1600       const std::string& in_host,
   1601       std::string* out_result,
   1602       brillo::ErrorPtr* error,
   1603       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1604     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1605         timeout_ms,
   1606         dbus_object_proxy_,
   1607         "org.chromium.debugd",
   1608         "TestICMP",
   1609         error,
   1610         in_host);
   1611     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1612         response.get(), error, out_result);
   1613   }
   1614 
   1615   // Tests ICMP connectivity to a specified host.
   1616   void TestICMPAsync(
   1617       const std::string& in_host,
   1618       const base::Callback<void(const std::string& /*result*/)>& success_callback,
   1619       const base::Callback<void(brillo::Error*)>& error_callback,
   1620       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1621     brillo::dbus_utils::CallMethodWithTimeout(
   1622         timeout_ms,
   1623         dbus_object_proxy_,
   1624         "org.chromium.debugd",
   1625         "TestICMP",
   1626         success_callback,
   1627         error_callback,
   1628         in_host);
   1629   }
   1630 
   1631   // Tests ICMP connectivity to a specified host (with options).
   1632   bool TestICMPWithOptions(
   1633       const std::string& in_host,
   1634       const std::map<std::string, std::string>& in_options,
   1635       std::string* out_result,
   1636       brillo::ErrorPtr* error,
   1637       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1638     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1639         timeout_ms,
   1640         dbus_object_proxy_,
   1641         "org.chromium.debugd",
   1642         "TestICMPWithOptions",
   1643         error,
   1644         in_host,
   1645         in_options);
   1646     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1647         response.get(), error, out_result);
   1648   }
   1649 
   1650   // Tests ICMP connectivity to a specified host (with options).
   1651   void TestICMPWithOptionsAsync(
   1652       const std::string& in_host,
   1653       const std::map<std::string, std::string>& in_options,
   1654       const base::Callback<void(const std::string& /*result*/)>& success_callback,
   1655       const base::Callback<void(brillo::Error*)>& error_callback,
   1656       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1657     brillo::dbus_utils::CallMethodWithTimeout(
   1658         timeout_ms,
   1659         dbus_object_proxy_,
   1660         "org.chromium.debugd",
   1661         "TestICMPWithOptions",
   1662         success_callback,
   1663         error_callback,
   1664         in_host,
   1665         in_options);
   1666   }
   1667 
   1668   // Runs BatteryFirmware utility.
   1669   bool BatteryFirmware(
   1670       const std::string& in_option,
   1671       std::string* out_result,
   1672       brillo::ErrorPtr* error,
   1673       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1674     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1675         timeout_ms,
   1676         dbus_object_proxy_,
   1677         "org.chromium.debugd",
   1678         "BatteryFirmware",
   1679         error,
   1680         in_option);
   1681     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1682         response.get(), error, out_result);
   1683   }
   1684 
   1685   // Runs BatteryFirmware utility.
   1686   void BatteryFirmwareAsync(
   1687       const std::string& in_option,
   1688       const base::Callback<void(const std::string& /*result*/)>& success_callback,
   1689       const base::Callback<void(brillo::Error*)>& error_callback,
   1690       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1691     brillo::dbus_utils::CallMethodWithTimeout(
   1692         timeout_ms,
   1693         dbus_object_proxy_,
   1694         "org.chromium.debugd",
   1695         "BatteryFirmware",
   1696         success_callback,
   1697         error_callback,
   1698         in_option);
   1699   }
   1700 
   1701   // Runs Smartctl utility.
   1702   bool Smartctl(
   1703       const std::string& in_option,
   1704       std::string* out_result,
   1705       brillo::ErrorPtr* error,
   1706       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1707     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1708         timeout_ms,
   1709         dbus_object_proxy_,
   1710         "org.chromium.debugd",
   1711         "Smartctl",
   1712         error,
   1713         in_option);
   1714     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1715         response.get(), error, out_result);
   1716   }
   1717 
   1718   // Runs Smartctl utility.
   1719   void SmartctlAsync(
   1720       const std::string& in_option,
   1721       const base::Callback<void(const std::string& /*result*/)>& success_callback,
   1722       const base::Callback<void(brillo::Error*)>& error_callback,
   1723       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1724     brillo::dbus_utils::CallMethodWithTimeout(
   1725         timeout_ms,
   1726         dbus_object_proxy_,
   1727         "org.chromium.debugd",
   1728         "Smartctl",
   1729         success_callback,
   1730         error_callback,
   1731         in_option);
   1732   }
   1733 
   1734   // Starts running memtester.
   1735   bool MemtesterStart(
   1736       const dbus::FileDescriptor& in_outfd,
   1737       uint32_t in_memory,
   1738       std::string* out_status,
   1739       brillo::ErrorPtr* error,
   1740       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1741     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1742         timeout_ms,
   1743         dbus_object_proxy_,
   1744         "org.chromium.debugd",
   1745         "MemtesterStart",
   1746         error,
   1747         in_outfd,
   1748         in_memory);
   1749     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1750         response.get(), error, out_status);
   1751   }
   1752 
   1753   // Starts running memtester.
   1754   void MemtesterStartAsync(
   1755       const dbus::FileDescriptor& in_outfd,
   1756       uint32_t in_memory,
   1757       const base::Callback<void(const std::string& /*status*/)>& success_callback,
   1758       const base::Callback<void(brillo::Error*)>& error_callback,
   1759       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1760     brillo::dbus_utils::CallMethodWithTimeout(
   1761         timeout_ms,
   1762         dbus_object_proxy_,
   1763         "org.chromium.debugd",
   1764         "MemtesterStart",
   1765         success_callback,
   1766         error_callback,
   1767         in_outfd,
   1768         in_memory);
   1769   }
   1770 
   1771   // Stops running memtester.
   1772   bool MemtesterStop(
   1773       const std::string& in_handle,
   1774       brillo::ErrorPtr* error,
   1775       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1776     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1777         timeout_ms,
   1778         dbus_object_proxy_,
   1779         "org.chromium.debugd",
   1780         "MemtesterStop",
   1781         error,
   1782         in_handle);
   1783     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1784         response.get(), error);
   1785   }
   1786 
   1787   // Stops running memtester.
   1788   void MemtesterStopAsync(
   1789       const std::string& in_handle,
   1790       const base::Callback<void()>& success_callback,
   1791       const base::Callback<void(brillo::Error*)>& error_callback,
   1792       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1793     brillo::dbus_utils::CallMethodWithTimeout(
   1794         timeout_ms,
   1795         dbus_object_proxy_,
   1796         "org.chromium.debugd",
   1797         "MemtesterStop",
   1798         success_callback,
   1799         error_callback,
   1800         in_handle);
   1801   }
   1802 
   1803   // Starts running badblocks test.
   1804   bool BadblocksStart(
   1805       const dbus::FileDescriptor& in_outfd,
   1806       std::string* out_status,
   1807       brillo::ErrorPtr* error,
   1808       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1809     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1810         timeout_ms,
   1811         dbus_object_proxy_,
   1812         "org.chromium.debugd",
   1813         "BadblocksStart",
   1814         error,
   1815         in_outfd);
   1816     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1817         response.get(), error, out_status);
   1818   }
   1819 
   1820   // Starts running badblocks test.
   1821   void BadblocksStartAsync(
   1822       const dbus::FileDescriptor& in_outfd,
   1823       const base::Callback<void(const std::string& /*status*/)>& success_callback,
   1824       const base::Callback<void(brillo::Error*)>& error_callback,
   1825       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1826     brillo::dbus_utils::CallMethodWithTimeout(
   1827         timeout_ms,
   1828         dbus_object_proxy_,
   1829         "org.chromium.debugd",
   1830         "BadblocksStart",
   1831         success_callback,
   1832         error_callback,
   1833         in_outfd);
   1834   }
   1835 
   1836   // Stops running badblocks.
   1837   bool BadblocksStop(
   1838       const std::string& in_handle,
   1839       brillo::ErrorPtr* error,
   1840       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1841     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1842         timeout_ms,
   1843         dbus_object_proxy_,
   1844         "org.chromium.debugd",
   1845         "BadblocksStop",
   1846         error,
   1847         in_handle);
   1848     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1849         response.get(), error);
   1850   }
   1851 
   1852   // Stops running badblocks.
   1853   void BadblocksStopAsync(
   1854       const std::string& in_handle,
   1855       const base::Callback<void()>& success_callback,
   1856       const base::Callback<void(brillo::Error*)>& error_callback,
   1857       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1858     brillo::dbus_utils::CallMethodWithTimeout(
   1859         timeout_ms,
   1860         dbus_object_proxy_,
   1861         "org.chromium.debugd",
   1862         "BadblocksStop",
   1863         success_callback,
   1864         error_callback,
   1865         in_handle);
   1866   }
   1867 
   1868   // Starts a packet capture with the specified options, with diagnostic
   1869   // status directed to the "statfd" file descriptor and packet capture
   1870   // data sent to the "outfd" file descriptor.  The returned opaque string
   1871   // functions as a handle for this particular packet capture.  Multiple
   1872   // captures can be running at once.  Captures can be initiated on
   1873   // Ethernet-like devices or WiFi devices in "client mode" (showing only
   1874   // Ethernet frames) by specifying the "device" parameter (see below).
   1875   // By specifying a channel, the script will find or create a "monitor
   1876   // mode" interface if one is available and produce an "over the air"
   1877   // packet capture.  The name of the output packet capture file is sent
   1878   // to the output file descriptor.
   1879   bool PacketCaptureStart(
   1880       const dbus::FileDescriptor& in_statfd,
   1881       const dbus::FileDescriptor& in_outfd,
   1882       const brillo::VariantDictionary& in_options,
   1883       std::string* out_handle,
   1884       brillo::ErrorPtr* error,
   1885       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1886     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1887         timeout_ms,
   1888         dbus_object_proxy_,
   1889         "org.chromium.debugd",
   1890         "PacketCaptureStart",
   1891         error,
   1892         in_statfd,
   1893         in_outfd,
   1894         in_options);
   1895     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1896         response.get(), error, out_handle);
   1897   }
   1898 
   1899   // Starts a packet capture with the specified options, with diagnostic
   1900   // status directed to the "statfd" file descriptor and packet capture
   1901   // data sent to the "outfd" file descriptor.  The returned opaque string
   1902   // functions as a handle for this particular packet capture.  Multiple
   1903   // captures can be running at once.  Captures can be initiated on
   1904   // Ethernet-like devices or WiFi devices in "client mode" (showing only
   1905   // Ethernet frames) by specifying the "device" parameter (see below).
   1906   // By specifying a channel, the script will find or create a "monitor
   1907   // mode" interface if one is available and produce an "over the air"
   1908   // packet capture.  The name of the output packet capture file is sent
   1909   // to the output file descriptor.
   1910   void PacketCaptureStartAsync(
   1911       const dbus::FileDescriptor& in_statfd,
   1912       const dbus::FileDescriptor& in_outfd,
   1913       const brillo::VariantDictionary& in_options,
   1914       const base::Callback<void(const std::string& /*handle*/)>& success_callback,
   1915       const base::Callback<void(brillo::Error*)>& error_callback,
   1916       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1917     brillo::dbus_utils::CallMethodWithTimeout(
   1918         timeout_ms,
   1919         dbus_object_proxy_,
   1920         "org.chromium.debugd",
   1921         "PacketCaptureStart",
   1922         success_callback,
   1923         error_callback,
   1924         in_statfd,
   1925         in_outfd,
   1926         in_options);
   1927   }
   1928 
   1929   // Stops a running packet capture.
   1930   bool PacketCaptureStop(
   1931       const std::string& in_handle,
   1932       brillo::ErrorPtr* error,
   1933       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1934     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1935         timeout_ms,
   1936         dbus_object_proxy_,
   1937         "org.chromium.debugd",
   1938         "PacketCaptureStop",
   1939         error,
   1940         in_handle);
   1941     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1942         response.get(), error);
   1943   }
   1944 
   1945   // Stops a running packet capture.
   1946   void PacketCaptureStopAsync(
   1947       const std::string& in_handle,
   1948       const base::Callback<void()>& success_callback,
   1949       const base::Callback<void(brillo::Error*)>& error_callback,
   1950       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1951     brillo::dbus_utils::CallMethodWithTimeout(
   1952         timeout_ms,
   1953         dbus_object_proxy_,
   1954         "org.chromium.debugd",
   1955         "PacketCaptureStop",
   1956         success_callback,
   1957         error_callback,
   1958         in_handle);
   1959   }
   1960 
   1961   // Triggers show-task-states(T) SysRq.
   1962   // See https://www.kernel.org/doc/Documentation/sysrq.txt.
   1963   bool LogKernelTaskStates(
   1964       brillo::ErrorPtr* error,
   1965       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1966     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1967         timeout_ms,
   1968         dbus_object_proxy_,
   1969         "org.chromium.debugd",
   1970         "LogKernelTaskStates",
   1971         error);
   1972     return response && brillo::dbus_utils::ExtractMethodCallResults(
   1973         response.get(), error);
   1974   }
   1975 
   1976   // Triggers show-task-states(T) SysRq.
   1977   // See https://www.kernel.org/doc/Documentation/sysrq.txt.
   1978   void LogKernelTaskStatesAsync(
   1979       const base::Callback<void()>& success_callback,
   1980       const base::Callback<void(brillo::Error*)>& error_callback,
   1981       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1982     brillo::dbus_utils::CallMethodWithTimeout(
   1983         timeout_ms,
   1984         dbus_object_proxy_,
   1985         "org.chromium.debugd",
   1986         "LogKernelTaskStates",
   1987         success_callback,
   1988         error_callback);
   1989   }
   1990 
   1991   // Triggers uploading of system crashes (the crash_sender program).
   1992   bool UploadCrashes(
   1993       brillo::ErrorPtr* error,
   1994       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   1995     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   1996         timeout_ms,
   1997         dbus_object_proxy_,
   1998         "org.chromium.debugd",
   1999         "UploadCrashes",
   2000         error);
   2001     return response && brillo::dbus_utils::ExtractMethodCallResults(
   2002         response.get(), error);
   2003   }
   2004 
   2005   // Triggers uploading of system crashes (the crash_sender program).
   2006   void UploadCrashesAsync(
   2007       const base::Callback<void()>& success_callback,
   2008       const base::Callback<void(brillo::Error*)>& error_callback,
   2009       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   2010     brillo::dbus_utils::CallMethodWithTimeout(
   2011         timeout_ms,
   2012         dbus_object_proxy_,
   2013         "org.chromium.debugd",
   2014         "UploadCrashes",
   2015         success_callback,
   2016         error_callback);
   2017   }
   2018 
   2019   // Removes rootfs verification. Requires a system reboot before it will
   2020   // take effect. Restricted to pre-owner dev mode.
   2021   bool RemoveRootfsVerification(
   2022       brillo::ErrorPtr* error,
   2023       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   2024     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   2025         timeout_ms,
   2026         dbus_object_proxy_,
   2027         "org.chromium.debugd",
   2028         "RemoveRootfsVerification",
   2029         error);
   2030     return response && brillo::dbus_utils::ExtractMethodCallResults(
   2031         response.get(), error);
   2032   }
   2033 
   2034   // Removes rootfs verification. Requires a system reboot before it will
   2035   // take effect. Restricted to pre-owner dev mode.
   2036   void RemoveRootfsVerificationAsync(
   2037       const base::Callback<void()>& success_callback,
   2038       const base::Callback<void(brillo::Error*)>& error_callback,
   2039       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   2040     brillo::dbus_utils::CallMethodWithTimeout(
   2041         timeout_ms,
   2042         dbus_object_proxy_,
   2043         "org.chromium.debugd",
   2044         "RemoveRootfsVerification",
   2045         success_callback,
   2046         error_callback);
   2047   }
   2048 
   2049   // Enables OS booting from a USB image. Restricted to pre-owner dev mode.
   2050   bool EnableBootFromUsb(
   2051       brillo::ErrorPtr* error,
   2052       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   2053     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   2054         timeout_ms,
   2055         dbus_object_proxy_,
   2056         "org.chromium.debugd",
   2057         "EnableBootFromUsb",
   2058         error);
   2059     return response && brillo::dbus_utils::ExtractMethodCallResults(
   2060         response.get(), error);
   2061   }
   2062 
   2063   // Enables OS booting from a USB image. Restricted to pre-owner dev mode.
   2064   void EnableBootFromUsbAsync(
   2065       const base::Callback<void()>& success_callback,
   2066       const base::Callback<void(brillo::Error*)>& error_callback,
   2067       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   2068     brillo::dbus_utils::CallMethodWithTimeout(
   2069         timeout_ms,
   2070         dbus_object_proxy_,
   2071         "org.chromium.debugd",
   2072         "EnableBootFromUsb",
   2073         success_callback,
   2074         error_callback);
   2075   }
   2076 
   2077   // Sets up sshd to provide an SSH server immediately and on future reboots.
   2078   // Also installs the test SSH keys to allow access by cros tools. Requires
   2079   // that rootfs verification has been removed. Restricted to pre-owner dev
   2080   // mode.
   2081   bool ConfigureSshServer(
   2082       brillo::ErrorPtr* error,
   2083       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   2084     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   2085         timeout_ms,
   2086         dbus_object_proxy_,
   2087         "org.chromium.debugd",
   2088         "ConfigureSshServer",
   2089         error);
   2090     return response && brillo::dbus_utils::ExtractMethodCallResults(
   2091         response.get(), error);
   2092   }
   2093 
   2094   // Sets up sshd to provide an SSH server immediately and on future reboots.
   2095   // Also installs the test SSH keys to allow access by cros tools. Requires
   2096   // that rootfs verification has been removed. Restricted to pre-owner dev
   2097   // mode.
   2098   void ConfigureSshServerAsync(
   2099       const base::Callback<void()>& success_callback,
   2100       const base::Callback<void(brillo::Error*)>& error_callback,
   2101       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   2102     brillo::dbus_utils::CallMethodWithTimeout(
   2103         timeout_ms,
   2104         dbus_object_proxy_,
   2105         "org.chromium.debugd",
   2106         "ConfigureSshServer",
   2107         success_callback,
   2108         error_callback);
   2109   }
   2110 
   2111   // Sets both the system and dev mode password for the indicated account.
   2112   // Restricted to pre-owner dev mode.
   2113   bool SetUserPassword(
   2114       const std::string& in_username,
   2115       const std::string& in_password,
   2116       brillo::ErrorPtr* error,
   2117       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   2118     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   2119         timeout_ms,
   2120         dbus_object_proxy_,
   2121         "org.chromium.debugd",
   2122         "SetUserPassword",
   2123         error,
   2124         in_username,
   2125         in_password);
   2126     return response && brillo::dbus_utils::ExtractMethodCallResults(
   2127         response.get(), error);
   2128   }
   2129 
   2130   // Sets both the system and dev mode password for the indicated account.
   2131   // Restricted to pre-owner dev mode.
   2132   void SetUserPasswordAsync(
   2133       const std::string& in_username,
   2134       const std::string& in_password,
   2135       const base::Callback<void()>& success_callback,
   2136       const base::Callback<void(brillo::Error*)>& error_callback,
   2137       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   2138     brillo::dbus_utils::CallMethodWithTimeout(
   2139         timeout_ms,
   2140         dbus_object_proxy_,
   2141         "org.chromium.debugd",
   2142         "SetUserPassword",
   2143         success_callback,
   2144         error_callback,
   2145         in_username,
   2146         in_password);
   2147   }
   2148 
   2149   // Sets up Chrome for remote debugging. It will take effect after a reboot
   2150   // and using port 9222.
   2151   // Requires that rootfs verification has been removed. Restricted to
   2152   // pre-owner dev mode.
   2153   bool EnableChromeRemoteDebugging(
   2154       brillo::ErrorPtr* error,
   2155       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   2156     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   2157         timeout_ms,
   2158         dbus_object_proxy_,
   2159         "org.chromium.debugd",
   2160         "EnableChromeRemoteDebugging",
   2161         error);
   2162     return response && brillo::dbus_utils::ExtractMethodCallResults(
   2163         response.get(), error);
   2164   }
   2165 
   2166   // Sets up Chrome for remote debugging. It will take effect after a reboot
   2167   // and using port 9222.
   2168   // Requires that rootfs verification has been removed. Restricted to
   2169   // pre-owner dev mode.
   2170   void EnableChromeRemoteDebuggingAsync(
   2171       const base::Callback<void()>& success_callback,
   2172       const base::Callback<void(brillo::Error*)>& error_callback,
   2173       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   2174     brillo::dbus_utils::CallMethodWithTimeout(
   2175         timeout_ms,
   2176         dbus_object_proxy_,
   2177         "org.chromium.debugd",
   2178         "EnableChromeRemoteDebugging",
   2179         success_callback,
   2180         error_callback);
   2181   }
   2182 
   2183   // Convenience function to enable a predefined set of tools from the Chrome
   2184   // UI. Equivalent to calling these functions in order:
   2185   //   1. EnableBootFromUsb()
   2186   //   2. ConfigureSshServer()
   2187   //   3. SetUserPassword("root", root_password)
   2188   // Requires that rootfs verification has been removed. If any sub-function
   2189   // fails, this function will exit with an error without attempting any
   2190   // further configuration or rollback. Restricted to pre-owner dev mode.
   2191   bool EnableChromeDevFeatures(
   2192       const std::string& in_root_password,
   2193       brillo::ErrorPtr* error,
   2194       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   2195     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   2196         timeout_ms,
   2197         dbus_object_proxy_,
   2198         "org.chromium.debugd",
   2199         "EnableChromeDevFeatures",
   2200         error,
   2201         in_root_password);
   2202     return response && brillo::dbus_utils::ExtractMethodCallResults(
   2203         response.get(), error);
   2204   }
   2205 
   2206   // Convenience function to enable a predefined set of tools from the Chrome
   2207   // UI. Equivalent to calling these functions in order:
   2208   //   1. EnableBootFromUsb()
   2209   //   2. ConfigureSshServer()
   2210   //   3. SetUserPassword("root", root_password)
   2211   // Requires that rootfs verification has been removed. If any sub-function
   2212   // fails, this function will exit with an error without attempting any
   2213   // further configuration or rollback. Restricted to pre-owner dev mode.
   2214   void EnableChromeDevFeaturesAsync(
   2215       const std::string& in_root_password,
   2216       const base::Callback<void()>& success_callback,
   2217       const base::Callback<void(brillo::Error*)>& error_callback,
   2218       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   2219     brillo::dbus_utils::CallMethodWithTimeout(
   2220         timeout_ms,
   2221         dbus_object_proxy_,
   2222         "org.chromium.debugd",
   2223         "EnableChromeDevFeatures",
   2224         success_callback,
   2225         error_callback,
   2226         in_root_password);
   2227   }
   2228 
   2229   // Queries which dev features have been enabled. Each dev feature will be
   2230   // indicated by a bit flag in the return value. Flags are defined in the
   2231   // DevFeatureFlag enumeration. If the dev tools are unavailable (system is
   2232   // not in dev mode/pre-login state), the DEV_FEATURES_DISABLED flag will be
   2233   // set and the rest of the bits will always be set to 0.
   2234   bool QueryDevFeatures(
   2235       int32_t* out_features,
   2236       brillo::ErrorPtr* error,
   2237       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   2238     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   2239         timeout_ms,
   2240         dbus_object_proxy_,
   2241         "org.chromium.debugd",
   2242         "QueryDevFeatures",
   2243         error);
   2244     return response && brillo::dbus_utils::ExtractMethodCallResults(
   2245         response.get(), error, out_features);
   2246   }
   2247 
   2248   // Queries which dev features have been enabled. Each dev feature will be
   2249   // indicated by a bit flag in the return value. Flags are defined in the
   2250   // DevFeatureFlag enumeration. If the dev tools are unavailable (system is
   2251   // not in dev mode/pre-login state), the DEV_FEATURES_DISABLED flag will be
   2252   // set and the rest of the bits will always be set to 0.
   2253   void QueryDevFeaturesAsync(
   2254       const base::Callback<void(int32_t /*features*/)>& success_callback,
   2255       const base::Callback<void(brillo::Error*)>& error_callback,
   2256       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   2257     brillo::dbus_utils::CallMethodWithTimeout(
   2258         timeout_ms,
   2259         dbus_object_proxy_,
   2260         "org.chromium.debugd",
   2261         "QueryDevFeatures",
   2262         success_callback,
   2263         error_callback);
   2264   }
   2265 
   2266   // Allow uploading of device coredump files.
   2267   bool EnableDevCoredumpUpload(
   2268       brillo::ErrorPtr* error,
   2269       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   2270     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   2271         timeout_ms,
   2272         dbus_object_proxy_,
   2273         "org.chromium.debugd",
   2274         "EnableDevCoredumpUpload",
   2275         error);
   2276     return response && brillo::dbus_utils::ExtractMethodCallResults(
   2277         response.get(), error);
   2278   }
   2279 
   2280   // Allow uploading of device coredump files.
   2281   void EnableDevCoredumpUploadAsync(
   2282       const base::Callback<void()>& success_callback,
   2283       const base::Callback<void(brillo::Error*)>& error_callback,
   2284       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   2285     brillo::dbus_utils::CallMethodWithTimeout(
   2286         timeout_ms,
   2287         dbus_object_proxy_,
   2288         "org.chromium.debugd",
   2289         "EnableDevCoredumpUpload",
   2290         success_callback,
   2291         error_callback);
   2292   }
   2293 
   2294   // Disallow uploading of device coredump files.
   2295   bool DisableDevCoredumpUpload(
   2296       brillo::ErrorPtr* error,
   2297       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   2298     auto response = brillo::dbus_utils::CallMethodAndBlockWithTimeout(
   2299         timeout_ms,
   2300         dbus_object_proxy_,
   2301         "org.chromium.debugd",
   2302         "DisableDevCoredumpUpload",
   2303         error);
   2304     return response && brillo::dbus_utils::ExtractMethodCallResults(
   2305         response.get(), error);
   2306   }
   2307 
   2308   // Disallow uploading of device coredump files.
   2309   void DisableDevCoredumpUploadAsync(
   2310       const base::Callback<void()>& success_callback,
   2311       const base::Callback<void(brillo::Error*)>& error_callback,
   2312       int timeout_ms = dbus::ObjectProxy::TIMEOUT_USE_DEFAULT) override {
   2313     brillo::dbus_utils::CallMethodWithTimeout(
   2314         timeout_ms,
   2315         dbus_object_proxy_,
   2316         "org.chromium.debugd",
   2317         "DisableDevCoredumpUpload",
   2318         success_callback,
   2319         error_callback);
   2320   }
   2321 
   2322  private:
   2323   scoped_refptr<dbus::Bus> bus_;
   2324   const std::string service_name_{"org.chromium.debugd"};
   2325   const dbus::ObjectPath object_path_{"/org/chromium/debugd"};
   2326   dbus::ObjectProxy* dbus_object_proxy_;
   2327 
   2328   DISALLOW_COPY_AND_ASSIGN(debugdProxy);
   2329 };
   2330 
   2331 }  // namespace chromium
   2332 }  // namespace org
   2333 
   2334 #endif  // ____CHROMEOS_DBUS_BINDING____________________BUILD_LINK_VAR_CACHE_PORTAGE_CHROMEOS_BASE_DEBUGD_CLIENT_OUT_DEFAULT_GEN_INCLUDE_DEBUGD_DBUS_PROXIES_H
   2335