| Index: components/browser_watcher/watcher_win.h
|
| diff --git a/components/browser_watcher/watcher_win.h b/components/browser_watcher/watcher_win.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..7b779a65ea582d918a46e6d59167baf563e6d7ae
|
| --- /dev/null
|
| +++ b/components/browser_watcher/watcher_win.h
|
| @@ -0,0 +1,55 @@
|
| +// Copyright (c) 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +#ifndef COMPONENTS_BROWSER_WATCHER_WATCHER_WIN_H_
|
| +#define COMPONENTS_BROWSER_WATCHER_WATCHER_WIN_H_
|
| +
|
| +#include "base/macros.h"
|
| +#include "base/process/process_handle.h"
|
| +#include "base/strings/string16.h"
|
| +#include "base/time/time.h"
|
| +#include "base/win/scoped_handle.h"
|
| +
|
| +namespace base {
|
| +class CommandLine;
|
| +}
|
| +
|
| +namespace browser_watcher {
|
| +
|
| +// Watches for the exit code of a process and records it in a given registry
|
| +// location.
|
| +class ExitCodeWatcher {
|
| + public:
|
| + // Initialize the watcher with a registry path.
|
| + explicit ExitCodeWatcher(const base::char16* registry_path);
|
| + ~ExitCodeWatcher();
|
| +
|
| + // Initializes from arguments on |cmd_line|, returns true on success.
|
| + // This function expects the process handle indicated in |cmd_line| to be open
|
| + // with sufficient privilege to wait and retrieve the process exit code.
|
| + // It checks the handle for validity and takes ownership of it.
|
| + // The intent is for this handle to be inherited into the watcher process
|
| + // hosting the instance of this class.
|
| + bool ParseArguments(const base::CommandLine& cmd_line);
|
| +
|
| + // Waits for the process to exit and records its exit code in registry.
|
| + // This is a blocking call.
|
| + void WaitForExit();
|
| +
|
| + base::ProcessHandle process() const { return process_.Get(); }
|
| +
|
| + private:
|
| + // The registry path the exit codes are written to.
|
| + base::string16 registry_path_;
|
| +
|
| + // Handle, PID, and creation time of the watched process.
|
| + base::win::ScopedHandle process_;
|
| + base::ProcessId process_pid_;
|
| + base::Time process_creation_time_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(ExitCodeWatcher);
|
| +};
|
| +
|
| +} // namespace browser_watcher
|
| +
|
| +#endif // COMPONENTS_BROWSER_WATCHER_WATCHER_WIN_H_
|
|
|