diff options
author | kinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-12 07:55:08 +0000 |
---|---|---|
committer | kinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-12 07:55:08 +0000 |
commit | 072865b7e912c0962ccbe999bba78f8631e3c730 (patch) | |
tree | fc6e9fcc96149bfae589f847711f45eca1828825 /webkit/browser | |
parent | 03d20c8771d12961f67f60049c039d4f6fe50ca8 (diff) | |
download | chromium_src-072865b7e912c0962ccbe999bba78f8631e3c730.zip chromium_src-072865b7e912c0962ccbe999bba78f8631e3c730.tar.gz chromium_src-072865b7e912c0962ccbe999bba78f8631e3c730.tar.bz2 |
Cleanup: add const AddObserver method to TaskRunnerBoundObserverList
To deprecate TaskRunnerBoundObserverList::Source, which tends to
add more code just to ensure constness of the observer list.
BUG=241701
TEST=no behavioral changes (content_unittests:*File*)
NOTRY=true
Review URL: https://chromiumcodereview.appspot.com/18943006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@211356 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/browser')
4 files changed, 34 insertions, 59 deletions
diff --git a/webkit/browser/fileapi/mock_file_change_observer.cc b/webkit/browser/fileapi/mock_file_change_observer.cc index e72a389..74791f5 100644 --- a/webkit/browser/fileapi/mock_file_change_observer.cc +++ b/webkit/browser/fileapi/mock_file_change_observer.cc @@ -19,9 +19,8 @@ MockFileChangeObserver::~MockFileChangeObserver() {} // static ChangeObserverList MockFileChangeObserver::CreateList( MockFileChangeObserver* observer) { - ChangeObserverList::Source source; - source.AddObserver(observer, base::MessageLoopProxy::current().get()); - return ChangeObserverList(source); + ChangeObserverList list; + return list.AddObserver(observer, base::MessageLoopProxy::current().get()); } void MockFileChangeObserver::OnCreateFile(const FileSystemURL& url) { diff --git a/webkit/browser/fileapi/sandbox_file_system_backend.cc b/webkit/browser/fileapi/sandbox_file_system_backend.cc index b1256ff..f81af13 100644 --- a/webkit/browser/fileapi/sandbox_file_system_backend.cc +++ b/webkit/browser/fileapi/sandbox_file_system_backend.cc @@ -143,18 +143,15 @@ SandboxFileSystemBackend::SandboxFileSystemBackend( kDisableUsageTracking)), weak_factory_(this) { // Set quota observers. - UpdateObserverList::Source update_observers_src; - AccessObserverList::Source access_observers_src; - if (enable_usage_tracking_) { - update_observers_src.AddObserver(sandbox_context_->quota_observer(), - sandbox_context_->file_task_runner()); - access_observers_src.AddObserver(sandbox_context_->quota_observer(), NULL); + update_observers_ = update_observers_.AddObserver( + sandbox_context_->quota_observer(), + sandbox_context_->file_task_runner()); + access_observers_ = access_observers_.AddObserver( + sandbox_context_->quota_observer(), NULL); } - update_observers_ = UpdateObserverList(update_observers_src); - access_observers_ = AccessObserverList(access_observers_src); - syncable_update_observers_ = UpdateObserverList(update_observers_src); + syncable_update_observers_ = update_observers_; if (!sandbox_context_->file_task_runner()->RunsTasksOnCurrentThread()) { // Post prepopulate task only if it's not already running on @@ -462,9 +459,7 @@ void SandboxFileSystemBackend::AddFileUpdateObserver( UpdateObserverList* list = &update_observers_; if (type == kFileSystemTypeSyncable) list = &syncable_update_observers_; - UpdateObserverList::Source observer_source = list->source(); - observer_source.AddObserver(observer, task_runner); - *list = UpdateObserverList(observer_source); + *list = list->AddObserver(observer, task_runner); } void SandboxFileSystemBackend::AddFileChangeObserver( @@ -475,9 +470,7 @@ void SandboxFileSystemBackend::AddFileChangeObserver( ChangeObserverList* list = &change_observers_; if (type == kFileSystemTypeSyncable) list = &syncable_change_observers_; - ChangeObserverList::Source observer_source = list->source(); - observer_source.AddObserver(observer, task_runner); - *list = ChangeObserverList(observer_source); + *list = list->AddObserver(observer, task_runner); } void SandboxFileSystemBackend::AddFileAccessObserver( @@ -485,10 +478,7 @@ void SandboxFileSystemBackend::AddFileAccessObserver( FileAccessObserver* observer, base::SequencedTaskRunner* task_runner) { DCHECK(CanHandleType(type)); - AccessObserverList* list = &access_observers_; - AccessObserverList::Source observer_source = list->source(); - observer_source.AddObserver(observer, task_runner); - *list = AccessObserverList(observer_source); + access_observers_ = access_observers_.AddObserver(observer, task_runner); } const UpdateObserverList* SandboxFileSystemBackend::GetUpdateObservers( diff --git a/webkit/browser/fileapi/task_runner_bound_observer_list.h b/webkit/browser/fileapi/task_runner_bound_observer_list.h index 974447d..36a3393 100644 --- a/webkit/browser/fileapi/task_runner_bound_observer_list.h +++ b/webkit/browser/fileapi/task_runner_bound_observer_list.h @@ -34,37 +34,32 @@ void NotifyWrapper(T obj, Method m, const Params& p) { template <class Observer, class ObserverStoreType = Observer*> class TaskRunnerBoundObserverList { public: - // A constructor parameter class. - class Source { - public: - typedef scoped_refptr<base::SequencedTaskRunner> TaskRunnerPtr; - typedef std::map<ObserverStoreType, TaskRunnerPtr> ObserversListMap; - - // Add |observer| to the list parameter. The |observer| will be notified on - // the |runner_to_notify| runner. It is valid to give NULL as - // |runner_to_notify| (in such case notifications are dispatched on - // the current runner). - void AddObserver(Observer* observer, - base::SequencedTaskRunner* runner_to_notify) { - observers_.insert(std::make_pair(observer, runner_to_notify)); - } - - const ObserversListMap& observers() const { return observers_; } - - private: - ObserversListMap observers_; - }; + typedef scoped_refptr<base::SequencedTaskRunner> TaskRunnerPtr; + typedef std::map<ObserverStoreType, TaskRunnerPtr> ObserversListMap; // Creates an empty list. TaskRunnerBoundObserverList<Observer, ObserverStoreType>() {} - // Creates a new list with given |observers_param|. + // Creates a new list with given |observers|. explicit TaskRunnerBoundObserverList<Observer, ObserverStoreType>( - const Source& observers) - : source_(observers) {} + const ObserversListMap& observers) + : observers_(observers) {} virtual ~TaskRunnerBoundObserverList<Observer, ObserverStoreType>() {} + // Returns a new observer list with given observer. + // It is valid to give NULL as |runner_to_notify|, and in that case + // notifications are dispatched on the current runner. + // Note that this is a const method and does NOT change 'this' observer + // list but returns a new list. + TaskRunnerBoundObserverList<Observer, ObserverStoreType> AddObserver( + Observer* observer, + base::SequencedTaskRunner* runner_to_notify) const { + ObserversListMap observers = observers_; + observers.insert(std::make_pair(observer, runner_to_notify)); + return TaskRunnerBoundObserverList<Observer, ObserverStoreType>(observers); + } + // Notify on the task runner that is given to AddObserver. // If we're already on the runner this just dispatches the method. template <class Method, class Params> @@ -72,9 +67,8 @@ class TaskRunnerBoundObserverList { COMPILE_ASSERT( (base::internal::ParamsUseScopedRefptrCorrectly<Params>::value), badunboundmethodparams); - for (typename ObserversListMap::const_iterator it = - source_.observers().begin(); - it != source_.observers().end(); ++it) { + for (typename ObserversListMap::const_iterator it = observers_.begin(); + it != observers_.end(); ++it) { if (!it->second.get() || it->second->RunsTasksOnCurrentThread()) { DispatchToMethod(UnwrapTraits::Unwrap(it->first), method, params); continue; @@ -86,14 +80,10 @@ class TaskRunnerBoundObserverList { } } - const Source& source() const { return source_; } - private: typedef base::internal::UnwrapTraits<ObserverStoreType> UnwrapTraits; - typedef scoped_refptr<base::SequencedTaskRunner> TaskRunnerPtr; - typedef std::map<ObserverStoreType, TaskRunnerPtr> ObserversListMap; - Source source_; + ObserversListMap observers_; }; class FileAccessObserver; diff --git a/webkit/browser/fileapi/test_file_system_backend.cc b/webkit/browser/fileapi/test_file_system_backend.cc index dbbeb4f..700cc0d 100644 --- a/webkit/browser/fileapi/test_file_system_backend.cc +++ b/webkit/browser/fileapi/test_file_system_backend.cc @@ -32,9 +32,7 @@ class TestFileSystemBackend::QuotaUtil QuotaUtil(base::SequencedTaskRunner* task_runner) : usage_(0), task_runner_(task_runner) { - UpdateObserverList::Source source; - source.AddObserver(this, task_runner_.get()); - update_observers_ = UpdateObserverList(source); + update_observers_ = update_observers_.AddObserver(this, task_runner_.get()); } virtual ~QuotaUtil() {} @@ -90,9 +88,7 @@ class TestFileSystemBackend::QuotaUtil FileSystemType type, FileChangeObserver* observer, base::SequencedTaskRunner* task_runner) OVERRIDE { - ChangeObserverList::Source source = change_observers_.source(); - source.AddObserver(observer, task_runner); - change_observers_ = ChangeObserverList(source); + change_observers_ = change_observers_.AddObserver(observer, task_runner); } virtual void AddFileAccessObserver( |