#include "chrome/browser/protector/composite_settings_change.h"
#include "grit/generated_resources.h"
#include "ui/base/l10n/l10n_util.h"
namespace protector {
CompositeSettingsChange::CompositeSettingsChange() {
}
CompositeSettingsChange::~CompositeSettingsChange() {
}
CompositeSettingsChange* CompositeSettingsChange::MergeWith(
BaseSettingChange* other) {
DCHECK(profile());
DCHECK(other);
changes_.push_back(other);
apply_names_.push(other->GetApplyDisplayName());
return this;
}
bool CompositeSettingsChange::Contains(const BaseSettingChange* other) const {
return this == other ||
std::find(changes_.begin(), changes_.end(), other) != changes_.end();
}
void CompositeSettingsChange::Apply(Browser* browser) {
DVLOG(1) << "Apply all changes";
for (size_t i = 0; i < changes_.size(); ++i)
changes_[i]->Apply(browser);
}
void CompositeSettingsChange::Discard(Browser* browser) {
DVLOG(1) << "Discard all changes";
for (size_t i = 0; i < changes_.size(); ++i)
changes_[i]->Discard(browser);
}
void CompositeSettingsChange::Timeout() {
DVLOG(1) << "Timeout all changes";
for (size_t i = 0; i < changes_.size(); ++i)
changes_[i]->Timeout();
}
int CompositeSettingsChange::GetBadgeIconID() const {
DCHECK(changes_.size());
return changes_[0]->GetBadgeIconID();
}
int CompositeSettingsChange::GetMenuItemIconID() const {
DCHECK(changes_.size());
return changes_[0]->GetMenuItemIconID();
}
int CompositeSettingsChange::GetBubbleIconID() const {
DCHECK(changes_.size());
return changes_[0]->GetBubbleIconID();
}
string16 CompositeSettingsChange::GetBubbleTitle() const {
return l10n_util::GetStringUTF16(IDS_SETTING_CHANGE_TITLE);
}
string16 CompositeSettingsChange::GetBubbleMessage() const {
return l10n_util::GetStringUTF16(IDS_SETTING_CHANGE_BUBBLE_MESSAGE);
}
string16 CompositeSettingsChange::GetApplyButtonText() const {
DCHECK(apply_names_.size());
string16 apply_text = apply_names_.top().second;
return apply_text.empty() ?
l10n_util::GetStringUTF16(IDS_CHANGE_SETTING_NO_NAME) :
l10n_util::GetStringFUTF16(IDS_CHANGE_SETTING, apply_text);
}
string16 CompositeSettingsChange::GetDiscardButtonText() const {
return l10n_util::GetStringUTF16(IDS_KEEP_SETTING);
}
BaseSettingChange::DisplayName
CompositeSettingsChange::GetApplyDisplayName() const {
NOTREACHED();
return BaseSettingChange::GetApplyDisplayName();
}
GURL CompositeSettingsChange::GetNewSettingURL() const {
DCHECK(changes_.size());
return changes_[0]->GetNewSettingURL();
}
bool CompositeSettingsChange::CanBeMerged() const {
return true;
}
}