| 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 <algorithm> | 5 #include <algorithm> |
| 6 #include <set> | 6 #include <set> |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "chrome/browser/tab_contents/render_view_context_menu.h" | 9 #include "chrome/browser/tab_contents/render_view_context_menu.h" |
| 10 | 10 |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 184 case WebMenuItem::CHECKABLE_OPTION: | 184 case WebMenuItem::CHECKABLE_OPTION: |
| 185 menu_model->AddCheckItem( | 185 menu_model->AddCheckItem( |
| 186 items[i].action + IDC_CONTENT_CONTEXT_CUSTOM_FIRST, | 186 items[i].action + IDC_CONTENT_CONTEXT_CUSTOM_FIRST, |
| 187 items[i].label); | 187 items[i].label); |
| 188 break; | 188 break; |
| 189 case WebMenuItem::GROUP: | 189 case WebMenuItem::GROUP: |
| 190 // TODO(viettrungluu): I don't know what this is supposed to do. | 190 // TODO(viettrungluu): I don't know what this is supposed to do. |
| 191 NOTREACHED(); | 191 NOTREACHED(); |
| 192 break; | 192 break; |
| 193 case WebMenuItem::SEPARATOR: | 193 case WebMenuItem::SEPARATOR: |
| 194 menu_model->AddSeparator(); | 194 menu_model->AddSeparator(ui::NORMAL_SEPARATOR); |
| 195 break; | 195 break; |
| 196 case WebMenuItem::SUBMENU: { | 196 case WebMenuItem::SUBMENU: { |
| 197 ui::SimpleMenuModel* submenu = new ui::SimpleMenuModel(delegate); | 197 ui::SimpleMenuModel* submenu = new ui::SimpleMenuModel(delegate); |
| 198 AddCustomItemsToMenu(items[i].submenu, depth + 1, total_items, delegate, | 198 AddCustomItemsToMenu(items[i].submenu, depth + 1, total_items, delegate, |
| 199 submenu); | 199 submenu); |
| 200 menu_model->AddSubMenu( | 200 menu_model->AddSubMenu( |
| 201 items[i].action + IDC_CONTENT_CONTEXT_CUSTOM_FIRST, | 201 items[i].action + IDC_CONTENT_CONTEXT_CUSTOM_FIRST, |
| 202 items[i].label, | 202 items[i].label, |
| 203 submenu); | 203 submenu); |
| 204 break; | 204 break; |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 383 bool can_cross_incognito = service->CanCrossIncognito(extension); | 383 bool can_cross_incognito = service->CanCrossIncognito(extension); |
| 384 MenuItem::List items = | 384 MenuItem::List items = |
| 385 GetRelevantExtensionItems(*all_items, params_, profile_, | 385 GetRelevantExtensionItems(*all_items, params_, profile_, |
| 386 can_cross_incognito); | 386 can_cross_incognito); |
| 387 if (items.empty()) | 387 if (items.empty()) |
| 388 return; | 388 return; |
| 389 | 389 |
| 390 // If this is the first extension-provided menu item, and there are other | 390 // If this is the first extension-provided menu item, and there are other |
| 391 // items in the menu, add a separator. | 391 // items in the menu, add a separator. |
| 392 if (*index == 0 && menu_model_.GetItemCount()) | 392 if (*index == 0 && menu_model_.GetItemCount()) |
| 393 menu_model_.AddSeparator(); | 393 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); |
| 394 | 394 |
| 395 int menu_id = IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST + (*index)++; | 395 int menu_id = IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST + (*index)++; |
| 396 | 396 |
| 397 // Extensions are only allowed one top-level slot (and it can't be a radio or | 397 // Extensions are only allowed one top-level slot (and it can't be a radio or |
| 398 // checkbox item because we are going to put the extension icon next to it). | 398 // checkbox item because we are going to put the extension icon next to it). |
| 399 // If they have more than that, we automatically push them into a submenu. | 399 // If they have more than that, we automatically push them into a submenu. |
| 400 string16 title; | 400 string16 title; |
| 401 MenuItem::List submenu_items; | 401 MenuItem::List submenu_items; |
| 402 if (items.size() > 1 || items[0]->type() != MenuItem::NORMAL) { | 402 if (items.size() > 1 || items[0]->type() != MenuItem::NORMAL) { |
| 403 title = UTF8ToUTF16(extension->name()); | 403 title = UTF8ToUTF16(extension->name()); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 434 int radio_group_id = 1; | 434 int radio_group_id = 1; |
| 435 | 435 |
| 436 for (MenuItem::List::const_iterator i = items.begin(); | 436 for (MenuItem::List::const_iterator i = items.begin(); |
| 437 i != items.end(); ++i) { | 437 i != items.end(); ++i) { |
| 438 MenuItem* item = *i; | 438 MenuItem* item = *i; |
| 439 | 439 |
| 440 // If last item was of type radio but the current one isn't, auto-insert | 440 // If last item was of type radio but the current one isn't, auto-insert |
| 441 // a separator. The converse case is handled below. | 441 // a separator. The converse case is handled below. |
| 442 if (last_type == MenuItem::RADIO && | 442 if (last_type == MenuItem::RADIO && |
| 443 item->type() != MenuItem::RADIO) { | 443 item->type() != MenuItem::RADIO) { |
| 444 menu_model->AddSeparator(); | 444 menu_model->AddSeparator(ui::NORMAL_SEPARATOR); |
| 445 last_type = MenuItem::SEPARATOR; | 445 last_type = MenuItem::SEPARATOR; |
| 446 } | 446 } |
| 447 | 447 |
| 448 int menu_id = IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST + (*index)++; | 448 int menu_id = IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST + (*index)++; |
| 449 if (menu_id >= IDC_EXTENSIONS_CONTEXT_CUSTOM_LAST) | 449 if (menu_id >= IDC_EXTENSIONS_CONTEXT_CUSTOM_LAST) |
| 450 return; | 450 return; |
| 451 extension_item_map_[menu_id] = item->id(); | 451 extension_item_map_[menu_id] = item->id(); |
| 452 string16 title = item->TitleWithReplacement(selection_text, | 452 string16 title = item->TitleWithReplacement(selection_text, |
| 453 kMaxExtensionItemTitleLength); | 453 kMaxExtensionItemTitleLength); |
| 454 if (item->type() == MenuItem::NORMAL) { | 454 if (item->type() == MenuItem::NORMAL) { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 466 } | 466 } |
| 467 } else if (item->type() == MenuItem::CHECKBOX) { | 467 } else if (item->type() == MenuItem::CHECKBOX) { |
| 468 menu_model->AddCheckItem(menu_id, title); | 468 menu_model->AddCheckItem(menu_id, title); |
| 469 } else if (item->type() == MenuItem::RADIO) { | 469 } else if (item->type() == MenuItem::RADIO) { |
| 470 if (i != items.begin() && | 470 if (i != items.begin() && |
| 471 last_type != MenuItem::RADIO) { | 471 last_type != MenuItem::RADIO) { |
| 472 radio_group_id++; | 472 radio_group_id++; |
| 473 | 473 |
| 474 // Auto-append a separator if needed. | 474 // Auto-append a separator if needed. |
| 475 if (last_type != MenuItem::SEPARATOR) | 475 if (last_type != MenuItem::SEPARATOR) |
| 476 menu_model->AddSeparator(); | 476 menu_model->AddSeparator(ui::NORMAL_SEPARATOR); |
| 477 } | 477 } |
| 478 | 478 |
| 479 menu_model->AddRadioItem(menu_id, title, radio_group_id); | 479 menu_model->AddRadioItem(menu_id, title, radio_group_id); |
| 480 } else if (item->type() == MenuItem::SEPARATOR) { | 480 } else if (item->type() == MenuItem::SEPARATOR) { |
| 481 if (i != items.begin() && last_type != MenuItem::SEPARATOR) { | 481 if (i != items.begin() && last_type != MenuItem::SEPARATOR) { |
| 482 menu_model->AddSeparator(); | 482 menu_model->AddSeparator(ui::NORMAL_SEPARATOR); |
| 483 } | 483 } |
| 484 } | 484 } |
| 485 last_type = item->type(); | 485 last_type = item->type(); |
| 486 } | 486 } |
| 487 } | 487 } |
| 488 | 488 |
| 489 void RenderViewContextMenu::SetExtensionIcon(const std::string& extension_id) { | 489 void RenderViewContextMenu::SetExtensionIcon(const std::string& extension_id) { |
| 490 ExtensionService* service = profile_->GetExtensionService(); | 490 ExtensionService* service = profile_->GetExtensionService(); |
| 491 MenuManager* menu_manager = service->menu_manager(); | 491 MenuManager* menu_manager = service->menu_manager(); |
| 492 | 492 |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 547 return; | 547 return; |
| 548 } | 548 } |
| 549 | 549 |
| 550 bool has_link = !params_.unfiltered_link_url.is_empty(); | 550 bool has_link = !params_.unfiltered_link_url.is_empty(); |
| 551 bool has_selection = !params_.selection_text.empty(); | 551 bool has_selection = !params_.selection_text.empty(); |
| 552 | 552 |
| 553 if (AppendCustomItems()) { | 553 if (AppendCustomItems()) { |
| 554 // If there's a selection, don't early return when there are custom items, | 554 // If there's a selection, don't early return when there are custom items, |
| 555 // but fall through to adding the normal ones after the custom ones. | 555 // but fall through to adding the normal ones after the custom ones. |
| 556 if (has_selection) { | 556 if (has_selection) { |
| 557 menu_model_.AddSeparator(); | 557 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); |
| 558 } else { | 558 } else { |
| 559 // Don't add items for Pepper menu. | 559 // Don't add items for Pepper menu. |
| 560 if (!params_.custom_context.is_pepper_menu) | 560 if (!params_.custom_context.is_pepper_menu) |
| 561 AppendDeveloperItems(); | 561 AppendDeveloperItems(); |
| 562 return; | 562 return; |
| 563 } | 563 } |
| 564 } | 564 } |
| 565 | 565 |
| 566 // When no special node or text is selected and selection has no link, | 566 // When no special node or text is selected and selection has no link, |
| 567 // show page items. | 567 // show page items. |
| 568 if (params_.media_type == WebContextMenuData::MediaTypeNone && | 568 if (params_.media_type == WebContextMenuData::MediaTypeNone && |
| 569 !has_link && | 569 !has_link && |
| 570 !params_.is_editable && | 570 !params_.is_editable && |
| 571 !has_selection) { | 571 !has_selection) { |
| 572 if (!params_.page_url.is_empty()) { | 572 if (!params_.page_url.is_empty()) { |
| 573 bool is_devtools = IsDevToolsURL(params_.page_url); | 573 bool is_devtools = IsDevToolsURL(params_.page_url); |
| 574 if (!is_devtools && !IsInternalResourcesURL(params_.page_url)) { | 574 if (!is_devtools && !IsInternalResourcesURL(params_.page_url)) { |
| 575 AppendPageItems(); | 575 AppendPageItems(); |
| 576 // Merge in frame items if we clicked within a frame that needs them. | 576 // Merge in frame items if we clicked within a frame that needs them. |
| 577 if (!params_.frame_url.is_empty()) { | 577 if (!params_.frame_url.is_empty()) { |
| 578 is_devtools = IsDevToolsURL(params_.frame_url); | 578 is_devtools = IsDevToolsURL(params_.frame_url); |
| 579 if (!is_devtools && !IsInternalResourcesURL(params_.frame_url)) { | 579 if (!is_devtools && !IsInternalResourcesURL(params_.frame_url)) { |
| 580 menu_model_.AddSeparator(); | 580 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); |
| 581 AppendFrameItems(); | 581 AppendFrameItems(); |
| 582 } | 582 } |
| 583 } | 583 } |
| 584 } | 584 } |
| 585 } else { | 585 } else { |
| 586 DCHECK(params_.frame_url.is_empty()); | 586 DCHECK(params_.frame_url.is_empty()); |
| 587 } | 587 } |
| 588 } | 588 } |
| 589 | 589 |
| 590 if (has_link) { | 590 if (has_link) { |
| 591 AppendLinkItems(); | 591 AppendLinkItems(); |
| 592 if (params_.media_type != WebContextMenuData::MediaTypeNone) | 592 if (params_.media_type != WebContextMenuData::MediaTypeNone) |
| 593 menu_model_.AddSeparator(); | 593 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); |
| 594 } | 594 } |
| 595 | 595 |
| 596 switch (params_.media_type) { | 596 switch (params_.media_type) { |
| 597 case WebContextMenuData::MediaTypeNone: | 597 case WebContextMenuData::MediaTypeNone: |
| 598 break; | 598 break; |
| 599 case WebContextMenuData::MediaTypeImage: | 599 case WebContextMenuData::MediaTypeImage: |
| 600 AppendImageItems(); | 600 AppendImageItems(); |
| 601 break; | 601 break; |
| 602 case WebContextMenuData::MediaTypeVideo: | 602 case WebContextMenuData::MediaTypeVideo: |
| 603 AppendVideoItems(); | 603 AppendVideoItems(); |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 681 const string16& title) { | 681 const string16& title) { |
| 682 menu_model_.AddItem(command_id, title); | 682 menu_model_.AddItem(command_id, title); |
| 683 } | 683 } |
| 684 | 684 |
| 685 void RenderViewContextMenu::AddCheckItem(int command_id, | 685 void RenderViewContextMenu::AddCheckItem(int command_id, |
| 686 const string16& title) { | 686 const string16& title) { |
| 687 menu_model_.AddCheckItem(command_id, title); | 687 menu_model_.AddCheckItem(command_id, title); |
| 688 } | 688 } |
| 689 | 689 |
| 690 void RenderViewContextMenu::AddSeparator() { | 690 void RenderViewContextMenu::AddSeparator() { |
| 691 menu_model_.AddSeparator(); | 691 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); |
| 692 } | 692 } |
| 693 | 693 |
| 694 void RenderViewContextMenu::AddSubMenu(int command_id, | 694 void RenderViewContextMenu::AddSubMenu(int command_id, |
| 695 const string16& label, | 695 const string16& label, |
| 696 ui::MenuModel* model) { | 696 ui::MenuModel* model) { |
| 697 menu_model_.AddSubMenu(command_id, label, model); | 697 menu_model_.AddSubMenu(command_id, label, model); |
| 698 } | 698 } |
| 699 | 699 |
| 700 void RenderViewContextMenu::UpdateMenuItem(int command_id, | 700 void RenderViewContextMenu::UpdateMenuItem(int command_id, |
| 701 bool enabled, | 701 bool enabled, |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 736 #if defined(DEBUG_DEVTOOLS) | 736 #if defined(DEBUG_DEVTOOLS) |
| 737 show_developer_items = true; | 737 show_developer_items = true; |
| 738 #endif | 738 #endif |
| 739 | 739 |
| 740 if (!show_developer_items) | 740 if (!show_developer_items) |
| 741 return; | 741 return; |
| 742 | 742 |
| 743 // In the DevTools popup menu, "developer items" is normally the only | 743 // In the DevTools popup menu, "developer items" is normally the only |
| 744 // section, so omit the separator there. | 744 // section, so omit the separator there. |
| 745 if (menu_model_.GetItemCount() > 0) | 745 if (menu_model_.GetItemCount() > 0) |
| 746 menu_model_.AddSeparator(); | 746 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); |
| 747 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_INSPECTELEMENT, | 747 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_INSPECTELEMENT, |
| 748 IDS_CONTENT_CONTEXT_INSPECTELEMENT); | 748 IDS_CONTENT_CONTEXT_INSPECTELEMENT); |
| 749 } | 749 } |
| 750 | 750 |
| 751 void RenderViewContextMenu::AppendLinkItems() { | 751 void RenderViewContextMenu::AppendLinkItems() { |
| 752 if (!params_.link_url.is_empty()) { | 752 if (!params_.link_url.is_empty()) { |
| 753 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_OPENLINKNEWTAB, | 753 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_OPENLINKNEWTAB, |
| 754 IDS_CONTENT_CONTEXT_OPENLINKNEWTAB); | 754 IDS_CONTENT_CONTEXT_OPENLINKNEWTAB); |
| 755 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_OPENLINKNEWWINDOW, | 755 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_OPENLINKNEWWINDOW, |
| 756 IDS_CONTENT_CONTEXT_OPENLINKNEWWINDOW); | 756 IDS_CONTENT_CONTEXT_OPENLINKNEWWINDOW); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 779 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_COPYIMAGELOCATION, | 779 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_COPYIMAGELOCATION, |
| 780 IDS_CONTENT_CONTEXT_COPYIMAGELOCATION); | 780 IDS_CONTENT_CONTEXT_COPYIMAGELOCATION); |
| 781 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_COPYIMAGE, | 781 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_COPYIMAGE, |
| 782 IDS_CONTENT_CONTEXT_COPYIMAGE); | 782 IDS_CONTENT_CONTEXT_COPYIMAGE); |
| 783 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_OPENIMAGENEWTAB, | 783 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_OPENIMAGENEWTAB, |
| 784 IDS_CONTENT_CONTEXT_OPENIMAGENEWTAB); | 784 IDS_CONTENT_CONTEXT_OPENIMAGENEWTAB); |
| 785 } | 785 } |
| 786 | 786 |
| 787 void RenderViewContextMenu::AppendAudioItems() { | 787 void RenderViewContextMenu::AppendAudioItems() { |
| 788 AppendMediaItems(); | 788 AppendMediaItems(); |
| 789 menu_model_.AddSeparator(); | 789 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); |
| 790 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_SAVEAVAS, | 790 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_SAVEAVAS, |
| 791 IDS_CONTENT_CONTEXT_SAVEAUDIOAS); | 791 IDS_CONTENT_CONTEXT_SAVEAUDIOAS); |
| 792 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_COPYAVLOCATION, | 792 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_COPYAVLOCATION, |
| 793 IDS_CONTENT_CONTEXT_COPYAUDIOLOCATION); | 793 IDS_CONTENT_CONTEXT_COPYAUDIOLOCATION); |
| 794 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_OPENAVNEWTAB, | 794 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_OPENAVNEWTAB, |
| 795 IDS_CONTENT_CONTEXT_OPENAUDIONEWTAB); | 795 IDS_CONTENT_CONTEXT_OPENAUDIONEWTAB); |
| 796 } | 796 } |
| 797 | 797 |
| 798 void RenderViewContextMenu::AppendVideoItems() { | 798 void RenderViewContextMenu::AppendVideoItems() { |
| 799 AppendMediaItems(); | 799 AppendMediaItems(); |
| 800 menu_model_.AddSeparator(); | 800 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); |
| 801 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_SAVEAVAS, | 801 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_SAVEAVAS, |
| 802 IDS_CONTENT_CONTEXT_SAVEVIDEOAS); | 802 IDS_CONTENT_CONTEXT_SAVEVIDEOAS); |
| 803 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_COPYAVLOCATION, | 803 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_COPYAVLOCATION, |
| 804 IDS_CONTENT_CONTEXT_COPYVIDEOLOCATION); | 804 IDS_CONTENT_CONTEXT_COPYVIDEOLOCATION); |
| 805 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_OPENAVNEWTAB, | 805 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_OPENAVNEWTAB, |
| 806 IDS_CONTENT_CONTEXT_OPENVIDEONEWTAB); | 806 IDS_CONTENT_CONTEXT_OPENVIDEONEWTAB); |
| 807 } | 807 } |
| 808 | 808 |
| 809 void RenderViewContextMenu::AppendMediaItems() { | 809 void RenderViewContextMenu::AppendMediaItems() { |
| 810 int media_flags = params_.media_flags; | 810 int media_flags = params_.media_flags; |
| (...skipping 22 matching lines...) Expand all Loading... |
| 833 if (params_.link_url.is_empty() && params_.selection_text.empty()) | 833 if (params_.link_url.is_empty() && params_.selection_text.empty()) |
| 834 AppendPageItems(); | 834 AppendPageItems(); |
| 835 } else { | 835 } else { |
| 836 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_SAVEAVAS, | 836 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_SAVEAVAS, |
| 837 IDS_CONTENT_CONTEXT_SAVEPAGEAS); | 837 IDS_CONTENT_CONTEXT_SAVEPAGEAS); |
| 838 menu_model_.AddItemWithStringId(IDC_PRINT, IDS_CONTENT_CONTEXT_PRINT); | 838 menu_model_.AddItemWithStringId(IDC_PRINT, IDS_CONTENT_CONTEXT_PRINT); |
| 839 } | 839 } |
| 840 | 840 |
| 841 if (params_.media_flags & WebContextMenuData::MediaCanRotate) { | 841 if (params_.media_flags & WebContextMenuData::MediaCanRotate) { |
| 842 if (menu_model_.GetItemCount() > 0) | 842 if (menu_model_.GetItemCount() > 0) |
| 843 menu_model_.AddSeparator(); | 843 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); |
| 844 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_ROTATECW, | 844 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_ROTATECW, |
| 845 IDS_CONTENT_CONTEXT_ROTATECW); | 845 IDS_CONTENT_CONTEXT_ROTATECW); |
| 846 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_ROTATECCW, | 846 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_ROTATECCW, |
| 847 IDS_CONTENT_CONTEXT_ROTATECCW); | 847 IDS_CONTENT_CONTEXT_ROTATECCW); |
| 848 } | 848 } |
| 849 } | 849 } |
| 850 | 850 |
| 851 void RenderViewContextMenu::AppendPageItems() { | 851 void RenderViewContextMenu::AppendPageItems() { |
| 852 menu_model_.AddItemWithStringId(IDC_BACK, IDS_CONTENT_CONTEXT_BACK); | 852 menu_model_.AddItemWithStringId(IDC_BACK, IDS_CONTENT_CONTEXT_BACK); |
| 853 menu_model_.AddItemWithStringId(IDC_FORWARD, IDS_CONTENT_CONTEXT_FORWARD); | 853 menu_model_.AddItemWithStringId(IDC_FORWARD, IDS_CONTENT_CONTEXT_FORWARD); |
| 854 menu_model_.AddItemWithStringId(IDC_RELOAD, IDS_CONTENT_CONTEXT_RELOAD); | 854 menu_model_.AddItemWithStringId(IDC_RELOAD, IDS_CONTENT_CONTEXT_RELOAD); |
| 855 menu_model_.AddSeparator(); | 855 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); |
| 856 menu_model_.AddItemWithStringId(IDC_SAVE_PAGE, | 856 menu_model_.AddItemWithStringId(IDC_SAVE_PAGE, |
| 857 IDS_CONTENT_CONTEXT_SAVEPAGEAS); | 857 IDS_CONTENT_CONTEXT_SAVEPAGEAS); |
| 858 menu_model_.AddItemWithStringId(IDC_PRINT, IDS_CONTENT_CONTEXT_PRINT); | 858 menu_model_.AddItemWithStringId(IDC_PRINT, IDS_CONTENT_CONTEXT_PRINT); |
| 859 | 859 |
| 860 if (ShouldShowTranslateItem(params_.page_url)) { | 860 if (ShouldShowTranslateItem(params_.page_url)) { |
| 861 std::string locale = g_browser_process->GetApplicationLocale(); | 861 std::string locale = g_browser_process->GetApplicationLocale(); |
| 862 locale = TranslateManager::GetLanguageCode(locale); | 862 locale = TranslateManager::GetLanguageCode(locale); |
| 863 string16 language = l10n_util::GetDisplayNameForLocale(locale, locale, | 863 string16 language = l10n_util::GetDisplayNameForLocale(locale, locale, |
| 864 true); | 864 true); |
| 865 menu_model_.AddItem( | 865 menu_model_.AddItem( |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 947 } | 947 } |
| 948 } | 948 } |
| 949 | 949 |
| 950 void RenderViewContextMenu::AppendEditableItems() { | 950 void RenderViewContextMenu::AppendEditableItems() { |
| 951 AppendSpellingSuggestionsSubMenu(); | 951 AppendSpellingSuggestionsSubMenu(); |
| 952 | 952 |
| 953 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_UNDO, | 953 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_UNDO, |
| 954 IDS_CONTENT_CONTEXT_UNDO); | 954 IDS_CONTENT_CONTEXT_UNDO); |
| 955 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_REDO, | 955 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_REDO, |
| 956 IDS_CONTENT_CONTEXT_REDO); | 956 IDS_CONTENT_CONTEXT_REDO); |
| 957 menu_model_.AddSeparator(); | 957 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); |
| 958 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_CUT, | 958 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_CUT, |
| 959 IDS_CONTENT_CONTEXT_CUT); | 959 IDS_CONTENT_CONTEXT_CUT); |
| 960 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_COPY, | 960 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_COPY, |
| 961 IDS_CONTENT_CONTEXT_COPY); | 961 IDS_CONTENT_CONTEXT_COPY); |
| 962 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_PASTE, | 962 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_PASTE, |
| 963 IDS_CONTENT_CONTEXT_PASTE); | 963 IDS_CONTENT_CONTEXT_PASTE); |
| 964 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_PASTE_AND_MATCH_STYLE, | 964 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_PASTE_AND_MATCH_STYLE, |
| 965 IDS_CONTENT_CONTEXT_PASTE_AND_MATCH_STYLE); | 965 IDS_CONTENT_CONTEXT_PASTE_AND_MATCH_STYLE); |
| 966 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_DELETE, | 966 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_DELETE, |
| 967 IDS_CONTENT_CONTEXT_DELETE); | 967 IDS_CONTENT_CONTEXT_DELETE); |
| 968 menu_model_.AddSeparator(); | 968 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); |
| 969 | 969 |
| 970 if (!params_.keyword_url.is_empty()) { | 970 if (!params_.keyword_url.is_empty()) { |
| 971 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_ADDSEARCHENGINE, | 971 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_ADDSEARCHENGINE, |
| 972 IDS_CONTENT_CONTEXT_ADDSEARCHENGINE); | 972 IDS_CONTENT_CONTEXT_ADDSEARCHENGINE); |
| 973 menu_model_.AddSeparator(); | 973 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); |
| 974 } | 974 } |
| 975 | 975 |
| 976 AppendSpellcheckOptionsSubMenu(); | 976 AppendSpellcheckOptionsSubMenu(); |
| 977 AppendSpeechInputOptionsSubMenu(); | 977 AppendSpeechInputOptionsSubMenu(); |
| 978 | 978 |
| 979 #if defined(OS_MACOSX) | 979 #if defined(OS_MACOSX) |
| 980 // OS X provides a contextual menu to set writing direction for BiDi | 980 // OS X provides a contextual menu to set writing direction for BiDi |
| 981 // languages. | 981 // languages. |
| 982 // This functionality is exposed as a keyboard shortcut on Windows & Linux. | 982 // This functionality is exposed as a keyboard shortcut on Windows & Linux. |
| 983 AppendBidiSubMenu(); | 983 AppendBidiSubMenu(); |
| 984 #endif // OS_MACOSX | 984 #endif // OS_MACOSX |
| 985 | 985 |
| 986 menu_model_.AddSeparator(); | 986 menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); |
| 987 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_SELECTALL, | 987 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_SELECTALL, |
| 988 IDS_CONTENT_CONTEXT_SELECTALL); | 988 IDS_CONTENT_CONTEXT_SELECTALL); |
| 989 } | 989 } |
| 990 | 990 |
| 991 void RenderViewContextMenu::AppendSpellingSuggestionsSubMenu() { | 991 void RenderViewContextMenu::AppendSpellingSuggestionsSubMenu() { |
| 992 if (!spelling_menu_observer_.get()) | 992 if (!spelling_menu_observer_.get()) |
| 993 spelling_menu_observer_.reset(new SpellingMenuObserver(this)); | 993 spelling_menu_observer_.reset(new SpellingMenuObserver(this)); |
| 994 observers_.AddObserver(spelling_menu_observer_.get()); | 994 observers_.AddObserver(spelling_menu_observer_.get()); |
| 995 spelling_menu_observer_->InitMenu(params_); | 995 spelling_menu_observer_->InitMenu(params_); |
| 996 } | 996 } |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1043 GetHandlersForLinkUrl(); | 1043 GetHandlersForLinkUrl(); |
| 1044 if (handlers.empty()) | 1044 if (handlers.empty()) |
| 1045 return; | 1045 return; |
| 1046 size_t max = IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_LAST - | 1046 size_t max = IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_LAST - |
| 1047 IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_FIRST; | 1047 IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_FIRST; |
| 1048 for (size_t i = 0; i < handlers.size() && i <= max; i++) { | 1048 for (size_t i = 0; i < handlers.size() && i <= max; i++) { |
| 1049 protocol_handler_submenu_model_.AddItem( | 1049 protocol_handler_submenu_model_.AddItem( |
| 1050 IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_FIRST + i, | 1050 IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_FIRST + i, |
| 1051 handlers[i].title()); | 1051 handlers[i].title()); |
| 1052 } | 1052 } |
| 1053 protocol_handler_submenu_model_.AddSeparator(); | 1053 protocol_handler_submenu_model_.AddSeparator(ui::NORMAL_SEPARATOR); |
| 1054 protocol_handler_submenu_model_.AddItem( | 1054 protocol_handler_submenu_model_.AddItem( |
| 1055 IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_SETTINGS, | 1055 IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_SETTINGS, |
| 1056 l10n_util::GetStringUTF16(IDS_CONTENT_CONTEXT_OPENLINKWITH_CONFIGURE)); | 1056 l10n_util::GetStringUTF16(IDS_CONTENT_CONTEXT_OPENLINKWITH_CONFIGURE)); |
| 1057 | 1057 |
| 1058 menu_model_.AddSubMenu( | 1058 menu_model_.AddSubMenu( |
| 1059 IDC_CONTENT_CONTEXT_OPENLINKWITH, | 1059 IDC_CONTENT_CONTEXT_OPENLINKWITH, |
| 1060 l10n_util::GetStringUTF16(IDS_CONTENT_CONTEXT_OPENLINKWITH), | 1060 l10n_util::GetStringUTF16(IDS_CONTENT_CONTEXT_OPENLINKWITH), |
| 1061 &protocol_handler_submenu_model_); | 1061 &protocol_handler_submenu_model_); |
| 1062 } | 1062 } |
| 1063 | 1063 |
| (...skipping 945 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2009 source_web_contents_->GetRenderViewHost()-> | 2009 source_web_contents_->GetRenderViewHost()-> |
| 2010 ExecuteMediaPlayerActionAtLocation(location, action); | 2010 ExecuteMediaPlayerActionAtLocation(location, action); |
| 2011 } | 2011 } |
| 2012 | 2012 |
| 2013 void RenderViewContextMenu::PluginActionAt( | 2013 void RenderViewContextMenu::PluginActionAt( |
| 2014 const gfx::Point& location, | 2014 const gfx::Point& location, |
| 2015 const WebPluginAction& action) { | 2015 const WebPluginAction& action) { |
| 2016 source_web_contents_->GetRenderViewHost()-> | 2016 source_web_contents_->GetRenderViewHost()-> |
| 2017 ExecutePluginActionAtLocation(location, action); | 2017 ExecutePluginActionAtLocation(location, action); |
| 2018 } | 2018 } |
| OLD | NEW |