blob: a7de984a3b3f69799773c6e749c04222d5dd61b2 [file] [log] [blame]
[email protected]b20729fe2012-01-25 21:42:521// Copyright (c) 2012 The Chromium Authors. All rights reserved.
[email protected]7c1490da2011-10-11 18:53:252// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
hanxic7e55202014-08-28 14:13:215#ifndef EXTENSIONS_BROWSER_WARNING_SET_H_
6#define EXTENSIONS_BROWSER_WARNING_SET_H_
[email protected]7c1490da2011-10-11 18:53:257
8#include <set>
9#include <string>
[email protected]b4d3771d2012-11-14 14:44:1010#include <vector>
[email protected]7c1490da2011-10-11 18:53:2511
Karan Bhatia82130052018-07-12 21:41:4712#include "extensions/common/extension_id.h"
[email protected]a6483d22013-07-03 22:11:0013#include "url/gurl.h"
[email protected]7c1490da2011-10-11 18:53:2514
[email protected]dc6cb142013-08-10 18:14:5215namespace base {
16class FilePath;
17}
18
[email protected]b4d3771d2012-11-14 14:44:1019namespace extensions {
20
[email protected]289c44b2013-12-17 03:26:5721class ExtensionSet;
22
hanxic7e55202014-08-28 14:13:2123// This class is used by the WarningService to represent warnings if extensions
24// misbehave. Note that the WarningService deals only with specific warnings
25// that should trigger a badge on the Chrome menu button.
26class Warning {
[email protected]7c1490da2011-10-11 18:53:2527 public:
28 enum WarningType {
29 // Don't use this, it is only intended for the default constructor and
30 // does not have localized warning messages for the UI.
31 kInvalid = 0,
32 // An extension caused excessive network delays.
33 kNetworkDelay,
[email protected]fd50e7b2011-11-03 09:20:2534 // The extension repeatedly flushed WebKit's in-memory cache, which slows
35 // down the overall performance.
36 kRepeatedCacheFlushes,
[email protected]dc6cb142013-08-10 18:14:5237 // The extension failed to determine the filename of a download because
38 // another extension with higher precedence determined a different filename.
39 kDownloadFilenameConflict,
[email protected]e9d7496e2014-04-18 01:25:4640 kReloadTooFrequent,
Karan Bhatia82130052018-07-12 21:41:4741 // The declarative net request ruleset for the extension failed to load.
42 kRulesetFailedToLoad,
[email protected]7c1490da2011-10-11 18:53:2543 kMaxWarningType
44 };
45
hanxic7e55202014-08-28 14:13:2146 // We allow copy&assign for passing containers of Warnings between threads.
47 Warning(const Warning& other);
48 ~Warning();
49 Warning& operator=(const Warning& other);
[email protected]7c1490da2011-10-11 18:53:2550
[email protected]b4d3771d2012-11-14 14:44:1051 // Factory methods for various warning types.
hanxic7e55202014-08-28 14:13:2152 static Warning CreateNetworkDelayWarning(
[email protected]b4d3771d2012-11-14 14:44:1053 const std::string& extension_id);
hanxic7e55202014-08-28 14:13:2154 static Warning CreateRepeatedCacheFlushesWarning(
[email protected]b4d3771d2012-11-14 14:44:1055 const std::string& extension_id);
hanxic7e55202014-08-28 14:13:2156 static Warning CreateDownloadFilenameConflictWarning(
[email protected]dc6cb142013-08-10 18:14:5257 const std::string& losing_extension_id,
58 const std::string& winning_extension_id,
59 const base::FilePath& losing_filename,
60 const base::FilePath& winning_filename);
hanxic7e55202014-08-28 14:13:2161 static Warning CreateReloadTooFrequentWarning(
[email protected]e9d7496e2014-04-18 01:25:4662 const std::string& extension_id);
Karan Bhatia82130052018-07-12 21:41:4763 static Warning CreateRulesetFailedToLoadWarning(
64 const ExtensionId& extension_id);
[email protected]7c1490da2011-10-11 18:53:2565
Istiaque Ahmed8680d312019-02-08 21:34:0166 // Compare Warnings based on the tuple of (extension_id, type).
67 // The message associated with Warnings is purely informational
68 // and does not contribute to distinguishing extensions.
69 bool operator<(const Warning& other) const;
70
[email protected]b4d3771d2012-11-14 14:44:1071 // Returns the specific warning type.
72 WarningType warning_type() const { return type_; }
[email protected]a9632c9f2011-10-26 16:04:1673
[email protected]b4d3771d2012-11-14 14:44:1074 // Returns the id of the extension for which this warning is valid.
75 const std::string& extension_id() const { return extension_id_; }
76
77 // Returns a localized warning message.
78 std::string GetLocalizedMessage(const ExtensionSet* extensions) const;
[email protected]7c1490da2011-10-11 18:53:2579
80 private:
[email protected]b4d3771d2012-11-14 14:44:1081 // Constructs a warning of type |type| for extension |extension_id|. This
82 // could indicate for example the fact that an extension conflicted with
83 // others. The |message_id| refers to an IDS_ string ID. The
84 // |message_parameters| are filled into the message template.
hanxic7e55202014-08-28 14:13:2185 Warning(WarningType type,
[email protected]b4d3771d2012-11-14 14:44:1086 const std::string& extension_id,
87 int message_id,
88 const std::vector<std::string>& message_parameters);
[email protected]7c1490da2011-10-11 18:53:2589
[email protected]b4d3771d2012-11-14 14:44:1090 WarningType type_;
91 std::string extension_id_;
92 // IDS_* resource ID.
93 int message_id_;
94 // Parameters to be filled into the string identified by |message_id_|.
95 std::vector<std::string> message_parameters_;
[email protected]7c1490da2011-10-11 18:53:2596};
97
hanxic7e55202014-08-28 14:13:2198typedef std::set<Warning> WarningSet;
[email protected]b4d3771d2012-11-14 14:44:1099
100} // namespace extensions
101
hanxic7e55202014-08-28 14:13:21102#endif // EXTENSIONS_BROWSER_WARNING_SET_H_