1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 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_HISTORY_MODEL_WORKER_H_
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_SYNC_GLUE_HISTORY_MODEL_WORKER_H_
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sync/engine/model_safe_worker.h"
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/basictypes.h"
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/callback.h"
13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/ref_counted.h"
14dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "content/browser/cancelable_request.h"
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass HistoryService;
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace base {
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass WaitableEvent;
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace browser_sync {
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A ModelSafeWorker for history models that accepts requests
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// from the syncapi that need to be fulfilled on the history thread.
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass HistoryModelWorker : public browser_sync::ModelSafeWorker,
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                           public CancelableRequestConsumerBase {
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  explicit HistoryModelWorker(HistoryService* history_service);
303345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  virtual ~HistoryModelWorker();
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // ModelSafeWorker implementation. Called on syncapi SyncerThread.
3321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  virtual void DoWorkAndWaitUntilDone(Callback0::Type* work);
3421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  virtual ModelSafeGroup GetModelSafeGroup();
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual bool CurrentThreadIsWorkThread();
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // CancelableRequestConsumerBase implementation.
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void OnRequestAdded(CancelableRequestProvider* provider,
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                              CancelableRequestProvider::Handle handle) {}
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void OnRequestRemoved(CancelableRequestProvider* provider,
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                CancelableRequestProvider::Handle handle) {}
433345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
443345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  virtual void WillExecute(CancelableRequestProvider* provider,
453345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                           CancelableRequestProvider::Handle handle) {}
463345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
473345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  virtual void DidExecute(CancelableRequestProvider* provider,
483345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                          CancelableRequestProvider::Handle handle) {}
493345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private:
51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_refptr<HistoryService> history_service_;
52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DISALLOW_COPY_AND_ASSIGN(HistoryModelWorker);
53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}  // namespace browser_sync
56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif  // CHROME_BROWSER_SYNC_GLUE_HISTORY_MODEL_WORKER_H_
58