Index: trunk/src/chrome/browser/first_run/first_run_internal.h |
=================================================================== |
--- trunk/src/chrome/browser/first_run/first_run_internal.h (revision 201967) |
+++ trunk/src/chrome/browser/first_run/first_run_internal.h (working copy) |
@@ -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; |
@@ -42,6 +44,41 @@ |
// 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() { |
+ should_quit_message_loop_ = true; |
+ } |
+ |
+ bool ended() const { |
+ 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 |
@@ -74,6 +111,28 @@ |
// a linux specific implementation. |
bool IsOrganicFirstRun(); |
+// Imports settings. This may be done in a separate process depending on the |
+// platform, but it will always block until done. The return value indicates |
+// success. |
+// This functions has a common implementation for OS_POSIX, and a |
+// windows specific implementation. |
+bool ImportSettings(Profile* profile, |
+ ImporterHost* importer_host, |
+ scoped_refptr<ImporterList> importer_list, |
+ int items_to_import); |
+ |
+// Sets import preferences and launch the import process. |
+void SetImportPreferencesAndLaunchImport( |
+ MasterPrefs* out_prefs, |
+ installer::MasterPreferences* install_prefs); |
+ |
+int ImportBookmarkFromFileIfNeeded(Profile* profile, |
+ const CommandLine& cmdline); |
+ |
+#if !defined(OS_WIN) |
+bool ImportBookmarks(const base::FilePath& import_bookmarks_path); |
+#endif |
+ |
// Shows the EULA dialog if required. Returns true if the EULA is accepted, |
// returns false if the EULA has not been accepted, in which case the browser |
// should exit. |