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 |