| Index: chrome/browser/views/options/content_page_view.cc
 | 
| diff --git a/chrome/browser/views/options/content_page_view.cc b/chrome/browser/views/options/content_page_view.cc
 | 
| index 19eabfca0013b69af5f2cebf7fafb61c09a3552e..66393745e67d30538be05d32720c49416c4ab215 100644
 | 
| --- a/chrome/browser/views/options/content_page_view.cc
 | 
| +++ b/chrome/browser/views/options/content_page_view.cc
 | 
| @@ -24,6 +24,7 @@
 | 
|  #include "chrome/browser/sync/sync_ui_util.h"
 | 
|  #include "chrome/browser/sync/sync_setup_wizard.h"
 | 
|  #include "chrome/browser/views/importer_view.h"
 | 
| +#include "chrome/browser/views/options/managed_prefs_banner_view.h"
 | 
|  #include "chrome/browser/views/options/options_group_view.h"
 | 
|  #include "chrome/browser/views/options/passwords_exceptions_window_view.h"
 | 
|  #include "chrome/common/chrome_switches.h"
 | 
| @@ -49,6 +50,12 @@ const int kFormAutofillRadioGroup = 202;
 | 
|  // Background color for the status label when it's showing an error.
 | 
|  static const SkColor kSyncLabelErrorBgColor = SkColorSetRGB(0xff, 0x9a, 0x9a);
 | 
|  
 | 
| +// All content related preferences that are potentially managed by policy. We'll
 | 
| +// display the warning banner if one of these have the managed bit set.
 | 
| +const wchar_t* kContentPolicyConstrainedPrefs[] = {
 | 
| +  prefs::kSyncManaged
 | 
| +};
 | 
| +
 | 
|  static views::Background* CreateErrorBackground() {
 | 
|    return views::Background::CreateSolidBackground(kSyncLabelErrorBgColor);
 | 
|  }
 | 
| @@ -135,7 +142,7 @@ void ContentPageView::ButtonPressed(
 | 
|        gfx::Rect(),
 | 
|        new ImporterView(profile(), importer::ALL))->Show();
 | 
|    } else if (sender == sync_start_stop_button_) {
 | 
| -    DCHECK(sync_service_);
 | 
| +    DCHECK(sync_service_ && !sync_service_->IsManaged());
 | 
|  
 | 
|      if (sync_service_->HasSyncSetupCompleted()) {
 | 
|        ConfirmMessageBoxDialog::RunWithCustomConfiguration(
 | 
| @@ -169,7 +176,7 @@ void ContentPageView::LinkActivated(views::Link* source, int event_flags) {
 | 
|      return;
 | 
|    }
 | 
|    DCHECK_EQ(source, sync_action_link_);
 | 
| -  DCHECK(sync_service_);
 | 
| +  DCHECK(sync_service_ && !sync_service_->IsManaged());
 | 
|    sync_service_->ShowLoginDialog();
 | 
|  }
 | 
|  
 | 
| @@ -189,6 +196,11 @@ void ContentPageView::InitControlLayout() {
 | 
|    column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 1,
 | 
|                          GridLayout::USE_PREF, 0, 0);
 | 
|  
 | 
| +  layout->StartRow(0, single_column_view_set_id);
 | 
| +  layout->AddView(
 | 
| +      new ManagedPrefsBannerView(profile()->GetPrefs(),
 | 
| +                                 kContentPolicyConstrainedPrefs,
 | 
| +                                 arraysize(kContentPolicyConstrainedPrefs)));
 | 
|    if (sync_service_) {
 | 
|      layout->StartRow(0, single_column_view_set_id);
 | 
|      InitSyncGroup();
 | 
| @@ -469,6 +481,7 @@ void ContentPageView::UpdateSyncControls() {
 | 
|    std::wstring link_label;
 | 
|    std::wstring customize_button_label;
 | 
|    std::wstring 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;
 | 
| @@ -483,12 +496,15 @@ void ContentPageView::UpdateSyncControls() {
 | 
|    }
 | 
|  
 | 
|    sync_status_label_->SetText(status_label);
 | 
| -  sync_start_stop_button_->SetEnabled(!sync_service_->WizardIsVisible());
 | 
| +  sync_start_stop_button_->SetEnabled(
 | 
| +      !sync_service_->WizardIsVisible() && !managed);
 | 
|    sync_start_stop_button_->SetLabel(button_label);
 | 
|    sync_customize_button_->SetLabel(customize_button_label);
 | 
|    sync_customize_button_->SetVisible(sync_setup_completed && !status_has_error);
 | 
| +  sync_customize_button_->SetEnabled(!managed);
 | 
|    sync_action_link_->SetText(link_label);
 | 
|    sync_action_link_->SetVisible(!link_label.empty());
 | 
| +  sync_action_link_->SetEnabled(!managed);
 | 
|  
 | 
|    if (status_has_error) {
 | 
|      sync_status_label_->set_background(CreateErrorBackground());
 | 
| 
 |