Outfielder Mitch Haniger and the San Francisco Giants agreed on a three-year, $43.5 million contract at the winter meetings.