| Index: trunk/src/chrome/browser/first_run/first_run_posix.cc
|
| ===================================================================
|
| --- trunk/src/chrome/browser/first_run/first_run_posix.cc (revision 201967)
|
| +++ trunk/src/chrome/browser/first_run/first_run_posix.cc (working copy)
|
| @@ -6,11 +6,15 @@
|
|
|
| #include "base/file_util.h"
|
| #include "base/files/file_path.h"
|
| +#include "base/message_loop.h"
|
| #include "base/path_service.h"
|
| #include "base/prefs/pref_service.h"
|
| +#include "base/utf_string_conversions.h"
|
| #include "chrome/browser/browser_process.h"
|
| #include "chrome/browser/first_run/first_run_dialog.h"
|
| #include "chrome/browser/first_run/first_run_internal.h"
|
| +#include "chrome/browser/importer/importer_host.h"
|
| +#include "chrome/browser/importer/importer_list.h"
|
| #include "chrome/browser/profiles/profile_manager.h"
|
| #include "chrome/common/chrome_constants.h"
|
| #include "chrome/common/chrome_paths.h"
|
| @@ -18,6 +22,7 @@
|
| #include "chrome/common/startup_metric_utils.h"
|
| #include "chrome/installer/util/google_update_settings.h"
|
| #include "chrome/installer/util/master_preferences.h"
|
| +#include "chrome/installer/util/master_preferences_constants.h"
|
|
|
| namespace first_run {
|
| namespace internal {
|
| @@ -58,6 +63,52 @@
|
| return true;
|
| }
|
|
|
| +bool ImportSettings(Profile* profile,
|
| + ImporterHost* importer_host,
|
| + scoped_refptr<ImporterList> importer_list,
|
| + int items_to_import) {
|
| + const importer::SourceProfile& source_profile =
|
| + importer_list->GetSourceProfileAt(0);
|
| +
|
| + // Ensure that importers aren't requested to import items that they do not
|
| + // support. If there is no overlap, skip.
|
| + items_to_import &= source_profile.services_supported;
|
| + if (items_to_import == 0)
|
| + return true;
|
| +
|
| + ImportEndedObserver observer;
|
| + importer_host->SetObserver(&observer);
|
| + importer_host->StartImportSettings(source_profile,
|
| + profile,
|
| + items_to_import,
|
| + new ProfileWriter(profile));
|
| + // If the import process has not errored out, block on it.
|
| + if (!observer.ended()) {
|
| + observer.set_should_quit_message_loop();
|
| + MessageLoop::current()->Run();
|
| + }
|
| +
|
| + // Unfortunately there's no success/fail signal in ImporterHost.
|
| + return true;
|
| +}
|
| +
|
| +void SetImportPreferencesAndLaunchImport(
|
| + MasterPrefs* out_prefs,
|
| + installer::MasterPreferences* install_prefs) {
|
| + std::string import_bookmarks_path;
|
| + install_prefs->GetString(
|
| + installer::master_preferences::kDistroImportBookmarksFromFilePref,
|
| + &import_bookmarks_path);
|
| + if (!import_bookmarks_path.empty()) {
|
| + // There are bookmarks to import from a file.
|
| + base::FilePath path = base::FilePath::FromWStringHack(UTF8ToWide(
|
| + import_bookmarks_path));
|
| + if (!ImportBookmarks(path)) {
|
| + LOG(WARNING) << "silent bookmark import failed";
|
| + }
|
| + }
|
| +}
|
| +
|
| bool ShowPostInstallEULAIfNeeded(installer::MasterPreferences* install_prefs) {
|
| // The EULA is only handled on Windows.
|
| return true;
|
| @@ -65,3 +116,14 @@
|
|
|
| } // namespace internal
|
| } // namespace first_run
|
| +
|
| +namespace first_run {
|
| +
|
| +// TODO(port): Import switches need to be ported to both Mac and Linux. Not all
|
| +// import switches here are implemented for Linux. None are implemented for Mac
|
| +// (as this function will not be called on Mac).
|
| +int ImportNow(Profile* profile, const CommandLine& cmdline) {
|
| + return internal::ImportBookmarkFromFileIfNeeded(profile, cmdline);
|
| +}
|
| +
|
| +} // namespace first_run
|
|
|