Change StringValue to use std::string

Changing the field of 'Value' in edify to std::string from char*.
Meanwhile cleaning up the users of 'Value' and switching them to
cpp style.

Test: compontent tests passed.
Bug: 31713288

Change-Id: Iec5a7d601b1e4ca40935bf1c70d325dafecec235
diff --git a/tests/component/applypatch_test.cpp b/tests/component/applypatch_test.cpp
index 2f7cb02..75f2e10 100644
--- a/tests/component/applypatch_test.cpp
+++ b/tests/component/applypatch_test.cpp
@@ -153,25 +153,16 @@
             struct FileContents fc;
 
             ASSERT_EQ(0, LoadFileContents(&rand_file[0], &fc));
-            Value* patch1 = new Value();
-            patch1->type = VAL_BLOB;
-            patch1->size = fc.data.size();
-            patch1->data = static_cast<char*>(malloc(fc.data.size()));
-            memcpy(patch1->data, fc.data.data(), fc.data.size());
+            Value* patch1 = new Value(VAL_BLOB, std::string(fc.data.begin(), fc.data.end()));
             patches.push_back(patch1);
 
             ASSERT_EQ(0, LoadFileContents(&patch_file[0], &fc));
-            Value* patch2 = new Value();
-            patch2->type = VAL_BLOB;
-            patch2->size = fc.st.st_size;
-            patch2->data = static_cast<char*>(malloc(fc.data.size()));
-            memcpy(patch2->data, fc.data.data(), fc.data.size());
+            Value* patch2 = new Value(VAL_BLOB, std::string(fc.data.begin(), fc.data.end()));
             patches.push_back(patch2);
         }
         static void TearDownTestCase() {
             delete output_f;
             for (auto it = patches.begin(); it != patches.end(); ++it) {
-                free((*it)->data);
                 delete *it;
             }
             patches.clear();
@@ -210,88 +201,87 @@
 std::string ApplyPatchFullTest::output_loc;
 
 TEST_F(ApplyPatchTest, CheckModeSingle) {
-    char* s = &old_sha1[0];
-    ASSERT_EQ(0, applypatch_check(&old_file[0], 1, &s));
+    std::vector<std::string> sha1s = { old_sha1 };
+    ASSERT_EQ(0, applypatch_check(&old_file[0], sha1s));
 }
 
 TEST_F(ApplyPatchTest, CheckModeMultiple) {
-    char* argv[3] = {
-        &bad_sha1_a[0],
-        &old_sha1[0],
-        &bad_sha1_b[0]
+    std::vector<std::string> sha1s = {
+        bad_sha1_a,
+        old_sha1,
+        bad_sha1_b
     };
-    ASSERT_EQ(0, applypatch_check(&old_file[0], 3, argv));
+    ASSERT_EQ(0, applypatch_check(&old_file[0], sha1s));
 }
 
 TEST_F(ApplyPatchTest, CheckModeFailure) {
-    char* argv[2] = {
-        &bad_sha1_a[0],
-        &bad_sha1_b[0]
+    std::vector<std::string> sha1s = {
+        bad_sha1_a,
+        bad_sha1_b
     };
-    ASSERT_NE(0, applypatch_check(&old_file[0], 2, argv));
+    ASSERT_NE(0, applypatch_check(&old_file[0], sha1s));
 }
 
 TEST_F(ApplyPatchCacheTest, CheckCacheCorruptedSingle) {
     mangle_file(old_file);
-    char* s = &old_sha1[0];
-    ASSERT_EQ(0, applypatch_check(&old_file[0], 1, &s));
+    std::vector<std::string> sha1s = { old_sha1 };
+    ASSERT_EQ(0, applypatch_check(&old_file[0], sha1s));
 }
 
 TEST_F(ApplyPatchCacheTest, CheckCacheCorruptedMultiple) {
     mangle_file(old_file);
-    char* argv[3] = {
-        &bad_sha1_a[0],
-        &old_sha1[0],
-        &bad_sha1_b[0]
+    std::vector<std::string> sha1s = {
+        bad_sha1_a,
+        old_sha1,
+        bad_sha1_b
     };
-    ASSERT_EQ(0, applypatch_check(&old_file[0], 3, argv));
+    ASSERT_EQ(0, applypatch_check(&old_file[0], sha1s));
 }
 
 TEST_F(ApplyPatchCacheTest, CheckCacheCorruptedFailure) {
     mangle_file(old_file);
-    char* argv[2] = {
-        &bad_sha1_a[0],
-        &bad_sha1_b[0]
+    std::vector<std::string> sha1s = {
+        bad_sha1_a,
+        bad_sha1_b
     };
-    ASSERT_NE(0, applypatch_check(&old_file[0], 2, argv));
+    ASSERT_NE(0, applypatch_check(&old_file[0], sha1s));
 }
 
 TEST_F(ApplyPatchCacheTest, CheckCacheMissingSingle) {
     unlink(&old_file[0]);
-    char* s = &old_sha1[0];
-    ASSERT_EQ(0, applypatch_check(&old_file[0], 1, &s));
+    std::vector<std::string> sha1s = { old_sha1 };
+    ASSERT_EQ(0, applypatch_check(&old_file[0], sha1s));
 }
 
 TEST_F(ApplyPatchCacheTest, CheckCacheMissingMultiple) {
     unlink(&old_file[0]);
-    char* argv[3] = {
-        &bad_sha1_a[0],
-        &old_sha1[0],
-        &bad_sha1_b[0]
+    std::vector<std::string> sha1s = {
+        bad_sha1_a,
+        old_sha1,
+        bad_sha1_b
     };
-    ASSERT_EQ(0, applypatch_check(&old_file[0], 3, argv));
+    ASSERT_EQ(0, applypatch_check(&old_file[0], sha1s));
 }
 
 TEST_F(ApplyPatchCacheTest, CheckCacheMissingFailure) {
     unlink(&old_file[0]);
-    char* argv[2] = {
-        &bad_sha1_a[0],
-        &bad_sha1_b[0]
+    std::vector<std::string> sha1s = {
+        bad_sha1_a,
+        bad_sha1_b
     };
-    ASSERT_NE(0, applypatch_check(&old_file[0], 2, argv));
+    ASSERT_NE(0, applypatch_check(&old_file[0], sha1s));
 }
 
 TEST_F(ApplyPatchFullTest, ApplyInPlace) {
-    std::vector<char*> sha1s;
-    sha1s.push_back(&bad_sha1_a[0]);
-    sha1s.push_back(&old_sha1[0]);
-
+    std::vector<std::string> sha1s = {
+        bad_sha1_a,
+        old_sha1
+    };
     int ap_result = applypatch(&old_file[0],
             "-",
             &new_sha1[0],
             new_size,
-            2,
-            sha1s.data(),
+            sha1s,
             patches.data(),
             nullptr);
     ASSERT_EQ(0, ap_result);
@@ -301,8 +291,7 @@
             "-",
             &new_sha1[0],
             new_size,
-            2,
-            sha1s.data(),
+            sha1s,
             patches.data(),
             nullptr);
     ASSERT_EQ(0, ap_result);
@@ -310,15 +299,15 @@
 }
 
 TEST_F(ApplyPatchFullTest, ApplyInNewLocation) {
-    std::vector<char*> sha1s;
-    sha1s.push_back(&bad_sha1_a[0]);
-    sha1s.push_back(&old_sha1[0]);
+    std::vector<std::string> sha1s = {
+        bad_sha1_a,
+        old_sha1
+    };
     int ap_result = applypatch(&old_file[0],
             &output_loc[0],
             &new_sha1[0],
             new_size,
-            2,
-            sha1s.data(),
+            sha1s,
             patches.data(),
             nullptr);
     ASSERT_EQ(0, ap_result);
@@ -327,8 +316,7 @@
             &output_loc[0],
             &new_sha1[0],
             new_size,
-            2,
-            sha1s.data(),
+            sha1s,
             patches.data(),
             nullptr);
     ASSERT_EQ(0, ap_result);
@@ -337,15 +325,15 @@
 
 TEST_F(ApplyPatchFullTest, ApplyCorruptedInNewLocation) {
     mangle_file(old_file);
-    std::vector<char*> sha1s;
-    sha1s.push_back(&bad_sha1_a[0]);
-    sha1s.push_back(&old_sha1[0]);
+    std::vector<std::string> sha1s = {
+        bad_sha1_a,
+        old_sha1
+    };
     int ap_result = applypatch(&old_file[0],
             &output_loc[0],
             &new_sha1[0],
             new_size,
-            2,
-            sha1s.data(),
+            sha1s,
             patches.data(),
             nullptr);
     ASSERT_EQ(0, ap_result);
@@ -354,8 +342,7 @@
             &output_loc[0],
             &new_sha1[0],
             new_size,
-            2,
-            sha1s.data(),
+            sha1s,
             patches.data(),
             nullptr);
     ASSERT_EQ(0, ap_result);
@@ -366,15 +353,15 @@
     mangle_file(old_file);
     mangle_file(cache_file);
 
-    std::vector<char*> sha1s;
-    sha1s.push_back(&bad_sha1_a[0]);
-    sha1s.push_back(&old_sha1[0]);
+    std::vector<std::string> sha1s = {
+        bad_sha1_a,
+        old_sha1
+    };
     int ap_result = applypatch(&old_file[0],
             &output_loc[0],
             &new_sha1[0],
             new_size,
-            2,
-            sha1s.data(),
+            sha1s,
             patches.data(),
             nullptr);
     ASSERT_NE(0, ap_result);
@@ -383,8 +370,7 @@
             &output_loc[0],
             &new_sha1[0],
             new_size,
-            2,
-            sha1s.data(),
+            sha1s,
             patches.data(),
             nullptr);
     ASSERT_NE(0, ap_result);
diff --git a/tests/component/edify_test.cpp b/tests/component/edify_test.cpp
index a4dbb9f..287e40c 100644
--- a/tests/component/edify_test.cpp
+++ b/tests/component/edify_test.cpp
@@ -28,15 +28,15 @@
 
     State state(expr_str, nullptr);
 
-    char* result = Evaluate(&state, e);
+    std::string result;
+    bool status = Evaluate(&state, e, &result);
 
     if (expected == nullptr) {
-        EXPECT_EQ(nullptr, result);
+        EXPECT_FALSE(status);
     } else {
-        EXPECT_STREQ(expected, result);
+        EXPECT_STREQ(expected, result.c_str());
     }
 
-    free(result);
 }
 
 class EdifyTest : public ::testing::Test {
diff --git a/tests/component/updater_test.cpp b/tests/component/updater_test.cpp
index 64a6b37..a859f11 100644
--- a/tests/component/updater_test.cpp
+++ b/tests/component/updater_test.cpp
@@ -32,12 +32,13 @@
 
     State state(expr_str, nullptr);
 
-    char* result = Evaluate(&state, e);
+    std::string result;
+    bool status = Evaluate(&state, e, &result);
 
     if (expected == nullptr) {
-        EXPECT_EQ(nullptr, result);
+        EXPECT_FALSE(status);
     } else {
-        EXPECT_STREQ(expected, result);
+        EXPECT_STREQ(expected, result.c_str());
     }
 
     // Error code is set in updater/updater.cpp only, by parsing State.errmsg.
@@ -46,7 +47,6 @@
     // Cause code should always be available.
     EXPECT_EQ(cause_code, state.cause_code);
 
-    free(result);
 }
 
 class UpdaterTest : public ::testing::Test {