diff options
author | deanm@google.com <deanm@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-13 15:21:53 +0000 |
---|---|---|
committer | deanm@google.com <deanm@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-13 15:21:53 +0000 |
commit | 393b946c970d1fb93547aebe5dbe254492a295b3 (patch) | |
tree | d758a6597fd75cda2a157f884cabe9a04cb1a859 | |
parent | 71c1b664099d8eb1cbac9a9e925b4ee3fa1b2c75 (diff) | |
download | chromium_src-393b946c970d1fb93547aebe5dbe254492a295b3.zip chromium_src-393b946c970d1fb93547aebe5dbe254492a295b3.tar.gz chromium_src-393b946c970d1fb93547aebe5dbe254492a295b3.tar.bz2 |
Kill check handler. It seems to be unused, and is implemented using ugly SEH
handlers. If we want this we could reimplement it cleanly.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@802 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | base/SConscript | 1 | ||||
-rw-r--r-- | base/build/base.vcproj | 4 | ||||
-rw-r--r-- | base/build/base_unittests.vcproj | 8 | ||||
-rw-r--r-- | base/check_handler.h | 128 | ||||
-rw-r--r-- | base/check_handler_unittest.cc | 72 | ||||
-rw-r--r-- | base/condition_variable_test.cc | 1 |
6 files changed, 0 insertions, 214 deletions
diff --git a/base/SConscript b/base/SConscript index 5b6ddff..b9c7bdf 100644 --- a/base/SConscript +++ b/base/SConscript @@ -263,7 +263,6 @@ if env['PLATFORM'] == 'win32': # These tests aren't really Windows-specific, they're just here until # we have the port versions working. test_files.extend([ - 'check_handler_unittest.cc', 'clipboard_unittest.cc', 'command_line_unittest.cc', 'condition_variable_test.cc', diff --git a/base/build/base.vcproj b/base/build/base.vcproj index b4a886cb..07b09dd 100644 --- a/base/build/base.vcproj +++ b/base/build/base.vcproj @@ -206,10 +206,6 @@ > </File> <File - RelativePath="..\check_handler.h" - > - </File> - <File RelativePath="..\clipboard_win.cc" > </File> diff --git a/base/build/base_unittests.vcproj b/base/build/base_unittests.vcproj index 648cd17..fa32036 100644 --- a/base/build/base_unittests.vcproj +++ b/base/build/base_unittests.vcproj @@ -144,10 +144,6 @@ Name="support" > <File - RelativePath="..\check_handler.h" - > - </File> - <File RelativePath="..\multiprocess_test.h" > </File> @@ -172,10 +168,6 @@ > </File> <File - RelativePath="..\check_handler_unittest.cc" - > - </File> - <File RelativePath="..\clipboard_unittest.cc" > </File> diff --git a/base/check_handler.h b/base/check_handler.h deleted file mode 100644 index e830af9..0000000 --- a/base/check_handler.h +++ /dev/null @@ -1,128 +0,0 @@ -// Copyright 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 BASE_CHECK_HANDLER_H__ -#define BASE_CHECK_HANDLER_H__ - -#include "build/build_config.h" - -#if defined(OS_WIN) -#include <windows.h> -#endif - -#include "base/logging.h" - -// This class allows temporary handling of assert firing. When a CHECK() -// or DCHECK() assertion happens it will in turn generate a SEH exception -// which can be can captured using a windows SEH hander __try .. _except -// block. One practical use of this class is for unit tests that make sure -// CHECK conditions are appropriately handled. For example: -// -// TEST(TestGroup, VerifyAssert) { -// CheckAssertHandler expect_exception; -// __try { -// MyClass object; // MyClass dtor will not be called. -// Param some_bad_param; -// object.Method(some_bad_param); // Should triggers a CHECK(). -// ADD_FAILURE(); // If we get here the test failed. -// } __except(EXCEPTION_EXECUTE_HANDLER) { -// DWORD ecode = GetExceptionCode(); -// EXPECT_EQ(CheckAssertHandler::seh_exception_code(), ecode); -// } -// } -// -// You can put MyClass outside the __try block so its destructor will be -// called which could lead to a crash if the state of the object is -// corrupted by the CHECK you are testing. If that is the case you should -// fix the state of the object inside the __except block. -// -// Since the above code is Windows specific, two helper macros are provided -// that hide the implementation details. Using the macros the code becomes: -// -// TEST(TestGroup, VerifyAssert) { -// CHECK_HANDLER_BEGIN -// MyClass object; // MyClass dtor will not be called. -// Param some_bad_param; -// object.Method(some_bad_param); // Should triggers a CHECK(). -// CHECK_HANDLER_END -// } -// -// Depending on the compiler settings you might have issue this pragma arround -// the code that uses this class: -// #pragma warning(disable: 4509) -// Which tells the compiler that is ok that some dtors will not be called. -// -// Create this object on the stack always.Do not create it inside the -// __try block itself or the dtor will never be called. Create only one -// on each scope. -// -// The key detail here is the RaiseException() call which transfers -// program control away from the code that caused the assertion and back -// into the _except block. - -#if defined(OS_WIN) - -class CheckAssertHandler { - public: - // Installs the assert handler. The dtor will remove the handler. - CheckAssertHandler() { - logging::SetLogAssertHandler(&CheckAssertHandler::LogAssertHandler); - } - ~CheckAssertHandler() { - logging::SetLogAssertHandler(NULL); - } - static DWORD seh_exception_code() { return 0x1765413; } - private: - static void LogAssertHandler(const std::string&) { - ::RaiseException(seh_exception_code(), 0, 0, NULL); - } -}; - -#define CHECK_HANDLER_BEGIN \ - CheckAssertHandler chk_ex_handler; \ - __try { - -#define CHECK_HANDLER_END \ - ADD_FAILURE(); \ - } __except(EXCEPTION_EXECUTE_HANDLER) { \ - DWORD ecode = GetExceptionCode(); \ - EXPECT_EQ(CheckAssertHandler::seh_exception_code(), ecode); \ - } - -#else - -// SEH exceptions only make sense on windows, they're meaningless everywhere -// else. - -#define CHECK_HANDLER_BEGIN // no-op -#define CHECK_HANDLER_END // no-op - -#endif - -#endif // BASE_CHECK_HANDLER_H__ diff --git a/base/check_handler_unittest.cc b/base/check_handler_unittest.cc deleted file mode 100644 index ba03038..0000000 --- a/base/check_handler_unittest.cc +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 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. - -#include "base/check_handler.h" -#include "base/logging.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace { - -class SimpleTestClass { - public: - SimpleTestClass() { - } - ~SimpleTestClass() { - ADD_FAILURE(); - } - void ThisMethodAsserts() { - CHECK(false); - ADD_FAILURE(); - } -}; - -void ThisFunctionAsserts() { - CHECK(false); - ADD_FAILURE(); -} - -} // namespace - -#pragma warning(push) -#pragma warning(disable: 4509) - -TEST(CheckHandlerTest, TestMacroCheckObj) { - CHECK_HANDLER_BEGIN - SimpleTestClass object; - object.ThisMethodAsserts(); - CHECK_HANDLER_END -} - -TEST(CheckHandlerTest, TestMacroCheckFunc) { - CHECK_HANDLER_BEGIN - ThisFunctionAsserts(); - CHECK_HANDLER_END -} - -#pragma warning(pop) diff --git a/base/condition_variable_test.cc b/base/condition_variable_test.cc index bfbdb4e4..af76c1d 100644 --- a/base/condition_variable_test.cc +++ b/base/condition_variable_test.cc @@ -33,7 +33,6 @@ #include <algorithm> #include <vector> -#include "base/check_handler.h" #include "base/condition_variable.h" #include "base/logging.h" #include "base/scoped_ptr.h" |