| Index: chrome/browser/sync/glue/change_processor.h
|
| diff --git a/chrome/browser/sync/glue/change_processor.h b/chrome/browser/sync/glue/change_processor.h
|
| index 92fcfff16525f2df423afd88266cd37284cfa4f7..fba83016c1677687e6846ec62122cff4542e245c 100644
|
| --- a/chrome/browser/sync/glue/change_processor.h
|
| +++ b/chrome/browser/sync/glue/change_processor.h
|
| @@ -52,6 +52,24 @@ class ChangeProcessor {
|
| // datatypes need this, so we provide an empty default version.
|
| virtual void CommitChangesFromSyncModel();
|
|
|
| + // This ensures that startobserving gets called after stopobserving even
|
| + // if there is an early return in the function.
|
| + template <class T>
|
| + class ScopedStopObserving {
|
| + public:
|
| + explicit ScopedStopObserving(T* processor)
|
| + : processor_(processor) {
|
| + processor_->StopObserving();
|
| + }
|
| + ~ScopedStopObserving() {
|
| + processor_->StartObserving();
|
| + }
|
| +
|
| + private:
|
| + ScopedStopObserving() {}
|
| + T* processor_;
|
| + };
|
| +
|
| protected:
|
| // These methods are invoked by Start() and Stop() to do
|
| // implementation-specific work.
|
|
|