Index: chrome/browser/views/options/general_page_view.cc |
=================================================================== |
--- chrome/browser/views/options/general_page_view.cc (revision 47986) |
+++ chrome/browser/views/options/general_page_view.cc (working copy) |
@@ -232,12 +232,12 @@ |
} else if (sender == homepage_use_newtab_radio_) { |
UserMetricsRecordAction(UserMetricsAction("Options_Homepage_UseNewTab"), |
profile()->GetPrefs()); |
- SetHomepage(GetNewTabUIURLString()); |
+ SetHomepage(GURL()); |
EnableHomepageURLField(false); |
} else if (sender == homepage_use_url_radio_) { |
UserMetricsRecordAction(UserMetricsAction("Options_Homepage_UseURL"), |
profile()->GetPrefs()); |
- SetHomepage(homepage_use_url_textfield_->text()); |
+ SetHomepage(GURL(homepage_use_url_textfield_->text())); |
EnableHomepageURLField(true); |
} else if (sender == homepage_show_home_button_checkbox_) { |
bool show_button = homepage_show_home_button_checkbox_->checked(); |
@@ -285,11 +285,10 @@ |
if (sender == homepage_use_url_textfield_) { |
// If the text field contains a valid URL, sync it to prefs. We run it |
// through the fixer upper to allow input like "google.com" to be converted |
- // to something valid ("http://google.com"). |
- std::string url_string = URLFixerUpper::FixupURL( |
- UTF16ToUTF8(homepage_use_url_textfield_->text()), std::string()); |
- if (GURL(url_string).is_valid()) |
- SetHomepage(UTF8ToWide(url_string)); |
+ // to something valid ("http://google.com"). If the field contains an |
+ // empty or null-host URL, a blank homepage is synced to prefs. |
+ SetHomepage(GURL(URLFixerUpper::FixupURL( |
+ UTF16ToUTF8(homepage_use_url_textfield_->text()), std::string()))); |
} |
} |
@@ -745,12 +744,15 @@ |
SaveStartupPref(); |
} |
-void GeneralPageView::SetHomepage(const std::wstring& homepage) { |
- if (homepage.empty() || homepage == GetNewTabUIURLString()) { |
+void GeneralPageView::SetHomepage(const GURL& homepage) { |
+ if (!homepage.is_valid() || |
+ UTF8ToWide(homepage.spec()) == GetNewTabUIURLString()) { |
new_tab_page_is_home_page_.SetValue(true); |
+ if (!homepage.has_host()) |
+ homepage_.SetValue(std::wstring()); |
} else { |
new_tab_page_is_home_page_.SetValue(false); |
- homepage_.SetValue(homepage); |
+ homepage_.SetValue(UTF8ToWide(homepage.spec())); |
} |
} |