Give classes with virtual methods virtual protected destructors instead of implicit non-virtual public destructors.

Was originally:
Replace public nonvirtual destructors in classes with virtual members
with protected nonvirtual destructors where possible, and with
public virtual destructors where destruction of a derived class occurs.
(Excluding chrome/browser/...)

(Part 4 of http://www.gotw.ca/publications/mill18.htm
has a rationale for why public nonvirtual destructors in classes with
virtual members is dangerous.)

Patch by: Jacob Mandelson ([email protected])
BUG=none
TEST=base_unittests & app_unittests

Review URL: http://codereview.chromium.org/200106

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@34633 0039d316-1c4b-4281-b951-d872f2087c98
22 files changed