Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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_menu_manager.h" | 5 #include "chrome/browser/extensions/extension_menu_manager.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/json/json_writer.h" | 9 #include "base/json/json_writer.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 454 DCHECK(type == chrome::NOTIFICATION_EXTENSION_UNLOADED); | 454 DCHECK(type == chrome::NOTIFICATION_EXTENSION_UNLOADED); |
| 455 | 455 |
| 456 // Remove menu items for disabled/uninstalled extensions. | 456 // Remove menu items for disabled/uninstalled extensions. |
| 457 const Extension* extension = | 457 const Extension* extension = |
| 458 content::Details<UnloadedExtensionInfo>(details)->extension; | 458 content::Details<UnloadedExtensionInfo>(details)->extension; |
| 459 if (ContainsKey(context_items_, extension->id())) { | 459 if (ContainsKey(context_items_, extension->id())) { |
| 460 RemoveAllContextItems(extension->id()); | 460 RemoveAllContextItems(extension->id()); |
| 461 } | 461 } |
| 462 } | 462 } |
| 463 | 463 |
| 464 void ExtensionMenuManager::SanitizeRadioButtons() { | |
|
Aaron Boodman
2011/12/15 00:53:55
You could pass in the extension ID to cut down on
| |
| 465 MenuItemMap::iterator i; | |
| 466 for (i = context_items_.begin(); i != context_items_.end(); ++i) { | |
| 467 RecursiveSanitizeRadioButtons(i->second); | |
| 468 } | |
| 469 } | |
| 470 | |
| 471 void ExtensionMenuManager::RecursiveSanitizeRadioButtons( | |
| 472 const ExtensionMenuItem::List& item_list) { | |
| 473 ExtensionMenuItem::List::const_iterator i; | |
| 474 | |
| 475 i = item_list.begin(); | |
| 476 while (i != item_list.end()) { | |
| 477 if ((*i)->child_count() > 0) { | |
| 478 RecursiveSanitizeRadioButtons((*i)->children()); | |
| 479 } | |
| 480 | |
| 481 if ((*i)->type() == ExtensionMenuItem::RADIO) { | |
| 482 ExtensionMenuItem::List::const_iterator radio_run_ittr; | |
|
Aaron Boodman
2011/12/15 00:53:55
s/ittr/iter/g ?
Aaron Boodman
2011/12/15 00:53:55
Better to declare this right about the loop where
| |
| 483 | |
| 484 // If there are multiple items selected, the last one will override the | |
| 485 // others. This is the default behavior when adding radio items via | |
| 486 // chrome.contextMenus.create(). | |
| 487 ExtensionMenuItem::List::const_iterator last_checked = item_list.end(); | |
| 488 for (radio_run_ittr = i; radio_run_ittr != item_list.end(); | |
| 489 ++radio_run_ittr) { | |
| 490 if ((*radio_run_ittr)->type() != ExtensionMenuItem::RADIO) { | |
| 491 break; | |
| 492 } | |
| 493 | |
| 494 if ((*radio_run_ittr)->checked()) { | |
| 495 last_checked = radio_run_ittr; | |
| 496 } | |
| 497 | |
| 498 (*radio_run_ittr)->SetChecked(false); | |
| 499 } | |
| 500 | |
| 501 // If check radio items were found in this run, | |
| 502 // check the first radio item in the list (i). | |
| 503 if (last_checked != item_list.end()) { | |
| 504 (*last_checked)->SetChecked(true); | |
| 505 } else { | |
| 506 (*i)->SetChecked(true); | |
| 507 } | |
| 508 | |
| 509 i = radio_run_ittr; | |
| 510 } else { | |
| 511 ++i; | |
| 512 } | |
| 513 } | |
| 514 } | |
| 515 | |
| 464 const SkBitmap& ExtensionMenuManager::GetIconForExtension( | 516 const SkBitmap& ExtensionMenuManager::GetIconForExtension( |
| 465 const std::string& extension_id) { | 517 const std::string& extension_id) { |
| 466 return icon_manager_.GetIcon(extension_id); | 518 return icon_manager_.GetIcon(extension_id); |
| 467 } | 519 } |
| 468 | 520 |
| 469 ExtensionMenuItem::Id::Id() | 521 ExtensionMenuItem::Id::Id() |
| 470 : profile(NULL), uid(0) { | 522 : profile(NULL), uid(0) { |
| 471 } | 523 } |
| 472 | 524 |
| 473 ExtensionMenuItem::Id::Id(Profile* profile, | 525 ExtensionMenuItem::Id::Id(Profile* profile, |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 493 if (profile < other.profile) | 545 if (profile < other.profile) |
| 494 return true; | 546 return true; |
| 495 if (profile == other.profile) { | 547 if (profile == other.profile) { |
| 496 if (extension_id < other.extension_id) | 548 if (extension_id < other.extension_id) |
| 497 return true; | 549 return true; |
| 498 if (extension_id == other.extension_id) | 550 if (extension_id == other.extension_id) |
| 499 return uid < other.uid; | 551 return uid < other.uid; |
| 500 } | 552 } |
| 501 return false; | 553 return false; |
| 502 } | 554 } |
| OLD | NEW |