X Tutup
Skip to content

Commit fd8eb3d

Browse files
authored
fix: remove extension warning that do not have any impact (electron#29695)
1 parent 4d89174 commit fd8eb3d

File tree

1 file changed

+29
-3
lines changed

1 file changed

+29
-3
lines changed

shell/browser/extensions/electron_extension_loader.cc

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@
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

2628
namespace 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

Comments
 (0)
X Tutup