summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordewittj@chromium.org <dewittj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-02 03:34:47 +0000
committerdewittj@chromium.org <dewittj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-02 03:34:47 +0000
commit99759ea92d569b5f8927c287901ae79a559b9de0 (patch)
tree55cf94ec4fa41fd37fd52a9446282a481675bbc0
parent49e9efeac7cab2853a3b9b4fabbb3b3753ab03d5 (diff)
downloadchromium_src-99759ea92d569b5f8927c287901ae79a559b9de0.zip
chromium_src-99759ea92d569b5f8927c287901ae79a559b9de0.tar.gz
chromium_src-99759ea92d569b5f8927c287901ae79a559b9de0.tar.bz2
Revert 232525 "Integrate module import verification with module ..."
Broke unit_tests on XP Tests (dbg)(1) - imported module verification tests. > Integrate module import verification with module loading verification. > > BUG= > > Review URL: https://codereview.chromium.org/27507010 TBR=erikwright@chromium.org Review URL: https://codereview.chromium.org/56213004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@232566 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/browser_resources.grd2
-rw-r--r--chrome/browser/chrome_browser_main_win.cc4
-rw-r--r--chrome/browser/install_module_verifier_unittest_win.cc156
-rw-r--r--chrome/browser/install_module_verifier_win.cc219
-rw-r--r--chrome/browser/install_module_verifier_win.h48
-rw-r--r--chrome/browser/install_verification/OWNERS3
-rw-r--r--chrome/browser/install_verification/win/imported_module_verification.cc96
-rw-r--r--chrome/browser/install_verification/win/imported_module_verification.h21
-rw-r--r--chrome/browser/install_verification/win/imported_module_verification_unittest.cc66
-rw-r--r--chrome/browser/install_verification/win/install_verification.cc37
-rw-r--r--chrome/browser/install_verification/win/install_verification.h12
-rw-r--r--chrome/browser/install_verification/win/loaded_module_verification.cc30
-rw-r--r--chrome/browser/install_verification/win/loaded_module_verification.h21
-rw-r--r--chrome/browser/install_verification/win/loaded_module_verification_unittest.cc62
-rw-r--r--chrome/browser/install_verification/win/loaded_modules_snapshot.cc50
-rw-r--r--chrome/browser/install_verification/win/loaded_modules_snapshot.h17
-rw-r--r--chrome/browser/install_verification/win/loaded_modules_snapshot_unittest.cc32
-rw-r--r--chrome/browser/install_verification/win/module_ids.cc92
-rw-r--r--chrome/browser/install_verification/win/module_ids.h28
-rw-r--r--chrome/browser/install_verification/win/module_ids_unittest.cc75
-rw-r--r--chrome/browser/install_verification/win/module_info.h39
-rw-r--r--chrome/browser/install_verification/win/module_info_unittest.cc27
-rw-r--r--chrome/browser/install_verification/win/module_list.cc66
-rw-r--r--chrome/browser/install_verification/win/module_list.h50
-rw-r--r--chrome/browser/install_verification/win/module_list_unittest.cc50
-rw-r--r--chrome/browser/install_verification/win/module_verification_common.cc38
-rw-r--r--chrome/browser/install_verification/win/module_verification_common.h33
-rw-r--r--chrome/browser/install_verification/win/module_verification_test.cc32
-rw-r--r--chrome/browser/install_verification/win/module_verification_test.h28
-rw-r--r--chrome/browser/profile_resetter/automatic_profile_resetter_delegate.cc41
-rw-r--r--chrome/chrome_browser.gypi17
-rw-r--r--chrome/chrome_tests_unit.gypi9
32 files changed, 436 insertions, 1065 deletions
diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd
index 91723a00..d71cd2e 100644
--- a/chrome/browser/browser_resources.grd
+++ b/chrome/browser/browser_resources.grd
@@ -401,7 +401,7 @@
<include name="IDR_AUTOMATIC_PROFILE_RESET_RULES_DRY" file="internal\resources\profile_reset\automatic_profile_reset_rules_dry.dat" type="BINDATA" />
<include name="IDR_AUTOMATIC_PROFILE_RESET_HASH_SEED" file="internal\resources\profile_reset\automatic_profile_reset_hash_seed.dat" type="BINDATA" />
<include name="IDR_AUTOMATIC_PROFILE_RESET_HASH_SEED_DRY" file="internal\resources\profile_reset\automatic_profile_reset_hash_seed_dry.dat" type="BINDATA" />
- <include name="IDR_ADDITIONAL_MODULE_IDS" file="${additional_modules_list_file}" use_base_dir="false" type="BINDATA" />
+ <include name="IDR_ADDITIONAL_MODULES_LIST" file="${additional_modules_list_file}" use_base_dir="false" type="BINDATA" />
</if>
<if expr="pp_ifdef('chromeos')">
<include name="IDR_SOUND_STARTUP_WAV" file="resources\chromeos\sounds\startup.wav" type="BINDATA" />
diff --git a/chrome/browser/chrome_browser_main_win.cc b/chrome/browser/chrome_browser_main_win.cc
index 68c0efa..7be7e23 100644
--- a/chrome/browser/chrome_browser_main_win.cc
+++ b/chrome/browser/chrome_browser_main_win.cc
@@ -22,7 +22,7 @@
#include "base/win/windows_version.h"
#include "base/win/wrapped_window_proc.h"
#include "chrome/browser/browser_util_win.h"
-#include "chrome/browser/install_verification/win/install_verification.h"
+#include "chrome/browser/install_module_verifier_win.h"
#include "chrome/browser/profiles/profile_info_cache.h"
#include "chrome/browser/profiles/profile_shortcut_manager.h"
#include "chrome/browser/shell_integration.h"
@@ -234,7 +234,7 @@ void ChromeBrowserMainPartsWin::PostBrowserStart() {
content::BrowserThread::GetMessageLoopProxyForThread(
content::BrowserThread::UI)->PostDelayedTask(
FROM_HERE,
- base::Bind(&VerifyInstallation),
+ base::Bind(&BeginModuleVerification),
base::TimeDelta::FromSeconds(45));
}
diff --git a/chrome/browser/install_module_verifier_unittest_win.cc b/chrome/browser/install_module_verifier_unittest_win.cc
new file mode 100644
index 0000000..0e1f501
--- /dev/null
+++ b/chrome/browser/install_module_verifier_unittest_win.cc
@@ -0,0 +1,156 @@
+// Copyright 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 "chrome/browser/install_module_verifier_win.h"
+
+#include <set>
+#include <string>
+#include <utility>
+#include <vector>
+
+#include "base/md5.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/values.h"
+#include "chrome/browser/enumerate_modules_model_win.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+
+void AddModule(base::ListValue* list,
+ ModuleEnumerator::ModuleType type,
+ const std::string& name) {
+ scoped_ptr<base::DictionaryValue> data(new DictionaryValue());
+ data->SetInteger("type", type);
+ data->SetString("name", name);
+ list->Append(data.release());
+}
+
+} // namespace
+
+TEST(InstallModuleVerifierTest, ExtractLoadedModuleNameDigests) {
+ std::set<std::string> loaded_module_name_digests;
+ scoped_ptr<base::ListValue> list(new ListValue());
+ ExtractLoadedModuleNameDigests(*list, &loaded_module_name_digests);
+ ASSERT_TRUE(loaded_module_name_digests.empty());
+ // WinSock modules are ignored.
+ AddModule(list.get(),
+ ModuleEnumerator::SHELL_EXTENSION, "winsock_module.dll");
+ // Shell Extension modules are ignored.
+ AddModule(
+ list.get(),
+ ModuleEnumerator::WINSOCK_MODULE_REGISTRATION, "shell_extension.dll");
+ AddModule(list.get(), ModuleEnumerator::LOADED_MODULE, "fancy_pants.dll");
+ AddModule(list.get(), ModuleEnumerator::LOADED_MODULE, "chrome.dll");
+ ExtractLoadedModuleNameDigests(*list, &loaded_module_name_digests);
+ ASSERT_EQ(2, loaded_module_name_digests.size());
+ ASSERT_NE(loaded_module_name_digests.end(),
+ loaded_module_name_digests.find(base::MD5String("chrome.dll")));
+ ASSERT_NE(loaded_module_name_digests.end(),
+ loaded_module_name_digests.find(
+ base::MD5String("fancy_pants.dll")));
+}
+
+TEST(InstallModuleVerifierTest, VerifyModules) {
+ std::set<std::string> loaded_module_name_digests;
+ std::set<size_t> reported_module_ids;
+
+ VerifyModules(loaded_module_name_digests,
+ AdditionalModules(),
+ &reported_module_ids);
+ ASSERT_TRUE(reported_module_ids.empty());
+
+ // Expected, Loaded modules are reported.
+ loaded_module_name_digests.insert(base::MD5String("chrome.dll"));
+ // Unexpected modules are ignored.
+ loaded_module_name_digests.insert(base::MD5String("fancy_pants.dll"));
+ VerifyModules(loaded_module_name_digests,
+ AdditionalModules(),
+ &reported_module_ids);
+ ASSERT_EQ(1, reported_module_ids.size());
+ // chrome.dll
+ ASSERT_NE(reported_module_ids.end(), reported_module_ids.find(1u));
+ reported_module_ids.clear();
+
+ // AdditionalModules can be used to detect other modules.
+ AdditionalModules additional_modules;
+ std::string fancy_pants_md5_digest(base::MD5String("fancy_pants.dll"));
+ additional_modules.push_back(
+ std::make_pair(123u, base::StringPiece(fancy_pants_md5_digest)));
+ VerifyModules(loaded_module_name_digests,
+ additional_modules,
+ &reported_module_ids);
+ ASSERT_EQ(2, reported_module_ids.size());
+ // chrome.dll
+ ASSERT_NE(reported_module_ids.end(), reported_module_ids.find(1u));
+ // fancy_pants.dll
+ ASSERT_NE(reported_module_ids.end(), reported_module_ids.find(123u));
+ reported_module_ids.clear();
+
+ // TODO(erikwright): Verify case-insensitive.
+}
+
+TEST(InstallModuleVerifierTest, ParseAdditionalModules) {
+ std::vector<std::pair<size_t, base::StringPiece> > additional_modules;
+
+ ParseAdditionalModules(base::StringPiece(), &additional_modules);
+ ASSERT_EQ(0u, additional_modules.size());
+
+ // Invalid input.
+ ParseAdditionalModules("hello", &additional_modules);
+ ASSERT_EQ(0u, additional_modules.size());
+ ParseAdditionalModules("hello world", &additional_modules);
+ ASSERT_EQ(0u, additional_modules.size());
+ ParseAdditionalModules("hello world\nfoo bar", &additional_modules);
+ ASSERT_EQ(0u, additional_modules.size());
+ ParseAdditionalModules("123 world\nfoo bar", &additional_modules);
+ ASSERT_EQ(0u, additional_modules.size());
+
+ // A single valid line followed by an invalid line.
+ ParseAdditionalModules("hello 0123456789abcdef0123456789abcdef\nfoo bar",
+ &additional_modules);
+ ASSERT_EQ(0u, additional_modules.size());
+ ParseAdditionalModules("123 0123456789abcdef0123456789abcdef\nfoo bar",
+ &additional_modules);
+ ASSERT_EQ(1u, additional_modules.size());
+ ASSERT_EQ(123u, additional_modules[0].first);
+ ASSERT_EQ("0123456789abcdef0123456789abcdef", additional_modules[0].second);
+ additional_modules.clear();
+
+ // The same, but with \r\n.
+ ParseAdditionalModules("123 0123456789abcdef0123456789abcdef\r\nfoo bar",
+ &additional_modules);
+ ASSERT_EQ(1u, additional_modules.size());
+ ASSERT_EQ(123u, additional_modules[0].first);
+ ASSERT_EQ("0123456789abcdef0123456789abcdef", additional_modules[0].second);
+ additional_modules.clear();
+
+ // Several valid and invalid lines, with varying line terminations etc.
+ ParseAdditionalModules("123 0123456789abcdef0123456789abcdef\r\n"
+ "456 DEADBEEFDEADBEEF\r"
+ "789 DEADBEEFDEADBEEFDEADBEEFDEADBEEF\n"
+ "\n"
+ "\n"
+ "321 BAADCAFEBAADCAFEBAADCAFEBAADCAFE\n",
+ &additional_modules);
+ ASSERT_EQ(3u, additional_modules.size());
+ ASSERT_EQ(123u, additional_modules[0].first);
+ ASSERT_EQ("0123456789abcdef0123456789abcdef", additional_modules[0].second);
+ ASSERT_EQ(789u, additional_modules[1].first);
+ ASSERT_EQ("DEADBEEFDEADBEEFDEADBEEFDEADBEEF", additional_modules[1].second);
+ ASSERT_EQ(321u, additional_modules[2].first);
+ ASSERT_EQ("BAADCAFEBAADCAFEBAADCAFEBAADCAFE", additional_modules[2].second);
+ additional_modules.clear();
+
+ // Leading empty lines, no termination on final line.
+ ParseAdditionalModules("\n"
+ "123 0123456789abcdef0123456789abcdef\r\n"
+ "321 BAADCAFEBAADCAFEBAADCAFEBAADCAFE",
+ &additional_modules);
+ ASSERT_EQ(2u, additional_modules.size());
+ ASSERT_EQ(123u, additional_modules[0].first);
+ ASSERT_EQ("0123456789abcdef0123456789abcdef", additional_modules[0].second);
+ ASSERT_EQ(321u, additional_modules[1].first);
+ ASSERT_EQ("BAADCAFEBAADCAFEBAADCAFEBAADCAFE", additional_modules[1].second);
+ additional_modules.clear();
+}
diff --git a/chrome/browser/install_module_verifier_win.cc b/chrome/browser/install_module_verifier_win.cc
new file mode 100644
index 0000000..bca42a5
--- /dev/null
+++ b/chrome/browser/install_module_verifier_win.cc
@@ -0,0 +1,219 @@
+// Copyright 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 "chrome/browser/install_module_verifier_win.h"
+
+#include <string>
+
+#include "base/basictypes.h"
+#include "base/compiler_specific.h"
+#include "base/logging.h"
+#include "base/md5.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/metrics/sparse_histogram.h"
+#include "base/strings/string_number_conversions.h"
+#include "base/strings/string_tokenizer.h"
+#include "base/strings/string_util.h"
+#include "base/values.h"
+#include "chrome/browser/chrome_notification_types.h"
+#include "chrome/browser/enumerate_modules_model_win.h"
+#include "content/public/browser/notification_observer.h"
+#include "content/public/browser/notification_registrar.h"
+#include "content/public/browser/notification_service.h"
+#include "content/public/browser/notification_source.h"
+#include "grit/browser_resources.h"
+#include "ui/base/resource/resource_bundle.h"
+
+namespace {
+
+struct { size_t id; const char* module_name_digest; }
+ kExpectedInstallModules[] = {
+ {1u, "c8cc47613e155f2129f480c6ced84549"}, // chrome.dll
+ {2u, "49b78a23b0d8d5d8fb60d4e472b22764"}, // chrome_child.dll
+ };
+
+// Helper to extract canonical loaded module names from the EnumerateModulesWin
+// output and then verify the results.
+void VerifyEnumeratedModules(const base::ListValue& module_list) {
+ std::set<std::string> module_name_digests;
+ ExtractLoadedModuleNameDigests(module_list, &module_name_digests);
+
+ AdditionalModules additional_modules;
+ ParseAdditionalModules(
+ ResourceBundle::GetSharedInstance().GetRawDataResource(
+ IDR_ADDITIONAL_MODULES_LIST),
+ &additional_modules);
+
+ std::set<size_t> installed_module_ids;
+ VerifyModules(module_name_digests, additional_modules, &installed_module_ids);
+ for (std::set<size_t>::iterator it = installed_module_ids.begin();
+ it != installed_module_ids.end();
+ ++it) {
+ UMA_HISTOGRAM_SPARSE_SLOWLY("InstallVerifier.ModuleMatch", *it);
+ }
+}
+
+// Waits for NOTIFICATION_MODULE_LIST_ENUMERATED, which indicates that
+// EnumerateModulesWin has completed its work. Retrieves the enumerated module
+// list and processes it.
+class InstallModuleVerifier : public content::NotificationObserver {
+ public:
+ // Creates an instance that will wait for module enumeration to complete,
+ // process the results, and then delete itself.
+ static void WaitForModuleList() {
+ // Will delete itself when scan results are available.
+ new InstallModuleVerifier();
+ }
+
+ private:
+ InstallModuleVerifier() {
+ notification_registrar_.Add(this,
+ chrome::NOTIFICATION_MODULE_LIST_ENUMERATED,
+ content::NotificationService::AllSources());
+ }
+
+ ~InstallModuleVerifier() {}
+
+ // content::NotificationObserver implementation.
+ virtual void Observe(int type,
+ const content::NotificationSource& source,
+ const content::NotificationDetails& details) OVERRIDE {
+ DCHECK_EQ(type, chrome::NOTIFICATION_MODULE_LIST_ENUMERATED);
+ EnumerateModulesModel* model =
+ content::Source<EnumerateModulesModel>(source).ptr();
+ scoped_ptr<base::ListValue> module_list(model->GetModuleList());
+
+ if (module_list.get())
+ VerifyEnumeratedModules(*module_list);
+
+ delete this;
+ }
+
+ content::NotificationRegistrar notification_registrar_;
+
+ DISALLOW_COPY_AND_ASSIGN(InstallModuleVerifier);
+};
+
+} // namespace
+
+void BeginModuleVerification() {
+ scoped_ptr<base::ListValue> module_list(
+ EnumerateModulesModel::GetInstance()->GetModuleList());
+ if (module_list.get()) {
+ VerifyEnumeratedModules(*module_list);
+ } else {
+ InstallModuleVerifier::WaitForModuleList();
+ EnumerateModulesModel::GetInstance()->ScanNow();
+ }
+}
+
+void ExtractLoadedModuleNameDigests(
+ const base::ListValue& module_list,
+ std::set<std::string>* module_name_digests) {
+ DCHECK(module_name_digests);
+
+ // EnumerateModulesModel produces a list of dictionaries.
+ // Each dictionary corresponds to a module and exposes a number of properties.
+ // We care only about 'type' and 'name'.
+ for (size_t i = 0; i < module_list.GetSize(); ++i) {
+ const base::DictionaryValue* module_dictionary = NULL;
+ if (!module_list.GetDictionary(i, &module_dictionary))
+ continue;
+ ModuleEnumerator::ModuleType module_type =
+ ModuleEnumerator::LOADED_MODULE;
+ if (!module_dictionary->GetInteger(
+ "type", reinterpret_cast<int*>(&module_type)) ||
+ module_type != ModuleEnumerator::LOADED_MODULE) {
+ continue;
+ }
+ std::string module_name;
+ if (!module_dictionary->GetString("name", &module_name))
+ continue;
+ StringToLowerASCII(&module_name);
+ module_name_digests->insert(base::MD5String(module_name));
+ }
+}
+
+void VerifyModules(
+ const std::set<std::string>& module_name_digests,
+ const AdditionalModules& additional_modules,
+ std::set<size_t>* installed_module_ids) {
+ DCHECK(installed_module_ids);
+
+ for (size_t i = 0; i < arraysize(kExpectedInstallModules); ++i) {
+ if (module_name_digests.find(
+ kExpectedInstallModules[i].module_name_digest) !=
+ module_name_digests.end()) {
+ installed_module_ids->insert(kExpectedInstallModules[i].id);
+ }
+ }
+
+ for (AdditionalModules::const_iterator it = additional_modules.begin();
+ it != additional_modules.end(); ++it) {
+ std::string additional_module = it->second.as_string();
+ StringToLowerASCII(&additional_module);
+
+ if (module_name_digests.find(additional_module)
+ != module_name_digests.end()) {
+ installed_module_ids->insert(it->first);
+ }
+ }
+}
+
+namespace {
+
+// Parses a line consisting of a positive decimal number and a 32-digit
+// hexadecimal number, separated by a space. Inserts the output, if valid, into
+// |additional_modules|. Unexpected leading or trailing characters will cause
+// the line to be ignored, as will invalid decimal/hexadecimal characters.
+void ParseAdditionalModuleLine(
+ const base::StringPiece& line,
+ AdditionalModules* additional_modules) {
+ DCHECK(additional_modules);
+
+ base::CStringTokenizer line_tokenizer(line.begin(), line.end(), " ");
+
+ if (!line_tokenizer.GetNext())
+ return; // Empty string.
+ base::StringPiece id_piece(line_tokenizer.token_piece());
+
+ if (!line_tokenizer.GetNext())
+ return; // No delimiter (' ').
+ base::StringPiece digest_piece(line_tokenizer.token_piece());
+
+ if (line_tokenizer.GetNext())
+ return; // Unexpected trailing characters.
+
+ unsigned id = 0;
+ if (!StringToUint(id_piece, &id))
+ return; // First token was not decimal.
+
+ if (digest_piece.length() != 32)
+ return; // Second token is not the right length.
+
+ for (base::StringPiece::const_iterator it = digest_piece.begin();
+ it != digest_piece.end(); ++it) {
+ if (!IsHexDigit(*it))
+ return; // Second token has invalid characters.
+ }
+
+ // This is a valid line.
+ additional_modules->push_back(std::make_pair(id, digest_piece));
+}
+
+} // namespace
+
+void ParseAdditionalModules(
+ const base::StringPiece& raw_data,
+ AdditionalModules* additional_modules) {
+ DCHECK(additional_modules);
+
+ base::CStringTokenizer file_tokenizer(raw_data.begin(),
+ raw_data.end(),
+ "\r\n");
+ while (file_tokenizer.GetNext()) {
+ ParseAdditionalModuleLine(base::StringPiece(file_tokenizer.token_piece()),
+ additional_modules);
+ }
+}
diff --git a/chrome/browser/install_module_verifier_win.h b/chrome/browser/install_module_verifier_win.h
new file mode 100644
index 0000000..ab0683d
--- /dev/null
+++ b/chrome/browser/install_module_verifier_win.h
@@ -0,0 +1,48 @@
+// Copyright 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.
+
+#ifndef CHROME_BROWSER_INSTALL_MODULE_VERIFIER_WIN_H_
+#define CHROME_BROWSER_INSTALL_MODULE_VERIFIER_WIN_H_
+
+#include <set>
+#include <string>
+#include <utility>
+#include <vector>
+
+#include "base/strings/string_piece.h"
+
+namespace base {
+class ListValue;
+} // namespace base
+
+typedef std::vector<std::pair<size_t, base::StringPiece> > AdditionalModules;
+
+// Starts a background process to verify installed modules. Results are reported
+// via UMA.
+void BeginModuleVerification();
+
+// Converts a list of modules descriptions extracted from EnumerateModulesModel
+// into a list of loaded module name digests.
+void ExtractLoadedModuleNameDigests(
+ const base::ListValue& module_list,
+ std::set<std::string>* loaded_module_name_digests);
+
+// Verifies a list of installed module name digests and inserts installed module
+// IDs into the supplied set.
+void VerifyModules(const std::set<std::string>& module_name_digests,
+ const AdditionalModules& additional_modules,
+ std::set<size_t>* installed_module_ids);
+
+// Parses a list of additional modules to verify. The data format is a series of
+// lines. Each line starts with a decimal ID, then a module name digest,
+// separated by a space. Lines are terminated by \r and/or \n. The result is a
+// vector of pairs where the first value is an ID and the second value is the
+// corresponding module name digest. The StringPieces use the same underlying
+// storage as |raw_data|.
+//
+// Invalid lines are ignored.
+void ParseAdditionalModules(const base::StringPiece& raw_data,
+ AdditionalModules* additional_modules);
+
+#endif // CHROME_BROWSER_INSTALL_MODULE_VERIFIER_WIN_H_
diff --git a/chrome/browser/install_verification/OWNERS b/chrome/browser/install_verification/OWNERS
deleted file mode 100644
index 11103fa..0000000
--- a/chrome/browser/install_verification/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-erikwright@chromium.org
-mad@chromium.org
-robertshield@chromium.org
diff --git a/chrome/browser/install_verification/win/imported_module_verification.cc b/chrome/browser/install_verification/win/imported_module_verification.cc
deleted file mode 100644
index 9a3b7da..0000000
--- a/chrome/browser/install_verification/win/imported_module_verification.cc
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright 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 "chrome/browser/install_verification/win/imported_module_verification.h"
-
-#include <Windows.h>
-
-#include <algorithm>
-#include <iterator>
-#include <string>
-#include <vector>
-#include "base/logging.h"
-#include "base/strings/string16.h"
-#include "chrome/browser/install_verification/win/module_info.h"
-
-namespace {
-
-// We must make sure not to include modules here that are likely to get unloaded
-// because the scanning of the module is not done within a loader lock, so is
-// not resilient to changes made to the modules list.
-const wchar_t* const kModulesToScan[] = {
- L"chrome.dll",
- L"kernel32.dll",
- L"user32.dll"
-};
-
-bool AddressBeyondRange(const ModuleInfo& module, uintptr_t address) {
- return module.base_address + module.size < address;
-}
-
-void ScanImportAddressTable(
- HMODULE module_handle,
- const std::set<ModuleInfo>& loaded_modules,
- std::set<base::string16>* imported_modules) {
- DCHECK(module_handle);
- DCHECK(imported_modules);
-
- // To find the Import Address Table address, we start from the DOS header.
- // The module handle is actually the base address where the header is.
- IMAGE_DOS_HEADER* dos_header =
- reinterpret_cast<IMAGE_DOS_HEADER*>(module_handle);
- // The e_lfanew is an offset from the DOS header to the NT header. It should
- // never be 0.
- DCHECK(dos_header->e_lfanew);
- IMAGE_NT_HEADERS* nt_headers = reinterpret_cast<IMAGE_NT_HEADERS*>(
- module_handle + dos_header->e_lfanew / sizeof(uintptr_t));
- // For modules that have an import address table, its offset from the
- // DOS header is stored in the second data directory's VirtualAddress.
- if (!nt_headers->OptionalHeader.DataDirectory[1].VirtualAddress)
- return;
- IMAGE_IMPORT_DESCRIPTOR* image_descriptor =
- reinterpret_cast<IMAGE_IMPORT_DESCRIPTOR*>(module_handle +
- nt_headers->OptionalHeader.DataDirectory[1].VirtualAddress /
- sizeof(uintptr_t));
- // The list of Import Address Tables ends with an empty {0} descriptor.
- while (image_descriptor->Characteristics) {
- uintptr_t* address = reinterpret_cast<uintptr_t*>(
- module_handle + image_descriptor->FirstThunk / sizeof(uintptr_t));
- // Each section of the Import Address Table ends with a NULL funcpointer.
- while (*address) {
- std::set<ModuleInfo>::const_iterator lower_bound = std::lower_bound(
- loaded_modules.begin(), loaded_modules.end(), *address,
- AddressBeyondRange);
- if (lower_bound != loaded_modules.end() &&
- lower_bound->ContainsAddress(*address)) {
- imported_modules->insert(lower_bound->name);
- }
- ++address;
- }
- image_descriptor += sizeof(image_descriptor) / sizeof(uintptr_t);
- }
-}
-
-} // namespace
-
-void VerifyImportedModules(const std::set<ModuleInfo>& loaded_modules,
- const ModuleIDs& module_ids,
- ModuleVerificationDelegate* delegate){
- std::set<base::string16> imported_module_names;
- for (size_t i = 0; i < arraysize(kModulesToScan); ++i) {
- HMODULE module_handle = ::GetModuleHandle(kModulesToScan[i]);
- if (module_handle) {
- ScanImportAddressTable(module_handle,
- loaded_modules,
- &imported_module_names);
- }
- }
-
- std::vector<std::string> module_name_digests;
- std::transform(imported_module_names.begin(),
- imported_module_names.end(),
- std::back_inserter(module_name_digests),
- &CalculateModuleNameDigest);
- ReportModuleMatches(module_name_digests, module_ids, delegate);
-}
diff --git a/chrome/browser/install_verification/win/imported_module_verification.h b/chrome/browser/install_verification/win/imported_module_verification.h
deleted file mode 100644
index 749c358..0000000
--- a/chrome/browser/install_verification/win/imported_module_verification.h
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 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.
-
-#ifndef CHROME_BROWSER_INSTALL_VERIFICATION_WIN_IMPORTED_MODULE_VERIFICATION_H_
-#define CHROME_BROWSER_INSTALL_VERIFICATION_WIN_IMPORTED_MODULE_VERIFICATION_H_
-
-#include <set>
-
-#include "chrome/browser/install_verification/win/module_ids.h"
-#include "chrome/browser/install_verification/win/module_verification_common.h"
-
-struct ModuleInfo;
-
-// Verifies module imports using the provided |loaded_modules| info and the
-// expected |module_ids|. Reports results to |delegate|.
-void VerifyImportedModules(const std::set<ModuleInfo>& loaded_modules,
- const ModuleIDs& module_ids,
- ModuleVerificationDelegate* delegate);
-
-#endif // CHROME_BROWSER_INSTALL_VERIFICATION_WIN_IMPORTED_MODULE_VERIFICATION_H_
diff --git a/chrome/browser/install_verification/win/imported_module_verification_unittest.cc b/chrome/browser/install_verification/win/imported_module_verification_unittest.cc
deleted file mode 100644
index 464eadf..0000000
--- a/chrome/browser/install_verification/win/imported_module_verification_unittest.cc
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 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 "chrome/browser/install_verification/win/imported_module_verification.h"
-
-#include <set>
-#include <utility>
-#include <vector>
-#include "chrome/browser/install_verification/win/module_ids.h"
-#include "chrome/browser/install_verification/win/module_info.h"
-#include "chrome/browser/install_verification/win/module_verification_test.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-class ImportedModuleVerificationTest : public ModuleVerificationTest {};
-
-TEST_F(ImportedModuleVerificationTest, TestCase) {
- std::set<ModuleInfo> loaded_modules;
- ModuleIDs empty_modules_of_interest;
- ModuleIDs non_matching_modules_of_interest;
- ModuleIDs matching_modules_of_interest;
-
- // This set of IDs will match because user32.dll imports advapi32.dll.
- matching_modules_of_interest.insert(
- std::make_pair(CalculateModuleNameDigest(L"fancy_pants.dll"), 999u));
- matching_modules_of_interest.insert(
- std::make_pair(CalculateModuleNameDigest(L"advapi32.dll"), 666u));
- matching_modules_of_interest.insert(
- std::make_pair(CalculateModuleNameDigest(L"unit_tests.exe"), 777u));
- matching_modules_of_interest.insert(
- std::make_pair(CalculateModuleNameDigest(L"user32.dll"), 888u));
-
- non_matching_modules_of_interest.insert(
- std::make_pair(CalculateModuleNameDigest(L"fancy_pants.dll"), 999u));
-
- // With empty loaded_modules, nothing matches.
- VerifyImportedModules(loaded_modules,
- empty_modules_of_interest,
- &ImportedModuleVerificationTest::ReportModule);
- ASSERT_TRUE(reported_module_ids_.empty());
- VerifyImportedModules(loaded_modules,
- non_matching_modules_of_interest,
- &ImportedModuleVerificationTest::ReportModule);
- ASSERT_TRUE(reported_module_ids_.empty());
- VerifyImportedModules(loaded_modules,
- matching_modules_of_interest,
- &ImportedModuleVerificationTest::ReportModule);
- ASSERT_TRUE(reported_module_ids_.empty());
-
- // With populated loaded_modules, only the 'matching' module data gives a
- // match.
- ASSERT_TRUE(GetLoadedModuleInfoSet(&loaded_modules));
- VerifyImportedModules(loaded_modules,
- empty_modules_of_interest,
- &ImportedModuleVerificationTest::ReportModule);
- ASSERT_TRUE(reported_module_ids_.empty());
- VerifyImportedModules(loaded_modules,
- non_matching_modules_of_interest,
- &ImportedModuleVerificationTest::ReportModule);
- ASSERT_TRUE(reported_module_ids_.empty());
- VerifyImportedModules(loaded_modules,
- matching_modules_of_interest,
- &ImportedModuleVerificationTest::ReportModule);
- ASSERT_EQ(1u, reported_module_ids_.size());
- ASSERT_EQ(666u, *reported_module_ids_.begin());
-}
diff --git a/chrome/browser/install_verification/win/install_verification.cc b/chrome/browser/install_verification/win/install_verification.cc
deleted file mode 100644
index c113dd2..0000000
--- a/chrome/browser/install_verification/win/install_verification.cc
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 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 "chrome/browser/install_verification/win/install_verification.h"
-
-#include <set>
-#include <vector>
-
-#include "base/metrics/sparse_histogram.h"
-#include "chrome/browser/install_verification/win/imported_module_verification.h"
-#include "chrome/browser/install_verification/win/loaded_module_verification.h"
-#include "chrome/browser/install_verification/win/module_ids.h"
-#include "chrome/browser/install_verification/win/module_info.h"
-#include "chrome/browser/install_verification/win/module_verification_common.h"
-
-namespace {
-
-void ReportModuleMatch(size_t module_id) {
- UMA_HISTOGRAM_SPARSE_SLOWLY("InstallVerifier.ModuleMatch", module_id);
-}
-
-void ReportImport(size_t module_id) {
- UMA_HISTOGRAM_SPARSE_SLOWLY("InstallVerifier.ModuleImport", module_id);
-}
-
-} // namespace
-
-void VerifyInstallation() {
- ModuleIDs module_ids;
- LoadModuleIDs(&module_ids);
- std::set<ModuleInfo> loaded_modules;
- if (GetLoadedModules(&loaded_modules)) {
- VerifyLoadedModules(loaded_modules, module_ids, &ReportModuleMatch);
- VerifyImportedModules(loaded_modules, module_ids, &ReportImport);
- }
-}
diff --git a/chrome/browser/install_verification/win/install_verification.h b/chrome/browser/install_verification/win/install_verification.h
deleted file mode 100644
index 64f6c42..0000000
--- a/chrome/browser/install_verification/win/install_verification.h
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright 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.
-
-#ifndef CHROME_BROWSER_INSTALL_VERIFICATION_WIN_INSTALL_VERIFICATION_H_
-#define CHROME_BROWSER_INSTALL_VERIFICATION_WIN_INSTALL_VERIFICATION_H_
-
-// Starts a background process to verify the Chrome installation. Results are
-// reported via UMA.
-void VerifyInstallation();
-
-#endif // CHROME_BROWSER_INSTALL_VERIFICATION_WIN_INSTALL_VERIFICATION_H_
diff --git a/chrome/browser/install_verification/win/loaded_module_verification.cc b/chrome/browser/install_verification/win/loaded_module_verification.cc
deleted file mode 100644
index da6253a..0000000
--- a/chrome/browser/install_verification/win/loaded_module_verification.cc
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 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 "chrome/browser/install_verification/win/loaded_module_verification.h"
-
-#include <algorithm>
-#include <iterator>
-#include <string>
-#include "chrome/browser/install_verification/win/module_ids.h"
-#include "chrome/browser/install_verification/win/module_info.h"
-
-namespace {
-
-std::string ExtractModuleNameDigest(const ModuleInfo& module_info) {
- return CalculateModuleNameDigest(module_info.name);
-}
-
-} // namespace
-
-void VerifyLoadedModules(const std::set<ModuleInfo>& loaded_modules,
- const ModuleIDs& module_ids,
- ModuleVerificationDelegate* delegate) {
- std::vector<std::string> module_name_digests;
- std::transform(loaded_modules.begin(),
- loaded_modules.end(),
- std::back_inserter(module_name_digests),
- &ExtractModuleNameDigest);
- ReportModuleMatches(module_name_digests, module_ids, delegate);
-}
diff --git a/chrome/browser/install_verification/win/loaded_module_verification.h b/chrome/browser/install_verification/win/loaded_module_verification.h
deleted file mode 100644
index 94786cc..0000000
--- a/chrome/browser/install_verification/win/loaded_module_verification.h
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 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.
-
-#ifndef CHROME_BROWSER_INSTALL_VERIFICATION_WIN_LOADED_MODULE_VERIFICATION_H_
-#define CHROME_BROWSER_INSTALL_VERIFICATION_WIN_LOADED_MODULE_VERIFICATION_H_
-
-#include <set>
-
-#include "chrome/browser/install_verification/win/module_ids.h"
-#include "chrome/browser/install_verification/win/module_verification_common.h"
-
-struct ModuleInfo;
-
-// Verifies the provided |loaded_modules| info against the expected
-// |module_ids|. Reports results to |delegate|.
-void VerifyLoadedModules(const std::set<ModuleInfo>& loaded_modules,
- const ModuleIDs& module_ids,
- ModuleVerificationDelegate* delegate);
-
-#endif // CHROME_BROWSER_INSTALL_VERIFICATION_WIN_LOADED_MODULE_VERIFICATION_H_
diff --git a/chrome/browser/install_verification/win/loaded_module_verification_unittest.cc b/chrome/browser/install_verification/win/loaded_module_verification_unittest.cc
deleted file mode 100644
index 6cff3af..0000000
--- a/chrome/browser/install_verification/win/loaded_module_verification_unittest.cc
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 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 "chrome/browser/install_verification/win/loaded_module_verification.h"
-
-#include "chrome/browser/install_verification/win/module_verification_test.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-class LoadedModuleVerificationTest : public ModuleVerificationTest { };
-
-TEST_F(LoadedModuleVerificationTest, TestCase) {
- std::set<ModuleInfo> loaded_modules;
- ModuleIDs empty_modules_of_interest;
- ModuleIDs non_matching_modules_of_interest;
- ModuleIDs matching_modules_of_interest;
-
- matching_modules_of_interest.insert(
- std::make_pair(CalculateModuleNameDigest(L"fancy_pants.dll"), 999u));
- matching_modules_of_interest.insert(
- std::make_pair(CalculateModuleNameDigest(L"advapi32.dll"), 666u));
- matching_modules_of_interest.insert(
- std::make_pair(CalculateModuleNameDigest(L"unit_tests.exe"), 777u));
- matching_modules_of_interest.insert(
- std::make_pair(CalculateModuleNameDigest(L"user32.dll"), 888u));
-
- non_matching_modules_of_interest.insert(
- std::make_pair(CalculateModuleNameDigest(L"fancy_pants.dll"), 999u));
-
- // With empty loaded_modules, nothing matches.
- VerifyLoadedModules(loaded_modules,
- empty_modules_of_interest,
- &ModuleVerificationTest::ReportModule);
- ASSERT_TRUE(reported_module_ids_.empty());
- VerifyLoadedModules(loaded_modules,
- non_matching_modules_of_interest,
- &ModuleVerificationTest::ReportModule);
- ASSERT_TRUE(reported_module_ids_.empty());
- VerifyLoadedModules(loaded_modules,
- matching_modules_of_interest,
- &ModuleVerificationTest::ReportModule);
- ASSERT_TRUE(reported_module_ids_.empty());
-
- // With populated loaded_modules, only the 'matching' module data gives a
- // match.
- ASSERT_TRUE(GetLoadedModuleInfoSet(&loaded_modules));
- VerifyLoadedModules(loaded_modules,
- empty_modules_of_interest,
- &ModuleVerificationTest::ReportModule);
- ASSERT_TRUE(reported_module_ids_.empty());
- VerifyLoadedModules(loaded_modules,
- non_matching_modules_of_interest,
- &ModuleVerificationTest::ReportModule);
- ASSERT_TRUE(reported_module_ids_.empty());
- VerifyLoadedModules(loaded_modules,
- matching_modules_of_interest,
- &ModuleVerificationTest::ReportModule);
- ASSERT_EQ(3u, reported_module_ids_.size());
- ASSERT_NE(reported_module_ids_.end(), reported_module_ids_.find(666u));
- ASSERT_NE(reported_module_ids_.end(), reported_module_ids_.find(777u));
- ASSERT_NE(reported_module_ids_.end(), reported_module_ids_.find(888u));
-}
diff --git a/chrome/browser/install_verification/win/loaded_modules_snapshot.cc b/chrome/browser/install_verification/win/loaded_modules_snapshot.cc
deleted file mode 100644
index 33d620f..0000000
--- a/chrome/browser/install_verification/win/loaded_modules_snapshot.cc
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 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 "chrome/browser/install_verification/win/loaded_modules_snapshot.h"
-
-#include <Psapi.h>
-
-#include "base/logging.h"
-
-bool GetLoadedModulesSnapshot(std::vector<HMODULE>* snapshot) {
- DCHECK(snapshot);
- DCHECK_EQ(0u, snapshot->size());
- snapshot->resize(1);
-
- HANDLE process = ::GetCurrentProcess();
-
- // We will retry at least once after first determining |bytes_required|. If
- // the list of modules changes after we receive |bytes_required| we may retry
- // more than once.
- int retries_remaining = 5;
- do {
- DWORD bytes_required = 0;
- // EnumProcessModules returns 'success' even if the buffer size is too
- // small.
- if (!::EnumProcessModules(process,
- &(*snapshot)[0],
- snapshot->size() * sizeof(HMODULE),
- &bytes_required)) {
- DPLOG(ERROR) << "::EnumProcessModules failed.";
- return false;
- }
- DCHECK_EQ(0u, bytes_required % sizeof(HMODULE));
- size_t num_modules = bytes_required / sizeof(HMODULE);
- if (num_modules <= snapshot->size()) {
- // Buffer size was too big, presumably because a module was unloaded.
- snapshot->erase(snapshot->begin() + num_modules, snapshot->end());
- return true;
- } else if (num_modules == 0) {
- DLOG(ERROR) << "Can't determine the module list size.";
- return false;
- } else {
- // Buffer size was too small. Try again with a larger buffer.
- snapshot->resize(num_modules, NULL);
- }
- } while (--retries_remaining);
-
- DLOG(ERROR) << "Failed to enumerate modules.";
- return false;
-}
diff --git a/chrome/browser/install_verification/win/loaded_modules_snapshot.h b/chrome/browser/install_verification/win/loaded_modules_snapshot.h
deleted file mode 100644
index d7266e2..0000000
--- a/chrome/browser/install_verification/win/loaded_modules_snapshot.h
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright 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.
-
-#ifndef CHROME_BROWSER_INSTALL_VERIFICATION_WIN_LOADED_MODULES_SNAPSHOT_H_
-#define CHROME_BROWSER_INSTALL_VERIFICATION_WIN_LOADED_MODULES_SNAPSHOT_H_
-
-#include <Windows.h>
-
-#include <vector>
-
-// Takes a snapshot of the modules loaded in the current process. The returned
-// HMODULEs are not add-ref'd, so they should not be closed and may be
-// invalidated at any time (should a module be unloaded).
-bool GetLoadedModulesSnapshot(std::vector<HMODULE>* snapshot);
-
-#endif // CHROME_BROWSER_INSTALL_VERIFICATION_WIN_LOADED_MODULES_SNAPSHOT_H_
diff --git a/chrome/browser/install_verification/win/loaded_modules_snapshot_unittest.cc b/chrome/browser/install_verification/win/loaded_modules_snapshot_unittest.cc
deleted file mode 100644
index ce6f89c..0000000
--- a/chrome/browser/install_verification/win/loaded_modules_snapshot_unittest.cc
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 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 "chrome/browser/install_verification/win/loaded_modules_snapshot.h"
-
-#include <Windows.h>
-
-#include <algorithm>
-#include <vector>
-
-#include "base/bind.h"
-#include "base/callback_helpers.h"
-#include "chrome/browser/install_verification/win/module_verification_test.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-TEST(LoadedModulesSnapshotTest, TestCase) {
- std::vector<HMODULE> snapshot;
-
- ASSERT_TRUE(GetLoadedModulesSnapshot(&snapshot));
- size_t original_snapshot_size = snapshot.size();
- ASSERT_GT(original_snapshot_size, 0u);
- snapshot.clear();
- HMODULE chrome_dll = ::LoadLibrary(L"chrome.dll");
- ASSERT_NE(static_cast<HMODULE>(NULL), chrome_dll);
- base::ScopedClosureRunner release_chrome_dll(
- base::Bind(base::IgnoreResult(&::FreeLibrary), chrome_dll));
- ASSERT_TRUE(GetLoadedModulesSnapshot(&snapshot));
- ASSERT_GT(snapshot.size(), original_snapshot_size);
- ASSERT_NE(snapshot.end(),
- std::find(snapshot.begin(), snapshot.end(), chrome_dll));
-}
diff --git a/chrome/browser/install_verification/win/module_ids.cc b/chrome/browser/install_verification/win/module_ids.cc
deleted file mode 100644
index c470c5d..0000000
--- a/chrome/browser/install_verification/win/module_ids.cc
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright 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 "chrome/browser/install_verification/win/module_ids.h"
-
-#include <utility>
-
-#include "base/basictypes.h"
-#include "base/logging.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/string_piece.h"
-#include "base/strings/string_tokenizer.h"
-#include "base/strings/string_util.h"
-#include "grit/browser_resources.h"
-#include "ui/base/resource/resource_bundle.h"
-
-namespace {
-
-struct { size_t id; const char* module_name_digest; }
- kExpectedInstallModules[] = {
- {1u, "c8cc47613e155f2129f480c6ced84549"}, // chrome.dll
- {2u, "49b78a23b0d8d5d8fb60d4e472b22764"}, // chrome_child.dll
- };
-
-// Parses a line consisting of a positive decimal number and a 32-digit
-// hexadecimal number, separated by a space. Inserts the output, if valid, into
-// |module_ids|. Unexpected leading or trailing characters will cause
-// the line to be ignored, as will invalid decimal/hexadecimal characters.
-void ParseAdditionalModuleID(
- const base::StringPiece& line,
- ModuleIDs* module_ids) {
- DCHECK(module_ids);
-
- base::CStringTokenizer line_tokenizer(line.begin(), line.end(), " ");
-
- if (!line_tokenizer.GetNext())
- return; // Empty string.
- base::StringPiece id_piece(line_tokenizer.token_piece());
-
- if (!line_tokenizer.GetNext())
- return; // No delimiter (' ').
- base::StringPiece digest_piece(line_tokenizer.token_piece());
-
- if (line_tokenizer.GetNext())
- return; // Unexpected trailing characters.
-
- unsigned id = 0;
- if (!StringToUint(id_piece, &id))
- return; // First token was not decimal.
-
- if (digest_piece.length() != 32)
- return; // Second token is not the right length.
-
- for (base::StringPiece::const_iterator it = digest_piece.begin();
- it != digest_piece.end(); ++it) {
- if (!IsHexDigit(*it))
- return; // Second token has invalid characters.
- }
-
- // This is a valid line.
- module_ids->insert(std::make_pair(digest_piece.as_string(), id));
-}
-
-} // namespace
-
-void ParseAdditionalModuleIDs(
- const base::StringPiece& raw_data,
- ModuleIDs* module_ids) {
- DCHECK(module_ids);
-
- base::CStringTokenizer file_tokenizer(raw_data.begin(),
- raw_data.end(),
- "\r\n");
- while (file_tokenizer.GetNext()) {
- ParseAdditionalModuleID(base::StringPiece(file_tokenizer.token_piece()),
- module_ids);
- }
-}
-
-void LoadModuleIDs(ModuleIDs* module_ids) {
- for (size_t i = 0; i < arraysize(kExpectedInstallModules); ++i) {
- module_ids->insert(
- std::make_pair(
- kExpectedInstallModules[i].module_name_digest,
- kExpectedInstallModules[i].id));
- }
- ParseAdditionalModuleIDs(
- ResourceBundle::GetSharedInstance().GetRawDataResource(
- IDR_ADDITIONAL_MODULE_IDS),
- module_ids);
-}
diff --git a/chrome/browser/install_verification/win/module_ids.h b/chrome/browser/install_verification/win/module_ids.h
deleted file mode 100644
index 22cea1d..0000000
--- a/chrome/browser/install_verification/win/module_ids.h
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 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.
-
-#ifndef CHROME_BROWSER_INSTALL_VERIFICATION_WIN_MODULE_IDS_H_
-#define CHROME_BROWSER_INSTALL_VERIFICATION_WIN_MODULE_IDS_H_
-
-#include <map>
-#include <string>
-
-#include "base/strings/string_piece.h"
-
-typedef std::map<std::string, size_t> ModuleIDs;
-
-// Parses a list of additional modules to verify. The data format is a series of
-// lines. Each line starts with a decimal ID, then a module name digest,
-// separated by a space. Lines are terminated by \r and/or \n. Invalid lines are
-// ignored.
-//
-// The result is a map of module name digests to module IDs.
-void ParseAdditionalModuleIDs(
- const base::StringPiece& raw_data,
- ModuleIDs* module_ids);
-
-// Loads standard module IDs and additional module IDs from a resource.
-void LoadModuleIDs(ModuleIDs* module_ids);
-
-#endif // CHROME_BROWSER_INSTALL_VERIFICATION_WIN_MODULE_IDS_H_
diff --git a/chrome/browser/install_verification/win/module_ids_unittest.cc b/chrome/browser/install_verification/win/module_ids_unittest.cc
deleted file mode 100644
index 55b1f0c..0000000
--- a/chrome/browser/install_verification/win/module_ids_unittest.cc
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright 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 "chrome/browser/install_verification/win/module_ids.h"
-
-#include "base/strings/string_piece.h"
-#include "chrome/browser/install_verification/win/module_verification_common.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-TEST(ModuleIDsTest, LoadModuleIDs) {
- ModuleIDs module_ids;
- LoadModuleIDs(&module_ids);
- ASSERT_EQ(1u, module_ids[CalculateModuleNameDigest(L"chrome.dll")]);
-}
-
-TEST(ModuleIDsTest, ParseAdditionalModuleIDs) {
- ModuleIDs module_ids;
-
- ParseAdditionalModuleIDs(base::StringPiece(), &module_ids);
- ASSERT_EQ(0u, module_ids.size());
-
- // Invalid input.
- ParseAdditionalModuleIDs("hello", &module_ids);
- ASSERT_EQ(0u, module_ids.size());
- ParseAdditionalModuleIDs("hello world", &module_ids);
- ASSERT_EQ(0u, module_ids.size());
- ParseAdditionalModuleIDs("hello world\nfoo bar", &module_ids);
- ASSERT_EQ(0u, module_ids.size());
- ParseAdditionalModuleIDs("123 world\nfoo bar", &module_ids);
- ASSERT_EQ(0u, module_ids.size());
- ParseAdditionalModuleIDs("hello 0123456789abcdef0123456789abcdef\nfoo bar",
- &module_ids);
- ASSERT_EQ(0u, module_ids.size());
-
- // A single valid line followed by an invalid line.
- ParseAdditionalModuleIDs("123 0123456789abcdef0123456789abcdef\nfoo bar",
- &module_ids);
- ASSERT_EQ(1u, module_ids.size());
- ASSERT_EQ(123u, module_ids.begin()->second);
- ASSERT_EQ("0123456789abcdef0123456789abcdef", module_ids.begin()->first);
- module_ids.clear();
-
- // The same, but with \r\n.
- ParseAdditionalModuleIDs("123 0123456789abcdef0123456789abcdef\r\nfoo bar",
- &module_ids);
- ASSERT_EQ(1u, module_ids.size());
- ASSERT_EQ(123u, module_ids.begin()->second);
- ASSERT_EQ("0123456789abcdef0123456789abcdef", module_ids.begin()->first);
- module_ids.clear();
-
- // Several valid and invalid lines, with varying line terminations etc.
- ParseAdditionalModuleIDs("123 0123456789abcdef0123456789abcdef\r\n"
- "456 DEADBEEFDEADBEEF\r"
- "789 DEADBEEFDEADBEEFDEADBEEFDEADBEEF\n"
- "\n"
- "\n"
- "321 BAADCAFEBAADCAFEBAADCAFEBAADCAFE\n",
- &module_ids);
- ASSERT_EQ(3u, module_ids.size());
- ASSERT_EQ(123u, module_ids["0123456789abcdef0123456789abcdef"]);
- ASSERT_EQ(789u, module_ids["DEADBEEFDEADBEEFDEADBEEFDEADBEEF"]);
- ASSERT_EQ(321u, module_ids["BAADCAFEBAADCAFEBAADCAFEBAADCAFE"]);
- module_ids.clear();
-
- // Leading empty lines, no termination on final line.
- ParseAdditionalModuleIDs("\n"
- "123 0123456789abcdef0123456789abcdef\r\n"
- "321 BAADCAFEBAADCAFEBAADCAFEBAADCAFE",
- &module_ids);
- ASSERT_EQ(2u, module_ids.size());
- ASSERT_EQ(123u, module_ids["0123456789abcdef0123456789abcdef"]);
- ASSERT_EQ(321u, module_ids["BAADCAFEBAADCAFEBAADCAFEBAADCAFE"]);
- module_ids.clear();
-}
diff --git a/chrome/browser/install_verification/win/module_info.h b/chrome/browser/install_verification/win/module_info.h
deleted file mode 100644
index db3fb41..0000000
--- a/chrome/browser/install_verification/win/module_info.h
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 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.
-
-#ifndef CHROME_BROWSER_INSTALL_VERIFICATION_WIN_MODULE_INFO_H_
-#define CHROME_BROWSER_INSTALL_VERIFICATION_WIN_MODULE_INFO_H_
-
-#include "base/strings/string16.h"
-
-// Represents and facilitates operations on the address range corresponding to a
-// loaded module.
-struct ModuleInfo {
- ModuleInfo() : base_address(0), size(0) {
- }
-
- ModuleInfo(const base::char16* const module_name,
- uintptr_t module_base_address,
- size_t module_size)
- : base_address(module_base_address),
- size(module_size),
- name(module_name) {
- }
-
- // Sorts modules by their base address.
- bool operator< (const ModuleInfo& compare) const {
- return base_address < compare.base_address;
- }
-
- // Identifies if an address is within a module.
- bool ContainsAddress(uintptr_t address) const {
- return address >= base_address && address < base_address + size;
- }
-
- base::string16 name;
- uintptr_t base_address;
- size_t size;
-};
-
-#endif // CHROME_BROWSER_INSTALL_VERIFICATION_WIN_MODULE_INFO_H_
diff --git a/chrome/browser/install_verification/win/module_info_unittest.cc b/chrome/browser/install_verification/win/module_info_unittest.cc
deleted file mode 100644
index 6aa5b46..0000000
--- a/chrome/browser/install_verification/win/module_info_unittest.cc
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 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 "chrome/browser/install_verification/win/module_info.h"
-
-#include "testing/gtest/include/gtest/gtest.h"
-
-TEST(ModuleInfoTest, TestCase) {
- ModuleInfo foo(L"foo", 0, 10);
- ModuleInfo bar(L"bar", 5, 10);
-
- ASSERT_LT(foo, bar);
-
- ASSERT_EQ(L"foo", foo.name);
- ASSERT_TRUE(foo.ContainsAddress(4));
- ASSERT_TRUE(foo.ContainsAddress(5));
- ASSERT_TRUE(foo.ContainsAddress(9));
- ASSERT_FALSE(foo.ContainsAddress(10));
- ASSERT_FALSE(foo.ContainsAddress(11));
-
- ASSERT_FALSE(bar.ContainsAddress(4));
- ASSERT_TRUE(bar.ContainsAddress(5));
- ASSERT_TRUE(bar.ContainsAddress(9));
- ASSERT_TRUE(bar.ContainsAddress(10));
- ASSERT_TRUE(bar.ContainsAddress(11));
-}
diff --git a/chrome/browser/install_verification/win/module_list.cc b/chrome/browser/install_verification/win/module_list.cc
deleted file mode 100644
index 3080806..0000000
--- a/chrome/browser/install_verification/win/module_list.cc
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 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 "chrome/browser/install_verification/win/module_list.h"
-
-#include <Psapi.h>
-
-#include <algorithm>
-
-#include "base/logging.h"
-#include "chrome/browser/install_verification/win/module_info.h"
-
-namespace {
-
-void CheckFreeLibrary(HMODULE module) {
- BOOL result = ::FreeLibrary(module);
- DCHECK(result);
-}
-
-} // namespace
-
-ModuleList::~ModuleList() {
- std::for_each(modules_.begin(), modules_.end(), &CheckFreeLibrary);
-}
-
-scoped_ptr<ModuleList> ModuleList::FromLoadedModuleSnapshot(
- const std::vector<HMODULE>& snapshot) {
- scoped_ptr<ModuleList> instance(new ModuleList);
-
- for (size_t i = 0; i < snapshot.size(); ++i) {
- HMODULE module = NULL;
- // ::GetModuleHandleEx add-ref's the module if successful.
- if (::GetModuleHandleEx(
- GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,
- reinterpret_cast<LPCWSTR>(snapshot[i]),
- &module)) {
- instance->modules_.push_back(module);
- }
- }
-
- return instance.Pass();
-}
-
-void ModuleList::GetModuleInfoSet(std::set<ModuleInfo>* module_info_set) {
- HANDLE current_process = ::GetCurrentProcess();
- for (size_t i = 0; i < modules_.size(); ++i) {
- wchar_t filename[MAX_PATH];
- // Simply ignore modules where GetModuleFileName or GetModuleInformation
- // failed, they might have been unloaded.
- if (::GetModuleFileName(modules_[i], filename, MAX_PATH) &&
- filename[0]) {
- MODULEINFO sys_module_info = {};
- if (::GetModuleInformation(
- current_process, modules_[i],
- &sys_module_info, sizeof(sys_module_info))) {
- module_info_set->insert(ModuleInfo(
- filename,
- reinterpret_cast<uintptr_t>(sys_module_info.lpBaseOfDll),
- sys_module_info.SizeOfImage));
- }
- }
- }
-}
-
-ModuleList::ModuleList() {}
diff --git a/chrome/browser/install_verification/win/module_list.h b/chrome/browser/install_verification/win/module_list.h
deleted file mode 100644
index f5b1789..0000000
--- a/chrome/browser/install_verification/win/module_list.h
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 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.
-
-#ifndef CHROME_BROWSER_INSTALL_VERIFICATION_WIN_MODULE_LIST_H_
-#define CHROME_BROWSER_INSTALL_VERIFICATION_WIN_MODULE_LIST_H_
-
-#include <Windows.h>
-
-#include <set>
-#include <vector>
-
-#include "base/basictypes.h"
-#include "base/memory/scoped_ptr.h"
-
-struct ModuleInfo;
-
-// Manages a list of HMODULEs, releasing them upon destruction.
-class ModuleList {
- public:
- ~ModuleList();
-
- // Attempts to AddRef each HMODULE in |snapshot|. If a module was unloaded
- // since |snapshot| was taken it will be silently dropped. Successfully
- // AddRef'd HMODULEs will be inserted in the returned ModuleList.
- //
- // This method _always_ returns a valid ModuleList instance.
- static scoped_ptr<ModuleList> FromLoadedModuleSnapshot(
- const std::vector<HMODULE>& snapshot);
-
- // Retrieves name and address information for the module list.
- void GetModuleInfoSet(std::set<ModuleInfo>* module_info_set);
-
- size_t size() const {
- return modules_.size();
- }
-
- HMODULE operator[](size_t index) const {
- return modules_[index];
- }
-
- private:
- ModuleList();
-
- std::vector<HMODULE> modules_;
-
- DISALLOW_COPY_AND_ASSIGN(ModuleList);
-};
-
-#endif // CHROME_BROWSER_INSTALL_VERIFICATION_WIN_MODULE_LIST_H_
diff --git a/chrome/browser/install_verification/win/module_list_unittest.cc b/chrome/browser/install_verification/win/module_list_unittest.cc
deleted file mode 100644
index da047f1..0000000
--- a/chrome/browser/install_verification/win/module_list_unittest.cc
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 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 "chrome/browser/install_verification/win/module_list.h"
-
-#include <Windows.h>
-#include <vector>
-#include "base/bind.h"
-#include "base/bind_helpers.h"
-#include "base/callback_helpers.h"
-#include "base/memory/scoped_ptr.h"
-#include "chrome/browser/install_verification/win/loaded_modules_snapshot.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-TEST(ModuleListTest, TestCase) {
- std::vector<HMODULE> snapshot;
- ASSERT_TRUE(GetLoadedModulesSnapshot(&snapshot));
- scoped_ptr<ModuleList> module_list(
- ModuleList::FromLoadedModuleSnapshot(snapshot));
-
- // Lookup the number of loaded modules.
- size_t original_list_size = module_list->size();
- ASSERT_GT(original_list_size, 0u);
- snapshot.clear();
-
- // Load in a new module.
- HMODULE chrome_dll = ::LoadLibrary(L"chrome.dll");
- ASSERT_NE(static_cast<HMODULE>(NULL), chrome_dll);
- base::ScopedClosureRunner release_chrome_dll(
- base::Bind(base::IgnoreResult(&::FreeLibrary), chrome_dll));
-
- // Verify that there is an increase in the snapshot size.
- ASSERT_TRUE(GetLoadedModulesSnapshot(&snapshot));
- module_list = ModuleList::FromLoadedModuleSnapshot(snapshot);
- ASSERT_GT(module_list->size(), original_list_size);
-
- // Unload the module.
- release_chrome_dll.Reset();
-
- // Reset module_list here. That should typically be the last ref on
- // chrome.dll, so it will be unloaded now.
- module_list.reset();
- ASSERT_EQ(NULL, ::GetModuleHandle(L"chrome.dll"));
-
- // List the modules from the stale snapshot (including a dangling HMODULE to
- // chrome.dll), simulating a race condition.
- module_list = ModuleList::FromLoadedModuleSnapshot(snapshot);
- ASSERT_EQ(module_list->size(), original_list_size);
-}
diff --git a/chrome/browser/install_verification/win/module_verification_common.cc b/chrome/browser/install_verification/win/module_verification_common.cc
deleted file mode 100644
index fe40c1e..0000000
--- a/chrome/browser/install_verification/win/module_verification_common.cc
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 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 "chrome/browser/install_verification/win/module_verification_common.h"
-
-#include "base/files/file_path.h"
-#include "base/md5.h"
-#include "base/strings/string_util.h"
-#include "base/strings/utf_string_conversions.h"
-#include "chrome/browser/install_verification/win/loaded_modules_snapshot.h"
-#include "chrome/browser/install_verification/win/module_info.h"
-#include "chrome/browser/install_verification/win/module_list.h"
-
-std::string CalculateModuleNameDigest(const base::string16& module_name) {
- return base::MD5String(StringToLowerASCII(base::UTF16ToUTF8(
- base::FilePath(module_name).BaseName().value())));
-}
-
-bool GetLoadedModules(std::set<ModuleInfo>* loaded_modules) {
- std::vector<HMODULE> snapshot;
- if (!GetLoadedModulesSnapshot(&snapshot))
- return false;
-
- ModuleList::FromLoadedModuleSnapshot(snapshot)->GetModuleInfoSet(
- loaded_modules);
- return true;
-}
-
-void ReportModuleMatches(const std::vector<std::string>& module_name_digests,
- const ModuleIDs& module_ids,
- ModuleVerificationDelegate* delegate) {
- for (size_t i = 0; i < module_name_digests.size(); ++i) {
- ModuleIDs::const_iterator entry = module_ids.find(module_name_digests[i]);
- if (entry != module_ids.end())
- delegate(entry->second);
- }
-}
diff --git a/chrome/browser/install_verification/win/module_verification_common.h b/chrome/browser/install_verification/win/module_verification_common.h
deleted file mode 100644
index 2f05618..0000000
--- a/chrome/browser/install_verification/win/module_verification_common.h
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 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.
-
-#ifndef CHROME_BROWSER_INSTALL_VERIFICATION_WIN_MODULE_VERIFICATION_COMMON_H_
-#define CHROME_BROWSER_INSTALL_VERIFICATION_WIN_MODULE_VERIFICATION_COMMON_H_
-
-#include <set>
-#include <string>
-#include <vector>
-#include "base/strings/string16.h"
-#include "chrome/browser/install_verification/win/module_ids.h"
-
-struct ModuleInfo;
-
-// Calculates a canonical digest for |module_name|. Ignores case and strips path
-// information if present.
-std::string CalculateModuleNameDigest(const base::string16& module_name);
-
-// Retrieves a ModuleInfo set representing all currenly loaded modules. Returns
-// false in case of failure.
-bool GetLoadedModules(std::set<ModuleInfo>* loaded_modules);
-
-// Receives notification of a module verification result.
-typedef void (ModuleVerificationDelegate)(size_t module_id);
-
-// For each module in |module_name_digests|, reports the associated ID from
-// |module_ids|, if any, to |delegate|.
-void ReportModuleMatches(const std::vector<std::string>& module_name_digests,
- const ModuleIDs& module_ids,
- ModuleVerificationDelegate* delegate);
-
-#endif // CHROME_BROWSER_INSTALL_VERIFICATION_WIN_MODULE_VERIFICATION_COMMON_H_
diff --git a/chrome/browser/install_verification/win/module_verification_test.cc b/chrome/browser/install_verification/win/module_verification_test.cc
deleted file mode 100644
index 02f0106..0000000
--- a/chrome/browser/install_verification/win/module_verification_test.cc
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 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 "chrome/browser/install_verification/win/module_verification_test.h"
-
-#include <Windows.h>
-
-#include <vector>
-#include "chrome/browser/install_verification/win/loaded_modules_snapshot.h"
-#include "chrome/browser/install_verification/win/module_list.h"
-
-std::set<size_t> ModuleVerificationTest::reported_module_ids_;
-
-void ModuleVerificationTest::SetUp() {
- reported_module_ids_.clear();
-}
-
-bool ModuleVerificationTest::GetLoadedModuleInfoSet(
- std::set<ModuleInfo>* loaded_module_info_set) {
- std::vector<HMODULE> snapshot;
- if (!GetLoadedModulesSnapshot(&snapshot))
- return false;
- ModuleList::FromLoadedModuleSnapshot(snapshot)->GetModuleInfoSet(
- loaded_module_info_set);
- return true;
-}
-
-// static
-void ModuleVerificationTest::ReportModule(size_t module_id) {
- reported_module_ids_.insert(module_id);
-}
diff --git a/chrome/browser/install_verification/win/module_verification_test.h b/chrome/browser/install_verification/win/module_verification_test.h
deleted file mode 100644
index 5dfc458..0000000
--- a/chrome/browser/install_verification/win/module_verification_test.h
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 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.
-
-#ifndef CHROME_BROWSER_INSTALL_VERIFICATION_WIN_MODULE_VERIFICATION_TEST_H_
-#define CHROME_BROWSER_INSTALL_VERIFICATION_WIN_MODULE_VERIFICATION_TEST_H_
-
-#include <set>
-#include "base/compiler_specific.h"
-#include "chrome/browser/install_verification/win/module_info.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-struct ModuleInfo;
-
-class ModuleVerificationTest : public testing::Test {
- public:
- virtual void SetUp() OVERRIDE;
-
- protected:
- bool GetLoadedModuleInfoSet(std::set<ModuleInfo>* loaded_module_info_set);
-
- static void ReportModule(size_t module_id);
-
- static std::set<size_t> reported_module_ids_;
-};
-
-#endif // CHROME_BROWSER_INSTALL_VERIFICATION_WIN_MODULE_VERIFICATION_TEST_H_
-
diff --git a/chrome/browser/profile_resetter/automatic_profile_resetter_delegate.cc b/chrome/browser/profile_resetter/automatic_profile_resetter_delegate.cc
index e793669..45441d1 100644
--- a/chrome/browser/profile_resetter/automatic_profile_resetter_delegate.cc
+++ b/chrome/browser/profile_resetter/automatic_profile_resetter_delegate.cc
@@ -4,11 +4,8 @@
#include "chrome/browser/profile_resetter/automatic_profile_resetter_delegate.h"
-#include <string>
-
#include "base/callback.h"
#include "base/logging.h"
-#include "base/md5.h"
#include "base/memory/scoped_vector.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
@@ -23,6 +20,7 @@
#if defined(OS_WIN)
#include "chrome/browser/enumerate_modules_model_win.h"
+#include "chrome/browser/install_module_verifier_win.h"
#endif
namespace {
@@ -60,35 +58,6 @@ scoped_ptr<base::DictionaryValue> BuildSubTreeFromTemplateURL(
return tree.Pass();
}
-#if defined(OS_WIN)
-void ExtractLoadedModuleNameDigests(
- const base::ListValue& module_list,
- base::ListValue* module_name_digests) {
- DCHECK(module_name_digests);
-
- // EnumerateModulesModel produces a list of dictionaries.
- // Each dictionary corresponds to a module and exposes a number of properties.
- // We care only about 'type' and 'name'.
- for (size_t i = 0; i < module_list.GetSize(); ++i) {
- const base::DictionaryValue* module_dictionary = NULL;
- if (!module_list.GetDictionary(i, &module_dictionary))
- continue;
- ModuleEnumerator::ModuleType module_type =
- ModuleEnumerator::LOADED_MODULE;
- if (!module_dictionary->GetInteger(
- "type", reinterpret_cast<int*>(&module_type)) ||
- module_type != ModuleEnumerator::LOADED_MODULE) {
- continue;
- }
- std::string module_name;
- if (!module_dictionary->GetString("name", &module_name))
- continue;
- StringToLowerASCII(&module_name);
- module_name_digests->AppendString(base::MD5String(module_name));
- }
-}
-#endif
-
} // namespace
@@ -154,11 +123,15 @@ void AutomaticProfileResetterDelegateImpl::
scoped_ptr<base::ListValue> AutomaticProfileResetterDelegateImpl::
GetLoadedModuleNameDigests() const {
DCHECK(modules_have_been_enumerated_event_.is_signaled());
- scoped_ptr<base::ListValue> result(new base::ListValue);
+ std::set<std::string> module_name_digests;
#if defined(OS_WIN)
if (module_list_)
- ExtractLoadedModuleNameDigests(*module_list_, result.get());
+ ExtractLoadedModuleNameDigests(*module_list_, &module_name_digests);
#endif
+ scoped_ptr<base::ListValue> result(new base::ListValue);
+ for (std::set<std::string>::const_iterator it = module_name_digests.begin();
+ it != module_name_digests.end(); ++it)
+ result->AppendString(*it);
return result.Pass();
}
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index 4386064..17e3b3f 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -902,21 +902,8 @@
'browser/infobars/insecure_content_infobar_delegate.h',
'browser/infobars/simple_alert_infobar_delegate.cc',
'browser/infobars/simple_alert_infobar_delegate.h',
- 'browser/install_verification/win/imported_module_verification.cc',
- 'browser/install_verification/win/imported_module_verification.h',
- 'browser/install_verification/win/install_verification.cc',
- 'browser/install_verification/win/install_verification.h',
- 'browser/install_verification/win/loaded_module_verification.cc',
- 'browser/install_verification/win/loaded_module_verification.h',
- 'browser/install_verification/win/loaded_modules_snapshot.cc',
- 'browser/install_verification/win/loaded_modules_snapshot.h',
- 'browser/install_verification/win/module_ids.cc',
- 'browser/install_verification/win/module_ids.h',
- 'browser/install_verification/win/module_info.h',
- 'browser/install_verification/win/module_list.cc',
- 'browser/install_verification/win/module_list.h',
- 'browser/install_verification/win/module_verification_common.cc',
- 'browser/install_verification/win/module_verification_common.h',
+ 'browser/install_module_verifier_win.cc',
+ 'browser/install_module_verifier_win.h',
'browser/internal_auth.cc',
'browser/internal_auth.h',
'browser/intranet_redirect_detector.cc',
diff --git a/chrome/chrome_tests_unit.gypi b/chrome/chrome_tests_unit.gypi
index 77e7699..4e53a4d 100644
--- a/chrome/chrome_tests_unit.gypi
+++ b/chrome/chrome_tests_unit.gypi
@@ -971,14 +971,7 @@
'browser/importer/firefox_profile_lock_unittest.cc',
'browser/importer/profile_writer_unittest.cc',
'browser/internal_auth_unittest.cc',
- 'browser/install_verification/win/imported_module_verification_unittest.cc',
- 'browser/install_verification/win/loaded_module_verification_unittest.cc',
- 'browser/install_verification/win/loaded_modules_snapshot_unittest.cc',
- 'browser/install_verification/win/module_ids_unittest.cc',
- 'browser/install_verification/win/module_info_unittest.cc',
- 'browser/install_verification/win/module_list_unittest.cc',
- 'browser/install_verification/win/module_verification_test.cc',
- 'browser/install_verification/win/module_verification_test.h',
+ 'browser/install_module_verifier_unittest_win.cc',
'browser/invalidation/invalidation_service_android_unittest.cc',
'browser/invalidation/invalidation_service_test_template.cc',
'browser/invalidation/invalidation_service_test_template.h',