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.
5 #include "chrome/browser/install_verification/win/imported_module_verification.h"
10 #include "chrome/browser/install_verification/win/module_ids.h"
11 #include "chrome/browser/install_verification/win/module_info.h"
12 #include "chrome/browser/install_verification/win/module_verification_test.h"
13 #include "testing/gtest/include/gtest/gtest.h"
15 class ImportedModuleVerificationTest
: public ModuleVerificationTest
{};
17 TEST_F(ImportedModuleVerificationTest
, TestCase
) {
18 // Note that module verification is temporarily disabled for 64-bit builds.
19 // See crbug.com/316274.
21 std::set
<ModuleInfo
> loaded_modules
;
22 ModuleIDs empty_modules_of_interest
;
23 ModuleIDs non_matching_modules_of_interest
;
24 ModuleIDs matching_modules_of_interest
;
26 // This set of IDs will match because user32.dll imports kernel32.dll.
27 matching_modules_of_interest
.insert(
28 std::make_pair(CalculateModuleNameDigest(L
"fancy_pants.dll"), 999u));
29 matching_modules_of_interest
.insert(
30 std::make_pair(CalculateModuleNameDigest(L
"kernel32.dll"), 666u));
31 matching_modules_of_interest
.insert(
32 std::make_pair(CalculateModuleNameDigest(L
"unit_tests.exe"), 777u));
33 matching_modules_of_interest
.insert(
34 std::make_pair(CalculateModuleNameDigest(L
"user32.dll"), 888u));
36 non_matching_modules_of_interest
.insert(
37 std::make_pair(CalculateModuleNameDigest(L
"fancy_pants.dll"), 999u));
39 // With empty loaded_modules, nothing matches.
40 VerifyImportedModules(loaded_modules
,
41 empty_modules_of_interest
,
42 &ImportedModuleVerificationTest::ReportModule
);
43 ASSERT_TRUE(reported_module_ids_
.empty());
44 VerifyImportedModules(loaded_modules
,
45 non_matching_modules_of_interest
,
46 &ImportedModuleVerificationTest::ReportModule
);
47 ASSERT_TRUE(reported_module_ids_
.empty());
48 VerifyImportedModules(loaded_modules
,
49 matching_modules_of_interest
,
50 &ImportedModuleVerificationTest::ReportModule
);
51 ASSERT_TRUE(reported_module_ids_
.empty());
53 // With populated loaded_modules, only the 'matching' module data gives a
55 ASSERT_TRUE(GetLoadedModuleInfoSet(&loaded_modules
));
56 VerifyImportedModules(loaded_modules
,
57 empty_modules_of_interest
,
58 &ImportedModuleVerificationTest::ReportModule
);
59 ASSERT_TRUE(reported_module_ids_
.empty());
60 VerifyImportedModules(loaded_modules
,
61 non_matching_modules_of_interest
,
62 &ImportedModuleVerificationTest::ReportModule
);
63 ASSERT_TRUE(reported_module_ids_
.empty());
64 VerifyImportedModules(loaded_modules
,
65 matching_modules_of_interest
,
66 &ImportedModuleVerificationTest::ReportModule
);
67 ASSERT_EQ(1u, reported_module_ids_
.size());
68 ASSERT_EQ(666u, *reported_module_ids_
.begin());