Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/common/extensions/manifest_handlers/settings_overrides_handler. h" | 5 #include "chrome/common/extensions/manifest_handlers/settings_overrides_handler. h" |
| 6 | 6 |
| 7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
| 8 #include "base/strings/string_util.h" | 8 #include "base/strings/string_util.h" |
| 9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
| 10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
| 11 #include "base/values.h" | 11 #include "base/values.h" |
| 12 #include "extensions/common/error_utils.h" | 12 #include "extensions/common/error_utils.h" |
| 13 #include "extensions/common/extension_set.h" | 13 #include "extensions/common/extension_set.h" |
| 14 #include "extensions/common/feature_switch.h" | 14 #include "extensions/common/feature_switch.h" |
| 15 #include "extensions/common/manifest_constants.h" | 15 #include "extensions/common/manifest_constants.h" |
| 16 #include "extensions/common/manifest_handlers/permissions_parser.h" | |
| 16 #include "extensions/common/permissions/api_permission_set.h" | 17 #include "extensions/common/permissions/api_permission_set.h" |
| 17 #include "extensions/common/permissions/manifest_permission.h" | 18 #include "extensions/common/permissions/manifest_permission.h" |
| 18 #include "extensions/common/permissions/permissions_data.h" | |
| 19 #include "extensions/common/permissions/permissions_info.h" | 19 #include "extensions/common/permissions/permissions_info.h" |
| 20 #include "extensions/common/permissions/settings_override_permission.h" | 20 #include "extensions/common/permissions/settings_override_permission.h" |
| 21 #include "grit/generated_resources.h" | 21 #include "grit/generated_resources.h" |
| 22 #include "ipc/ipc_message.h" | 22 #include "ipc/ipc_message.h" |
| 23 #include "ipc/ipc_message_utils.h" | 23 #include "ipc/ipc_message_utils.h" |
| 24 #include "ui/base/l10n/l10n_util.h" | 24 #include "ui/base/l10n/l10n_util.h" |
| 25 #include "url/gurl.h" | 25 #include "url/gurl.h" |
| 26 | 26 |
| 27 using extensions::api::manifest_types::ChromeSettingsOverrides; | 27 using extensions::api::manifest_types::ChromeSettingsOverrides; |
| 28 | 28 |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 273 if (!info->bookmarks_ui && !info->homepage && | 273 if (!info->bookmarks_ui && !info->homepage && |
| 274 !info->search_engine && info->startup_pages.empty()) { | 274 !info->search_engine && info->startup_pages.empty()) { |
| 275 *error = ErrorUtils::FormatErrorMessageUTF16( | 275 *error = ErrorUtils::FormatErrorMessageUTF16( |
| 276 manifest_errors::kInvalidEmptyDictionary, | 276 manifest_errors::kInvalidEmptyDictionary, |
| 277 manifest_keys::kSettingsOverride); | 277 manifest_keys::kSettingsOverride); |
| 278 return false; | 278 return false; |
| 279 } | 279 } |
| 280 info->manifest_permission.reset(new ManifestPermissionImpl( | 280 info->manifest_permission.reset(new ManifestPermissionImpl( |
| 281 SettingsOverrides::RemovesBookmarkButton(*info))); | 281 SettingsOverrides::RemovesBookmarkButton(*info))); |
| 282 | 282 |
| 283 APIPermissionSet* permission_set = | |
| 284 PermissionsData::GetInitialAPIPermissions(extension); | |
| 285 DCHECK(permission_set); | |
| 286 if (info->search_engine) { | 283 if (info->search_engine) { |
| 287 permission_set->insert(new SettingsOverrideAPIPermission( | 284 PermissionsParser::AddAPIPermission( |
|
not at google - send to devlin
2014/06/02 23:20:06
here
Devlin
2014/06/03 15:28:21
This is PermissionsParser, not PermissionsData.
| |
| 288 PermissionsInfo::GetInstance()->GetByID(APIPermission::kSearchProvider), | 285 extension, |
| 289 RemoveWwwPrefix(CreateManifestURL(info->search_engine->search_url)-> | 286 new SettingsOverrideAPIPermission( |
| 290 GetOrigin().host()))); | 287 PermissionsInfo::GetInstance()->GetByID( |
| 288 APIPermission::kSearchProvider), | |
| 289 RemoveWwwPrefix(CreateManifestURL(info->search_engine->search_url) | |
| 290 ->GetOrigin() | |
| 291 .host()))); | |
| 291 } | 292 } |
| 292 if (!info->startup_pages.empty()) { | 293 if (!info->startup_pages.empty()) { |
| 293 permission_set->insert(new SettingsOverrideAPIPermission( | 294 PermissionsParser::AddAPIPermission( |
| 294 PermissionsInfo::GetInstance()->GetByID(APIPermission::kStartupPages), | 295 extension, |
| 295 // We only support one startup page even though the type of the manifest | 296 new SettingsOverrideAPIPermission( |
| 296 // property is a list, only the first one is used. | 297 PermissionsInfo::GetInstance()->GetByID( |
| 297 RemoveWwwPrefix(info->startup_pages[0].GetContent()))); | 298 APIPermission::kStartupPages), |
| 299 // We only support one startup page even though the type of the | |
| 300 // manifest | |
| 301 // property is a list, only the first one is used. | |
| 302 RemoveWwwPrefix(info->startup_pages[0].GetContent()))); | |
| 298 } | 303 } |
| 299 if (info->homepage) { | 304 if (info->homepage) { |
| 300 permission_set->insert(new SettingsOverrideAPIPermission( | 305 PermissionsParser::AddAPIPermission( |
| 301 PermissionsInfo::GetInstance()->GetByID(APIPermission::kHomepage), | 306 extension, |
| 302 RemoveWwwPrefix(info->homepage.get()->GetContent()))); | 307 new SettingsOverrideAPIPermission( |
| 308 PermissionsInfo::GetInstance()->GetByID(APIPermission::kHomepage), | |
| 309 RemoveWwwPrefix(info->homepage.get()->GetContent()))); | |
| 303 } | 310 } |
| 304 extension->SetManifestData(manifest_keys::kSettingsOverride, | 311 extension->SetManifestData(manifest_keys::kSettingsOverride, |
| 305 info.release()); | 312 info.release()); |
| 306 return true; | 313 return true; |
| 307 } | 314 } |
| 308 | 315 |
| 309 bool SettingsOverridesHandler::Validate( | 316 bool SettingsOverridesHandler::Validate( |
| 310 const Extension* extension, | 317 const Extension* extension, |
| 311 std::string* error, | 318 std::string* error, |
| 312 std::vector<InstallWarning>* warnings) const { | 319 std::vector<InstallWarning>* warnings) const { |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 341 const SettingsOverrides* data = SettingsOverrides::Get(extension); | 348 const SettingsOverrides* data = SettingsOverrides::Get(extension); |
| 342 if (data) | 349 if (data) |
| 343 return data->manifest_permission->Clone(); | 350 return data->manifest_permission->Clone(); |
| 344 return NULL; | 351 return NULL; |
| 345 } | 352 } |
| 346 const std::vector<std::string> SettingsOverridesHandler::Keys() const { | 353 const std::vector<std::string> SettingsOverridesHandler::Keys() const { |
| 347 return SingleKey(manifest_keys::kSettingsOverride); | 354 return SingleKey(manifest_keys::kSettingsOverride); |
| 348 } | 355 } |
| 349 | 356 |
| 350 } // namespace extensions | 357 } // namespace extensions |
| OLD | NEW |