Commit d0991d94 authored by gavinp@chromium.org's avatar gavinp@chromium.org

Clean up ScopedVectorTest's LifeCycleObject.

The scoped_ptr<LifeCycleObject> was unncessary and confusing. The LifeCycleWatcher safely owns its LifeCycleObject and deletes it. The scoped_ptr made things a bit confusing even, since the only reason we weren't getting a double delete was because the scoped_ptr had an (ever so) slightly narrower scope than watcher.

Making the LifeCycleObject mostly private should encourage future callers not to add scary aliases. 

R=willchan@chromium.org
BUG=None


Review URL: https://chromiumcodereview.appspot.com/11416166

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@171058 0039d316-1c4b-4281-b951-d872f2087c98
parent 44d561bb
......@@ -23,16 +23,18 @@ class LifeCycleObject {
virtual ~Observer() {}
};
explicit LifeCycleObject(Observer* observer)
: observer_(observer) {
observer_->OnLifeCycleConstruct(this);
}
~LifeCycleObject() {
observer_->OnLifeCycleDestroy(this);
}
private:
friend class LifeCycleWatcher;
explicit LifeCycleObject(Observer* observer)
: observer_(observer) {
observer_->OnLifeCycleConstruct(this);
}
Observer* observer_;
DISALLOW_COPY_AND_ASSIGN(LifeCycleObject);
......@@ -115,19 +117,18 @@ TEST(ScopedVectorTest, Clear) {
EXPECT_EQ(LC_CONSTRUCTED, watcher.life_cycle_state());
scoped_vector.clear();
EXPECT_EQ(LC_DESTROYED, watcher.life_cycle_state());
EXPECT_EQ(static_cast<size_t>(0), scoped_vector.size());
EXPECT_TRUE(scoped_vector.empty());
}
TEST(ScopedVectorTest, WeakClear) {
LifeCycleWatcher watcher;
EXPECT_EQ(LC_INITIAL, watcher.life_cycle_state());
ScopedVector<LifeCycleObject> scoped_vector;
scoped_ptr<LifeCycleObject> object(watcher.NewLifeCycleObject());
scoped_vector.push_back(object.get());
scoped_vector.push_back(watcher.NewLifeCycleObject());
EXPECT_EQ(LC_CONSTRUCTED, watcher.life_cycle_state());
scoped_vector.weak_clear();
EXPECT_EQ(LC_CONSTRUCTED, watcher.life_cycle_state());
EXPECT_EQ(static_cast<size_t>(0), scoped_vector.size());
EXPECT_TRUE(scoped_vector.empty());
}
TEST(ScopedVectorTest, ResizeShrink) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment