Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2014)

Unified Diff: base/exception_barrier.h

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/event_trace_provider_unittest.cc ('k') | base/exception_barrier.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/exception_barrier.h
diff --git a/base/exception_barrier.h b/base/exception_barrier.h
deleted file mode 100644
index ecc01b68a7ac2ee9a419459c7dc22d6a8ed48b18..0000000000000000000000000000000000000000
--- a/base/exception_barrier.h
+++ /dev/null
@@ -1,110 +0,0 @@
-// Copyright 2006-2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-// ========================================================================
-//
-// A class to make it easy to tag exception propagation boundaries and
-// get crash reports of exceptions that pass over same.
-#ifndef OMAHA_COMMON_EXCEPTION_BARRIER_H_
-#define OMAHA_COMMON_EXCEPTION_BARRIER_H_
-
-#include <windows.h>
-
-/// This is the type dictated for an exception handler by the platform ABI
-/// @see _except_handler in excpt.h
-typedef EXCEPTION_DISPOSITION (__cdecl *ExceptionHandlerFunc)(
- struct _EXCEPTION_RECORD *exception_record,
- void * establisher_frame,
- struct _CONTEXT *context,
- void * reserved);
-
-/// The type of an exception record in the exception handler chain
-struct EXCEPTION_REGISTRATION {
- EXCEPTION_REGISTRATION *prev;
- ExceptionHandlerFunc handler;
-};
-
-/// This is our raw exception handler, it must be declared extern "C" to
-/// match up with the SAFESEH declaration in our corresponding ASM file
-extern "C" EXCEPTION_DISPOSITION __cdecl
-ExceptionBarrierHandler(struct _EXCEPTION_RECORD *exception_record,
- void * establisher_frame,
- struct _CONTEXT *context,
- void * reserved);
-
-/// An exception barrier is used to report exceptions that pass through
-/// a boundary where exceptions shouldn't pass, such as e.g. COM interface
-/// boundaries.
-/// This is handy for any kind of plugin code, where if the exception passes
-/// through unhindered, it'll either be swallowed by an SEH exception handler
-/// above us on the stack, or be reported as an unhandled exception for
-/// the application hosting the plugin code.
-///
-/// To use this class, simply instantiate an ExceptionBarrier just inside
-/// the code boundary, like this:
-/// @code
-/// HRESULT SomeObject::SomeCOMMethod(...) {
-/// ExceptionBarrier report_crashes;
-///
-/// ... other code here ...
-/// }
-/// @endcode
-class ExceptionBarrier {
- public:
- /// Register the barrier in the SEH chain
- ExceptionBarrier();
-
- /// And unregister on destruction
- ~ExceptionBarrier();
-
- /// Signature of the handler function which gets notified when
- /// an exception propagates through a barrier.
- typedef void (CALLBACK *ExceptionHandler)(EXCEPTION_POINTERS *ptrs);
-
- /// @name Accessors
- /// @{
- static void set_handler(ExceptionHandler handler) { s_handler_ = handler; }
- static ExceptionHandler handler() { return s_handler_; }
- /// @}
-
- private:
- /// Our SEH frame
- EXCEPTION_REGISTRATION registration_;
-
- /// The function that gets invoked if an exception
- /// propagates through a barrier
- /// TODO(omaha): how can this be statically parametrized?
- static ExceptionHandler s_handler_;
-};
-
-/// @name These are implemented in the associated .asm file
-/// @{
-extern "C" void WINAPI RegisterExceptionRecord(
- EXCEPTION_REGISTRATION *registration,
- ExceptionHandlerFunc func);
-extern "C" void WINAPI UnregisterExceptionRecord(
- EXCEPTION_REGISTRATION *registration);
-/// @}
-
-
-inline ExceptionBarrier::ExceptionBarrier() {
- RegisterExceptionRecord(&registration_, ExceptionBarrierHandler);
-}
-
-inline ExceptionBarrier::~ExceptionBarrier() {
- // TODO(omaha): I don't think it's safe to unregister after an exception
- // has taken place???
- UnregisterExceptionRecord(&registration_);
-}
-
-#endif // OMAHA_COMMON_EXCEPTION_BARRIER_H_
« no previous file with comments | « base/event_trace_provider_unittest.cc ('k') | base/exception_barrier.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698