Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1807)

Side by Side Diff: extensions/browser/warning_set.cc

Issue 503033002: Move ExtensionWarningService and ExtensionsWarningSet to extensions. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@3_web_view_internal
Patch Set: rebase Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « extensions/browser/warning_set.h ('k') | extensions/common/extensions_client.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/extension_warning_set.h" 5 #include "extensions/browser/warning_set.h"
6 6
7 #include "base/files/file_path.h" 7 #include "base/files/file_path.h"
8 #include "base/strings/string_util.h" 8 #include "base/strings/string_util.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "chrome/browser/chrome_notification_types.h"
11 #include "chrome/grit/chromium_strings.h"
12 #include "chrome/grit/generated_resources.h"
13 #include "content/public/browser/browser_thread.h" 10 #include "content/public/browser/browser_thread.h"
14 #include "extensions/common/extension.h" 11 #include "extensions/common/extension.h"
15 #include "extensions/common/extension_set.h" 12 #include "extensions/common/extension_set.h"
13 #include "extensions/common/extensions_client.h"
14 #include "extensions/strings/grit/extensions_strings.h"
16 #include "net/base/escape.h" 15 #include "net/base/escape.h"
17 #include "ui/base/l10n/l10n_util.h" 16 #include "ui/base/l10n/l10n_util.h"
18 17
19 using content::BrowserThread; 18 using content::BrowserThread;
20 19
21 namespace { 20 namespace {
22 // Prefix for message parameters indicating that the parameter needs to 21 // Prefix for message parameters indicating that the parameter needs to
23 // be translated from an extension id to the extension name. 22 // be translated from an extension id to the extension name.
24 const char kTranslate[] = "TO_TRANSLATE:"; 23 const char kTranslate[] = "TO_TRANSLATE:";
25 const size_t kMaxNumberOfParameters = 4; 24 const size_t kMaxNumberOfParameters = 4;
26 } 25 }
27 26
28 namespace extensions { 27 namespace extensions {
29 28
30 // 29 //
31 // ExtensionWarning 30 // Warning
32 // 31 //
33 32
34 ExtensionWarning::ExtensionWarning( 33 Warning::Warning(
35 WarningType type, 34 WarningType type,
36 const std::string& extension_id, 35 const std::string& extension_id,
37 int message_id, 36 int message_id,
38 const std::vector<std::string>& message_parameters) 37 const std::vector<std::string>& message_parameters)
39 : type_(type), 38 : type_(type),
40 extension_id_(extension_id), 39 extension_id_(extension_id),
41 message_id_(message_id), 40 message_id_(message_id),
42 message_parameters_(message_parameters) { 41 message_parameters_(message_parameters) {
43 // These are invalid here because they do not have corresponding warning 42 // These are invalid here because they do not have corresponding warning
44 // messages in the UI. 43 // messages in the UI.
45 CHECK_NE(type, kInvalid); 44 CHECK_NE(type, kInvalid);
46 CHECK_NE(type, kMaxWarningType); 45 CHECK_NE(type, kMaxWarningType);
47 CHECK_LE(message_parameters.size(), kMaxNumberOfParameters); 46 CHECK_LE(message_parameters.size(), kMaxNumberOfParameters);
48 } 47 }
49 48
50 ExtensionWarning::ExtensionWarning(const ExtensionWarning& other) 49 Warning::Warning(const Warning& other)
51 : type_(other.type_), 50 : type_(other.type_),
52 extension_id_(other.extension_id_), 51 extension_id_(other.extension_id_),
53 message_id_(other.message_id_), 52 message_id_(other.message_id_),
54 message_parameters_(other.message_parameters_) {} 53 message_parameters_(other.message_parameters_) {}
55 54
56 ExtensionWarning::~ExtensionWarning() { 55 Warning::~Warning() {
57 } 56 }
58 57
59 ExtensionWarning& ExtensionWarning::operator=(const ExtensionWarning& other) { 58 Warning& Warning::operator=(const Warning& other) {
60 type_ = other.type_; 59 type_ = other.type_;
61 extension_id_ = other.extension_id_; 60 extension_id_ = other.extension_id_;
62 message_id_ = other.message_id_; 61 message_id_ = other.message_id_;
63 message_parameters_ = other.message_parameters_; 62 message_parameters_ = other.message_parameters_;
64 return *this; 63 return *this;
65 } 64 }
66 65
67 // static 66 // static
68 ExtensionWarning ExtensionWarning::CreateNetworkDelayWarning( 67 Warning Warning::CreateNetworkDelayWarning(
69 const std::string& extension_id) { 68 const std::string& extension_id) {
70 std::vector<std::string> message_parameters; 69 std::vector<std::string> message_parameters;
71 message_parameters.push_back(l10n_util::GetStringUTF8(IDS_PRODUCT_NAME)); 70 message_parameters.push_back(ExtensionsClient::Get()->GetProductName());
72 return ExtensionWarning( 71 return Warning(
73 kNetworkDelay, 72 kNetworkDelay,
74 extension_id, 73 extension_id,
75 IDS_EXTENSION_WARNINGS_NETWORK_DELAY, 74 IDS_EXTENSION_WARNINGS_NETWORK_DELAY,
76 message_parameters); 75 message_parameters);
77 } 76 }
78 77
79 // static 78 // static
80 ExtensionWarning ExtensionWarning::CreateNetworkConflictWarning( 79 Warning Warning::CreateNetworkConflictWarning(const std::string& extension_id) {
81 const std::string& extension_id) {
82 std::vector<std::string> message_parameters; 80 std::vector<std::string> message_parameters;
83 return ExtensionWarning( 81 return Warning(
84 kNetworkConflict, 82 kNetworkConflict,
85 extension_id, 83 extension_id,
86 IDS_EXTENSION_WARNINGS_NETWORK_CONFLICT, 84 IDS_EXTENSION_WARNINGS_NETWORK_CONFLICT,
87 message_parameters); 85 message_parameters);
88 } 86 }
89 87
90 // static 88 // static
91 ExtensionWarning ExtensionWarning::CreateRedirectConflictWarning( 89 Warning Warning::CreateRedirectConflictWarning(
92 const std::string& extension_id, 90 const std::string& extension_id,
93 const std::string& winning_extension_id, 91 const std::string& winning_extension_id,
94 const GURL& attempted_redirect_url, 92 const GURL& attempted_redirect_url,
95 const GURL& winning_redirect_url) { 93 const GURL& winning_redirect_url) {
96 std::vector<std::string> message_parameters; 94 std::vector<std::string> message_parameters;
97 message_parameters.push_back(attempted_redirect_url.spec()); 95 message_parameters.push_back(attempted_redirect_url.spec());
98 message_parameters.push_back(kTranslate + winning_extension_id); 96 message_parameters.push_back(kTranslate + winning_extension_id);
99 message_parameters.push_back(winning_redirect_url.spec()); 97 message_parameters.push_back(winning_redirect_url.spec());
100 return ExtensionWarning( 98 return Warning(
101 kRedirectConflict, 99 kRedirectConflict,
102 extension_id, 100 extension_id,
103 IDS_EXTENSION_WARNINGS_REDIRECT_CONFLICT, 101 IDS_EXTENSION_WARNINGS_REDIRECT_CONFLICT,
104 message_parameters); 102 message_parameters);
105 } 103 }
106 104
107 // static 105 // static
108 ExtensionWarning ExtensionWarning::CreateRequestHeaderConflictWarning( 106 Warning Warning::CreateRequestHeaderConflictWarning(
109 const std::string& extension_id, 107 const std::string& extension_id,
110 const std::string& winning_extension_id, 108 const std::string& winning_extension_id,
111 const std::string& conflicting_header) { 109 const std::string& conflicting_header) {
112 std::vector<std::string> message_parameters; 110 std::vector<std::string> message_parameters;
113 message_parameters.push_back(conflicting_header); 111 message_parameters.push_back(conflicting_header);
114 message_parameters.push_back(kTranslate + winning_extension_id); 112 message_parameters.push_back(kTranslate + winning_extension_id);
115 return ExtensionWarning( 113 return Warning(
116 kNetworkConflict, 114 kNetworkConflict,
117 extension_id, 115 extension_id,
118 IDS_EXTENSION_WARNINGS_REQUEST_HEADER_CONFLICT, 116 IDS_EXTENSION_WARNINGS_REQUEST_HEADER_CONFLICT,
119 message_parameters); 117 message_parameters);
120 } 118 }
121 119
122 // static 120 // static
123 ExtensionWarning ExtensionWarning::CreateResponseHeaderConflictWarning( 121 Warning Warning::CreateResponseHeaderConflictWarning(
124 const std::string& extension_id, 122 const std::string& extension_id,
125 const std::string& winning_extension_id, 123 const std::string& winning_extension_id,
126 const std::string& conflicting_header) { 124 const std::string& conflicting_header) {
127 std::vector<std::string> message_parameters; 125 std::vector<std::string> message_parameters;
128 message_parameters.push_back(conflicting_header); 126 message_parameters.push_back(conflicting_header);
129 message_parameters.push_back(kTranslate + winning_extension_id); 127 message_parameters.push_back(kTranslate + winning_extension_id);
130 return ExtensionWarning( 128 return Warning(
131 kNetworkConflict, 129 kNetworkConflict,
132 extension_id, 130 extension_id,
133 IDS_EXTENSION_WARNINGS_RESPONSE_HEADER_CONFLICT, 131 IDS_EXTENSION_WARNINGS_RESPONSE_HEADER_CONFLICT,
134 message_parameters); 132 message_parameters);
135 } 133 }
136 134
137 // static 135 // static
138 ExtensionWarning ExtensionWarning::CreateCredentialsConflictWarning( 136 Warning Warning::CreateCredentialsConflictWarning(
139 const std::string& extension_id, 137 const std::string& extension_id,
140 const std::string& winning_extension_id) { 138 const std::string& winning_extension_id) {
141 std::vector<std::string> message_parameters; 139 std::vector<std::string> message_parameters;
142 message_parameters.push_back(kTranslate + winning_extension_id); 140 message_parameters.push_back(kTranslate + winning_extension_id);
143 return ExtensionWarning( 141 return Warning(
144 kNetworkConflict, 142 kNetworkConflict,
145 extension_id, 143 extension_id,
146 IDS_EXTENSION_WARNINGS_CREDENTIALS_CONFLICT, 144 IDS_EXTENSION_WARNINGS_CREDENTIALS_CONFLICT,
147 message_parameters); 145 message_parameters);
148 } 146 }
149 147
150 // static 148 // static
151 ExtensionWarning ExtensionWarning::CreateRepeatedCacheFlushesWarning( 149 Warning Warning::CreateRepeatedCacheFlushesWarning(
152 const std::string& extension_id) { 150 const std::string& extension_id) {
153 std::vector<std::string> message_parameters; 151 std::vector<std::string> message_parameters;
154 message_parameters.push_back(l10n_util::GetStringUTF8(IDS_PRODUCT_NAME)); 152 message_parameters.push_back(ExtensionsClient::Get()->GetProductName());
155 return ExtensionWarning( 153 return Warning(
156 kRepeatedCacheFlushes, 154 kRepeatedCacheFlushes,
157 extension_id, 155 extension_id,
158 IDS_EXTENSION_WARNINGS_NETWORK_DELAY, 156 IDS_EXTENSION_WARNINGS_NETWORK_DELAY,
159 message_parameters); 157 message_parameters);
160 } 158 }
161 159
162 // static 160 // static
163 ExtensionWarning ExtensionWarning::CreateDownloadFilenameConflictWarning( 161 Warning Warning::CreateDownloadFilenameConflictWarning(
164 const std::string& losing_extension_id, 162 const std::string& losing_extension_id,
165 const std::string& winning_extension_id, 163 const std::string& winning_extension_id,
166 const base::FilePath& losing_filename, 164 const base::FilePath& losing_filename,
167 const base::FilePath& winning_filename) { 165 const base::FilePath& winning_filename) {
168 std::vector<std::string> message_parameters; 166 std::vector<std::string> message_parameters;
169 message_parameters.push_back(base::UTF16ToUTF8( 167 message_parameters.push_back(base::UTF16ToUTF8(
170 losing_filename.LossyDisplayName())); 168 losing_filename.LossyDisplayName()));
171 message_parameters.push_back(kTranslate + winning_extension_id); 169 message_parameters.push_back(kTranslate + winning_extension_id);
172 message_parameters.push_back(base::UTF16ToUTF8( 170 message_parameters.push_back(base::UTF16ToUTF8(
173 winning_filename.LossyDisplayName())); 171 winning_filename.LossyDisplayName()));
174 return ExtensionWarning( 172 return Warning(
175 kDownloadFilenameConflict, 173 kDownloadFilenameConflict,
176 losing_extension_id, 174 losing_extension_id,
177 IDS_EXTENSION_WARNINGS_DOWNLOAD_FILENAME_CONFLICT, 175 IDS_EXTENSION_WARNINGS_DOWNLOAD_FILENAME_CONFLICT,
178 message_parameters); 176 message_parameters);
179 } 177 }
180 178
181 // static 179 // static
182 ExtensionWarning ExtensionWarning::CreateReloadTooFrequentWarning( 180 Warning Warning::CreateReloadTooFrequentWarning(
183 const std::string& extension_id) { 181 const std::string& extension_id) {
184 std::vector<std::string> message_parameters; 182 std::vector<std::string> message_parameters;
185 return ExtensionWarning(kReloadTooFrequent, 183 return Warning(kReloadTooFrequent,
186 extension_id, 184 extension_id,
187 IDS_EXTENSION_WARNING_RELOAD_TOO_FREQUENT, 185 IDS_EXTENSION_WARNING_RELOAD_TOO_FREQUENT,
188 message_parameters); 186 message_parameters);
189 } 187 }
190 188
191 std::string ExtensionWarning::GetLocalizedMessage( 189 std::string Warning::GetLocalizedMessage(const ExtensionSet* extensions) const {
192 const ExtensionSet* extensions) const {
193 DCHECK_CURRENTLY_ON(BrowserThread::UI); 190 DCHECK_CURRENTLY_ON(BrowserThread::UI);
194 191
195 // These parameters may be unsafe (URLs and Extension names) and need 192 // These parameters may be unsafe (URLs and Extension names) and need
196 // to be HTML-escaped before being embedded in the UI. Also extension IDs 193 // to be HTML-escaped before being embedded in the UI. Also extension IDs
197 // are translated to full extension names. 194 // are translated to full extension names.
198 std::vector<base::string16> final_parameters; 195 std::vector<base::string16> final_parameters;
199 for (size_t i = 0; i < message_parameters_.size(); ++i) { 196 for (size_t i = 0; i < message_parameters_.size(); ++i) {
200 std::string message = message_parameters_[i]; 197 std::string message = message_parameters_[i];
201 if (StartsWithASCII(message, kTranslate, true)) { 198 if (StartsWithASCII(message, kTranslate, true)) {
202 std::string extension_id = message.substr(sizeof(kTranslate) - 1); 199 std::string extension_id = message.substr(sizeof(kTranslate) - 1);
(...skipping 18 matching lines...) Expand all
221 final_parameters[1], final_parameters[2]); 218 final_parameters[1], final_parameters[2]);
222 case 4: 219 case 4:
223 return l10n_util::GetStringFUTF8(message_id_, final_parameters[0], 220 return l10n_util::GetStringFUTF8(message_id_, final_parameters[0],
224 final_parameters[1], final_parameters[2], final_parameters[3]); 221 final_parameters[1], final_parameters[2], final_parameters[3]);
225 default: 222 default:
226 NOTREACHED(); 223 NOTREACHED();
227 return std::string(); 224 return std::string();
228 } 225 }
229 } 226 }
230 227
231 bool operator<(const ExtensionWarning& a, const ExtensionWarning& b) { 228 bool operator<(const Warning& a, const Warning& b) {
232 if (a.extension_id() != b.extension_id()) 229 if (a.extension_id() != b.extension_id())
233 return a.extension_id() < b.extension_id(); 230 return a.extension_id() < b.extension_id();
234 return a.warning_type() < b.warning_type(); 231 return a.warning_type() < b.warning_type();
235 } 232 }
236 233
237 } // namespace extensions 234 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/browser/warning_set.h ('k') | extensions/common/extensions_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698