| Index: chrome/browser/gtk/options/content_page_gtk.cc
|
| diff --git a/chrome/browser/gtk/options/content_page_gtk.cc b/chrome/browser/gtk/options/content_page_gtk.cc
|
| index 6307f15ea675f20fe4a410708c79c8ef7b5c05d9..4c33130c978394dc2df6e6ddc58e0f08707102b4 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);
|
| @@ -79,7 +84,9 @@ ContentPageGtk::ContentPageGtk(Profile* profile)
|
| #endif
|
| sync_customize_button_(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);
|
| @@ -88,6 +95,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),
|
| @@ -402,6 +410,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;
|
| @@ -419,7 +428,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
|
| @@ -428,6 +437,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());
|
| @@ -438,6 +448,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,
|
| @@ -564,7 +575,7 @@ void ContentPageGtk::OnAutoFillRadioToggled(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(
|
| @@ -602,12 +613,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();
|
| }
|
|
|
|
|