| OLD | NEW |
| 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/menu_manager.h" | 5 #include "chrome/browser/extensions/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 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 75 MenuItem* item = MenuItem::Populate( | 75 MenuItem* item = MenuItem::Populate( |
| 76 extension_id, *dict, NULL); | 76 extension_id, *dict, NULL); |
| 77 if (!item) | 77 if (!item) |
| 78 continue; | 78 continue; |
| 79 items.push_back(item); | 79 items.push_back(item); |
| 80 } | 80 } |
| 81 return items; | 81 return items; |
| 82 } | 82 } |
| 83 | 83 |
| 84 scoped_ptr<base::Value> MenuItemsToValue(const MenuItem::List& items) { | 84 scoped_ptr<base::Value> MenuItemsToValue(const MenuItem::List& items) { |
| 85 scoped_ptr<base::ListValue> list(new ListValue()); | 85 scoped_ptr<base::ListValue> list(new base::ListValue()); |
| 86 for (size_t i = 0; i < items.size(); ++i) | 86 for (size_t i = 0; i < items.size(); ++i) |
| 87 list->Append(items[i]->ToValue().release()); | 87 list->Append(items[i]->ToValue().release()); |
| 88 return scoped_ptr<Value>(list.release()); | 88 return scoped_ptr<Value>(list.release()); |
| 89 } | 89 } |
| 90 | 90 |
| 91 bool GetStringList(const DictionaryValue& dict, | 91 bool GetStringList(const DictionaryValue& dict, |
| 92 const std::string& key, | 92 const std::string& key, |
| 93 std::vector<std::string>* out) { | 93 std::vector<std::string>* out) { |
| 94 if (!dict.HasKey(key)) | 94 if (!dict.HasKey(key)) |
| 95 return true; | 95 return true; |
| 96 | 96 |
| 97 const ListValue* list = NULL; | 97 const base::ListValue* list = NULL; |
| 98 if (!dict.GetListWithoutPathExpansion(key, &list)) | 98 if (!dict.GetListWithoutPathExpansion(key, &list)) |
| 99 return false; | 99 return false; |
| 100 | 100 |
| 101 for (size_t i = 0; i < list->GetSize(); ++i) { | 101 for (size_t i = 0; i < list->GetSize(); ++i) { |
| 102 std::string pattern; | 102 std::string pattern; |
| 103 if (!list->GetString(i, &pattern)) | 103 if (!list->GetString(i, &pattern)) |
| 104 return false; | 104 return false; |
| 105 out->push_back(pattern); | 105 out->push_back(pattern); |
| 106 } | 106 } |
| 107 | 107 |
| (...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 599 | 599 |
| 600 // ExtensionService/Extension can be NULL in unit tests :( | 600 // ExtensionService/Extension can be NULL in unit tests :( |
| 601 ExtensionService* service = | 601 ExtensionService* service = |
| 602 ExtensionSystem::Get(profile_)->extension_service(); | 602 ExtensionSystem::Get(profile_)->extension_service(); |
| 603 const Extension* extension = service ? | 603 const Extension* extension = service ? |
| 604 service->extensions()->GetByID(menu_item_id.extension_id) : NULL; | 604 service->extensions()->GetByID(menu_item_id.extension_id) : NULL; |
| 605 | 605 |
| 606 if (item->type() == MenuItem::RADIO) | 606 if (item->type() == MenuItem::RADIO) |
| 607 RadioItemSelected(item); | 607 RadioItemSelected(item); |
| 608 | 608 |
| 609 scoped_ptr<ListValue> args(new ListValue()); | 609 scoped_ptr<base::ListValue> args(new base::ListValue()); |
| 610 | 610 |
| 611 DictionaryValue* properties = new DictionaryValue(); | 611 DictionaryValue* properties = new DictionaryValue(); |
| 612 SetIdKeyValue(properties, "menuItemId", item->id()); | 612 SetIdKeyValue(properties, "menuItemId", item->id()); |
| 613 if (item->parent_id()) | 613 if (item->parent_id()) |
| 614 SetIdKeyValue(properties, "parentMenuItemId", *item->parent_id()); | 614 SetIdKeyValue(properties, "parentMenuItemId", *item->parent_id()); |
| 615 | 615 |
| 616 switch (params.media_type) { | 616 switch (params.media_type) { |
| 617 case WebKit::WebContextMenuData::MediaTypeImage: | 617 case WebKit::WebContextMenuData::MediaTypeImage: |
| 618 properties->SetString("mediaType", "image"); | 618 properties->SetString("mediaType", "image"); |
| 619 break; | 619 break; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 666 WriteToStorage(extension); | 666 WriteToStorage(extension); |
| 667 } | 667 } |
| 668 | 668 |
| 669 // Note: web_contents are NULL in unit tests :( | 669 // Note: web_contents are NULL in unit tests :( |
| 670 if (web_contents && extensions::TabHelper::FromWebContents(web_contents)) { | 670 if (web_contents && extensions::TabHelper::FromWebContents(web_contents)) { |
| 671 extensions::TabHelper::FromWebContents(web_contents)-> | 671 extensions::TabHelper::FromWebContents(web_contents)-> |
| 672 active_tab_permission_granter()->GrantIfRequested(extension); | 672 active_tab_permission_granter()->GrantIfRequested(extension); |
| 673 } | 673 } |
| 674 | 674 |
| 675 { | 675 { |
| 676 scoped_ptr<Event> event(new Event(event_names::kOnContextMenus, | 676 scoped_ptr<Event> event(new Event( |
| 677 scoped_ptr<ListValue>(args->DeepCopy()))); | 677 event_names::kOnContextMenus, |
| 678 scoped_ptr<base::ListValue>(args->DeepCopy()))); |
| 678 event->restrict_to_profile = profile; | 679 event->restrict_to_profile = profile; |
| 679 event->user_gesture = EventRouter::USER_GESTURE_ENABLED; | 680 event->user_gesture = EventRouter::USER_GESTURE_ENABLED; |
| 680 event_router->DispatchEventToExtension(item->extension_id(), event.Pass()); | 681 event_router->DispatchEventToExtension(item->extension_id(), event.Pass()); |
| 681 } | 682 } |
| 682 { | 683 { |
| 683 scoped_ptr<Event> event(new Event(event_names::kOnContextMenuClicked, | 684 scoped_ptr<Event> event(new Event(event_names::kOnContextMenuClicked, |
| 684 args.Pass())); | 685 args.Pass())); |
| 685 event->restrict_to_profile = profile; | 686 event->restrict_to_profile = profile; |
| 686 event->user_gesture = EventRouter::USER_GESTURE_ENABLED; | 687 event->user_gesture = EventRouter::USER_GESTURE_ENABLED; |
| 687 event_router->DispatchEventToExtension(item->extension_id(), event.Pass()); | 688 event_router->DispatchEventToExtension(item->extension_id(), event.Pass()); |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 860 if (uid < other.uid) | 861 if (uid < other.uid) |
| 861 return true; | 862 return true; |
| 862 if (uid == other.uid) | 863 if (uid == other.uid) |
| 863 return string_uid < other.string_uid; | 864 return string_uid < other.string_uid; |
| 864 } | 865 } |
| 865 } | 866 } |
| 866 return false; | 867 return false; |
| 867 } | 868 } |
| 868 | 869 |
| 869 } // namespace extensions | 870 } // namespace extensions |
| OLD | NEW |