2121#include " extensions/browser/extension_prefs.h"
2222#include " extensions/browser/extension_registry.h"
2323#include " extensions/browser/pref_names.h"
24+ #include " extensions/common/error_utils.h"
2425#include " extensions/common/file_util.h"
26+ #include " extensions/common/manifest_constants.h"
2527
2628namespace extensions {
2729
@@ -41,6 +43,15 @@ std::pair<scoped_refptr<const Extension>, std::string> LoadUnpacked(
4143 return std::make_pair (nullptr , err);
4244 }
4345
46+ // remove _metadata folder. Otherwise, the following warning will be thrown
47+ // Cannot load extension with file or directory name _metadata.
48+ // Filenames starting with "_" are reserved for use by the system.
49+ // see: https://bugs.chromium.org/p/chromium/issues/detail?id=377278
50+ base::FilePath metadata_dir = extension_dir.Append (kMetadataFolder );
51+ if (base::DirectoryExists (metadata_dir)) {
52+ base::DeletePathRecursively (metadata_dir);
53+ }
54+
4455 std::string load_error;
4556 scoped_refptr<Extension> extension = file_util::LoadExtension (
4657 extension_dir, extensions::mojom::ManifestLocation::kCommandLine ,
@@ -55,10 +66,25 @@ std::pair<scoped_refptr<const Extension>, std::string> LoadUnpacked(
5566 std::string warnings;
5667 // Log warnings.
5768 if (!extension->install_warnings ().empty ()) {
58- warnings += " Warnings loading extension at " +
59- base::UTF16ToUTF8 (extension_dir.LossyDisplayName ()) + " :\n " ;
69+ std::string warning_prefix =
70+ " Warnings loading extension at " +
71+ base::UTF16ToUTF8 (extension_dir.LossyDisplayName ());
72+
6073 for (const auto & warning : extension->install_warnings ()) {
61- warnings += " " + warning.message + " \n " ;
74+ std::string unrecognized_manifest_error = ErrorUtils::FormatErrorMessage (
75+ manifest_errors::kUnrecognizedManifestKey , warning.key );
76+
77+ if (warning.message == unrecognized_manifest_error) {
78+ // filter kUnrecognizedManifestKey error. This error does not have any
79+ // impact e.g: Unrecognized manifest key 'minimum_chrome_version' etc.
80+ LOG (WARNING) << warning_prefix << " : " << warning.message ;
81+ } else {
82+ warnings += " " + warning.message + " \n " ;
83+ }
84+ }
85+
86+ if (warnings != " " ) {
87+ warnings = warning_prefix + " :\n " + warnings;
6288 }
6389 }
6490
0 commit comments