| 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 f722b1f7acdb7af8933488c30be8b070c7042c4e..260742fe07f1d331c8e072e4e926acf596677c44 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
|
| @@ -11,6 +11,7 @@
|
| #include "base/values.h"
|
| #include "chrome/common/extensions/extension_constants.h"
|
| #include "extensions/common/error_utils.h"
|
| +#include "extensions/common/install_warning.h"
|
| #include "extensions/common/manifest.h"
|
| #include "extensions/common/manifest_constants.h"
|
| #include "extensions/common/manifest_handlers/permissions_parser.h"
|
| @@ -131,6 +132,7 @@ FileBrowserHandlerParser::FileBrowserHandlerParser() {
|
| FileBrowserHandlerParser::~FileBrowserHandlerParser() {
|
| }
|
|
|
| +#if defined(OS_CHROMEOS)
|
| namespace {
|
|
|
| FileBrowserHandler* LoadFileBrowserHandler(
|
| @@ -268,32 +270,43 @@ bool LoadFileBrowserHandlers(
|
| }
|
|
|
| } // namespace
|
| +#endif
|
|
|
| bool FileBrowserHandlerParser::Parse(extensions::Extension* extension,
|
| base::string16* error) {
|
| - // If the permission is missing, then skip parsing the list of handlers.
|
| +#if !defined(OS_CHROMEOS)
|
| + return true;
|
| +#else
|
| + const base::Value* file_browser_handlers_value = nullptr;
|
| + if (!extension->manifest()->Get(keys::kFileBrowserHandlers,
|
| + &file_browser_handlers_value)) {
|
| + return true;
|
| + }
|
| +
|
| if (!extensions::PermissionsParser::HasAPIPermission(
|
| extension, extensions::APIPermission::ID::kFileBrowserHandler)) {
|
| + extension->AddInstallWarning(extensions::InstallWarning(
|
| + errors::kInvalidFileBrowserHandlerMissingPermission));
|
| return true;
|
| }
|
|
|
| - const base::ListValue* file_browser_handlers_value = NULL;
|
| - if (!extension->manifest()->GetList(keys::kFileBrowserHandlers,
|
| - &file_browser_handlers_value)) {
|
| + const base::ListValue* file_browser_handlers_list_value = nullptr;
|
| + if (!file_browser_handlers_value->GetAsList(
|
| + &file_browser_handlers_list_value)) {
|
| *error = base::ASCIIToUTF16(errors::kInvalidFileBrowserHandler);
|
| return false;
|
| }
|
|
|
| scoped_ptr<FileBrowserHandlerInfo> info(new FileBrowserHandlerInfo);
|
| if (!LoadFileBrowserHandlers(extension->id(),
|
| - file_browser_handlers_value,
|
| - &info->file_browser_handlers,
|
| - error)) {
|
| + file_browser_handlers_list_value,
|
| + &info->file_browser_handlers, error)) {
|
| return false; // Failed to parse file browser actions definition.
|
| }
|
|
|
| extension->SetManifestData(keys::kFileBrowserHandlers, info.release());
|
| return true;
|
| +#endif
|
| }
|
|
|
| const std::vector<std::string> FileBrowserHandlerParser::Keys() const {
|
|
|