Index: trunk/src/chrome/app/delay_load_hook_unittest_win.cc |
=================================================================== |
--- trunk/src/chrome/app/delay_load_hook_unittest_win.cc (revision 191178) |
+++ trunk/src/chrome/app/delay_load_hook_unittest_win.cc (working copy) |
@@ -1,90 +0,0 @@ |
-// Copyright (c) 2013 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. |
- |
-#include <windows.h> |
-#if defined(_WIN32_WINNT_WIN8) && _MSC_VER < 1700 |
-// The Windows 8 SDK defines FACILITY_VISUALCPP in winerror.h, and in |
-// delayimp.h previous to VS2012. |
-#undef FACILITY_VISUALCPP |
-#endif |
-#include <DelayIMP.h> |
- |
-#include "base/basictypes.h" |
-#include "base/compiler_specific.h" |
-#include "base/scoped_native_library.h" |
-#include "chrome/app/delay_load_hook_win.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-namespace { |
- |
-class ChromeDelayLoadHookTest : public testing::Test { |
- public: |
- ChromeDelayLoadHookTest() : proc_ptr_(NULL) { |
- } |
- |
- virtual void SetUp() OVERRIDE { |
- SetupInfo("kernel32.dll"); |
- } |
- |
- void SetupInfo(const char* dll_name) { |
- info_.cb = sizeof(info_); |
- info_.pidd = NULL; |
- info_.ppfn = &proc_ptr_; |
- info_.szDll = dll_name; |
- info_.dlp.fImportByName = TRUE; |
- info_.dlp.szProcName = "CreateFileA"; |
- info_.hmodCur = NULL; |
- info_.pfnCur = NULL; |
- info_.dwLastError = 0; |
- } |
- |
- FARPROC proc_ptr_; |
- DelayLoadInfo info_; |
-}; |
- |
-} // namespace |
- |
-TEST_F(ChromeDelayLoadHookTest, HooksAreSetAtLinkTime) { |
- // This test verifies that referencing the ChromeDelayLoadHook at link |
- // time results in overriding the delay loader's hook instances in the CRT |
- // ropriately. |
- EXPECT_TRUE(__pfnDliNotifyHook2 == ChromeDelayLoadHook); |
- EXPECT_TRUE(__pfnDliFailureHook2 == ChromeDelayLoadHook); |
-} |
- |
-TEST_F(ChromeDelayLoadHookTest, NonSuffixedDllsAreNotHandled) { |
- // The hook should ignore non-suffixed DLLs. |
- SetupInfo("kernel32.dll"); |
- |
- HMODULE none = reinterpret_cast<HMODULE>( |
- ChromeDelayLoadHook(dliNotePreLoadLibrary, &info_)); |
- // Make sure the library is released on exit. |
- base::ScopedNativeLibrary lib_holder(none); |
- |
- ASSERT_TRUE(none == NULL); |
-} |
- |
-TEST_F(ChromeDelayLoadHookTest, SuffixedDllsAreRedirected) { |
- // Check that a DLL name of the form "foo-delay.dll" gets redirected to |
- // the "foo.dll". |
- SetupInfo("kernel32-delay.dll"); |
- HMODULE kernel32 = reinterpret_cast<HMODULE>( |
- ChromeDelayLoadHook(dliNotePreLoadLibrary, &info_)); |
- |
- // Make sure the library is released on exit. |
- base::ScopedNativeLibrary lib_holder(kernel32); |
- |
- ASSERT_TRUE(kernel32 == ::GetModuleHandle(L"kernel32.dll")); |
-} |
- |
-TEST_F(ChromeDelayLoadHookTest, IgnoresUnhandledNotifications) { |
- SetupInfo("kernel32-delay.dll"); |
- |
- // The hook should ignore all notifications but the preload notifications. |
- EXPECT_TRUE(ChromeDelayLoadHook(dliNoteStartProcessing, &info_) == NULL); |
- EXPECT_TRUE(ChromeDelayLoadHook(dliNotePreGetProcAddress, &info_) == NULL); |
- EXPECT_TRUE(ChromeDelayLoadHook(dliNoteEndProcessing, &info_) == NULL); |
- EXPECT_TRUE(ChromeDelayLoadHook(dliFailLoadLib, &info_) == NULL); |
- EXPECT_TRUE(ChromeDelayLoadHook(dliFailGetProc, &info_) == NULL); |
-} |