Index: chrome/browser/conflicts/module_inspector_win_unittest.cc |
diff --git a/chrome/browser/conflicts/module_inspector_win_unittest.cc b/chrome/browser/conflicts/module_inspector_win_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..adce4e64e096bf444b63ccbb94b6bc2812800f60 |
--- /dev/null |
+++ b/chrome/browser/conflicts/module_inspector_win_unittest.cc |
@@ -0,0 +1,94 @@ |
+// Copyright 2017 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 "chrome/browser/conflicts/module_inspector_win.h" |
+ |
+#include <memory> |
+#include <string> |
+#include <vector> |
+ |
+#include "base/environment.h" |
+#include "base/files/file_path.h" |
+#include "base/macros.h" |
+#include "base/run_loop.h" |
+#include "base/test/scoped_task_scheduler.h" |
+#include "base/test/test_simple_task_runner.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace { |
+ |
+base::FilePath GetKernel32DllFilePath() { |
+ std::unique_ptr<base::Environment> env = base::Environment::Create(); |
+ std::string sysroot; |
+ EXPECT_TRUE(env->GetVar("SYSTEMROOT", &sysroot)); |
+ |
+ base::FilePath path = |
+ base::FilePath::FromUTF8Unsafe(sysroot).Append(L"system32\\kernel32.dll"); |
+ |
+ return path; |
+} |
+ |
+class ModuleInspectorTest : public testing::Test, |
+ public ModuleInspector::Delegate { |
+ protected: |
+ ModuleInspectorTest() |
+ : scoped_task_scheduler_(base::MessageLoop::current()), |
+ module_inspector_(this) {} |
+ |
+ void AddModules(const std::vector<ModuleInfoKey>& modules) { |
+ for (const auto& module : modules) |
+ module_inspector_.AddModule(module); |
+ } |
+ |
+ // ModuleInspector::Delegate: |
+ void OnModuleInspected(const ModuleInfoKey& module_key, |
+ const ModuleInfoData& module_data) override { |
+ inspected_modules_.push_back(module_data); |
+ } |
+ |
+ const std::vector<ModuleInfoData>& inspected_modules() { |
+ return inspected_modules_; |
+ } |
+ |
+ private: |
+ // Must be before the ModuleInspector. |
+ base::test::ScopedTaskScheduler scoped_task_scheduler_; |
+ |
+ ModuleInspector module_inspector_; |
+ |
+ std::vector<ModuleInfoData> inspected_modules_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(ModuleInspectorTest); |
+}; |
+ |
+} // namespace |
+ |
+TEST_F(ModuleInspectorTest, OneModule) { |
+ AddModules({ |
+ {GetKernel32DllFilePath(), 0, 0, 1}, |
+ }); |
+ |
+ base::RunLoop().RunUntilIdle(); |
+ |
+ EXPECT_EQ(inspected_modules().size(), 1); |
+ |
+ const ModuleInfoData& module_data = inspected_modules()[0]; |
+ EXPECT_TRUE(module_data.inspected); |
+} |
+ |
+TEST_F(ModuleInspectorTest, MultipleModules) { |
+ AddModules({ |
+ {base::FilePath(), 0, 0, 1}, |
+ {base::FilePath(), 0, 0, 2}, |
+ {base::FilePath(), 0, 0, 3}, |
+ {base::FilePath(), 0, 0, 4}, |
+ {base::FilePath(), 0, 0, 5}, |
+ }); |
+ |
+ base::RunLoop().RunUntilIdle(); |
+ |
+ EXPECT_EQ(inspected_modules().size(), 5); |
+ for (const auto& module_data : inspected_modules()) |
+ EXPECT_TRUE(module_data.inspected); |
+} |