| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/common/extensions/permissions/chrome_permission_message_provide
r.h" | 5 #include "chrome/common/extensions/permissions/chrome_permission_message_provide
r.h" |
| 6 | 6 |
| 7 #include "base/stl_util.h" | 7 #include "base/stl_util.h" |
| 8 #include "base/strings/stringprintf.h" | 8 #include "base/strings/stringprintf.h" |
| 9 #include "extensions/common/extensions_client.h" | 9 #include "extensions/common/extensions_client.h" |
| 10 #include "extensions/common/permissions/permission_message.h" | 10 #include "extensions/common/permissions/permission_message.h" |
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 250 for (APIPermissionSet::const_iterator permission_it = | 250 for (APIPermissionSet::const_iterator permission_it = |
| 251 permissions->apis().begin(); | 251 permissions->apis().begin(); |
| 252 permission_it != permissions->apis().end(); ++permission_it) { | 252 permission_it != permissions->apis().end(); ++permission_it) { |
| 253 if (permission_it->HasMessages()) { | 253 if (permission_it->HasMessages()) { |
| 254 PermissionMessages new_messages = permission_it->GetMessages(); | 254 PermissionMessages new_messages = permission_it->GetMessages(); |
| 255 messages.insert(new_messages.begin(), new_messages.end()); | 255 messages.insert(new_messages.begin(), new_messages.end()); |
| 256 } | 256 } |
| 257 } | 257 } |
| 258 | 258 |
| 259 // A special hack: If kFileSystemWriteDirectory would be displayed, hide | 259 // A special hack: If kFileSystemWriteDirectory would be displayed, hide |
| 260 // kFileSystemDirectory and and kFileSystemWrite as the write directory | 260 // kFileSystemDirectory as the write directory message implies it. |
| 261 // message implies the other two. | |
| 262 // TODO(sammc): Remove this. See http://crbug.com/284849. | 261 // TODO(sammc): Remove this. See http://crbug.com/284849. |
| 263 SuppressMessage(messages, | 262 SuppressMessage(messages, |
| 264 PermissionMessage::kFileSystemWriteDirectory, | 263 PermissionMessage::kFileSystemWriteDirectory, |
| 265 PermissionMessage::kFileSystemWrite); | |
| 266 SuppressMessage(messages, | |
| 267 PermissionMessage::kFileSystemWriteDirectory, | |
| 268 PermissionMessage::kFileSystemDirectory); | 264 PermissionMessage::kFileSystemDirectory); |
| 269 // A special hack: The warning message for declarativeWebRequest | 265 // A special hack: The warning message for declarativeWebRequest |
| 270 // permissions speaks about blocking parts of pages, which is a | 266 // permissions speaks about blocking parts of pages, which is a |
| 271 // subset of what the "<all_urls>" access allows. Therefore we | 267 // subset of what the "<all_urls>" access allows. Therefore we |
| 272 // display only the "<all_urls>" warning message if both permissions | 268 // display only the "<all_urls>" warning message if both permissions |
| 273 // are required. | 269 // are required. |
| 274 if (ShouldWarnAllHosts(permissions)) { | 270 if (ShouldWarnAllHosts(permissions)) { |
| 275 messages.erase( | 271 messages.erase( |
| 276 PermissionMessage( | 272 PermissionMessage( |
| 277 PermissionMessage::kDeclarativeWebRequest, base::string16())); | 273 PermissionMessage::kDeclarativeWebRequest, base::string16())); |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 328 const PermissionSet* old_permissions, | 324 const PermissionSet* old_permissions, |
| 329 const PermissionSet* new_permissions) const { | 325 const PermissionSet* new_permissions) const { |
| 330 if (new_permissions == NULL) | 326 if (new_permissions == NULL) |
| 331 return false; | 327 return false; |
| 332 | 328 |
| 333 PermissionMsgSet old_warnings = GetAPIPermissionMessages(old_permissions); | 329 PermissionMsgSet old_warnings = GetAPIPermissionMessages(old_permissions); |
| 334 PermissionMsgSet new_warnings = GetAPIPermissionMessages(new_permissions); | 330 PermissionMsgSet new_warnings = GetAPIPermissionMessages(new_permissions); |
| 335 PermissionMsgSet delta_warnings = | 331 PermissionMsgSet delta_warnings = |
| 336 base::STLSetDifference<PermissionMsgSet>(new_warnings, old_warnings); | 332 base::STLSetDifference<PermissionMsgSet>(new_warnings, old_warnings); |
| 337 | 333 |
| 338 // A special hack: kFileSystemWriteDirectory implies kFileSystemDirectory and | 334 // A special hack: kFileSystemWriteDirectory implies kFileSystemDirectory. |
| 339 // kFileSystemWrite. | |
| 340 // TODO(sammc): Remove this. See http://crbug.com/284849. | 335 // TODO(sammc): Remove this. See http://crbug.com/284849. |
| 341 if (old_warnings.find(PermissionMessage( | 336 if (old_warnings.find(PermissionMessage( |
| 342 PermissionMessage::kFileSystemWriteDirectory, base::string16())) != | 337 PermissionMessage::kFileSystemWriteDirectory, base::string16())) != |
| 343 old_warnings.end()) { | 338 old_warnings.end()) { |
| 344 delta_warnings.erase( | 339 delta_warnings.erase( |
| 345 PermissionMessage(PermissionMessage::kFileSystemDirectory, | 340 PermissionMessage(PermissionMessage::kFileSystemDirectory, |
| 346 base::string16())); | 341 base::string16())); |
| 347 delta_warnings.erase( | |
| 348 PermissionMessage(PermissionMessage::kFileSystemWrite, | |
| 349 base::string16())); | |
| 350 } | 342 } |
| 351 | 343 |
| 352 // It is a privilege increase if there are additional warnings present. | 344 // It is a privilege increase if there are additional warnings present. |
| 353 return !delta_warnings.empty(); | 345 return !delta_warnings.empty(); |
| 354 } | 346 } |
| 355 | 347 |
| 356 bool ChromePermissionMessageProvider::IsManifestPermissionPrivilegeIncrease( | 348 bool ChromePermissionMessageProvider::IsManifestPermissionPrivilegeIncrease( |
| 357 const PermissionSet* old_permissions, | 349 const PermissionSet* old_permissions, |
| 358 const PermissionSet* new_permissions) const { | 350 const PermissionSet* new_permissions) const { |
| 359 if (new_permissions == NULL) | 351 if (new_permissions == NULL) |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 399 std::set<std::string> old_hosts_set( | 391 std::set<std::string> old_hosts_set( |
| 400 permission_message_util::GetDistinctHosts(old_list, false, false)); | 392 permission_message_util::GetDistinctHosts(old_list, false, false)); |
| 401 std::set<std::string> new_hosts_only = | 393 std::set<std::string> new_hosts_only = |
| 402 base::STLSetDifference<std::set<std::string> >(new_hosts_set, | 394 base::STLSetDifference<std::set<std::string> >(new_hosts_set, |
| 403 old_hosts_set); | 395 old_hosts_set); |
| 404 | 396 |
| 405 return !new_hosts_only.empty(); | 397 return !new_hosts_only.empty(); |
| 406 } | 398 } |
| 407 | 399 |
| 408 } // namespace extensions | 400 } // namespace extensions |
| OLD | NEW |