1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
--- a/base/metrics/histogram.cc
+++ b/base/metrics/histogram.cc
@@ -94,6 +94,7 @@ class Histogram::Factory {
uint32_t bucket_count,
int32_t flags)
: Factory(name, HISTOGRAM, minimum, maximum, bucket_count, flags) {}
+ virtual ~Factory() = default;
// Create histogram based on construction parameters. Caller takes
// ownership of the returned object.
@@ -741,6 +742,7 @@ class LinearHistogram::Factory : public
bucket_count, flags) {
descriptions_ = descriptions;
}
+ ~Factory() override = default;
protected:
BucketRanges* CreateRanges() override {
@@ -932,6 +934,7 @@ class BooleanHistogram::Factory : public
public:
Factory(const std::string& name, int32_t flags)
: Histogram::Factory(name, BOOLEAN_HISTOGRAM, 1, 2, 3, flags) {}
+ ~Factory() override = default;
protected:
BucketRanges* CreateRanges() override {
@@ -1020,6 +1023,7 @@ class CustomHistogram::Factory : public
: Histogram::Factory(name, CUSTOM_HISTOGRAM, 0, 0, 0, flags) {
custom_ranges_ = custom_ranges;
}
+ ~Factory() override = default;
protected:
BucketRanges* CreateRanges() override {
--- a/base/metrics/statistics_recorder.h
+++ b/base/metrics/statistics_recorder.h
@@ -67,6 +67,7 @@ class BASE_EXPORT StatisticsRecorder {
// histograms from providers when necessary.
class HistogramProvider {
public:
+ virtual ~HistogramProvider() {}
// Merges all histogram information into the global versions.
virtual void MergeHistogramDeltas() = 0;
};
--- a/base/bind_unittest.cc
+++ b/base/bind_unittest.cc
@@ -69,6 +69,7 @@ static const int kChildValue = 2;
class Parent {
public:
+ virtual ~Parent() {}
void AddRef() const {}
void Release() const {}
virtual void VirtualSet() { value = kParentValue; }
@@ -78,18 +79,23 @@ class Parent {
class Child : public Parent {
public:
+ ~Child() override {}
void VirtualSet() override { value = kChildValue; }
void NonVirtualSet() { value = kChildValue; }
};
class NoRefParent {
public:
+ virtual ~NoRefParent() {}
virtual void VirtualSet() { value = kParentValue; }
void NonVirtualSet() { value = kParentValue; }
int value;
};
class NoRefChild : public NoRefParent {
+ public:
+ ~NoRefChild() override {}
+ private:
void VirtualSet() override { value = kChildValue; }
void NonVirtualSet() { value = kChildValue; }
};
|