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

Side by Side Diff: chrome/browser/extensions/menu_manager.cc

Issue 2809023003: Reland of Change base::Value::ListStorage to std::vector<base::Value> (Closed)
Patch Set: Created 3 years, 8 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
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/menu_manager.h" 5 #include "chrome/browser/extensions/menu_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <memory> 8 #include <memory>
9 #include <tuple> 9 #include <tuple>
10 #include <utility> 10 #include <utility>
(...skipping 607 matching lines...) Expand 10 before | Expand all | Expand 10 after
618 if (!item) 618 if (!item)
619 return; 619 return;
620 620
621 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context_); 621 ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context_);
622 const Extension* extension = 622 const Extension* extension =
623 registry->enabled_extensions().GetByID(item->extension_id()); 623 registry->enabled_extensions().GetByID(item->extension_id());
624 624
625 if (item->type() == MenuItem::RADIO) 625 if (item->type() == MenuItem::RADIO)
626 RadioItemSelected(item); 626 RadioItemSelected(item);
627 627
628 std::unique_ptr<base::ListValue> args(new base::ListValue());
629 628
630 std::unique_ptr<base::DictionaryValue> properties( 629 std::unique_ptr<base::DictionaryValue> properties(
631 new base::DictionaryValue()); 630 new base::DictionaryValue());
632 SetIdKeyValue(properties.get(), "menuItemId", item->id()); 631 SetIdKeyValue(properties.get(), "menuItemId", item->id());
633 if (item->parent_id()) 632 if (item->parent_id())
634 SetIdKeyValue(properties.get(), "parentMenuItemId", *item->parent_id()); 633 SetIdKeyValue(properties.get(), "parentMenuItemId", *item->parent_id());
635 634
636 switch (params.media_type) { 635 switch (params.media_type) {
637 case blink::WebContextMenuData::kMediaTypeImage: 636 case blink::WebContextMenuData::kMediaTypeImage:
638 properties->SetString("mediaType", "image"); 637 properties->SetString("mediaType", "image");
(...skipping 18 matching lines...) Expand all
657 properties->SetBoolean("editable", params.is_editable); 656 properties->SetBoolean("editable", params.is_editable);
658 657
659 WebViewGuest* webview_guest = WebViewGuest::FromWebContents(web_contents); 658 WebViewGuest* webview_guest = WebViewGuest::FromWebContents(web_contents);
660 if (webview_guest) { 659 if (webview_guest) {
661 // This is used in web_view_internalcustom_bindings.js. 660 // This is used in web_view_internalcustom_bindings.js.
662 // The property is not exposed to developer API. 661 // The property is not exposed to developer API.
663 properties->SetInteger("webviewInstanceId", 662 properties->SetInteger("webviewInstanceId",
664 webview_guest->view_instance_id()); 663 webview_guest->view_instance_id());
665 } 664 }
666 665
667 base::DictionaryValue* raw_properties = properties.get(); 666 auto args = base::MakeUnique<base::ListValue>();
667 args->Reserve(2);
668 args->Append(std::move(properties)); 668 args->Append(std::move(properties));
669 // |properties| is invalidated at this time, which is why |args| needs to be
670 // queried for the pointer. The obtained pointer is guaranteed to stay valid
671 // even after further Appends, because enough storage was reserved above.
672 base::DictionaryValue* raw_properties = nullptr;
673 args->GetDictionary(0, &raw_properties);
669 674
670 // Add the tab info to the argument list. 675 // Add the tab info to the argument list.
671 // No tab info in a platform app. 676 // No tab info in a platform app.
672 if (!extension || !extension->is_platform_app()) { 677 if (!extension || !extension->is_platform_app()) {
673 // Note: web_contents are null in unit tests :( 678 // Note: web_contents are null in unit tests :(
674 if (web_contents) { 679 if (web_contents) {
675 int frame_id = ExtensionApiFrameIdMap::GetFrameId(render_frame_host); 680 int frame_id = ExtensionApiFrameIdMap::GetFrameId(render_frame_host);
676 if (frame_id != ExtensionApiFrameIdMap::kInvalidFrameId) 681 if (frame_id != ExtensionApiFrameIdMap::kInvalidFrameId)
677 raw_properties->SetInteger("frameId", frame_id); 682 raw_properties->SetInteger("frameId", frame_id);
678 683
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
963 bool MenuItem::Id::operator!=(const Id& other) const { 968 bool MenuItem::Id::operator!=(const Id& other) const {
964 return !(*this == other); 969 return !(*this == other);
965 } 970 }
966 971
967 bool MenuItem::Id::operator<(const Id& other) const { 972 bool MenuItem::Id::operator<(const Id& other) const {
968 return std::tie(incognito, extension_key, uid, string_uid) < 973 return std::tie(incognito, extension_key, uid, string_uid) <
969 std::tie(other.incognito, other.extension_key, other.uid, other.string_uid); 974 std::tie(other.incognito, other.extension_key, other.uid, other.string_uid);
970 } 975 }
971 976
972 } // namespace extensions 977 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/install_signer.cc ('k') | chrome/browser/extensions/policy_handlers.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698