1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/install_verification/win/loaded_modules_snapshot.h" 6 7 #include <Windows.h> 8 9 #include <algorithm> 10 #include <vector> 11 12 #include "base/bind.h" 13 #include "base/callback_helpers.h" 14 #include "chrome/browser/install_verification/win/module_verification_test.h" 15 #include "testing/gtest/include/gtest/gtest.h" 16 17 TEST(LoadedModulesSnapshotTest, TestCase) { 18 std::vector<HMODULE> snapshot; 19 20 ASSERT_TRUE(GetLoadedModulesSnapshot(&snapshot)); 21 size_t original_snapshot_size = snapshot.size(); 22 ASSERT_GT(original_snapshot_size, 0u); 23 snapshot.clear(); 24 25 // Load in a new module. Pick msvidc32.dll as it is present from WinXP to 26 // Win8 and yet rarely used. 27 ASSERT_EQ(NULL, ::GetModuleHandle(L"msvidc32.dll")); 28 29 HMODULE new_dll = ::LoadLibrary(L"msvidc32.dll"); 30 ASSERT_NE(static_cast<HMODULE>(NULL), new_dll); 31 base::ScopedClosureRunner release_new_dll( 32 base::Bind(base::IgnoreResult(&::FreeLibrary), new_dll)); 33 ASSERT_TRUE(GetLoadedModulesSnapshot(&snapshot)); 34 ASSERT_GT(snapshot.size(), original_snapshot_size); 35 ASSERT_NE(snapshot.end(), 36 std::find(snapshot.begin(), snapshot.end(), new_dll)); 37 } 38