summaryrefslogtreecommitdiffstats
path: root/toolkit/crashreporter/google-breakpad/src/client/windows/crash_generation/crash_generation_client.h
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/crashreporter/google-breakpad/src/client/windows/crash_generation/crash_generation_client.h')
-rw-r--r--toolkit/crashreporter/google-breakpad/src/client/windows/crash_generation/crash_generation_client.h182
1 files changed, 0 insertions, 182 deletions
diff --git a/toolkit/crashreporter/google-breakpad/src/client/windows/crash_generation/crash_generation_client.h b/toolkit/crashreporter/google-breakpad/src/client/windows/crash_generation/crash_generation_client.h
deleted file mode 100644
index 457f73195..000000000
--- a/toolkit/crashreporter/google-breakpad/src/client/windows/crash_generation/crash_generation_client.h
+++ /dev/null
@@ -1,182 +0,0 @@
-// Copyright (c) 2008, Google Inc.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef CLIENT_WINDOWS_CRASH_GENERATION_CRASH_GENERATION_CLIENT_H_
-#define CLIENT_WINDOWS_CRASH_GENERATION_CRASH_GENERATION_CLIENT_H_
-
-#include <windows.h>
-#include <dbghelp.h>
-#include <string>
-#include <utility>
-#include "client/windows/common/ipc_protocol.h"
-#include "common/scoped_ptr.h"
-
-namespace google_breakpad {
-
-struct CustomClientInfo;
-
-// Abstraction of client-side implementation of out of process
-// crash generation.
-//
-// The process that desires to have out-of-process crash dump
-// generation service can use this class in the following way:
-//
-// * Create an instance.
-// * Call Register method so that the client tries to register
-// with the server process and check the return value. If
-// registration is not successful, out-of-process crash dump
-// generation will not be available
-// * Request dump generation by calling either of the two
-// overloaded RequestDump methods - one in case of exceptions
-// and the other in case of assertion failures
-//
-// Note that it is the responsibility of the client code of
-// this class to set the unhandled exception filter with the
-// system by calling the SetUnhandledExceptionFilter function
-// and the client code should explicitly request dump generation.
-class CrashGenerationClient {
- public:
- CrashGenerationClient(const wchar_t* pipe_name,
- MINIDUMP_TYPE dump_type,
- const CustomClientInfo* custom_info);
-
- CrashGenerationClient(HANDLE pipe_handle,
- MINIDUMP_TYPE dump_type,
- const CustomClientInfo* custom_info);
-
- ~CrashGenerationClient();
-
- // Registers the client process with the crash server.
- //
- // Returns true if the registration is successful; false otherwise.
- bool Register();
-
- // Requests the crash server to upload a previous dump with the
- // given crash id.
- bool RequestUpload(DWORD crash_id);
-
- bool RequestDump(EXCEPTION_POINTERS* ex_info,
- MDRawAssertionInfo* assert_info);
-
- // Requests the crash server to generate a dump with the given
- // exception information.
- //
- // Returns true if the dump was successful; false otherwise. Note that
- // if the registration step was not performed or it was not successful,
- // false will be returned.
- bool RequestDump(EXCEPTION_POINTERS* ex_info);
-
- // Requests the crash server to generate a dump with the given
- // assertion information.
- //
- // Returns true if the dump was successful; false otherwise. Note that
- // if the registration step was not performed or it was not successful,
- // false will be returned.
- bool RequestDump(MDRawAssertionInfo* assert_info);
-
- // If the crash generation client is running in a sandbox that prevents it
- // from opening the named pipe directly, the server process may open the
- // handle and duplicate it into the client process with this helper method.
- // Returns INVALID_HANDLE_VALUE on failure. The process must have been opened
- // with the PROCESS_DUP_HANDLE access right.
- static HANDLE DuplicatePipeToClientProcess(const wchar_t* pipe_name,
- HANDLE hProcess);
-
- private:
- // Connects to the appropriate pipe and sets the pipe handle state.
- //
- // Returns the pipe handle if everything goes well; otherwise Returns NULL.
- HANDLE ConnectToServer();
-
- // Performs a handshake with the server over the given pipe which should be
- // already connected to the server.
- //
- // Returns true if handshake with the server was successful; false otherwise.
- bool RegisterClient(HANDLE pipe);
-
- // Validates the given server response.
- bool ValidateResponse(const ProtocolMessage& msg) const;
-
- // Returns true if the registration step succeeded; false otherwise.
- bool IsRegistered() const;
-
- // Connects to the given named pipe with given parameters.
- //
- // Returns true if the connection is successful; false otherwise.
- HANDLE ConnectToPipe(const wchar_t* pipe_name,
- DWORD pipe_access,
- DWORD flags_attrs);
-
- // Signals the crash event and wait for the server to generate crash.
- bool SignalCrashEventAndWait();
-
- // Pipe name to use to talk to server.
- std::wstring pipe_name_;
-
- // Pipe handle duplicated from server process. Only valid before
- // Register is called.
- HANDLE pipe_handle_;
-
- // Custom client information
- CustomClientInfo custom_info_;
-
- // Type of dump to generate.
- MINIDUMP_TYPE dump_type_;
-
- // Event to signal in case of a crash.
- HANDLE crash_event_;
-
- // Handle to wait on after signaling a crash for the server
- // to finish generating crash dump.
- HANDLE crash_generated_;
-
- // Handle to a mutex that will become signaled with WAIT_ABANDONED
- // if the server process goes down.
- HANDLE server_alive_;
-
- // Server process id.
- DWORD server_process_id_;
-
- // Id of the thread that caused the crash.
- DWORD thread_id_;
-
- // Exception pointers for an exception crash.
- EXCEPTION_POINTERS* exception_pointers_;
-
- // Assertion info for an invalid parameter or pure call crash.
- MDRawAssertionInfo assert_info_;
-
- // Disable copy ctor and operator=.
- CrashGenerationClient(const CrashGenerationClient& crash_client);
- CrashGenerationClient& operator=(const CrashGenerationClient& crash_client);
-};
-
-} // namespace google_breakpad
-
-#endif // CLIENT_WINDOWS_CRASH_GENERATION_CRASH_GENERATION_CLIENT_H_