summaryrefslogtreecommitdiffstats
path: root/webkit/browser
diff options
context:
space:
mode:
authorkinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-12 07:55:08 +0000
committerkinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-07-12 07:55:08 +0000
commit072865b7e912c0962ccbe999bba78f8631e3c730 (patch)
treefc6e9fcc96149bfae589f847711f45eca1828825 /webkit/browser
parent03d20c8771d12961f67f60049c039d4f6fe50ca8 (diff)
downloadchromium_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')
-rw-r--r--webkit/browser/fileapi/mock_file_change_observer.cc5
-rw-r--r--webkit/browser/fileapi/sandbox_file_system_backend.cc28
-rw-r--r--webkit/browser/fileapi/task_runner_bound_observer_list.h52
-rw-r--r--webkit/browser/fileapi/test_file_system_backend.cc8
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(