summaryrefslogtreecommitdiffstats
path: root/chrome/browser/gtk/options
diff options
context:
space:
mode:
authormnissler@chromium.org <mnissler@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-14 07:45:59 +0000
committermnissler@chromium.org <mnissler@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-14 07:45:59 +0000
commitd3b98c88fa50c3b6bf4644570220cf93f8ca9bea (patch)
treee2fdf54cee2d8546526ed9aca724e9f957d0fb2b /chrome/browser/gtk/options
parent9473a8d2db6780ecac153c65ba8200cdb0eeb1bd (diff)
downloadchromium_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.cc22
-rw-r--r--chrome/browser/gtk/options/content_page_gtk.h4
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);
};