diff options
author | kuchhal@chromium.org <kuchhal@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-19 18:35:18 +0000 |
---|---|---|
committer | kuchhal@chromium.org <kuchhal@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-19 18:35:18 +0000 |
commit | c6d5cdb28856a33676e3bf40e213bddf204df9df (patch) | |
tree | 0430bfcae805c2a4a46efdfbbd3d2c343353e935 | |
parent | 77dc77607d70acba487da70dfaa3f52a6e41a7ab (diff) | |
download | chromium_src-c6d5cdb28856a33676e3bf40e213bddf204df9df.zip chromium_src-c6d5cdb28856a33676e3bf40e213bddf204df9df.tar.gz chromium_src-c6d5cdb28856a33676e3bf40e213bddf204df9df.tar.bz2 |
Make importer obey import_search_engine preference even if FRUI is enabled.
With this change importer will give preference to the value specified in master
preference for import_search_engine instead of ignoring it like before.
BUG=23649
TEST=Specified in above bug.
Review URL: http://codereview.chromium.org/274081
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29426 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/browser_main.cc | 8 | ||||
-rw-r--r-- | chrome/browser/first_run.h | 10 | ||||
-rw-r--r-- | chrome/browser/first_run_gtk.cc | 6 | ||||
-rw-r--r-- | chrome/browser/first_run_mac.mm | 2 | ||||
-rwxr-xr-x[-rw-r--r--] | chrome/browser/first_run_win.cc | 33 | ||||
-rw-r--r-- | chrome/browser/views/first_run_customize_view.cc | 9 | ||||
-rw-r--r-- | chrome/browser/views/first_run_customize_view.h | 4 | ||||
-rw-r--r-- | chrome/browser/views/first_run_view.cc | 12 | ||||
-rw-r--r-- | chrome/browser/views/first_run_view.h | 3 | ||||
-rw-r--r-- | chrome/browser/views/first_run_view_base.cc | 19 | ||||
-rw-r--r-- | chrome/browser/views/first_run_view_base.h | 13 | ||||
-rw-r--r-- | chrome/common/temp_scaffolding_stubs.cc | 4 |
12 files changed, 94 insertions, 29 deletions
diff --git a/chrome/browser/browser_main.cc b/chrome/browser/browser_main.cc index f001f0d..d8809f6 100644 --- a/chrome/browser/browser_main.cc +++ b/chrome/browser/browser_main.cc @@ -494,13 +494,16 @@ int BrowserMain(const MainFunctionParams& parameters) { int rlz_ping_delay = 0; bool homepage_defined = false; + int import_items = 0; + int dont_import_items = 0; if (is_first_run) { // On first run, we need to process the master preferences before the // browser's profile_manager object is created, but after ResourceBundle // is initialized. std::vector<std::wstring> first_run_tabs; first_run_ui_bypass = !FirstRun::ProcessMasterPreferences(user_data_dir, - FilePath(), &first_run_tabs, &rlz_ping_delay, &homepage_defined); + FilePath(), &first_run_tabs, &rlz_ping_delay, &homepage_defined, + &import_items, &dont_import_items); // The master prefs might specify a set of urls to display. if (first_run_tabs.size()) AddFirstRunNewTabs(&browser_init, first_run_tabs); @@ -685,7 +688,8 @@ int BrowserMain(const MainFunctionParams& parameters) { // touches reads preferences. if (is_first_run) { if (!first_run_ui_bypass) { - if (!OpenFirstRunDialog(profile, homepage_defined, &process_singleton)) { + if (!OpenFirstRunDialog(profile, homepage_defined, import_items, + dont_import_items, &process_singleton)) { // The user cancelled the first run dialog box, we should exit Chrome. return ResultCodes::NORMAL_EXIT; } diff --git a/chrome/browser/first_run.h b/chrome/browser/first_run.h index ec8d8f4..e728d64 100644 --- a/chrome/browser/first_run.h +++ b/chrome/browser/first_run.h @@ -71,7 +71,9 @@ class FirstRun { const FilePath& master_prefs_path, std::vector<std::wstring>* new_tabs, int* ping_delay, - bool* homepage_defined); + bool* homepage_defined, + int* do_import_items, + int* dont_import_items); // Sets the kShouldShowFirstRunBubble local state pref so that the browser // shows the bubble once the main message loop gets going. Returns false if @@ -157,10 +159,16 @@ class FirstRunBrowserProcess : public BrowserProcessImpl { // while the First Run UI is visible. // |homepage_defined| true indicates that homepage is defined in master // preferences and should not be imported from another browser. +// |import_items| specifies the items to import, specified in master +// preferences and will override default behavior of importer. +// |dont_import_items| specifies the items *not* to import, specified in master +// preferences and will override default behavior of importer. // Returns true if the user clicked "Start", false if the user pressed "Cancel" // or closed the dialog. bool OpenFirstRunDialog(Profile* profile, bool homepage_defined, + int import_items, + int dont_import_items, ProcessSingleton* process_singleton); #endif // CHROME_BROWSER_FIRST_RUN_H_ diff --git a/chrome/browser/first_run_gtk.cc b/chrome/browser/first_run_gtk.cc index 73f16d9..d4b5e31 100644 --- a/chrome/browser/first_run_gtk.cc +++ b/chrome/browser/first_run_gtk.cc @@ -7,6 +7,8 @@ #include "chrome/browser/gtk/first_run_dialog.h" bool OpenFirstRunDialog(Profile* profile, bool homepage_defined, + int import_items, + int dont_import_items, ProcessSingleton* process_singleton) { // TODO(port): Use process_singleton to make sure Chrome can not be started // while this process is active. @@ -17,7 +19,9 @@ bool FirstRun::ProcessMasterPreferences(const FilePath& user_data_dir, const FilePath& master_prefs_path, std::vector<std::wstring>* new_tabs, int* ping_delay, - bool* homepage_defined) { + bool* homepage_defined, + int* do_import_items, + int* dont_import_items) { NOTIMPLEMENTED(); return true; } diff --git a/chrome/browser/first_run_mac.mm b/chrome/browser/first_run_mac.mm index f46bf4f..41642af 100644 --- a/chrome/browser/first_run_mac.mm +++ b/chrome/browser/first_run_mac.mm @@ -48,6 +48,8 @@ class FirstRunController : public ImportObserver { bool OpenFirstRunDialog(Profile* profile, bool homepage_defined, + int import_items, + int dont_import_items, ProcessSingleton* process_singleton) { FirstRunController* controller = new FirstRunController; return controller->DoFirstRun(profile, process_singleton); diff --git a/chrome/browser/first_run_win.cc b/chrome/browser/first_run_win.cc index 2e775c0..2f608b0 100644..100755 --- a/chrome/browser/first_run_win.cc +++ b/chrome/browser/first_run_win.cc @@ -168,7 +168,9 @@ bool FirstRun::ProcessMasterPreferences(const FilePath& user_data_dir, const FilePath& master_prefs_path, std::vector<std::wstring>* new_tabs, int* ping_delay, - bool* homepage_defined) { + bool* homepage_defined, + int* do_import_items, + int* dont_import_items) { DCHECK(!user_data_dir.empty()); FilePath master_prefs = master_prefs_path; if (master_prefs.empty()) { @@ -238,6 +240,24 @@ bool FirstRun::ProcessMasterPreferences(const FilePath& user_data_dir, if (!file_util::CopyFile(master_prefs, user_prefs)) return true; + // Add a special exception for import_search_engine preference. + // Even though we skip all other import_* preferences below, if + // skip-first-run-ui is not specified, we make exception for this one + // preference. + int import_items = 0; + if (installer_util::GetDistroBooleanPreference(prefs.get(), + installer_util::master_preferences::kDistroImportSearchPref, &value)) { + if (value) { + import_items += SEARCH_ENGINES; + if (do_import_items) + *do_import_items += SEARCH_ENGINES; + } else if (dont_import_items) { + *dont_import_items += SEARCH_ENGINES; + } + } + + // Note we are skipping all other master preferences if skip-first-run-ui + // is *not* specified. if (!installer_util::GetDistroBooleanPreference(prefs.get(), installer_util::master_preferences::kDistroSkipFirstRunPref, &value) || !value) @@ -258,11 +278,6 @@ bool FirstRun::ProcessMasterPreferences(const FilePath& user_data_dir, value) FirstRun::SetShowWelcomePagePref(); - int import_items = 0; - if (installer_util::GetDistroBooleanPreference(prefs.get(), - installer_util::master_preferences::kDistroImportSearchPref, &value) && - value) - import_items += SEARCH_ENGINES; if (installer_util::GetDistroBooleanPreference(prefs.get(), installer_util::master_preferences::kDistroImportHistoryPref, &value) && value) @@ -362,6 +377,8 @@ bool Upgrade::SwapNewChromeExeIfPresent() { bool OpenFirstRunDialog(Profile* profile, bool homepage_defined, + int import_items, + int dont_import_items, ProcessSingleton* process_singleton) { DCHECK(profile); DCHECK(process_singleton); @@ -369,7 +386,9 @@ bool OpenFirstRunDialog(Profile* profile, // We need the FirstRunView to outlive its parent, as we retrieve the accept // state from it after the dialog has been closed. scoped_ptr<FirstRunView> first_run_view(new FirstRunView(profile, - homepage_defined)); + homepage_defined, + import_items, + dont_import_items)); first_run_view->SetParentOwned(false); views::Window* first_run_ui = views::Window::CreateChromeWindow( NULL, gfx::Rect(), first_run_view.get()); diff --git a/chrome/browser/views/first_run_customize_view.cc b/chrome/browser/views/first_run_customize_view.cc index 8ed49b3..eaae13a 100644 --- a/chrome/browser/views/first_run_customize_view.cc +++ b/chrome/browser/views/first_run_customize_view.cc @@ -25,8 +25,11 @@ FirstRunCustomizeView::FirstRunCustomizeView(Profile* profile, ImporterHost* importer_host, CustomizeViewObserver* observer, bool default_browser_checked, - bool homepage_defined) - : FirstRunViewBase(profile, homepage_defined), + bool homepage_defined, + int import_items, + int dont_import_items) + : FirstRunViewBase(profile, homepage_defined, import_items, + dont_import_items), main_label_(NULL), import_cbox_(NULL), import_from_combo_(NULL), @@ -204,7 +207,7 @@ bool FirstRunCustomizeView::Accept() { int browser_selected = import_from_combo_->selected_item(); FirstRun::ImportSettings(profile_, importer_host_->GetSourceProfileInfoAt(browser_selected).browser_type, - GetDefaultImportItems(), window()->GetNativeWindow()); + GetImportItems(), window()->GetNativeWindow()); } if (default_browser_->checked()) SetDefaultBrowser(); diff --git a/chrome/browser/views/first_run_customize_view.h b/chrome/browser/views/first_run_customize_view.h index cdc5e8e..dd1842e 100644 --- a/chrome/browser/views/first_run_customize_view.h +++ b/chrome/browser/views/first_run_customize_view.h @@ -41,7 +41,9 @@ class FirstRunCustomizeView : public FirstRunViewBase, ImporterHost* importer_host, CustomizeViewObserver* observer, bool default_browser_checked, - bool homepage_defined); + bool homepage_defined, + int import_items, + int dont_import_items); virtual ~FirstRunCustomizeView(); // Overridden from views::View. diff --git a/chrome/browser/views/first_run_view.cc b/chrome/browser/views/first_run_view.cc index d29c567..0db3d75 100644 --- a/chrome/browser/views/first_run_view.cc +++ b/chrome/browser/views/first_run_view.cc @@ -33,8 +33,10 @@ std::wstring AddBullet(const std::wstring& text) { } // namespace -FirstRunView::FirstRunView(Profile* profile, bool homepage_defined) - : FirstRunViewBase(profile, homepage_defined), +FirstRunView::FirstRunView(Profile* profile, bool homepage_defined, + int import_items, int dont_import_items) + : FirstRunViewBase(profile, homepage_defined, import_items, + dont_import_items), welcome_label_(NULL), actions_label_(NULL), actions_import_(NULL), @@ -155,7 +157,9 @@ void FirstRunView::OpenCustomizeDialog() { importer_host_, this, default_browser_->checked(), - homepage_defined_))->Show(); + homepage_defined_, + import_items_, + dont_import_items_))->Show(); } void FirstRunView::LinkActivated(views::Link* source, int event_flags) { @@ -183,7 +187,7 @@ bool FirstRunView::Accept() { // Index 0 is the default browser. FirstRun::ImportSettings(profile_, importer_host_->GetSourceProfileInfoAt(0).browser_type, - GetDefaultImportItems(), window()->GetNativeWindow()); + GetImportItems(), window()->GetNativeWindow()); UserMetrics::RecordAction(L"FirstRunDef_Accept", profile_); if (default_browser_->checked()) SetDefaultBrowser(); diff --git a/chrome/browser/views/first_run_view.h b/chrome/browser/views/first_run_view.h index 0f03203..e5f1d7c 100644 --- a/chrome/browser/views/first_run_view.h +++ b/chrome/browser/views/first_run_view.h @@ -25,7 +25,8 @@ class FirstRunView : public FirstRunViewBase, public views::LinkController, public FirstRunCustomizeView::CustomizeViewObserver { public: - explicit FirstRunView(Profile* profile, bool homepage_defined); + explicit FirstRunView(Profile* profile, bool homepage_defined, + int import_items, int dont_import_items); virtual ~FirstRunView(); bool accepted() const { return accepted_;} diff --git a/chrome/browser/views/first_run_view_base.cc b/chrome/browser/views/first_run_view_base.cc index 4d420e0..1fa85d4 100644 --- a/chrome/browser/views/first_run_view_base.cc +++ b/chrome/browser/views/first_run_view_base.cc @@ -30,7 +30,8 @@ #include "views/window/client_view.h" #include "views/window/window.h" -FirstRunViewBase::FirstRunViewBase(Profile* profile, bool homepage_defined) +FirstRunViewBase::FirstRunViewBase(Profile* profile, bool homepage_defined, + int import_items, int dont_import_items) : preferred_width_(0), background_image_(NULL), separator_1_(NULL), @@ -38,7 +39,9 @@ FirstRunViewBase::FirstRunViewBase(Profile* profile, bool homepage_defined) separator_2_(NULL), importer_host_(NULL), profile_(profile), - homepage_defined_(homepage_defined) { + homepage_defined_(homepage_defined), + import_items_(import_items), + dont_import_items_(dont_import_items) { DCHECK(profile); SetupControls(); } @@ -160,11 +163,19 @@ std::wstring FirstRunViewBase::GetDialogButtonLabel( return std::wstring(); } -int FirstRunViewBase::GetDefaultImportItems() const { +int FirstRunViewBase::GetImportItems() const { // It is best to avoid importing cookies because there is a bug that make // the process take way too much time among other issues. So for the time // being we say: TODO(CPU): Bug 1196875 - int items = HISTORY | FAVORITES | PASSWORDS | SEARCH_ENGINES; + int items = import_items_; + if (!(dont_import_items_ & HISTORY)) + items = items | HISTORY; + if (!(dont_import_items_ & FAVORITES)) + items = items | FAVORITES; + if (!(dont_import_items_ & PASSWORDS)) + items = items | PASSWORDS; + if (!(dont_import_items_ & SEARCH_ENGINES)) + items = items | SEARCH_ENGINES; if (!homepage_defined_) items = items | HOME_PAGE; return items; diff --git a/chrome/browser/views/first_run_view_base.h b/chrome/browser/views/first_run_view_base.h index 77db891..5879cccb 100644 --- a/chrome/browser/views/first_run_view_base.h +++ b/chrome/browser/views/first_run_view_base.h @@ -26,7 +26,8 @@ class ImporterHost; class FirstRunViewBase : public views::View, public views::DialogDelegate { public: - explicit FirstRunViewBase(Profile* profile, bool homepage_defined); + explicit FirstRunViewBase(Profile* profile, bool homepage_defined, + int import_items, int dont_import_items); virtual ~FirstRunViewBase(); // Overridden from views::View. @@ -42,9 +43,11 @@ class FirstRunViewBase : public views::View, std::wstring GetDialogButtonLabel(MessageBoxFlags::DialogButton button) const; protected: - // Returns the items that the first run process is required to import - // from other browsers. - int GetDefaultImportItems() const; + // Returns the items that the first run process should import + // from other browsers. If there are any items that should or should not + // be imported (read and passed through from master preferences), it will + // take those into account. + int GetImportItems() const; // Creates the desktop and quick launch shortcut. Existing shortcut is lost. bool CreateDesktopShortcut(); @@ -81,6 +84,8 @@ class FirstRunViewBase : public views::View, protected: bool homepage_defined_; + int import_items_; + int dont_import_items_; private: // Initializes the controls on the dialog. diff --git a/chrome/common/temp_scaffolding_stubs.cc b/chrome/common/temp_scaffolding_stubs.cc index 8d73a49..5ec06ca 100644 --- a/chrome/common/temp_scaffolding_stubs.cc +++ b/chrome/common/temp_scaffolding_stubs.cc @@ -87,7 +87,9 @@ bool FirstRun::ProcessMasterPreferences(const FilePath& user_data_dir, const FilePath& master_prefs_path, std::vector<std::wstring>* new_tabs, int* ping_delay, - bool* homepage_defined) { + bool* homepage_defined, + int* do_import_items, + int* dont_import_items) { // http://code.google.com/p/chromium/issues/detail?id=11971 // Pretend we processed them correctly. return true; |