| 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 "chrome/browser/protector/composite_settings_change.h" |
| 6 |
| 7 #include "grit/generated_resources.h" |
| 8 #include "ui/base/l10n/l10n_util.h" |
| 9 |
| 10 namespace protector { |
| 11 |
| 12 |
| 13 CompositeSettingsChange::CompositeSettingsChange() { |
| 14 } |
| 15 |
| 16 CompositeSettingsChange::~CompositeSettingsChange() { |
| 17 } |
| 18 |
| 19 CompositeSettingsChange* CompositeSettingsChange::MergeWith( |
| 20 BaseSettingChange* other) { |
| 21 DCHECK(profile()); |
| 22 DCHECK(other); |
| 23 changes_.push_back(other); |
| 24 apply_names_.push(other->GetApplyDisplayName()); |
| 25 return this; |
| 26 } |
| 27 |
| 28 bool CompositeSettingsChange::Contains(const BaseSettingChange* other) const { |
| 29 return this == other || |
| 30 std::find(changes_.begin(), changes_.end(), other) != changes_.end(); |
| 31 } |
| 32 |
| 33 // Apart from PrefsBackupInvalidChange, which should never appear with other |
| 34 // Preferences-related changes together, the Apply/Discard logic of change |
| 35 // classes does not overlap, so it's safe to call them in any order. |
| 36 |
| 37 void CompositeSettingsChange::Apply(Browser* browser) { |
| 38 DVLOG(1) << "Apply all changes"; |
| 39 for (size_t i = 0; i < changes_.size(); ++i) |
| 40 changes_[i]->Apply(browser); |
| 41 } |
| 42 |
| 43 void CompositeSettingsChange::Discard(Browser* browser) { |
| 44 DVLOG(1) << "Discard all changes"; |
| 45 for (size_t i = 0; i < changes_.size(); ++i) |
| 46 changes_[i]->Discard(browser); |
| 47 } |
| 48 |
| 49 void CompositeSettingsChange::Timeout() { |
| 50 DVLOG(1) << "Timeout all changes"; |
| 51 for (size_t i = 0; i < changes_.size(); ++i) |
| 52 changes_[i]->Timeout(); |
| 53 } |
| 54 |
| 55 int CompositeSettingsChange::GetBadgeIconID() const { |
| 56 DCHECK(changes_.size()); |
| 57 // Use icons from the first change. |
| 58 // TODO(ivankr): need something better, maybe a special icon. |
| 59 return changes_[0]->GetBadgeIconID(); |
| 60 } |
| 61 |
| 62 int CompositeSettingsChange::GetMenuItemIconID() const { |
| 63 DCHECK(changes_.size()); |
| 64 return changes_[0]->GetMenuItemIconID(); |
| 65 } |
| 66 |
| 67 int CompositeSettingsChange::GetBubbleIconID() const { |
| 68 DCHECK(changes_.size()); |
| 69 return changes_[0]->GetBubbleIconID(); |
| 70 } |
| 71 |
| 72 string16 CompositeSettingsChange::GetBubbleTitle() const { |
| 73 return l10n_util::GetStringUTF16(IDS_SETTING_CHANGE_TITLE); |
| 74 } |
| 75 |
| 76 string16 CompositeSettingsChange::GetBubbleMessage() const { |
| 77 // TODO(ivankr): indicate what kind of changes happened (i.e., "something |
| 78 // tried to change your search engine, startup pages, etc."). |
| 79 return l10n_util::GetStringUTF16(IDS_SETTING_CHANGE_BUBBLE_MESSAGE); |
| 80 } |
| 81 |
| 82 string16 CompositeSettingsChange::GetApplyButtonText() const { |
| 83 DCHECK(apply_names_.size()); |
| 84 string16 apply_text = apply_names_.top().second; |
| 85 return apply_text.empty() ? |
| 86 l10n_util::GetStringUTF16(IDS_CHANGE_SETTING_NO_NAME) : |
| 87 l10n_util::GetStringFUTF16(IDS_CHANGE_SETTING, apply_text); |
| 88 } |
| 89 |
| 90 string16 CompositeSettingsChange::GetDiscardButtonText() const { |
| 91 return l10n_util::GetStringUTF16(IDS_KEEP_SETTING); |
| 92 } |
| 93 |
| 94 BaseSettingChange::DisplayName |
| 95 CompositeSettingsChange::GetApplyDisplayName() const { |
| 96 // CompositeSettingsChange should never be put inside another one. |
| 97 NOTREACHED(); |
| 98 return BaseSettingChange::GetApplyDisplayName(); |
| 99 } |
| 100 |
| 101 GURL CompositeSettingsChange::GetNewSettingURL() const { |
| 102 DCHECK(changes_.size()); |
| 103 return changes_[0]->GetNewSettingURL(); |
| 104 } |
| 105 |
| 106 bool CompositeSettingsChange::CanBeMerged() const { |
| 107 // We did that already, why not do it again. |
| 108 return true; |
| 109 } |
| 110 |
| 111 } // namespace protector |
| OLD | NEW |