Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1548)

Unified Diff: chrome/browser/chromeos/file_system_provider/fileapi/watcher_manager.cc

Issue 2712613002: Call WatcherManager functions on the IO thread. (Closed)
Patch Set: Addressed hidehiko's comments. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/file_system_provider/fileapi/watcher_manager.cc
diff --git a/chrome/browser/chromeos/file_system_provider/fileapi/watcher_manager.cc b/chrome/browser/chromeos/file_system_provider/fileapi/watcher_manager.cc
index 837d152adcf8fa61e72950f2a59e74ba3c8a6cb6..0a2b63a7ad5182db7daea589067fa9175cf8a3c9 100644
--- a/chrome/browser/chromeos/file_system_provider/fileapi/watcher_manager.cc
+++ b/chrome/browser/chromeos/file_system_provider/fileapi/watcher_manager.cc
@@ -4,6 +4,7 @@
#include "chrome/browser/chromeos/file_system_provider/fileapi/watcher_manager.h"
+#include "base/files/file.h"
#include "chrome/browser/chromeos/file_system_provider/mount_path_util.h"
#include "chrome/browser/chromeos/file_system_provider/provided_file_system_interface.h"
#include "content/public/browser/browser_thread.h"
@@ -14,16 +15,30 @@ using content::BrowserThread;
namespace chromeos {
namespace file_system_provider {
-WatcherManager::WatcherManager() {
+namespace {
+
+using StatusCallback = storage::WatcherManager::StatusCallback;
+using NotificationCallback = storage::WatcherManager::NotificationCallback;
+using ChangeType = storage::WatcherManager::ChangeType;
+
+void CallStatusCallbackOnIOThread(const StatusCallback& callback,
+ base::File::Error error) {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+ BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
+ base::Bind(callback, error));
}
-WatcherManager::~WatcherManager() {
+
+void CallNotificationCallbackOnIOThread(const NotificationCallback& callback,
+ ChangeType type) {
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
+ BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
+ base::Bind(callback, type));
}
-void WatcherManager::AddWatcher(
- const storage::FileSystemURL& url,
- bool recursive,
- const StatusCallback& callback,
- const NotificationCallback& notification_callback) {
+void AddWatcherOnUIThread(const storage::FileSystemURL& url,
+ bool recursive,
+ const StatusCallback& callback,
+ const NotificationCallback& notification_callback) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
util::FileSystemURLParser parser(url);
@@ -40,9 +55,9 @@ void WatcherManager::AddWatcher(
notification_callback);
}
-void WatcherManager::RemoveWatcher(const storage::FileSystemURL& url,
- bool recursive,
- const StatusCallback& callback) {
+void RemoveWatcherOnUIThread(const storage::FileSystemURL& url,
+ bool recursive,
+ const StatusCallback& callback) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
util::FileSystemURLParser parser(url);
@@ -55,5 +70,34 @@ void WatcherManager::RemoveWatcher(const storage::FileSystemURL& url,
url.origin(), parser.file_path(), recursive, callback);
}
+} // namespace
+
+WatcherManager::WatcherManager() = default;
+WatcherManager::~WatcherManager() = default;
+
+void WatcherManager::AddWatcher(
+ const storage::FileSystemURL& url,
+ bool recursive,
+ const StatusCallback& callback,
+ const NotificationCallback& notification_callback) {
+ DCHECK_CURRENTLY_ON(BrowserThread::IO);
+ BrowserThread::PostTask(
+ BrowserThread::UI, FROM_HERE,
+ base::Bind(&AddWatcherOnUIThread, url, recursive,
+ base::Bind(&CallStatusCallbackOnIOThread, callback),
+ base::Bind(&CallNotificationCallbackOnIOThread,
+ notification_callback)));
+}
+
+void WatcherManager::RemoveWatcher(const storage::FileSystemURL& url,
+ bool recursive,
+ const StatusCallback& callback) {
+ DCHECK_CURRENTLY_ON(BrowserThread::IO);
+ BrowserThread::PostTask(
+ BrowserThread::UI, FROM_HERE,
+ base::Bind(&RemoveWatcherOnUIThread, url, recursive,
+ base::Bind(&CallStatusCallbackOnIOThread, callback)));
+}
+
} // namespace file_system_provider
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698