| Index: content/public/common/startup_task_runner.h
|
| diff --git a/content/public/common/startup_task_runner.h b/content/public/common/startup_task_runner.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3a186cdda6e79305d70526c8531e0c10c096d64a
|
| --- /dev/null
|
| +++ b/content/public/common/startup_task_runner.h
|
| @@ -0,0 +1,67 @@
|
| +// 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 CONTENT_BROWSER_STARTUP_TASK_RUNNER_H_
|
| +#define CONTENT_BROWSER_STARTUP_TASK_RUNNER_H_
|
| +
|
| +#include <list>
|
| +
|
| +#include "base/callback.h"
|
| +#include "base/memory/ref_counted.h"
|
| +#include "base/single_thread_task_runner.h"
|
| +
|
| +#include "build/build_config.h"
|
| +
|
| +// This class runs startup tasks.The tasks are either run immediately inline,
|
| +// or are run one at a time on the UI thread's message loop. The motivation for
|
| +// this is that, on targets where the UI is already started, it allows us to
|
| +// keep the UI responsive during startup.
|
| +
|
| +namespace content {
|
| +
|
| +class StartupTaskRunner : public base::RefCounted<StartupTaskRunner> {
|
| + public:
|
| + class Observer {
|
| + public:
|
| + virtual ~Observer() {}
|
| + // Called when all tasks have been run
|
| + virtual void AllTasksRun() = 0;
|
| + };
|
| +
|
| + enum StartupMode {
|
| + IMMEDIATE,
|
| + INCREMENTAL
|
| + };
|
| +
|
| + // Constructor: Note that the observer is optional. The code will check for
|
| + // a NULL observer before attempting to call observer functions.
|
| + StartupTaskRunner(StartupMode mode, Observer* observer);
|
| +
|
| + // Add a task to the queue of startup tasks to be run.
|
| + virtual void AddTask(base::Closure& callback);
|
| +
|
| + // Set the task runner to use to run the tasks
|
| + virtual void SetProxy(
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& proxy);
|
| +
|
| + // Start running the tasks.
|
| + virtual void StartRunningTasks();
|
| +
|
| + private:
|
| +
|
| + friend class base::RefCounted<StartupTaskRunner>;
|
| + virtual ~StartupTaskRunner() {};
|
| +
|
| + std::list<base::Closure> task_list_;
|
| + void WrappedTask();
|
| +
|
| + StartupMode startup_mode_;
|
| + Observer* observer_;
|
| + scoped_refptr<base::SingleThreadTaskRunner> proxy_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(StartupTaskRunner);
|
| +};
|
| +
|
| +} // namespace content
|
| +#endif // CONTENT_BROWSER_STARTUP_TASK_RUNNER_H_
|
|
|