Use loader-based binding of GetInstallDetailsPayload for install_static.

The previous strategy of using GetModuleHandle + GetProcAddress was
overly complex and was causing some 3rd party software to tip renderers
over.

BUG=674541

Review-Url: https://codereview.chromium.org/2635953002
Cr-Commit-Position: refs/heads/master@{#444547}
diff --git a/chrome/install_static/install_details.cc b/chrome/install_static/install_details.cc
index b0fda62..688b079 100644
--- a/chrome/install_static/install_details.cc
+++ b/chrome/install_static/install_details.cc
@@ -67,16 +67,11 @@
 }
 
 // static
-void InstallDetails::InitializeFromPrimaryModule(
-    const wchar_t* primary_module_name) {
+void InstallDetails::InitializeFromPayload(
+    const InstallDetails::Payload* payload) {
   assert(!g_module_details);
-  using GetInstallDetailsPayloadFunction = const Payload*(__cdecl*)();
-  GetInstallDetailsPayloadFunction payload_getter =
-      reinterpret_cast<GetInstallDetailsPayloadFunction>(::GetProcAddress(
-          ::GetModuleHandle(primary_module_name), "GetInstallDetailsPayload"));
-  assert(payload_getter);
   // Intentionally leaked at shutdown.
-  g_module_details = new InstallDetails(payload_getter());
+  g_module_details = new InstallDetails(payload);
 }
 
 PrimaryInstallDetails::PrimaryInstallDetails() : InstallDetails(&payload_) {