blob: 11c59310e866a4332ab4b01f724811b73c78818b [file] [log] [blame]
// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_PROFILES_STARTUP_TASK_RUNNER_SERVICE_H_
#define CHROME_BROWSER_PROFILES_STARTUP_TASK_RUNNER_SERVICE_H_
#include "base/basictypes.h"
#include "base/memory/ref_counted.h"
#include "base/threading/non_thread_safe.h"
#include "components/browser_context_keyed_service/browser_context_keyed_service.h"
class Profile;
namespace base {
class DeferredSequencedTaskRunner;
} // namespace base
// This service manages the startup task runners.
class StartupTaskRunnerService : public base::NonThreadSafe,
public BrowserContextKeyedService {
public:
explicit StartupTaskRunnerService(Profile* profile);
virtual ~StartupTaskRunnerService();
// Returns sequenced task runner where all bookmarks I/O operations are
// performed.
// This method should only be called from the UI thread.
// Note: Using a separate task runner per profile service gives a better
// management of the sequence in which the task are started in order to avoid
// congestion during start-up (e.g the caller may decide to start loading the
// bookmarks only after the history finished).
scoped_refptr<base::DeferredSequencedTaskRunner> GetBookmarkTaskRunner();
// Starts the task runners that are deferred during start-up.
void StartDeferredTaskRunners();
private:
Profile* profile_;
scoped_refptr<base::DeferredSequencedTaskRunner> bookmark_task_runner_;
DISALLOW_COPY_AND_ASSIGN(StartupTaskRunnerService);
};
#endif // CHROME_BROWSER_PROFILES_STARTUP_TASK_RUNNER_SERVICE_H_