blob: 5e69972d98e23ecfe7af1aa756516c73d9ee877f [file]
// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef EXTENSIONS_COMMON_INSTALL_WARNING_H_
#define EXTENSIONS_COMMON_INSTALL_WARNING_H_
#include <ostream>
#include <string>
#include <string_view>
namespace extensions {
// A struct to describe a non-fatal issue discovered in the installation of an
// extension.
struct InstallWarning {
explicit InstallWarning(std::string_view message);
InstallWarning(std::string_view message, std::string_view key);
InstallWarning(std::string_view message,
std::string_view key,
std::string_view specific);
InstallWarning(const InstallWarning&) = delete;
InstallWarning(InstallWarning&& other);
InstallWarning& operator=(InstallWarning&& other);
~InstallWarning();
bool operator==(const InstallWarning& other) const {
// We don't have to look at `key` or `specific` here, because they are each
// used in the the message itself.
// For example, a full message would be "Permission 'foo' is unknown or URL
// pattern is malformed." `key` here is "permissions", and `specific` is
// "foo", but these are redundant with the message.
return message == other.message;
}
// The warning's message (human-friendly).
std::string message;
// Optional - for specifying the incorrect key in the manifest (e.g.,
// "permissions").
std::string key;
// Optional - for specifying the incorrect portion of a key in the manifest
// (e.g., an unrecognized permission "foo" in "permissions").
std::string specific;
};
// Let gtest print InstallWarnings.
void PrintTo(const InstallWarning&, ::std::ostream* os);
} // namespace extensions
#endif // EXTENSIONS_COMMON_INSTALL_WARNING_H_