| 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/ui_overrides_handler.h" | 5 #include "chrome/common/extensions/manifest_handlers/ui_overrides_handler.h" |
| 6 | 6 |
| 7 #include "base/memory/scoped_ptr.h" | 7 #include <memory> |
| 8 |
| 8 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
| 9 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
| 10 #include "base/values.h" | 11 #include "base/values.h" |
| 11 #include "chrome/grit/generated_resources.h" | 12 #include "chrome/grit/generated_resources.h" |
| 12 #include "extensions/common/error_utils.h" | 13 #include "extensions/common/error_utils.h" |
| 13 #include "extensions/common/feature_switch.h" | 14 #include "extensions/common/feature_switch.h" |
| 14 #include "extensions/common/manifest_constants.h" | 15 #include "extensions/common/manifest_constants.h" |
| 15 #include "extensions/common/permissions/manifest_permission.h" | 16 #include "extensions/common/permissions/manifest_permission.h" |
| 16 #include "extensions/common/permissions/permissions_data.h" | 17 #include "extensions/common/permissions/permissions_data.h" |
| 17 #include "extensions/common/permissions/permissions_info.h" | 18 #include "extensions/common/permissions/permissions_info.h" |
| (...skipping 24 matching lines...) Expand all Loading... |
| 42 // IDS_EXTENSION_PROMPT_WARNING_OVERRIDE_BOOKMARKS_UI | 43 // IDS_EXTENSION_PROMPT_WARNING_OVERRIDE_BOOKMARKS_UI |
| 43 permissions.insert(APIPermission::kOverrideBookmarksUI); | 44 permissions.insert(APIPermission::kOverrideBookmarksUI); |
| 44 } | 45 } |
| 45 return permissions; | 46 return permissions; |
| 46 } | 47 } |
| 47 | 48 |
| 48 bool FromValue(const base::Value* value) override { | 49 bool FromValue(const base::Value* value) override { |
| 49 return value && value->GetAsBoolean(&override_bookmarks_ui_permission_); | 50 return value && value->GetAsBoolean(&override_bookmarks_ui_permission_); |
| 50 } | 51 } |
| 51 | 52 |
| 52 scoped_ptr<base::Value> ToValue() const override { | 53 std::unique_ptr<base::Value> ToValue() const override { |
| 53 return scoped_ptr<base::Value>( | 54 return std::unique_ptr<base::Value>( |
| 54 new base::FundamentalValue(override_bookmarks_ui_permission_)); | 55 new base::FundamentalValue(override_bookmarks_ui_permission_)); |
| 55 } | 56 } |
| 56 | 57 |
| 57 ManifestPermission* Diff(const ManifestPermission* rhs) const override { | 58 ManifestPermission* Diff(const ManifestPermission* rhs) const override { |
| 58 const ManifestPermissionImpl* other = | 59 const ManifestPermissionImpl* other = |
| 59 static_cast<const ManifestPermissionImpl*>(rhs); | 60 static_cast<const ManifestPermissionImpl*>(rhs); |
| 60 | 61 |
| 61 return scoped_ptr<ManifestPermissionImpl>(new ManifestPermissionImpl( | 62 return std::unique_ptr<ManifestPermissionImpl>( |
| 62 override_bookmarks_ui_permission_ && | 63 new ManifestPermissionImpl( |
| 63 !other->override_bookmarks_ui_permission_)).release(); | 64 override_bookmarks_ui_permission_ && |
| 65 !other->override_bookmarks_ui_permission_)) |
| 66 .release(); |
| 64 } | 67 } |
| 65 | 68 |
| 66 ManifestPermission* Union(const ManifestPermission* rhs) const override { | 69 ManifestPermission* Union(const ManifestPermission* rhs) const override { |
| 67 const ManifestPermissionImpl* other = | 70 const ManifestPermissionImpl* other = |
| 68 static_cast<const ManifestPermissionImpl*>(rhs); | 71 static_cast<const ManifestPermissionImpl*>(rhs); |
| 69 | 72 |
| 70 return scoped_ptr<ManifestPermissionImpl>(new ManifestPermissionImpl( | 73 return std::unique_ptr<ManifestPermissionImpl>( |
| 71 override_bookmarks_ui_permission_ || | 74 new ManifestPermissionImpl( |
| 72 other->override_bookmarks_ui_permission_)).release(); | 75 override_bookmarks_ui_permission_ || |
| 76 other->override_bookmarks_ui_permission_)) |
| 77 .release(); |
| 73 } | 78 } |
| 74 | 79 |
| 75 ManifestPermission* Intersect(const ManifestPermission* rhs) const override { | 80 ManifestPermission* Intersect(const ManifestPermission* rhs) const override { |
| 76 const ManifestPermissionImpl* other = | 81 const ManifestPermissionImpl* other = |
| 77 static_cast<const ManifestPermissionImpl*>(rhs); | 82 static_cast<const ManifestPermissionImpl*>(rhs); |
| 78 | 83 |
| 79 return scoped_ptr<ManifestPermissionImpl>(new ManifestPermissionImpl( | 84 return std::unique_ptr<ManifestPermissionImpl>( |
| 80 override_bookmarks_ui_permission_ && | 85 new ManifestPermissionImpl( |
| 81 other->override_bookmarks_ui_permission_)).release(); | 86 override_bookmarks_ui_permission_ && |
| 87 other->override_bookmarks_ui_permission_)) |
| 88 .release(); |
| 82 } | 89 } |
| 83 | 90 |
| 84 private: | 91 private: |
| 85 bool override_bookmarks_ui_permission_; | 92 bool override_bookmarks_ui_permission_; |
| 86 }; | 93 }; |
| 87 | 94 |
| 88 UIOverrides::UIOverrides() {} | 95 UIOverrides::UIOverrides() {} |
| 89 | 96 |
| 90 UIOverrides::~UIOverrides() {} | 97 UIOverrides::~UIOverrides() {} |
| 91 | 98 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 115 *ui_overrides->bookmarks_ui->remove_bookmark_open_pages_shortcut; | 122 *ui_overrides->bookmarks_ui->remove_bookmark_open_pages_shortcut; |
| 116 } | 123 } |
| 117 | 124 |
| 118 UIOverridesHandler::UIOverridesHandler() {} | 125 UIOverridesHandler::UIOverridesHandler() {} |
| 119 | 126 |
| 120 UIOverridesHandler::~UIOverridesHandler() {} | 127 UIOverridesHandler::~UIOverridesHandler() {} |
| 121 | 128 |
| 122 bool UIOverridesHandler::Parse(Extension* extension, base::string16* error) { | 129 bool UIOverridesHandler::Parse(Extension* extension, base::string16* error) { |
| 123 const base::Value* dict = NULL; | 130 const base::Value* dict = NULL; |
| 124 CHECK(extension->manifest()->Get(manifest_keys::kUIOverride, &dict)); | 131 CHECK(extension->manifest()->Get(manifest_keys::kUIOverride, &dict)); |
| 125 scoped_ptr<ChromeUIOverrides> overrides( | 132 std::unique_ptr<ChromeUIOverrides> overrides( |
| 126 ChromeUIOverrides::FromValue(*dict, error)); | 133 ChromeUIOverrides::FromValue(*dict, error)); |
| 127 if (!overrides) | 134 if (!overrides) |
| 128 return false; | 135 return false; |
| 129 | 136 |
| 130 scoped_ptr<UIOverrides> info(new UIOverrides); | 137 std::unique_ptr<UIOverrides> info(new UIOverrides); |
| 131 info->bookmarks_ui.swap(overrides->bookmarks_ui); | 138 info->bookmarks_ui.swap(overrides->bookmarks_ui); |
| 132 if (!info->bookmarks_ui) { | 139 if (!info->bookmarks_ui) { |
| 133 *error = ErrorUtils::FormatErrorMessageUTF16( | 140 *error = ErrorUtils::FormatErrorMessageUTF16( |
| 134 manifest_errors::kInvalidEmptyDictionary, | 141 manifest_errors::kInvalidEmptyDictionary, |
| 135 manifest_keys::kUIOverride); | 142 manifest_keys::kUIOverride); |
| 136 return false; | 143 return false; |
| 137 } | 144 } |
| 138 info->manifest_permission.reset(new ManifestPermissionImpl( | 145 info->manifest_permission.reset(new ManifestPermissionImpl( |
| 139 info->bookmarks_ui.get() != NULL)); | 146 info->bookmarks_ui.get() != NULL)); |
| 140 extension->SetManifestData(manifest_keys::kUIOverride, info.release()); | 147 extension->SetManifestData(manifest_keys::kUIOverride, info.release()); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 168 const UIOverrides* data = UIOverrides::Get(extension); | 175 const UIOverrides* data = UIOverrides::Get(extension); |
| 169 if (data) | 176 if (data) |
| 170 return data->manifest_permission->Clone(); | 177 return data->manifest_permission->Clone(); |
| 171 return NULL; | 178 return NULL; |
| 172 } | 179 } |
| 173 const std::vector<std::string> UIOverridesHandler::Keys() const { | 180 const std::vector<std::string> UIOverridesHandler::Keys() const { |
| 174 return SingleKey(manifest_keys::kUIOverride); | 181 return SingleKey(manifest_keys::kUIOverride); |
| 175 } | 182 } |
| 176 | 183 |
| 177 } // namespace extensions | 184 } // namespace extensions |
| OLD | NEW |