Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2017)

Unified Diff: chrome_elf/chrome_elf_util_unittest.cc

Issue 1841573002: [Chrome ELF] New NT registry API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Clean up OverrideRegistry function. Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome_elf/chrome_elf_util_unittest.cc
diff --git a/chrome_elf/chrome_elf_util_unittest.cc b/chrome_elf/chrome_elf_util_unittest.cc
index 565785f95d6cd9020a5379d625118cdf0d15cbe1..c94ffcc35ed68e7907b1a1ee2d2a6ef49d350b18 100644
--- a/chrome_elf/chrome_elf_util_unittest.cc
+++ b/chrome_elf/chrome_elf_util_unittest.cc
@@ -5,9 +5,13 @@
#include "chrome_elf/chrome_elf_util.h"
#include <tuple>
+#include <windows.h>
+#include <versionhelpers.h> // windows.h must be before.
#include "base/test/test_reg_util_win.h"
#include "base/win/registry.h"
+#include "chrome_elf/chrome_elf_constants.h"
+#include "chrome_elf/chrome_elf_reg.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/platform_test.h"
@@ -54,6 +58,80 @@ TEST(ChromeElfUtilTest, BrowserProcessTest) {
EXPECT_FALSE(IsNonBrowserProcess());
}
+//------------------------------------------------------------------------------
+// NT registry API tests (chrome_elf_reg)
+//------------------------------------------------------------------------------
+
+TEST(ChromeElfUtilTest, NTRegistry) {
+ HANDLE key_handle;
+ wchar_t* dword_val_name = L"DwordTestValue";
+ DWORD dword_val = 1234;
+ wchar_t* sz_val_name = L"SzTestValue";
+ base::string16 sz_val = L"blah de blah de blahhhhh.";
+ wchar_t* sz_val_name2 = L"SzTestValueEmpty";
+ base::string16 sz_val2 = L"";
+ wchar_t* multisz_val_name = L"SzmultiTestValue";
+ std::vector<base::string16> multisz_val;
+ base::string16 multi1 = L"one";
+ base::string16 multi2 = L"two";
+ base::string16 multi3 = L"three";
+ wchar_t* multisz_val_name2 = L"SzmultiTestValueBad";
+ base::string16 multi_empty = L"";
+
+ // Create a temp key to play under.
+ ASSERT_TRUE(nt::CreateRegKey(nt::AUTO, elf_sec::kRegSecurityPath,
+ KEY_ALL_ACCESS, &key_handle));
+
+ // Exercise the supported getter & setter functions.
+ EXPECT_TRUE(nt::SetRegValue_DWORD(key_handle, dword_val_name, dword_val));
+ EXPECT_TRUE(nt::SetRegValue_SZ(key_handle, sz_val_name, &sz_val));
+ EXPECT_TRUE(nt::SetRegValue_SZ(key_handle, sz_val_name2, &sz_val2));
+
+ DWORD get_dword = 0;
+ base::string16 get_sz;
+ EXPECT_TRUE(nt::GetRegValue_DWORD(key_handle, dword_val_name, &get_dword) &&
+ get_dword == dword_val);
+ EXPECT_TRUE(nt::GetRegValue_SZ(key_handle, sz_val_name, &get_sz) &&
+ get_sz.compare(sz_val) == 0);
+ EXPECT_TRUE(nt::GetRegValue_SZ(key_handle, sz_val_name2, &get_sz) &&
+ get_sz.compare(sz_val2) == 0);
+
+ multisz_val.push_back(multi1);
+ multisz_val.push_back(multi2);
+ multisz_val.push_back(multi3);
+ EXPECT_TRUE(
+ nt::SetRegValue_MULTI_SZ(key_handle, multisz_val_name, &multisz_val));
+ multisz_val.clear();
+ multisz_val.push_back(multi_empty);
+ EXPECT_TRUE(
+ nt::SetRegValue_MULTI_SZ(key_handle, multisz_val_name2, &multisz_val));
+ multisz_val.clear();
+
+ EXPECT_TRUE(
+ nt::GetRegValue_MULTI_SZ(key_handle, multisz_val_name, &multisz_val));
+ if (multisz_val.size() == 3) {
+ EXPECT_TRUE(multi1.compare(multisz_val.at(0)) == 0);
+ EXPECT_TRUE(multi2.compare(multisz_val.at(1)) == 0);
+ EXPECT_TRUE(multi3.compare(multisz_val.at(2)) == 0);
+ } else {
+ EXPECT_TRUE(false);
+ }
+ multisz_val.clear();
+
+ EXPECT_TRUE(
+ nt::GetRegValue_MULTI_SZ(key_handle, multisz_val_name2, &multisz_val));
+ if (multisz_val.size() == 1) {
+ EXPECT_TRUE(multi_empty.compare(multisz_val.at(0)) == 0);
+ } else {
+ EXPECT_TRUE(false);
+ }
+ multisz_val.clear();
+
+ // Clean up
+ EXPECT_TRUE(nt::DeleteRegKey(key_handle));
+ nt::CloseRegKey(key_handle);
+}
+
// Parameterized test with paramters:
// 1: product: "canary" or "google"
// 2: install level: "user" or "system"
@@ -64,8 +142,9 @@ class ChromeElfUtilTest :
const char*> > {
protected:
void SetUp() override {
- override_manager_.OverrideRegistry(HKEY_LOCAL_MACHINE);
- override_manager_.OverrideRegistry(HKEY_CURRENT_USER);
+ override_manager_.OverrideRegistry(HKEY_LOCAL_MACHINE, &nt::HKLM_override);
+ override_manager_.OverrideRegistry(HKEY_CURRENT_USER, &nt::HKCU_override);
+
const char* app;
const char* level;
const char* mode;

Powered by Google App Engine
This is Rietveld 408576698