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

Side by Side Diff: trunk/src/chrome/browser/renderer_context_menu/render_view_context_menu.cc

Issue 455023002: Revert 288418 "Extend contextMenus API to support browser/page a..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 4 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/renderer_context_menu/render_view_context_menu.h" 5 #include "chrome/browser/renderer_context_menu/render_view_context_menu.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 #include <utility> 9 #include <utility>
10 10
11 #include "apps/app_load_service.h" 11 #include "apps/app_load_service.h"
12 #include "base/command_line.h" 12 #include "base/command_line.h"
13 #include "base/logging.h" 13 #include "base/logging.h"
14 #include "base/metrics/histogram.h" 14 #include "base/metrics/histogram.h"
15 #include "base/prefs/pref_member.h" 15 #include "base/prefs/pref_member.h"
16 #include "base/prefs/pref_service.h" 16 #include "base/prefs/pref_service.h"
17 #include "base/stl_util.h" 17 #include "base/stl_util.h"
18 #include "base/strings/string_util.h" 18 #include "base/strings/string_util.h"
19 #include "base/strings/stringprintf.h" 19 #include "base/strings/stringprintf.h"
20 #include "base/strings/utf_string_conversions.h" 20 #include "base/strings/utf_string_conversions.h"
21 #include "base/time/time.h"
21 #include "chrome/app/chrome_command_ids.h" 22 #include "chrome/app/chrome_command_ids.h"
22 #include "chrome/browser/app_mode/app_mode_utils.h" 23 #include "chrome/browser/app_mode/app_mode_utils.h"
23 #include "chrome/browser/autocomplete/autocomplete_classifier.h" 24 #include "chrome/browser/autocomplete/autocomplete_classifier.h"
24 #include "chrome/browser/autocomplete/autocomplete_classifier_factory.h" 25 #include "chrome/browser/autocomplete/autocomplete_classifier_factory.h"
25 #include "chrome/browser/browser_process.h" 26 #include "chrome/browser/browser_process.h"
26 #include "chrome/browser/chrome_notification_types.h" 27 #include "chrome/browser/chrome_notification_types.h"
27 #include "chrome/browser/custom_handlers/protocol_handler_registry_factory.h" 28 #include "chrome/browser/custom_handlers/protocol_handler_registry_factory.h"
28 #include "chrome/browser/devtools/devtools_window.h" 29 #include "chrome/browser/devtools/devtools_window.h"
29 #include "chrome/browser/download/download_service.h" 30 #include "chrome/browser/download/download_service.h"
30 #include "chrome/browser/download/download_service_factory.h" 31 #include "chrome/browser/download/download_service_factory.h"
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after
410 return; 411 return;
411 412
412 base::string16 printable_selection_text = PrintableSelectionText(); 413 base::string16 printable_selection_text = PrintableSelectionText();
413 EscapeAmpersands(&printable_selection_text); 414 EscapeAmpersands(&printable_selection_text);
414 415
415 // Get a list of extension id's that have context menu items, and sort by the 416 // Get a list of extension id's that have context menu items, and sort by the
416 // top level context menu title of the extension. 417 // top level context menu title of the extension.
417 std::set<MenuItem::ExtensionKey> ids = menu_manager->ExtensionIds(); 418 std::set<MenuItem::ExtensionKey> ids = menu_manager->ExtensionIds();
418 std::vector<base::string16> sorted_menu_titles; 419 std::vector<base::string16> sorted_menu_titles;
419 std::map<base::string16, std::string> map_ids; 420 std::map<base::string16, std::string> map_ids;
420 for (std::set<MenuItem::ExtensionKey>::iterator iter = ids.begin(); 421 for (std::set<MenuItem::ExtensionKey>::iterator i = ids.begin();
421 iter != ids.end(); 422 i != ids.end();
422 ++iter) { 423 ++i) {
423 const Extension* extension = 424 const Extension* extension =
424 service->GetExtensionById(iter->extension_id, false); 425 service->GetExtensionById(i->extension_id, false);
425 // Platform apps have their context menus created directly in 426 // Platform apps have their context menus created directly in
426 // AppendPlatformAppItems. 427 // AppendPlatformAppItems.
427 if (extension && !extension->is_platform_app()) { 428 if (extension && !extension->is_platform_app()) {
428 base::string16 menu_title = extension_items_.GetTopLevelContextMenuTitle( 429 base::string16 menu_title = extension_items_.GetTopLevelContextMenuTitle(
429 *iter, printable_selection_text); 430 *i, printable_selection_text);
430 map_ids[menu_title] = iter->extension_id; 431 map_ids[menu_title] = i->extension_id;
431 sorted_menu_titles.push_back(menu_title); 432 sorted_menu_titles.push_back(menu_title);
432 } 433 }
433 } 434 }
434 if (sorted_menu_titles.empty()) 435 if (sorted_menu_titles.empty())
435 return; 436 return;
436 437
437 const std::string app_locale = g_browser_process->GetApplicationLocale(); 438 const std::string app_locale = g_browser_process->GetApplicationLocale();
438 l10n_util::SortStrings16(app_locale, &sorted_menu_titles); 439 l10n_util::SortStrings16(app_locale, &sorted_menu_titles);
439 440
440 int index = 0; 441 int index = 0;
442 base::TimeTicks begin = base::TimeTicks::Now();
441 for (size_t i = 0; i < sorted_menu_titles.size(); ++i) { 443 for (size_t i = 0; i < sorted_menu_titles.size(); ++i) {
442 const std::string& id = map_ids[sorted_menu_titles[i]]; 444 const std::string& id = map_ids[sorted_menu_titles[i]];
443 const MenuItem::ExtensionKey extension_key(id); 445 const MenuItem::ExtensionKey extension_key(id);
444 extension_items_.AppendExtensionItems(extension_key, 446 extension_items_.AppendExtensionItems(
445 printable_selection_text, 447 extension_key, printable_selection_text, &index);
446 &index,
447 false); // is_action_menu
448 } 448 }
449
450 UMA_HISTOGRAM_TIMES("Extensions.ContextMenus_BuildTime",
451 base::TimeTicks::Now() - begin);
452 UMA_HISTOGRAM_COUNTS("Extensions.ContextMenus_ItemCount", index);
449 } 453 }
450 454
451 void RenderViewContextMenu::AppendCurrentExtensionItems() { 455 void RenderViewContextMenu::AppendCurrentExtensionItems() {
452 // Avoid appending extension related items when |extension| is null. 456 // Avoid appending extension related items when |extension| is null.
453 // For Panel, this happens when the panel is navigated to a url outside of the 457 // For Panel, this happens when the panel is navigated to a url outside of the
454 // extension's package. 458 // extension's package.
455 const Extension* extension = GetExtension(); 459 const Extension* extension = GetExtension();
456 if (extension) { 460 if (extension) {
457 // Only add extension items from this extension. 461 // Only add extension items from this extension.
458 int index = 0; 462 int index = 0;
459 const MenuItem::ExtensionKey key( 463 const MenuItem::ExtensionKey key(
460 extension->id(), WebViewGuest::GetViewInstanceId(source_web_contents_)); 464 extension->id(), WebViewGuest::GetViewInstanceId(source_web_contents_));
461 extension_items_.AppendExtensionItems(key, 465 extension_items_.AppendExtensionItems(
462 PrintableSelectionText(), 466 key, PrintableSelectionText(), &index);
463 &index,
464 false); // is_action_menu
465 } 467 }
466 } 468 }
467 469
468 void RenderViewContextMenu::InitMenu() { 470 void RenderViewContextMenu::InitMenu() {
469 RenderViewContextMenuBase::InitMenu(); 471 RenderViewContextMenuBase::InitMenu();
470 472
471 if (content_type_->SupportsGroup(ContextMenuContentType::ITEM_GROUP_PAGE)) 473 if (content_type_->SupportsGroup(ContextMenuContentType::ITEM_GROUP_PAGE))
472 AppendPageItems(); 474 AppendPageItems();
473 475
474 if (content_type_->SupportsGroup(ContextMenuContentType::ITEM_GROUP_FRAME)) { 476 if (content_type_->SupportsGroup(ContextMenuContentType::ITEM_GROUP_FRAME)) {
(...skipping 1303 matching lines...) Expand 10 before | Expand all | Expand 10 after
1778 source_web_contents_->GetRenderViewHost()-> 1780 source_web_contents_->GetRenderViewHost()->
1779 ExecuteMediaPlayerActionAtLocation(location, action); 1781 ExecuteMediaPlayerActionAtLocation(location, action);
1780 } 1782 }
1781 1783
1782 void RenderViewContextMenu::PluginActionAt( 1784 void RenderViewContextMenu::PluginActionAt(
1783 const gfx::Point& location, 1785 const gfx::Point& location,
1784 const WebPluginAction& action) { 1786 const WebPluginAction& action) {
1785 source_web_contents_->GetRenderViewHost()-> 1787 source_web_contents_->GetRenderViewHost()->
1786 ExecutePluginActionAtLocation(location, action); 1788 ExecutePluginActionAtLocation(location, action);
1787 } 1789 }
OLDNEW
« no previous file with comments | « trunk/src/chrome/browser/extensions/menu_manager_factory.cc ('k') | trunk/src/chrome/browser/ui/app_list/app_context_menu.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698