1 // Copyright 2014 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 "extensions/common/permissions/settings_override_permission.h" 6 7 #include "base/strings/utf_string_conversions.h" 8 #include "grit/extensions_strings.h" 9 #include "ui/base/l10n/l10n_util.h" 10 11 namespace extensions { 12 13 SettingsOverrideAPIPermission::SettingsOverrideAPIPermission( 14 const APIPermissionInfo* permission, 15 const std::string& setting_value) 16 : APIPermission(permission), setting_value_(setting_value) {} 17 18 SettingsOverrideAPIPermission::~SettingsOverrideAPIPermission() {} 19 20 bool SettingsOverrideAPIPermission::HasMessages() const { 21 return info()->message_id() > PermissionMessage::kNone; 22 } 23 24 PermissionMessages SettingsOverrideAPIPermission::GetMessages() const { 25 DCHECK(HasMessages()); 26 int string_id = -1; 27 switch (id()) { 28 case kHomepage: { 29 string_id = IDS_EXTENSION_PROMPT_WARNING_HOME_PAGE_SETTING_OVERRIDE; 30 break; 31 } 32 case kStartupPages: { 33 string_id = IDS_EXTENSION_PROMPT_WARNING_START_PAGE_SETTING_OVERRIDE; 34 break; 35 } 36 case kSearchProvider: { 37 string_id = IDS_EXTENSION_PROMPT_WARNING_SEARCH_SETTINGS_OVERRIDE; 38 break; 39 } 40 default: 41 NOTREACHED(); 42 } 43 PermissionMessages result; 44 result.push_back( 45 PermissionMessage(info()->message_id(), 46 l10n_util::GetStringFUTF16( 47 string_id, base::UTF8ToUTF16(setting_value_)))); 48 return result; 49 } 50 51 bool SettingsOverrideAPIPermission::Check( 52 const APIPermission::CheckParam* param) const { 53 return (param == NULL); 54 } 55 56 bool SettingsOverrideAPIPermission::Contains(const APIPermission* rhs) const { 57 CHECK_EQ(info(), rhs->info()); 58 return true; 59 } 60 61 bool SettingsOverrideAPIPermission::Equal(const APIPermission* rhs) const { 62 if (this != rhs) 63 CHECK_EQ(info(), rhs->info()); 64 return true; 65 } 66 67 bool SettingsOverrideAPIPermission::FromValue( 68 const base::Value* value, 69 std::string* /*error*/, 70 std::vector<std::string>* unhandled_permissions) { 71 return (value == NULL); 72 } 73 74 scoped_ptr<base::Value> SettingsOverrideAPIPermission::ToValue() const { 75 return scoped_ptr<base::Value>(); 76 } 77 78 APIPermission* SettingsOverrideAPIPermission::Clone() const { 79 return new SettingsOverrideAPIPermission(info(), setting_value_); 80 } 81 82 APIPermission* SettingsOverrideAPIPermission::Diff( 83 const APIPermission* rhs) const { 84 CHECK_EQ(info(), rhs->info()); 85 return NULL; 86 } 87 88 APIPermission* SettingsOverrideAPIPermission::Union( 89 const APIPermission* rhs) const { 90 CHECK_EQ(info(), rhs->info()); 91 return new SettingsOverrideAPIPermission(info(), setting_value_); 92 } 93 94 APIPermission* SettingsOverrideAPIPermission::Intersect( 95 const APIPermission* rhs) const { 96 CHECK_EQ(info(), rhs->info()); 97 return new SettingsOverrideAPIPermission(info(), setting_value_); 98 } 99 100 void SettingsOverrideAPIPermission::Write(IPC::Message* m) const {} 101 102 bool SettingsOverrideAPIPermission::Read(const IPC::Message* m, 103 PickleIterator* iter) { 104 return true; 105 } 106 107 void SettingsOverrideAPIPermission::Log(std::string* log) const {} 108 109 } // namespace extensions 110