diff options
author | mnissler@chromium.org <mnissler@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-14 07:45:59 +0000 |
---|---|---|
committer | mnissler@chromium.org <mnissler@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-14 07:45:59 +0000 |
commit | d3b98c88fa50c3b6bf4644570220cf93f8ca9bea (patch) | |
tree | e2fdf54cee2d8546526ed9aca724e9f957d0fb2b /chrome/browser/gtk/options | |
parent | 9473a8d2db6780ecac153c65ba8200cdb0eeb1bd (diff) | |
download | chromium_src-d3b98c88fa50c3b6bf4644570220cf93f8ca9bea.zip chromium_src-d3b98c88fa50c3b6bf4644570220cf93f8ca9bea.tar.gz chromium_src-d3b98c88fa50c3b6bf4644570220cf93f8ca9bea.tar.bz2 |
Implement support for disabling sync through configuration management.
BUG=45316
TEST=Configure SyncDisabled policy and check the UI.
Review URL: http://codereview.chromium.org/2905003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@52288 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/gtk/options')
-rw-r--r-- | chrome/browser/gtk/options/content_page_gtk.cc | 22 | ||||
-rw-r--r-- | chrome/browser/gtk/options/content_page_gtk.h | 4 |
2 files changed, 21 insertions, 5 deletions
diff --git a/chrome/browser/gtk/options/content_page_gtk.cc b/chrome/browser/gtk/options/content_page_gtk.cc index 540766c..4cc89ed 100644 --- a/chrome/browser/gtk/options/content_page_gtk.cc +++ b/chrome/browser/gtk/options/content_page_gtk.cc @@ -42,6 +42,11 @@ namespace { // Background color for the status label when it's showing an error. static const GdkColor kSyncLabelErrorBgColor = GDK_COLOR_RGB(0xff, 0x9a, 0x9a); +// Set of preferences which might be unavailable for editing when managed. +const wchar_t* kContentManagablePrefs[] = { + prefs::kSyncManaged +}; + // Helper for WrapLabelAtAllocationHack. void OnLabelAllocate(GtkWidget* label, GtkAllocation* allocation) { gtk_widget_set_size_request(label, allocation->width, -1); @@ -80,7 +85,9 @@ ContentPageGtk::ContentPageGtk(Profile* profile) sync_customize_button_(NULL), privacy_dashboard_link_(NULL), initializing_(true), - sync_service_(NULL) { + sync_service_(NULL), + managed_prefs_banner_(profile->GetPrefs(), kContentManagablePrefs, + arraysize(kContentManagablePrefs)) { if (profile->GetProfileSyncService()) { sync_service_ = profile->GetProfileSyncService(); sync_service_->AddObserver(this); @@ -89,6 +96,7 @@ ContentPageGtk::ContentPageGtk(Profile* profile) // Prepare the group options layout. scoped_ptr<OptionsLayoutBuilderGtk> options_builder(OptionsLayoutBuilderGtk::CreateOptionallyCompactLayout()); + options_builder->AddWidget(managed_prefs_banner_.banner_widget(), false); if (sync_service_) { options_builder->AddOptionGroup( l10n_util::GetStringUTF8(IDS_SYNC_OPTIONS_GROUP_NAME), @@ -391,6 +399,7 @@ void ContentPageGtk::UpdateSyncControls() { string16 link_label; std::string customize_button_label; std::string button_label; + bool managed = sync_service_->IsManaged(); bool sync_setup_completed = sync_service_->HasSyncSetupCompleted(); bool status_has_error = sync_ui_util::GetStatusLabels(sync_service_, &status_label, &link_label) == sync_ui_util::SYNC_ERROR; @@ -408,7 +417,7 @@ void ContentPageGtk::UpdateSyncControls() { UTF16ToUTF8(status_label).c_str()); #if !defined(OS_CHROMEOS) gtk_widget_set_sensitive(sync_start_stop_button_, - !sync_service_->WizardIsVisible()); + !sync_service_->WizardIsVisible() && !managed); gtk_button_set_label(GTK_BUTTON(sync_start_stop_button_), button_label.c_str()); #endif @@ -417,6 +426,7 @@ void ContentPageGtk::UpdateSyncControls() { sync_setup_completed && !status_has_error); gtk_button_set_label(GTK_BUTTON(sync_customize_button_), customize_button_label.c_str()); + gtk_widget_set_sensitive(sync_customize_button_, !managed); #if !defined(OS_CHROMEOS) gtk_chrome_link_button_set_label(GTK_CHROME_LINK_BUTTON(sync_action_link_), UTF16ToUTF8(link_label).c_str()); @@ -427,6 +437,7 @@ void ContentPageGtk::UpdateSyncControls() { gtk_widget_set_no_show_all(sync_action_link_background_, FALSE); gtk_widget_show(sync_action_link_background_); } + gtk_widget_set_sensitive(sync_action_link_, !managed); #endif if (status_has_error) { gtk_widget_modify_bg(sync_status_label_background_, GTK_STATE_NORMAL, @@ -529,7 +540,7 @@ void ContentPageGtk::OnPasswordRadioToggled(GtkWidget* widget) { } void ContentPageGtk::OnSyncStartStopButtonClicked(GtkWidget* widget) { - DCHECK(sync_service_); + DCHECK(sync_service_ && !sync_service_->IsManaged()); if (sync_service_->HasSyncSetupCompleted()) { GtkWidget* dialog = gtk_message_dialog_new( @@ -567,12 +578,13 @@ void ContentPageGtk::OnSyncStartStopButtonClicked(GtkWidget* widget) { void ContentPageGtk::OnSyncCustomizeButtonClicked(GtkWidget* widget) { // sync_customize_button_ should be invisible if sync is not yet set up. - DCHECK(sync_service_->HasSyncSetupCompleted()); + DCHECK(sync_service_ && !sync_service_->IsManaged() && + sync_service_->HasSyncSetupCompleted()); sync_service_->ShowChooseDataTypes(); } void ContentPageGtk::OnSyncActionLinkClicked(GtkWidget* widget) { - DCHECK(sync_service_); + DCHECK(sync_service_ && !sync_service_->IsManaged()); sync_service_->ShowLoginDialog(); } diff --git a/chrome/browser/gtk/options/content_page_gtk.h b/chrome/browser/gtk/options/content_page_gtk.h index 024eec8..f7239e0 100644 --- a/chrome/browser/gtk/options/content_page_gtk.h +++ b/chrome/browser/gtk/options/content_page_gtk.h @@ -9,6 +9,7 @@ #include "app/gtk_signal.h" #include "chrome/browser/autofill/personal_data_manager.h" +#include "chrome/browser/gtk/options/managed_prefs_banner_gtk.h" #include "chrome/browser/options_page_base.h" #include "chrome/browser/pref_member.h" #include "chrome/browser/profile.h" @@ -103,6 +104,9 @@ class ContentPageGtk : public OptionsPageBase, // and NULL-ed out on destruction. ProfileSyncService* sync_service_; + // Tracks managed preference warning banner state. + ManagedPrefsBannerGtk managed_prefs_banner_; + DISALLOW_COPY_AND_ASSIGN(ContentPageGtk); }; |