diff options
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/app/chromium_strings.grd | 4 | ||||
-rw-r--r-- | chrome/app/generated_resources.grd | 4 | ||||
-rw-r--r-- | chrome/app/google_chrome_strings.grd | 4 | ||||
-rw-r--r-- | chrome/browser/browser_prefs.cc | 1 | ||||
-rw-r--r-- | chrome/browser/profile.cc | 1 | ||||
-rw-r--r-- | chrome/browser/views/keyword_editor_view.cc | 43 | ||||
-rw-r--r-- | chrome/browser/views/keyword_editor_view.h | 3 | ||||
-rw-r--r-- | chrome/browser/views/options/advanced_contents_view.cc | 480 | ||||
-rw-r--r-- | chrome/browser/views/options/advanced_page_view.cc | 1 |
9 files changed, 266 insertions, 275 deletions
diff --git a/chrome/app/chromium_strings.grd b/chrome/app/chromium_strings.grd index 26b97c0..7548c10 100644 --- a/chrome/app/chromium_strings.grd +++ b/chrome/app/chromium_strings.grd @@ -241,6 +241,10 @@ be available for now. --> <message name="IDS_UNINSTALL_FAILED" desc="Error during uninstall if we can not find the installation directory from registry."> Chromium is not installed or it failed to find installation directory. Please download Chromium again. </message> + <!-- Options Dialog --> + <message name="IDS_OPTIONS_DISABLE_SERVICES" desc="The text in the options panel that describes how we use web services to improve browsing experience."> + Chromium may use web services to improve your browsing experience - you may optionally disable these services. + </message> </messages> </release> </grit> diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index 9ff2270..a07aa04 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd @@ -3103,8 +3103,8 @@ each locale. --> </message> <!-- Advanced Section Titles --> - <message name="IDS_OPTIONS_ADVANCED_SECTION_TITLE_GENERAL"> - General + <message name="IDS_OPTIONS_ADVANCED_SECTION_TITLE_PRIVACY"> + Privacy </message> <message name="IDS_OPTIONS_ADVANCED_SECTION_TITLE_CONTENT"> Web Content diff --git a/chrome/app/google_chrome_strings.grd b/chrome/app/google_chrome_strings.grd index ea6c4d7..ed1615c 100644 --- a/chrome/app/google_chrome_strings.grd +++ b/chrome/app/google_chrome_strings.grd @@ -280,6 +280,10 @@ Chrome supports. --> <message name="IDS_UNINSTALL_FAILED" desc="Error during uninstall if we can not find the installation directory from registry."> Google Chrome is not installed or it failed to find installation directory. Please download Google Chrome again. </message> + <!-- Options Dialog --> + <message name="IDS_OPTIONS_DISABLE_SERVICES" desc="The text in the options panel that describes how we use web services to improve browsing experience."> + Google Chrome may use web services to improve your browsing experience - you may optionally disable these services. + </message> </messages> </release> </grit> diff --git a/chrome/browser/browser_prefs.cc b/chrome/browser/browser_prefs.cc index 886a25e..44408db 100644 --- a/chrome/browser/browser_prefs.cc +++ b/chrome/browser/browser_prefs.cc @@ -47,7 +47,6 @@ void RegisterAllPrefs(PrefService* user_prefs, PrefService* local_state) { Browser::RegisterUserPrefs(user_prefs); chrome_browser_net::RegisterUserPrefs(user_prefs); DownloadManager::RegisterUserPrefs(user_prefs); - KeywordEditorView::RegisterUserPrefs(user_prefs); PasswordManager::RegisterUserPrefs(user_prefs); SessionStartupPref::RegisterUserPrefs(user_prefs); SpellChecker::RegisterUserPrefs(user_prefs); diff --git a/chrome/browser/profile.cc b/chrome/browser/profile.cc index bf40016..ad84daf 100644 --- a/chrome/browser/profile.cc +++ b/chrome/browser/profile.cc @@ -49,6 +49,7 @@ URLRequestContext* Profile::default_request_context_; //static void Profile::RegisterUserPrefs(PrefService* prefs) { + prefs->RegisterBooleanPref(prefs::kSearchSuggestEnabled, true); prefs->RegisterBooleanPref(prefs::kSessionExitedCleanly, true); prefs->RegisterBooleanPref(prefs::kSafeBrowsingEnabled, true); } diff --git a/chrome/browser/views/keyword_editor_view.cc b/chrome/browser/views/keyword_editor_view.cc index c5b4dd5..0ee1ebb 100644 --- a/chrome/browser/views/keyword_editor_view.cc +++ b/chrome/browser/views/keyword_editor_view.cc @@ -317,11 +317,6 @@ void TemplateURLTableModel::FavIconAvailable(ModelEntry* entry) { static views::Window* open_window = NULL; // static -void KeywordEditorView::RegisterUserPrefs(PrefService* prefs) { - prefs->RegisterBooleanPref(prefs::kSearchSuggestEnabled, true); -} - -// static void KeywordEditorView::Show(Profile* profile) { if (!profile->GetTemplateURLModel()) return; @@ -498,18 +493,6 @@ void KeywordEditorView::Init() { make_default_button_->SetEnabled(false); make_default_button_->SetListener(this); - enable_suggest_checkbox_ = new views::CheckBox( - l10n_util::GetString(IDS_OPTIONS_SUGGEST_PREF)); - enable_suggest_checkbox_->SetMultiLine(true); - // Enable the Suggest checkbox only if the default provider has Suggest - // capability. - const TemplateURL* default_provider = url_model_->GetDefaultSearchProvider(); - enable_suggest_checkbox_->SetEnabled(default_provider && - (default_provider->suggestions_url() != NULL)); - enable_suggest_checkbox_->SetIsSelected( - profile_->GetPrefs()->GetBoolean(prefs::kSearchSuggestEnabled)); - enable_suggest_checkbox_->SetListener(this); - InitLayoutManager(); } @@ -547,9 +530,6 @@ void KeywordEditorView::InitLayoutManager() { contents_layout->AddView(make_default_button_); contents_layout->AddPaddingRow(1, 0); - - contents_layout->StartRowWithPadding(0, 0, 0, related_y); - contents_layout->AddView(enable_suggest_checkbox_, 3, 1); } void KeywordEditorView::OnSelectionChanged() { @@ -601,17 +581,6 @@ void KeywordEditorView::ButtonPressed(views::NativeButton* sender) { if (last_view_row >= 0) table_view_->Select(table_view_->view_to_model(last_view_row)); url_model_->AddObserver(this); - - // We may have removed the default provider. Enable the Suggest checkbox - // only if the default provider has Suggest capability. - const TemplateURL* default_provider = - url_model_->GetDefaultSearchProvider(); - enable_suggest_checkbox_->SetEnabled(default_provider && - (default_provider->suggestions_url() != NULL)); - // TODO(pkasting): http://b/1156120 If the template URL model auto-sets a - // new default, ensure that the table model is notified of the change on the - // relevant row. - UserMetrics::RecordAction(L"KeywordEditor_RemoveKeyword", profile_); } else if (sender == edit_button_) { const int selected_row = table_view_->FirstSelectedRow(); @@ -621,9 +590,6 @@ void KeywordEditorView::ButtonPressed(views::NativeButton* sender) { new EditKeywordController(GetContainer()->GetHWND(), template_url, this, profile_); controller->Show(); - } else if (sender == enable_suggest_checkbox_) { - profile_->GetPrefs()->SetBoolean(prefs::kSearchSuggestEnabled, - enable_suggest_checkbox_->IsSelected()); } else if (sender == make_default_button_) { MakeDefaultSearchProvider(); } else { @@ -634,12 +600,6 @@ void KeywordEditorView::ButtonPressed(views::NativeButton* sender) { void KeywordEditorView::OnTemplateURLModelChanged() { table_model_->Reload(); add_button_->SetEnabled(url_model_->loaded()); - - // Enable the Suggest checkbox only if the default provider has Suggest - // capability. - const TemplateURL* default_provider = url_model_->GetDefaultSearchProvider(); - enable_suggest_checkbox_->SetEnabled(default_provider && - (default_provider->suggestions_url() != NULL)); } void KeywordEditorView::MakeDefaultSearchProvider() { @@ -660,9 +620,6 @@ void KeywordEditorView::MakeDefaultSearchProvider(int index) { url_model_->SetDefaultSearchProvider(keyword); url_model_->AddObserver(this); - // Enable the Suggest checkbox only if this engine has Suggest capability. - enable_suggest_checkbox_->SetEnabled(keyword->suggestions_url() != NULL); - // The formatting of the default engine is different; notify the table that // both old and new entries have changed. if (current_default != NULL) { diff --git a/chrome/browser/views/keyword_editor_view.h b/chrome/browser/views/keyword_editor_view.h index 624cb14..879ed24 100644 --- a/chrome/browser/views/keyword_editor_view.h +++ b/chrome/browser/views/keyword_editor_view.h @@ -123,8 +123,6 @@ class KeywordEditorView : public views::View, friend class KeywordEditorViewTest; FRIEND_TEST(KeywordEditorViewTest, MakeDefault); public: - static void RegisterUserPrefs(PrefService* prefs); - // Shows the KeywordEditorView for the specified profile. If there is a // KeywordEditorView already open, it is closed and a new one is shown. static void Show(Profile* profile); @@ -200,7 +198,6 @@ class KeywordEditorView : public views::View, views::NativeButton* edit_button_; views::NativeButton* remove_button_; views::NativeButton* make_default_button_; - views::CheckBox* enable_suggest_checkbox_; DISALLOW_COPY_AND_ASSIGN(KeywordEditorView); }; diff --git a/chrome/browser/views/options/advanced_contents_view.cc b/chrome/browser/views/options/advanced_contents_view.cc index 07237de..6afc034 100644 --- a/chrome/browser/views/options/advanced_contents_view.cc +++ b/chrome/browser/views/options/advanced_contents_view.cc @@ -287,18 +287,62 @@ void AdvancedSection::InitControlLayout() { } //////////////////////////////////////////////////////////////////////////////// -// GeneralSection +// PrivacySection -class GeneralSection : public AdvancedSection, +class CookieBehaviorComboModel : public views::ComboBox::Model { + public: + CookieBehaviorComboModel() {} + + // Return the number of items in the combo box. + virtual int GetItemCount(views::ComboBox* source) { + return 3; + } + + virtual std::wstring GetItemAt(views::ComboBox* source, int index) { + const int kStringIDs[] = { + IDS_OPTIONS_COOKIES_ACCEPT_ALL_COOKIES, + IDS_OPTIONS_COOKIES_RESTRICT_THIRD_PARTY_COOKIES, + IDS_OPTIONS_COOKIES_BLOCK_ALL_COOKIES + }; + if (index >= 0 && index < arraysize(kStringIDs)) + return l10n_util::GetString(kStringIDs[index]); + + NOTREACHED(); + return L""; + } + + static int CookiePolicyToIndex(net::CookiePolicy::Type policy) { + return policy; + } + + static net::CookiePolicy::Type IndexToCookiePolicy(int index) { + if (net::CookiePolicy::ValidType(index)) + return net::CookiePolicy::FromInt(index); + + NOTREACHED(); + return net::CookiePolicy::ALLOW_ALL_COOKIES; + } + + private: + DISALLOW_EVIL_CONSTRUCTORS(CookieBehaviorComboModel); +}; + +class PrivacySection : public AdvancedSection, public views::NativeButton::Listener, + public views::ComboBox::Listener, public views::LinkController { public: - explicit GeneralSection(Profile* profile); - virtual ~GeneralSection() {} + explicit PrivacySection(Profile* profile); + virtual ~PrivacySection() {} // Overridden from views::NativeButton::Listener: virtual void ButtonPressed(views::NativeButton* sender); + // Overridden from views::ComboBox::Listener: + virtual void ItemChanged(views::ComboBox* sender, + int prev_index, + int new_index); + // Overridden from views::LinkController: virtual void LinkActivated(views::Link* source, int event_flags); @@ -312,50 +356,99 @@ class GeneralSection : public AdvancedSection, private: // Controls for this section: - views::Label* reset_file_handlers_label_; - views::NativeButton* reset_file_handlers_button_; + views::Label* section_description_label_; + views::CheckBox* enable_link_doctor_checkbox_; + views::CheckBox* enable_suggest_checkbox_; + views::CheckBox* enable_dns_prefetching_checkbox_; + views::CheckBox* enable_safe_browsing_checkbox_; views::CheckBox* reporting_enabled_checkbox_; views::Link* learn_more_link_; + views::Label* cookie_behavior_label_; + views::ComboBox* cookie_behavior_combobox_; + views::NativeButton* show_cookies_button_; + + // Dummy for now. Used to populate cookies models. + scoped_ptr<CookieBehaviorComboModel> allow_cookies_model_; // Preferences for this section: - StringPrefMember auto_open_files_; + BooleanPrefMember alternate_error_pages_; + BooleanPrefMember use_suggest_; + BooleanPrefMember dns_prefetch_enabled_; + BooleanPrefMember safe_browsing_; BooleanPrefMember enable_metrics_recording_; + IntegerPrefMember cookie_behavior_; void ResolveMetricsReportingEnabled(); - DISALLOW_EVIL_CONSTRUCTORS(GeneralSection); + DISALLOW_EVIL_CONSTRUCTORS(PrivacySection); }; -GeneralSection::GeneralSection(Profile* profile) - : reset_file_handlers_label_(NULL), - reset_file_handlers_button_(NULL), +PrivacySection::PrivacySection(Profile* profile) + : section_description_label_(NULL), + enable_link_doctor_checkbox_(NULL), + enable_suggest_checkbox_(NULL), + enable_dns_prefetching_checkbox_(NULL), + enable_safe_browsing_checkbox_(NULL), reporting_enabled_checkbox_(NULL), learn_more_link_(NULL), + cookie_behavior_label_(NULL), + cookie_behavior_combobox_(NULL), + show_cookies_button_(NULL), AdvancedSection(profile, - l10n_util::GetString(IDS_OPTIONS_ADVANCED_SECTION_TITLE_GENERAL)) { + l10n_util::GetString(IDS_OPTIONS_ADVANCED_SECTION_TITLE_PRIVACY)) { } -void GeneralSection::ButtonPressed(views::NativeButton* sender) { - if (sender == reset_file_handlers_button_) { - profile()->GetDownloadManager()->ResetAutoOpenFiles(); - UserMetricsRecordAction(L"Options_ResetAutoOpenFiles", +void PrivacySection::ButtonPressed(views::NativeButton* sender) { + if (sender == enable_link_doctor_checkbox_) { + bool enabled = enable_link_doctor_checkbox_->IsSelected(); + UserMetricsRecordAction(enabled ? + L"Options_LinkDoctorCheckbox_Enable" : + L"Options_LinkDoctorCheckbox_Disable", + profile()->GetPrefs()); + alternate_error_pages_.SetValue(enabled); + } else if (sender == enable_suggest_checkbox_) { + bool enabled = enable_suggest_checkbox_->IsSelected(); + UserMetricsRecordAction(enabled ? + L"Options_UseSuggestCheckbox_Enable" : + L"Options_UseSuggestCheckbox_Disable", + profile()->GetPrefs()); + use_suggest_.SetValue(enabled); + } else if (sender == enable_dns_prefetching_checkbox_) { + bool enabled = enable_dns_prefetching_checkbox_->IsSelected(); + UserMetricsRecordAction(enabled ? + L"Options_DnsPrefetchCheckbox_Enable" : + L"Options_DnsPrefetchCheckbox_Disable", + profile()->GetPrefs()); + dns_prefetch_enabled_.SetValue(enabled); + chrome_browser_net::EnableDnsPrefetch(enabled); + } else if (sender == enable_safe_browsing_checkbox_) { + bool enabled = enable_safe_browsing_checkbox_->IsSelected(); + UserMetricsRecordAction(enabled ? + L"Options_SafeBrowsingCheckbox_Enable" : + L"Options_SafeBrowsingCheckbox_Disable", profile()->GetPrefs()); + safe_browsing_.SetValue(enabled); + SafeBrowsingService* safe_browsing_service = + g_browser_process->resource_dispatcher_host()->safe_browsing_service(); + MessageLoop::current()->PostTask(FROM_HERE, NewRunnableMethod( + safe_browsing_service, &SafeBrowsingService::OnEnable, enabled)); } else if (sender == reporting_enabled_checkbox_) { bool enabled = reporting_enabled_checkbox_->IsSelected(); - if (enabled) - UserMetricsRecordAction(L"Options_MetricsReportingCheckbox_Enable", - profile()->GetPrefs()); - else - UserMetricsRecordAction(L"Options_MetricsReportingCheckbox_Disable", - profile()->GetPrefs()); + UserMetricsRecordAction(enabled ? + L"Options_MetricsReportingCheckbox_Enable" : + L"Options_MetricsReportingCheckbox_Disable", + profile()->GetPrefs()); ResolveMetricsReportingEnabled(); if (enabled == reporting_enabled_checkbox_->IsSelected()) RestartMessageBox::ShowMessageBox(GetRootWindow()); enable_metrics_recording_.SetValue(enabled); + } else if (sender == show_cookies_button_) { + UserMetricsRecordAction(L"Options_ShowCookies", NULL); + CookiesView::ShowCookiesWindow(profile()); } } -void GeneralSection::LinkActivated(views::Link* source, int event_flags) { +void PrivacySection::LinkActivated(views::Link* source, int event_flags) { if (source == learn_more_link_) { // We open a new browser window so the Options dialog doesn't get lost // behind other windows. @@ -369,7 +462,7 @@ void GeneralSection::LinkActivated(views::Link* source, int event_flags) { } } -void GeneralSection::Layout() { +void PrivacySection::Layout() { // We override this to try and set the width of the enable logging checkbox // to the width of the parent less some fudging since the checkbox's // preferred size calculation code is dependent on its width, and if we don't @@ -383,20 +476,55 @@ void GeneralSection::Layout() { View::Layout(); } -void GeneralSection::InitControlLayout() { +void PrivacySection::ItemChanged(views::ComboBox* sender, + int prev_index, + int new_index) { + if (sender == cookie_behavior_combobox_) { + net::CookiePolicy::Type cookie_policy = + CookieBehaviorComboModel::IndexToCookiePolicy(new_index); + const wchar_t* kUserMetrics[] = { + L"Options_AllowAllCookies", + L"Options_BlockThirdPartyCookies", + L"Options_BlockAllCookies" + }; + DCHECK(cookie_policy >= 0 && cookie_policy < arraysize(kUserMetrics)); + UserMetricsRecordAction(kUserMetrics[cookie_policy], profile()->GetPrefs()); + this->cookie_behavior_.SetValue(cookie_policy); + } +} + +void PrivacySection::InitControlLayout() { AdvancedSection::InitControlLayout(); - reset_file_handlers_label_ = new views::Label( - l10n_util::GetString(IDS_OPTIONS_AUTOOPENFILETYPES_INFO)); - reset_file_handlers_button_ = new views::NativeButton( - l10n_util::GetString(IDS_OPTIONS_AUTOOPENFILETYPES_RESETTODEFAULT)); - reset_file_handlers_button_->SetListener(this); + section_description_label_ = new views::Label( + l10n_util::GetString(IDS_OPTIONS_DISABLE_SERVICES)); + enable_link_doctor_checkbox_ = new views::CheckBox( + l10n_util::GetString(IDS_OPTIONS_LINKDOCTOR_PREF)); + enable_link_doctor_checkbox_->SetListener(this); + enable_suggest_checkbox_ = new views::CheckBox( + l10n_util::GetString(IDS_OPTIONS_SUGGEST_PREF)); + enable_suggest_checkbox_->SetListener(this); + enable_dns_prefetching_checkbox_ = new views::CheckBox( + l10n_util::GetString(IDS_NETWORK_DNS_PREFETCH_ENABLED_DESCRIPTION)); + enable_dns_prefetching_checkbox_->SetListener(this); + enable_safe_browsing_checkbox_ = new views::CheckBox( + l10n_util::GetString(IDS_OPTIONS_SAFEBROWSING_ENABLEPROTECTION)); + enable_safe_browsing_checkbox_->SetListener(this); reporting_enabled_checkbox_ = new views::CheckBox( l10n_util::GetString(IDS_OPTIONS_ENABLE_LOGGING)); reporting_enabled_checkbox_->SetMultiLine(true); reporting_enabled_checkbox_->SetListener(this); learn_more_link_ = new views::Link(l10n_util::GetString(IDS_LEARN_MORE)); learn_more_link_->SetController(this); + cookie_behavior_label_ = new views::Label( + l10n_util::GetString(IDS_OPTIONS_COOKIES_ACCEPT_LABEL)); + allow_cookies_model_.reset(new CookieBehaviorComboModel); + cookie_behavior_combobox_ = new views::ComboBox( + allow_cookies_model_.get()); + cookie_behavior_combobox_->SetListener(this); + show_cookies_button_ = new views::NativeButton( + l10n_util::GetString(IDS_OPTIONS_COOKIES_SHOWCOOKIES)); + show_cookies_button_->SetListener(this); using views::GridLayout; using views::ColumnSet; @@ -409,38 +537,77 @@ void GeneralSection::InitControlLayout() { AddDependentTwoColumnSet(layout, dependent_labeled_field_set_id); const int indented_view_set_id = 2; AddIndentedColumnSet(layout, indented_view_set_id); + const int indented_column_set_id = 3; + AddIndentedColumnSet(layout, indented_column_set_id); - // File Handlers. - AddWrappingLabelRow(layout, reset_file_handlers_label_, + // The description label at the top and label. + AddWrappingLabelRow(layout, section_description_label_, single_column_view_set_id, true); - AddLeadingControl(layout, reset_file_handlers_button_, indented_view_set_id, - false); - AddLeadingControl(layout, reporting_enabled_checkbox_, - single_column_view_set_id, true); AddLeadingControl(layout, learn_more_link_, indented_view_set_id, false); + // Link doctor. + AddWrappingCheckboxRow(layout, enable_link_doctor_checkbox_, + single_column_view_set_id, false); + // Use Suggest service. + AddWrappingCheckboxRow(layout, enable_suggest_checkbox_, + single_column_view_set_id, false); + // DNS pre-fetching. + AddWrappingCheckboxRow(layout, enable_dns_prefetching_checkbox_, + single_column_view_set_id, false); + // Safe browsing controls. + AddWrappingCheckboxRow(layout, enable_safe_browsing_checkbox_, + single_column_view_set_id, false); + // The "Help make Google Chrome better" checkbox. + AddLeadingControl(layout, reporting_enabled_checkbox_, + single_column_view_set_id, false); + // Cookies. + AddWrappingLabelRow(layout, cookie_behavior_label_, single_column_view_set_id, + true); + AddLeadingControl(layout, cookie_behavior_combobox_, indented_column_set_id, + true); + AddLeadingControl(layout, show_cookies_button_, indented_column_set_id, + false); // Init member prefs so we can update the controls if prefs change. - auto_open_files_.Init(prefs::kDownloadExtensionsToOpen, profile()->GetPrefs(), - this); + alternate_error_pages_.Init(prefs::kAlternateErrorPagesEnabled, + profile()->GetPrefs(), this); + use_suggest_.Init(prefs::kSearchSuggestEnabled, + profile()->GetPrefs(), this); + dns_prefetch_enabled_.Init(prefs::kDnsPrefetchingEnabled, + profile()->GetPrefs(), this); + safe_browsing_.Init(prefs::kSafeBrowsingEnabled, profile()->GetPrefs(), this); enable_metrics_recording_.Init(prefs::kMetricsReportingEnabled, - g_browser_process->local_state(), this); + g_browser_process->local_state(), this); + cookie_behavior_.Init(prefs::kCookieBehavior, profile()->GetPrefs(), this); } -void GeneralSection::NotifyPrefChanged(const std::wstring* pref_name) { - if (!pref_name || *pref_name == prefs::kDownloadExtensionsToOpen) { - bool enabled = - profile()->GetDownloadManager()->HasAutoOpenFileTypesRegistered(); - reset_file_handlers_label_->SetEnabled(enabled); - reset_file_handlers_button_->SetEnabled(enabled); +void PrivacySection::NotifyPrefChanged(const std::wstring* pref_name) { + if (!pref_name || *pref_name == prefs::kAlternateErrorPagesEnabled) { + enable_link_doctor_checkbox_->SetIsSelected( + alternate_error_pages_.GetValue()); + } + if (!pref_name || *pref_name == prefs::kSearchSuggestEnabled) { + enable_suggest_checkbox_->SetIsSelected(use_suggest_.GetValue()); + } + if (!pref_name || *pref_name == prefs::kDnsPrefetchingEnabled) { + bool enabled = dns_prefetch_enabled_.GetValue(); + enable_dns_prefetching_checkbox_->SetIsSelected(enabled); + chrome_browser_net::EnableDnsPrefetch(enabled); } + if (!pref_name || *pref_name == prefs::kSafeBrowsingEnabled) + enable_safe_browsing_checkbox_->SetIsSelected(safe_browsing_.GetValue()); if (!pref_name || *pref_name == prefs::kMetricsReportingEnabled) { reporting_enabled_checkbox_->SetIsSelected( enable_metrics_recording_.GetValue()); ResolveMetricsReportingEnabled(); } + if (!pref_name || *pref_name == prefs::kCookieBehavior) { + cookie_behavior_combobox_->SetSelectedItem( + CookieBehaviorComboModel::CookiePolicyToIndex( + net::CookiePolicy::FromInt(cookie_behavior_.GetValue()))); + } } -void GeneralSection::ResolveMetricsReportingEnabled() { +void PrivacySection::ResolveMetricsReportingEnabled() { bool enabled = reporting_enabled_checkbox_->IsSelected(); GoogleUpdateSettings::SetCollectStatsConsent(enabled); @@ -470,13 +637,13 @@ void GeneralSection::ResolveMetricsReportingEnabled() { } //////////////////////////////////////////////////////////////////////////////// -// ContentSection +// WebContentSection -class ContentSection : public AdvancedSection, - public views::NativeButton::Listener { +class WebContentSection : public AdvancedSection, + public views::NativeButton::Listener { public: - explicit ContentSection(Profile* profile); - virtual ~ContentSection() {} + explicit WebContentSection(Profile* profile); + virtual ~WebContentSection() {} // Overridden from views::NativeButton::Listener: virtual void ButtonPressed(views::NativeButton* sender); @@ -494,10 +661,10 @@ class ContentSection : public AdvancedSection, BooleanPrefMember disable_popup_blocked_notification_pref_; - DISALLOW_EVIL_CONSTRUCTORS(ContentSection); + DISALLOW_EVIL_CONSTRUCTORS(WebContentSection); }; -ContentSection::ContentSection(Profile* profile) +WebContentSection::WebContentSection(Profile* profile) : popup_blocked_notification_checkbox_(NULL), gears_label_(NULL), gears_settings_button_(NULL), @@ -505,7 +672,7 @@ ContentSection::ContentSection(Profile* profile) l10n_util::GetString(IDS_OPTIONS_ADVANCED_SECTION_TITLE_CONTENT)) { } -void ContentSection::ButtonPressed(views::NativeButton* sender) { +void WebContentSection::ButtonPressed(views::NativeButton* sender) { if (sender == popup_blocked_notification_checkbox_) { bool notification_disabled = popup_blocked_notification_checkbox_->IsSelected(); @@ -523,7 +690,7 @@ void ContentSection::ButtonPressed(views::NativeButton* sender) { } } -void ContentSection::InitControlLayout() { +void WebContentSection::InitControlLayout() { AdvancedSection::InitControlLayout(); popup_blocked_notification_checkbox_ = new views::CheckBox( @@ -556,7 +723,7 @@ void ContentSection::InitControlLayout() { profile()->GetPrefs(), this); } -void ContentSection::NotifyPrefChanged(const std::wstring* pref_name) { +void WebContentSection::NotifyPrefChanged(const std::wstring* pref_name) { if (!pref_name || *pref_name == prefs::kBlockPopups) { popup_blocked_notification_checkbox_->SetIsSelected( !disable_popup_blocked_notification_pref_.GetValue()); @@ -604,44 +771,6 @@ class MixedContentComboModel : public views::ComboBox::Model { DISALLOW_EVIL_CONSTRUCTORS(MixedContentComboModel); }; -class CookieBehaviorComboModel : public views::ComboBox::Model { - public: - CookieBehaviorComboModel() {} - - // Return the number of items in the combo box. - virtual int GetItemCount(views::ComboBox* source) { - return 3; - } - - virtual std::wstring GetItemAt(views::ComboBox* source, int index) { - const int kStringIDs[] = { - IDS_OPTIONS_COOKIES_ACCEPT_ALL_COOKIES, - IDS_OPTIONS_COOKIES_RESTRICT_THIRD_PARTY_COOKIES, - IDS_OPTIONS_COOKIES_BLOCK_ALL_COOKIES - }; - if (index >= 0 && index < arraysize(kStringIDs)) - return l10n_util::GetString(kStringIDs[index]); - - NOTREACHED(); - return L""; - } - - static int CookiePolicyToIndex(net::CookiePolicy::Type policy) { - return policy; - } - - static net::CookiePolicy::Type IndexToCookiePolicy(int index) { - if (net::CookiePolicy::ValidType(index)) - return net::CookiePolicy::FromInt(index); - - NOTREACHED(); - return net::CookiePolicy::ALLOW_ALL_COOKIES; - } - - private: - DISALLOW_EVIL_CONSTRUCTORS(CookieBehaviorComboModel); -}; - class SecuritySection : public AdvancedSection, public views::NativeButton::Listener, public views::ComboBox::Listener { @@ -664,7 +793,8 @@ class SecuritySection : public AdvancedSection, private: // Controls for this section: - views::CheckBox* enable_safe_browsing_checkbox_; + views::Label* reset_file_handlers_label_; + views::NativeButton* reset_file_handlers_button_; views::Label* ssl_info_label_; views::CheckBox* enable_ssl2_checkbox_; views::CheckBox* check_for_cert_revocation_checkbox_; @@ -672,25 +802,19 @@ class SecuritySection : public AdvancedSection, views::ComboBox* mixed_content_combobox_; views::Label* manage_certificates_label_; views::NativeButton* manage_certificates_button_; - views::Label* cookie_behavior_label_; - views::ComboBox* cookie_behavior_combobox_; - views::NativeButton* show_cookies_button_; // The contents of the mixed content combobox. scoped_ptr<MixedContentComboModel> mixed_content_model_; - // Dummy for now. Used to populate cookies models. - scoped_ptr<CookieBehaviorComboModel> allow_cookies_model_; - - BooleanPrefMember safe_browsing_; + StringPrefMember auto_open_files_; IntegerPrefMember filter_mixed_content_; - IntegerPrefMember cookie_behavior_; DISALLOW_EVIL_CONSTRUCTORS(SecuritySection); }; SecuritySection::SecuritySection(Profile* profile) - : enable_safe_browsing_checkbox_(NULL), + : reset_file_handlers_label_(NULL), + reset_file_handlers_button_(NULL), ssl_info_label_(NULL), enable_ssl2_checkbox_(NULL), check_for_cert_revocation_checkbox_(NULL), @@ -698,28 +822,15 @@ SecuritySection::SecuritySection(Profile* profile) mixed_content_combobox_(NULL), manage_certificates_label_(NULL), manage_certificates_button_(NULL), - cookie_behavior_label_(NULL), - cookie_behavior_combobox_(NULL), - show_cookies_button_(NULL), AdvancedSection(profile, l10n_util::GetString(IDS_OPTIONS_ADVANCED_SECTION_TITLE_SECURITY)) { } void SecuritySection::ButtonPressed(views::NativeButton* sender) { - if (sender == enable_safe_browsing_checkbox_) { - bool enabled = enable_safe_browsing_checkbox_->IsSelected(); - if (enabled) { - UserMetricsRecordAction(L"Options_SafeBrowsingCheckbox_Enable", - profile()->GetPrefs()); - } else { - UserMetricsRecordAction(L"Options_SafeBrowsingCheckbox_Disable", - profile()->GetPrefs()); - } - safe_browsing_.SetValue(enabled); - SafeBrowsingService* safe_browsing_service = - g_browser_process->resource_dispatcher_host()->safe_browsing_service(); - MessageLoop::current()->PostTask(FROM_HERE, NewRunnableMethod( - safe_browsing_service, &SafeBrowsingService::OnEnable, enabled)); + if (sender == reset_file_handlers_button_) { + profile()->GetDownloadManager()->ResetAutoOpenFiles(); + UserMetricsRecordAction(L"Options_ResetAutoOpenFiles", + profile()->GetPrefs()); } else if (sender == enable_ssl2_checkbox_) { bool enabled = enable_ssl2_checkbox_->IsSelected(); if (enabled) { @@ -742,9 +853,6 @@ void SecuritySection::ButtonPressed(views::NativeButton* sender) { cert_mgr.dwSize = sizeof(CRYPTUI_CERT_MGR_STRUCT); cert_mgr.hwndParent = GetRootWindow(); ::CryptUIDlgCertMgr(&cert_mgr); - } else if (sender == show_cookies_button_) { - UserMetricsRecordAction(L"Options_ShowCookies", NULL); - CookiesView::ShowCookiesWindow(profile()); } } @@ -764,26 +872,17 @@ void SecuritySection::ItemChanged(views::ComboBox* sender, DCHECK(filter_policy >= 0 && filter_policy < arraysize(kUserMetrics)); UserMetricsRecordAction(kUserMetrics[filter_policy], profile()->GetPrefs()); filter_mixed_content_.SetValue(filter_policy); - } else if (sender == cookie_behavior_combobox_) { - net::CookiePolicy::Type cookie_policy = - CookieBehaviorComboModel::IndexToCookiePolicy(new_index); - const wchar_t* kUserMetrics[] = { - L"Options_AllowAllCookies", - L"Options_BlockThirdPartyCookies", - L"Options_BlockAllCookies" - }; - DCHECK(cookie_policy >= 0 && cookie_policy < arraysize(kUserMetrics)); - UserMetricsRecordAction(kUserMetrics[cookie_policy], profile()->GetPrefs()); - this->cookie_behavior_.SetValue(cookie_policy); } } void SecuritySection::InitControlLayout() { AdvancedSection::InitControlLayout(); - enable_safe_browsing_checkbox_ = new views::CheckBox( - l10n_util::GetString(IDS_OPTIONS_SAFEBROWSING_ENABLEPROTECTION)); - enable_safe_browsing_checkbox_->SetListener(this); + reset_file_handlers_label_ = new views::Label( + l10n_util::GetString(IDS_OPTIONS_AUTOOPENFILETYPES_INFO)); + reset_file_handlers_button_ = new views::NativeButton( + l10n_util::GetString(IDS_OPTIONS_AUTOOPENFILETYPES_RESETTODEFAULT)); + reset_file_handlers_button_->SetListener(this); ssl_info_label_ = new views::Label( l10n_util::GetString(IDS_OPTIONS_SSL_GROUP_DESCRIPTION)); enable_ssl2_checkbox_ = new views::CheckBox( @@ -803,15 +902,6 @@ void SecuritySection::InitControlLayout() { manage_certificates_button_ = new views::NativeButton( l10n_util::GetString(IDS_OPTIONS_CERTIFICATES_MANAGE_BUTTON)); manage_certificates_button_->SetListener(this); - cookie_behavior_label_ = new views::Label( - l10n_util::GetString(IDS_OPTIONS_COOKIES_ACCEPT_LABEL)); - allow_cookies_model_.reset(new CookieBehaviorComboModel); - cookie_behavior_combobox_ = new views::ComboBox( - allow_cookies_model_.get()); - cookie_behavior_combobox_->SetListener(this); - show_cookies_button_ = new views::NativeButton( - l10n_util::GetString(IDS_OPTIONS_COOKIES_SHOWCOOKIES)); - show_cookies_button_->SetListener(this); using views::GridLayout; using views::ColumnSet; @@ -826,10 +916,14 @@ void SecuritySection::InitControlLayout() { AddTwoColumnSet(layout, double_column_view_set_id); const int indented_column_set_id = 3; AddIndentedColumnSet(layout, indented_column_set_id); + const int indented_view_set_id = 4; + AddIndentedColumnSet(layout, indented_view_set_id); - // Safe browsing controls. - AddWrappingCheckboxRow(layout, enable_safe_browsing_checkbox_, - single_column_view_set_id, false); + // File Handlers. + AddWrappingLabelRow(layout, reset_file_handlers_label_, + single_column_view_set_id, true); + AddLeadingControl(layout, reset_file_handlers_button_, indented_view_set_id, + false); // SSL connection controls and Certificates. AddWrappingLabelRow(layout, manage_certificates_label_, @@ -849,35 +943,26 @@ void SecuritySection::InitControlLayout() { AddLeadingControl(layout, mixed_content_combobox_, indented_column_set_id, false); - // Cookies. - AddWrappingLabelRow(layout, cookie_behavior_label_, single_column_view_set_id, - true); - AddLeadingControl(layout, cookie_behavior_combobox_, indented_column_set_id, - true); - AddLeadingControl(layout, show_cookies_button_, indented_column_set_id, - false); - // Init member prefs so we can update the controls if prefs change. - safe_browsing_.Init(prefs::kSafeBrowsingEnabled, profile()->GetPrefs(), this); + auto_open_files_.Init(prefs::kDownloadExtensionsToOpen, profile()->GetPrefs(), + this); filter_mixed_content_.Init(prefs::kMixedContentFiltering, profile()->GetPrefs(), this); - cookie_behavior_.Init(prefs::kCookieBehavior, profile()->GetPrefs(), this); } // This method is called with a null pref_name when the dialog is initialized. void SecuritySection::NotifyPrefChanged(const std::wstring* pref_name) { + if (!pref_name || *pref_name == prefs::kDownloadExtensionsToOpen) { + bool enabled = + profile()->GetDownloadManager()->HasAutoOpenFileTypesRegistered(); + reset_file_handlers_label_->SetEnabled(enabled); + reset_file_handlers_button_->SetEnabled(enabled); + } if (!pref_name || *pref_name == prefs::kMixedContentFiltering) { mixed_content_combobox_->SetSelectedItem( MixedContentComboModel::FilterPolicyToIndex( FilterPolicy::FromInt(filter_mixed_content_.GetValue()))); } - if (!pref_name || *pref_name == prefs::kCookieBehavior) { - cookie_behavior_combobox_->SetSelectedItem( - CookieBehaviorComboModel::CookiePolicyToIndex( - net::CookiePolicy::FromInt(cookie_behavior_.GetValue()))); - } - if (!pref_name || *pref_name == prefs::kSafeBrowsingEnabled) - enable_safe_browsing_checkbox_->SetIsSelected(safe_browsing_.GetValue()); // These SSL options are system settings and stored in the OS. if (!pref_name) { net::SSLConfig config; @@ -951,11 +1036,6 @@ class NetworkSection : public AdvancedSection, // Controls for this section: views::Label* change_proxies_label_; views::NativeButton* change_proxies_button_; - views::CheckBox* enable_link_doctor_checkbox_; - views::CheckBox* enable_dns_prefetching_checkbox_; - - BooleanPrefMember alternate_error_pages_; - BooleanPrefMember dns_prefetch_enabled_; DISALLOW_EVIL_CONSTRUCTORS(NetworkSection); }; @@ -963,8 +1043,6 @@ class NetworkSection : public AdvancedSection, NetworkSection::NetworkSection(Profile* profile) : change_proxies_label_(NULL), change_proxies_button_(NULL), - enable_link_doctor_checkbox_(NULL), - enable_dns_prefetching_checkbox_(NULL), AdvancedSection(profile, l10n_util::GetString(IDS_OPTIONS_ADVANCED_SECTION_TITLE_NETWORK)) { } @@ -975,27 +1053,6 @@ void NetworkSection::ButtonPressed(views::NativeButton* sender) { base::Thread* thread = g_browser_process->file_thread(); DCHECK(thread); thread->message_loop()->PostTask(FROM_HERE, new OpenConnectionDialogTask); - } else if (sender == enable_link_doctor_checkbox_) { - bool enabled = enable_link_doctor_checkbox_->IsSelected(); - if (enabled) { - UserMetricsRecordAction(L"Options_LinkDoctorCheckbox_Enable", - profile()->GetPrefs()); - } else { - UserMetricsRecordAction(L"Options_LinkDoctorCheckbox_Disable", - profile()->GetPrefs()); - } - alternate_error_pages_.SetValue(enabled); - } else if (sender == enable_dns_prefetching_checkbox_) { - bool enabled = enable_dns_prefetching_checkbox_->IsSelected(); - if (enabled) { - UserMetricsRecordAction(L"Options_DnsPrefetchCheckbox_Enable", - profile()->GetPrefs()); - } else { - UserMetricsRecordAction(L"Options_DnsPrefetchCheckbox_Disable", - profile()->GetPrefs()); - } - dns_prefetch_enabled_.SetValue(enabled); - chrome_browser_net::EnableDnsPrefetch(enabled); } } @@ -1007,12 +1064,6 @@ void NetworkSection::InitControlLayout() { change_proxies_button_ = new views::NativeButton( l10n_util::GetString(IDS_OPTIONS_PROXIES_CONFIGURE_BUTTON)); change_proxies_button_->SetListener(this); - enable_link_doctor_checkbox_ = new views::CheckBox( - l10n_util::GetString(IDS_OPTIONS_LINKDOCTOR_PREF)); - enable_link_doctor_checkbox_->SetListener(this); - enable_dns_prefetching_checkbox_ = new views::CheckBox( - l10n_util::GetString(IDS_NETWORK_DNS_PREFETCH_ENABLED_DESCRIPTION)); - enable_dns_prefetching_checkbox_->SetListener(this); using views::GridLayout; using views::ColumnSet; @@ -1033,32 +1084,9 @@ void NetworkSection::InitControlLayout() { true); AddLeadingControl(layout, change_proxies_button_, indented_view_set_id, false); - - // Link doctor. - AddWrappingCheckboxRow(layout, enable_link_doctor_checkbox_, - single_column_view_set_id, true); - - // DNS pre-fetching. - AddWrappingCheckboxRow(layout, enable_dns_prefetching_checkbox_, - single_column_view_set_id, false); - - // Init member prefs so we can update the controls if prefs change. - alternate_error_pages_.Init(prefs::kAlternateErrorPagesEnabled, - profile()->GetPrefs(), this); - dns_prefetch_enabled_.Init(prefs::kDnsPrefetchingEnabled, - profile()->GetPrefs(), this); } void NetworkSection::NotifyPrefChanged(const std::wstring* pref_name) { - if (!pref_name || *pref_name == prefs::kAlternateErrorPagesEnabled) { - enable_link_doctor_checkbox_->SetIsSelected( - alternate_error_pages_.GetValue()); - } - if (!pref_name || *pref_name == prefs::kDnsPrefetchingEnabled) { - bool enabled = dns_prefetch_enabled_.GetValue(); - enable_dns_prefetching_checkbox_->SetIsSelected(enabled); - chrome_browser_net::EnableDnsPrefetch(enabled); - } } //////////////////////////////////////////////////////////////////////////////// @@ -1150,11 +1178,11 @@ void AdvancedContentsView::InitControlLayout() { GridLayout::USE_PREF, 0, 0); layout->StartRow(0, single_column_view_set_id); - layout->AddView(new GeneralSection(profile())); + layout->AddView(new PrivacySection(profile())); layout->StartRow(0, single_column_view_set_id); layout->AddView(new NetworkSection(profile())); layout->StartRow(0, single_column_view_set_id); - layout->AddView(new ContentSection(profile())); + layout->AddView(new WebContentSection(profile())); layout->StartRow(0, single_column_view_set_id); layout->AddView(new SecuritySection(profile())); } diff --git a/chrome/browser/views/options/advanced_page_view.cc b/chrome/browser/views/options/advanced_page_view.cc index 9e3382c..1744b59 100644 --- a/chrome/browser/views/options/advanced_page_view.cc +++ b/chrome/browser/views/options/advanced_page_view.cc @@ -119,6 +119,7 @@ void AdvancedPageView::ResetToDefaults() { prefs::kPasswordManagerEnabled, prefs::kRestoreOnStartup, prefs::kSafeBrowsingEnabled, + prefs::kSearchSuggestEnabled, prefs::kShowHomeButton, prefs::kSpellCheckDictionary, prefs::kURLsToRestoreOnStartup, |