// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "extensions/common/permissions/settings_override_permission.h" #include "base/strings/utf_string_conversions.h" #include "grit/extensions_strings.h" #include "ui/base/l10n/l10n_util.h" namespace extensions { SettingsOverrideAPIPermission::SettingsOverrideAPIPermission( const APIPermissionInfo* permission, const std::string& setting_value) : APIPermission(permission), setting_value_(setting_value) {} SettingsOverrideAPIPermission::~SettingsOverrideAPIPermission() {} bool SettingsOverrideAPIPermission::HasMessages() const { return info()->message_id() > PermissionMessage::kNone; } PermissionMessages SettingsOverrideAPIPermission::GetMessages() const { DCHECK(HasMessages()); int string_id = -1; switch (id()) { case kHomepage: { string_id = IDS_EXTENSION_PROMPT_WARNING_HOME_PAGE_SETTING_OVERRIDE; break; } case kStartupPages: { string_id = IDS_EXTENSION_PROMPT_WARNING_START_PAGE_SETTING_OVERRIDE; break; } case kSearchProvider: { string_id = IDS_EXTENSION_PROMPT_WARNING_SEARCH_SETTINGS_OVERRIDE; break; } default: NOTREACHED(); } PermissionMessages result; result.push_back( PermissionMessage(info()->message_id(), l10n_util::GetStringFUTF16( string_id, base::UTF8ToUTF16(setting_value_)))); return result; } bool SettingsOverrideAPIPermission::Check( const APIPermission::CheckParam* param) const { return (param == NULL); } bool SettingsOverrideAPIPermission::Contains(const APIPermission* rhs) const { CHECK_EQ(info(), rhs->info()); return true; } bool SettingsOverrideAPIPermission::Equal(const APIPermission* rhs) const { if (this != rhs) CHECK_EQ(info(), rhs->info()); return true; } bool SettingsOverrideAPIPermission::FromValue( const base::Value* value, std::string* /*error*/, std::vector<std::string>* unhandled_permissions) { return (value == NULL); } scoped_ptr<base::Value> SettingsOverrideAPIPermission::ToValue() const { return scoped_ptr<base::Value>(); } APIPermission* SettingsOverrideAPIPermission::Clone() const { return new SettingsOverrideAPIPermission(info(), setting_value_); } APIPermission* SettingsOverrideAPIPermission::Diff( const APIPermission* rhs) const { CHECK_EQ(info(), rhs->info()); return NULL; } APIPermission* SettingsOverrideAPIPermission::Union( const APIPermission* rhs) const { CHECK_EQ(info(), rhs->info()); return new SettingsOverrideAPIPermission(info(), setting_value_); } APIPermission* SettingsOverrideAPIPermission::Intersect( const APIPermission* rhs) const { CHECK_EQ(info(), rhs->info()); return new SettingsOverrideAPIPermission(info(), setting_value_); } void SettingsOverrideAPIPermission::Write(IPC::Message* m) const {} bool SettingsOverrideAPIPermission::Read(const IPC::Message* m, PickleIterator* iter) { return true; } void SettingsOverrideAPIPermission::Log(std::string* log) const {} } // namespace extensions