summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkuchhal@chromium.org <kuchhal@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-19 18:35:18 +0000
committerkuchhal@chromium.org <kuchhal@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-19 18:35:18 +0000
commitc6d5cdb28856a33676e3bf40e213bddf204df9df (patch)
tree0430bfcae805c2a4a46efdfbbd3d2c343353e935
parent77dc77607d70acba487da70dfaa3f52a6e41a7ab (diff)
downloadchromium_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.cc8
-rw-r--r--chrome/browser/first_run.h10
-rw-r--r--chrome/browser/first_run_gtk.cc6
-rw-r--r--chrome/browser/first_run_mac.mm2
-rwxr-xr-x[-rw-r--r--]chrome/browser/first_run_win.cc33
-rw-r--r--chrome/browser/views/first_run_customize_view.cc9
-rw-r--r--chrome/browser/views/first_run_customize_view.h4
-rw-r--r--chrome/browser/views/first_run_view.cc12
-rw-r--r--chrome/browser/views/first_run_view.h3
-rw-r--r--chrome/browser/views/first_run_view_base.cc19
-rw-r--r--chrome/browser/views/first_run_view_base.h13
-rw-r--r--chrome/common/temp_scaffolding_stubs.cc4
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;