| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |  | 
| 2 // Use of this source code is governed by a BSD-style license that can be |  | 
| 3 // found in the LICENSE file. |  | 
| 4 |  | 
| 5 #include "base/basictypes.h" |  | 
| 6 #include "base/compiler_specific.h" |  | 
| 7 #include "base/logging.h" |  | 
| 8 #include "base/metrics/histogram.h" |  | 
| 9 #include "base/utf_string_conversions.h" |  | 
| 10 #include "chrome/browser/prefs/pref_service.h" |  | 
| 11 #include "chrome/browser/prefs/session_startup_pref.h" |  | 
| 12 #include "chrome/browser/profiles/profile.h" |  | 
| 13 #include "chrome/browser/protector/base_prefs_change.h" |  | 
| 14 #include "chrome/browser/protector/histograms.h" |  | 
| 15 #include "chrome/browser/protector/protector_service.h" |  | 
| 16 #include "chrome/browser/protector/protector_service_factory.h" |  | 
| 17 #include "chrome/common/pref_names.h" |  | 
| 18 #include "chrome/common/url_constants.h" |  | 
| 19 #include "googleurl/src/gurl.h" |  | 
| 20 #include "grit/chromium_strings.h" |  | 
| 21 #include "grit/generated_resources.h" |  | 
| 22 #include "grit/theme_resources.h" |  | 
| 23 #include "ui/base/l10n/l10n_util.h" |  | 
| 24 |  | 
| 25 namespace protector { |  | 
| 26 |  | 
| 27 // Unknown change to Preferences with invalid backup. |  | 
| 28 class PrefsBackupInvalidChange : public BasePrefsChange { |  | 
| 29  public: |  | 
| 30   PrefsBackupInvalidChange(); |  | 
| 31 |  | 
| 32   // BasePrefsChange overrides: |  | 
| 33   virtual bool Init(Profile* profile) OVERRIDE; |  | 
| 34   virtual void InitWhenDisabled(Profile* profile) OVERRIDE; |  | 
| 35   virtual void Apply(Browser* browser) OVERRIDE; |  | 
| 36   virtual void Discard(Browser* browser) OVERRIDE; |  | 
| 37   virtual void Timeout() OVERRIDE; |  | 
| 38   virtual int GetBadgeIconID() const OVERRIDE; |  | 
| 39   virtual int GetMenuItemIconID() const OVERRIDE; |  | 
| 40   virtual int GetBubbleIconID() const OVERRIDE; |  | 
| 41   virtual string16 GetBubbleTitle() const OVERRIDE; |  | 
| 42   virtual string16 GetBubbleMessage() const OVERRIDE; |  | 
| 43   virtual string16 GetApplyButtonText() const OVERRIDE; |  | 
| 44   virtual string16 GetDiscardButtonText() const OVERRIDE; |  | 
| 45   virtual bool CanBeMerged() const OVERRIDE; |  | 
| 46 |  | 
| 47  private: |  | 
| 48   virtual ~PrefsBackupInvalidChange(); |  | 
| 49 |  | 
| 50   // Applies default settings values when appropriate. |  | 
| 51   void ApplyDefaults(Profile* profile); |  | 
| 52 |  | 
| 53   // True if session startup prefs have been reset. |  | 
| 54   bool startup_pref_reset_; |  | 
| 55 |  | 
| 56   DISALLOW_COPY_AND_ASSIGN(PrefsBackupInvalidChange); |  | 
| 57 }; |  | 
| 58 |  | 
| 59 PrefsBackupInvalidChange::PrefsBackupInvalidChange() |  | 
| 60     : startup_pref_reset_(false) { |  | 
| 61 } |  | 
| 62 |  | 
| 63 PrefsBackupInvalidChange::~PrefsBackupInvalidChange() { |  | 
| 64 } |  | 
| 65 |  | 
| 66 bool PrefsBackupInvalidChange::Init(Profile* profile) { |  | 
| 67   if (!BasePrefsChange::Init(profile)) |  | 
| 68     return false; |  | 
| 69   ApplyDefaults(profile); |  | 
| 70   DismissOnPrefChange(prefs::kHomePageIsNewTabPage); |  | 
| 71   DismissOnPrefChange(prefs::kHomePage); |  | 
| 72   DismissOnPrefChange(prefs::kShowHomeButton); |  | 
| 73   DismissOnPrefChange(prefs::kRestoreOnStartup); |  | 
| 74   DismissOnPrefChange(prefs::kURLsToRestoreOnStartup); |  | 
| 75   DismissOnPrefChange(prefs::kPinnedTabs); |  | 
| 76   return true; |  | 
| 77 } |  | 
| 78 |  | 
| 79 void PrefsBackupInvalidChange::InitWhenDisabled(Profile* profile) { |  | 
| 80   // Nothing to do here since the backup has been already reset. |  | 
| 81 } |  | 
| 82 |  | 
| 83 void PrefsBackupInvalidChange::Apply(Browser* browser) { |  | 
| 84   NOTREACHED(); |  | 
| 85 } |  | 
| 86 |  | 
| 87 void PrefsBackupInvalidChange::Discard(Browser* browser) { |  | 
| 88   // TODO(ivankr): highlight the protected prefs on the settings page |  | 
| 89   // (http://crbug.com/119088). |  | 
| 90   ProtectorServiceFactory::GetForProfile(profile())->OpenTab( |  | 
| 91       GURL(chrome::kChromeUISettingsURL), browser); |  | 
| 92 } |  | 
| 93 |  | 
| 94 void PrefsBackupInvalidChange::Timeout() { |  | 
| 95 } |  | 
| 96 |  | 
| 97 int PrefsBackupInvalidChange::GetBadgeIconID() const { |  | 
| 98   return IDR_UPDATE_BADGE4; |  | 
| 99 } |  | 
| 100 |  | 
| 101 int PrefsBackupInvalidChange::GetMenuItemIconID() const { |  | 
| 102   return IDR_UPDATE_MENU4; |  | 
| 103 } |  | 
| 104 |  | 
| 105 int PrefsBackupInvalidChange::GetBubbleIconID() const { |  | 
| 106   return IDR_INPUT_ALERT; |  | 
| 107 } |  | 
| 108 |  | 
| 109 string16 PrefsBackupInvalidChange::GetBubbleTitle() const { |  | 
| 110   return l10n_util::GetStringUTF16(IDS_SETTING_CHANGE_TITLE); |  | 
| 111 } |  | 
| 112 |  | 
| 113 string16 PrefsBackupInvalidChange::GetBubbleMessage() const { |  | 
| 114   return startup_pref_reset_ ? |  | 
| 115       l10n_util::GetStringUTF16( |  | 
| 116           IDS_SETTING_CHANGE_NO_BACKUP_STARTUP_RESET_BUBBLE_MESSAGE) : |  | 
| 117       l10n_util::GetStringUTF16(IDS_SETTING_CHANGE_BUBBLE_MESSAGE); |  | 
| 118 } |  | 
| 119 |  | 
| 120 string16 PrefsBackupInvalidChange::GetApplyButtonText() const { |  | 
| 121   // Don't show this button. |  | 
| 122   return string16(); |  | 
| 123 } |  | 
| 124 |  | 
| 125 string16 PrefsBackupInvalidChange::GetDiscardButtonText() const { |  | 
| 126   return l10n_util::GetStringUTF16(IDS_EDIT_SETTINGS); |  | 
| 127 } |  | 
| 128 |  | 
| 129 void PrefsBackupInvalidChange::ApplyDefaults(Profile* profile) { |  | 
| 130   PrefService* prefs = profile->GetPrefs(); |  | 
| 131   SessionStartupPref startup_pref = SessionStartupPref::GetStartupPref(prefs); |  | 
| 132   if (startup_pref.type != SessionStartupPref::LAST) { |  | 
| 133     // If startup type is LAST, resetting it is dangerous (the whole previous |  | 
| 134     // session will be lost). |  | 
| 135     prefs->ClearPref(prefs::kRestoreOnStartup); |  | 
| 136     startup_pref_reset_ = true; |  | 
| 137   } |  | 
| 138   prefs->ClearPref(prefs::kHomePageIsNewTabPage); |  | 
| 139   prefs->ClearPref(prefs::kHomePage); |  | 
| 140   prefs->ClearPref(prefs::kShowHomeButton); |  | 
| 141 } |  | 
| 142 |  | 
| 143 bool PrefsBackupInvalidChange::CanBeMerged() const { |  | 
| 144   return false; |  | 
| 145 } |  | 
| 146 |  | 
| 147 BaseSettingChange* CreatePrefsBackupInvalidChange() { |  | 
| 148   return new PrefsBackupInvalidChange(); |  | 
| 149 } |  | 
| 150 |  | 
| 151 }  // namespace protector |  | 
| OLD | NEW | 
|---|