Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(534)

Side by Side Diff: chrome/common/extensions/manifest_handlers/settings_overrides_handler.cc

Issue 309533007: Refactor PermissionsData pt1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Latest master Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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(
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698