1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_SYNC_GLUE_DATABASE_MODEL_WORKER_H_ 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_SYNC_GLUE_DATABASE_MODEL_WORKER_H_ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/callback.h" 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sync/engine/model_safe_worker.h" 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 123345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merricknamespace base { 133345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickclass WaitableEvent; 143345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick} 153345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace browser_sync { 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A ModelSafeWorker for database models (eg. autofill) that accepts requests 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// from the syncapi that need to be fulfilled on the database thread. 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass DatabaseModelWorker : public browser_sync::ModelSafeWorker { 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch explicit DatabaseModelWorker() {} 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // ModelSafeWorker implementation. Called on syncapi SyncerThread. 2521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen virtual void DoWorkAndWaitUntilDone(Callback0::Type* work); 2621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen virtual ModelSafeGroup GetModelSafeGroup(); 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual bool CurrentThreadIsWorkThread(); 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void CallDoWorkAndSignalTask(Callback0::Type* work, 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch base::WaitableEvent* done); 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DISALLOW_COPY_AND_ASSIGN(DatabaseModelWorker); 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace browser_sync 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif // CHROME_BROWSER_SYNC_GLUE_DATABASE_MODEL_WORKER_H_ 39