1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file.
4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/install_verification/win/module_verification_test.h"
6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include <Windows.h>
8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include <vector>
10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/install_verification/win/loaded_modules_snapshot.h"
11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/install_verification/win/module_list.h"
12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)std::set<size_t> ModuleVerificationTest::reported_module_ids_;
14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void ModuleVerificationTest::SetUp() {
16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  reported_module_ids_.clear();
17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)bool ModuleVerificationTest::GetLoadedModuleInfoSet(
20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    std::set<ModuleInfo>* loaded_module_info_set) {
21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  std::vector<HMODULE> snapshot;
22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  if (!GetLoadedModulesSnapshot(&snapshot))
23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    return false;
24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ModuleList::FromLoadedModuleSnapshot(snapshot)->GetModuleInfoSet(
25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      loaded_module_info_set);
26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  return true;
27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// static
30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void ModuleVerificationTest::ReportModule(size_t module_id) {
31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  reported_module_ids_.insert(module_id);
32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
33