Chromium Code Reviews| Index: chrome/common/extensions/api/file_browser_handlers/file_browser_handler.cc |
| diff --git a/chrome/common/extensions/api/file_browser_handlers/file_browser_handler.cc b/chrome/common/extensions/api/file_browser_handlers/file_browser_handler.cc |
| index 92124d282f94c0934ddf452f891eb0bbd32a7f37..f722b1f7acdb7af8933488c30be8b070c7042c4e 100644 |
| --- a/chrome/common/extensions/api/file_browser_handlers/file_browser_handler.cc |
| +++ b/chrome/common/extensions/api/file_browser_handlers/file_browser_handler.cc |
| @@ -13,6 +13,8 @@ |
| #include "extensions/common/error_utils.h" |
| #include "extensions/common/manifest.h" |
| #include "extensions/common/manifest_constants.h" |
| +#include "extensions/common/manifest_handlers/permissions_parser.h" |
| +#include "extensions/common/permissions/api_permission.h" |
| #include "extensions/common/url_pattern.h" |
| #include "url/url_constants.h" |
| @@ -115,11 +117,12 @@ bool FileBrowserHandler::HasCreateAccessPermission() const { |
| // static |
| FileBrowserHandler::List* |
| FileBrowserHandler::GetHandlers(const extensions::Extension* extension) { |
| - FileBrowserHandlerInfo* info = static_cast<FileBrowserHandlerInfo*>( |
| + FileBrowserHandlerInfo* const info = static_cast<FileBrowserHandlerInfo*>( |
| extension->GetManifestData(keys::kFileBrowserHandlers)); |
| - if (info) |
| - return &info->file_browser_handlers; |
| - return NULL; |
| + if (!info) |
| + return nullptr; |
| + |
| + return &info->file_browser_handlers; |
| } |
| FileBrowserHandlerParser::FileBrowserHandlerParser() { |
| @@ -268,12 +271,19 @@ bool LoadFileBrowserHandlers( |
| bool FileBrowserHandlerParser::Parse(extensions::Extension* extension, |
| base::string16* error) { |
| + // If the permission is missing, then skip parsing the list of handlers. |
|
Yoyo Zhou
2015/03/26 01:31:32
I think it would be helpful to add an install warn
mtomasz
2015/03/26 01:35:32
Agreed. Let me do it in a separate CL, as this one
|
| + if (!extensions::PermissionsParser::HasAPIPermission( |
| + extension, extensions::APIPermission::ID::kFileBrowserHandler)) { |
| + return true; |
| + } |
| + |
| const base::ListValue* file_browser_handlers_value = NULL; |
| if (!extension->manifest()->GetList(keys::kFileBrowserHandlers, |
| &file_browser_handlers_value)) { |
| *error = base::ASCIIToUTF16(errors::kInvalidFileBrowserHandler); |
| return false; |
| } |
| + |
| scoped_ptr<FileBrowserHandlerInfo> info(new FileBrowserHandlerInfo); |
| if (!LoadFileBrowserHandlers(extension->id(), |
| file_browser_handlers_value, |