It is part of our moral duty to punish a company for ignoring public good rather than excuse it as what a company must do. That's because if a company is punished financially (say by boycott) for making immoral decisions then they must follow a more moral course to maximize their profit.
Personally I don't think this is enough especially as companies become more pervasive and the confusion of subsidiaries which make it next to impossible to boycott the largest offenders, but that is fixed in the political sphere rather than the economic one.
I'd even expect the 'correct' long term 'required' choice for blizzard is to ignore any blow back and focus on the Chinese market. Still in this case shareholder focus being all about current quarter profits might help as company leadership might be more focused on keeping the shareholders happy than serving long term profit.
I agree. My point is that holding companies liable to an ever-shifting window of public opinion about their actions is not as long-term a solution as addressing the parts of the system that encourage or require their behavior.