Fix StrongAlias (de)serialization in IPC messages.

It currently uses
param_type::StrongAlias(..) to construct the type, which seems wrong
as param_type = util::StrongAlias<TagType, UnderlyingType>.
Which causes following compile error:

In file included from ../../ipc/ipc_message_utils_unittest.cc:5:
../../ipc/ipc_message_utils.h:1075:10: error: missing 'typename' prior to dependent type name 'param_type::StrongAlias'
    *r = param_type::StrongAlias(value);
         ^~~~~~~~~~~~~~~~~~~~~~~
Call StrongAlias constructor directly to fix this.
Add a regression unit test to fix the regression.

Bug: None
Change-Id: If172c83abd22498117c47a8721b7d9057c18a1d9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1983570
Reviewed-by: Ken Rockot <[email protected]>
Commit-Queue: Istiaque Ahmed <[email protected]>
Cr-Commit-Position: refs/heads/master@{#728702}
diff --git a/ipc/ipc_message_utils_unittest.cc b/ipc/ipc_message_utils_unittest.cc
index 8522d1b..92f31029 100644
--- a/ipc/ipc_message_utils_unittest.cc
+++ b/ipc/ipc_message_utils_unittest.cc
@@ -216,5 +216,19 @@
   EXPECT_EQ(input, output);
 }
 
+TEST(IPCMessageUtilsTest, StrongAlias) {
+  using TestType = util::StrongAlias<class Tag, int>;
+  TestType input(42);
+
+  base::Pickle pickle;
+  IPC::WriteParam(&pickle, input);
+
+  base::PickleIterator iter(pickle);
+  TestType output;
+  EXPECT_TRUE(IPC::ReadParam(&pickle, &iter, &output));
+
+  EXPECT_EQ(input, output);
+}
+
 }  // namespace
 }  // namespace IPC