Chromium Code Reviews| Index: chrome/browser/first_run/first_run_internal.h |
| diff --git a/chrome/browser/first_run/first_run_internal.h b/chrome/browser/first_run/first_run_internal.h |
| index 000874c7447c846af8fd0b92e9f8048b5c16738b..b3a0b6d9e469444cf29bc3b6a77d60b9989b913e 100644 |
| --- a/chrome/browser/first_run/first_run_internal.h |
| +++ b/chrome/browser/first_run/first_run_internal.h |
| @@ -11,6 +11,8 @@ |
| #include "base/compiler_specific.h" |
| #include "base/gtest_prod_util.h" |
| #include "base/memory/ref_counted.h" |
| +#include "base/message_loop.h" |
| +#include "chrome/browser/importer/importer_progress_observer.h" |
| #include "ui/gfx/native_widget_types.h" |
| class CommandLine; |
| @@ -41,6 +43,41 @@ enum FirstRunState { |
| // This variable should only be accessed through IsChromeFirstRun(). |
| extern FirstRunState first_run_; |
| +// This class acts as an observer for the ImporterProgressObserver::ImportEnded |
| +// callback. When the import process is started, certain errors may cause |
| +// ImportEnded() to be called synchronously, but the typical case is that |
| +// ImportEnded() is called asynchronously. Thus we have to handle both cases. |
| +// TODO(gab): Move this to the unnamed namespace of first_run.cc as part of the |
| +// refactoring for OOP import (http://crbug.com/219419). |
| +class ImportEndedObserver : public importer::ImporterProgressObserver { |
| + public: |
| + ImportEndedObserver() : ended_(false), |
| + should_quit_message_loop_(false) {} |
| + virtual ~ImportEndedObserver() {} |
| + |
| + // importer::ImporterProgressObserver: |
| + virtual void ImportStarted() OVERRIDE {} |
| + virtual void ImportItemStarted(importer::ImportItem item) OVERRIDE {} |
| + virtual void ImportItemEnded(importer::ImportItem item) OVERRIDE {} |
| + virtual void ImportEnded() OVERRIDE; |
| + |
| + void set_should_quit_message_loop() { |
|
cpu_(ooo_6.6-7.5)
2013/04/17 21:35:20
const
gab
2013/04/18 14:51:56
This is not const.
|
| + should_quit_message_loop_ = true; |
| + } |
| + |
| + bool ended() { |
|
cpu_(ooo_6.6-7.5)
2013/04/17 21:35:20
const
gab
2013/04/18 14:51:56
Done.
|
| + return ended_; |
| + } |
| + |
| + private: |
| + // Set if the import has ended. |
| + bool ended_; |
| + |
| + // Set by the client (via set_should_quit_message_loop) if, when the import |
| + // ends, this class should quit the message loop. |
| + bool should_quit_message_loop_; |
| +}; |
| + |
| // Loads master preferences from the master preference file into the installer |
| // master preferences. Passes the master preference file path out in |
| // master_prefs_path. Returns the pointer to installer::MasterPreferences object |