| Index: extensions/common/manifest_handlers/file_handler_info.cc
|
| diff --git a/extensions/common/manifest_handlers/file_handler_info.cc b/extensions/common/manifest_handlers/file_handler_info.cc
|
| index c95a5e4687410c5c562f162ef80f2b7148ea36dd..bb6316ee7daf8a4856fe3b8e530c37976489e5cd 100644
|
| --- a/extensions/common/manifest_handlers/file_handler_info.cc
|
| +++ b/extensions/common/manifest_handlers/file_handler_info.cc
|
| @@ -20,12 +20,31 @@ namespace extensions {
|
| namespace keys = manifest_keys;
|
| namespace errors = manifest_errors;
|
|
|
| +namespace file_handler_verbs {
|
| +
|
| +const char kOpenWith[] = "OPEN_WITH";
|
| +const char kAddTo[] = "ADD_TO";
|
| +const char kPackWith[] = "PACK_WITH";
|
| +
|
| +} // namespace file_handler_verbs
|
| +
|
| namespace {
|
| +
|
| const int kMaxTypeAndExtensionHandlers = 200;
|
| const char kNotRecognized[] = "'%s' is not a recognized file handler property.";
|
| +
|
| +bool IsSupportedVerb(const std::string& verb) {
|
| + std::set<std::string> supported_verbs;
|
| + supported_verbs.emplace(file_handler_verbs::kOpenWith);
|
| + supported_verbs.emplace(file_handler_verbs::kAddTo);
|
| + supported_verbs.emplace(file_handler_verbs::kPackWith);
|
| + return supported_verbs.find(verb) != supported_verbs.end();
|
| }
|
|
|
| -FileHandlerInfo::FileHandlerInfo() : include_directories(false) {}
|
| +} // namespace
|
| +
|
| +FileHandlerInfo::FileHandlerInfo()
|
| + : include_directories(false), verb(file_handler_verbs::kOpenWith) {}
|
| FileHandlerInfo::FileHandlerInfo(const FileHandlerInfo& other) = default;
|
| FileHandlerInfo::~FileHandlerInfo() {}
|
|
|
| @@ -81,6 +100,15 @@ bool LoadFileHandler(const std::string& handler_id,
|
| return false;
|
| }
|
|
|
| + handler.verb = file_handler_verbs::kOpenWith;
|
| + if (handler_info.HasKey(keys::kFileHandlerVerb) &&
|
| + !handler_info.GetString(keys::kFileHandlerVerb, &handler.verb) &&
|
| + !IsSupportedVerb(handler.verb)) {
|
| + *error = ErrorUtils::FormatErrorMessageUTF16(
|
| + errors::kInvalidFileHandlerVerb, handler_id);
|
| + return false;
|
| + }
|
| +
|
| if ((!mime_types || mime_types->empty()) &&
|
| (!file_extensions || file_extensions->empty()) &&
|
| !handler.include_directories) {
|
|
|