Replace ScopedObservation::RemoveObservation with Reset().

This makes the class simpler to use in the common case.

Bug: 1145565
Change-Id: Ib6aab62eebf4e402e364687d4224d0f8d7077e6a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2549534
Reviewed-by: François Doray <[email protected]>
Commit-Queue: Sigurður Ásgeirsson <[email protected]>
Cr-Commit-Position: refs/heads/master@{#830231}
diff --git a/base/scoped_observation_unittest.cc b/base/scoped_observation_unittest.cc
index 37ca30e..882b173 100644
--- a/base/scoped_observation_unittest.cc
+++ b/base/scoped_observation_unittest.cc
@@ -77,6 +77,25 @@
   EXPECT_EQ(0u, s1.num_observers());
 }
 
+TEST(ScopedObservationTest, Reset) {
+  TestSource s1;
+  TestSourceObserver o1;
+  TestScopedObservation obs(&o1);
+  EXPECT_EQ(0u, s1.num_observers());
+  obs.Reset();
+
+  obs.Observe(&s1);
+  EXPECT_EQ(1u, s1.num_observers());
+  EXPECT_TRUE(s1.HasObserver(&o1));
+
+  obs.Reset();
+  EXPECT_EQ(0u, s1.num_observers());
+
+  // Safe to call with no observation.
+  obs.Reset();
+  EXPECT_EQ(0u, s1.num_observers());
+}
+
 TEST(ScopedObservationTest, IsObserving) {
   TestSource s1;
   TestSourceObserver o1;