From 20cb5f48d36abeb25bbf6cdd6a5f6debe014e8b1 Mon Sep 17 00:00:00 2001 From: "jamesr@chromium.org" Date: Wed, 16 Dec 2009 01:01:25 +0000 Subject: 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 (jlmjln@gmail.com) 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 --- views/accelerator.h | 7 ++++++- views/view.h | 8 +++++++- 2 files changed, 13 insertions(+), 2 deletions(-) (limited to 'views') diff --git a/views/accelerator.h b/views/accelerator.h index a8d4c16..82be336 100644 --- a/views/accelerator.h +++ b/views/accelerator.h @@ -1,4 +1,4 @@ -// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. +// Copyright (c) 2009 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -32,6 +32,8 @@ class Accelerator : public menus::Accelerator { modifiers_ |= Event::EF_ALT_DOWN; } + virtual ~Accelerator() {} + bool IsShiftDown() const { return (modifiers_ & Event::EF_SHIFT_DOWN) == Event::EF_SHIFT_DOWN; } @@ -54,6 +56,9 @@ class AcceleratorTarget { public: // This method should return true if the accelerator was processed. virtual bool AcceleratorPressed(const Accelerator& accelerator) = 0; + + protected: + virtual ~AcceleratorTarget() {} }; } diff --git a/views/view.h b/views/view.h index ef806ea..13a85ee 100644 --- a/views/view.h +++ b/views/view.h @@ -1,4 +1,4 @@ -// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. +// Copyright (c) 2009 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -68,6 +68,9 @@ class ContextMenuController { int x, int y, bool is_mouse_gesture) = 0; + + protected: + virtual ~ContextMenuController() {} }; // DragController is responsible for writing drag data for a view, as well as @@ -94,6 +97,9 @@ class DragController { int press_y, int x, int y) = 0; + + protected: + virtual ~DragController() {} }; ///////////////////////////////////////////////////////////////////////////// -- cgit v1.1