| 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 3e8a467c64715eefc597120891b7c5b0f949b995..b6988097271f635ce5c0d833f5f48566d8f226c7 100644
|
| --- a/chrome/browser/sync/glue/change_processor.h
|
| +++ b/chrome/browser/sync/glue/change_processor.h
|
| @@ -1,4 +1,4 @@
|
| -// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
|
| +// Copyright (c) 2011 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.
|
|
|
| @@ -20,8 +20,7 @@ class UnrecoverableErrorHandler;
|
| // native model. This does not currently distinguish between model data types.
|
| class ChangeProcessor {
|
| public:
|
| - explicit ChangeProcessor(UnrecoverableErrorHandler* error_handler)
|
| - : running_(false), error_handler_(error_handler), share_handle_(NULL) {}
|
| + explicit ChangeProcessor(UnrecoverableErrorHandler* error_handler);
|
| virtual ~ChangeProcessor();
|
|
|
| // Call when the processor should accept changes from either provided model
|
| @@ -45,11 +44,13 @@ class ChangeProcessor {
|
| int change_count) = 0;
|
|
|
| // The changes found in ApplyChangesFromSyncModel may be too slow to be
|
| - // performed while holding a [Read/Write]Transaction lock. This function
|
| - // is called once the lock is released and performs any slow I/O operations
|
| - // without unnecessarily slowing the UI. Note that not all datatypes need
|
| - // this, so we provide an empty default version.
|
| - virtual void CommitChangesFromSyncModel() { }
|
| + // performed while holding a [Read/Write]Transaction lock or may interact
|
| + // with another thread, which might itself be waiting on the transaction lock,
|
| + // putting us at risk of deadlock.
|
| + // This function is called once the transactional lock is released and it is
|
| + // safe to perform inter-thread or slow I/O operations. Note that not all
|
| + // datatypes need this, so we provide an empty default version.
|
| + virtual void CommitChangesFromSyncModel();
|
|
|
| protected:
|
| // These methods are invoked by Start() and Stop() to do
|
| @@ -58,8 +59,8 @@ class ChangeProcessor {
|
| virtual void StopImpl() = 0;
|
|
|
| bool running() { return running_; }
|
| - UnrecoverableErrorHandler* error_handler() { return error_handler_; }
|
| - sync_api::UserShare* share_handle() { return share_handle_; }
|
| + UnrecoverableErrorHandler* error_handler();
|
| + sync_api::UserShare* share_handle();
|
|
|
| private:
|
| bool running_; // True if we have been told it is safe to process changes.
|
|
|