| 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 <algorithm> | 5 #include <algorithm> | 
| 6 #include <set> | 6 #include <set> | 
| 7 | 7 | 
| 8 #include "chrome/browser/tab_contents/render_view_context_menu.h" | 8 #include "chrome/browser/tab_contents/render_view_context_menu.h" | 
| 9 | 9 | 
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" | 
| (...skipping 18 matching lines...) Expand all  Loading... | 
| 29 #include "chrome/browser/page_info_window.h" | 29 #include "chrome/browser/page_info_window.h" | 
| 30 #include "chrome/browser/platform_util.h" | 30 #include "chrome/browser/platform_util.h" | 
| 31 #include "chrome/browser/prefs/pref_member.h" | 31 #include "chrome/browser/prefs/pref_member.h" | 
| 32 #include "chrome/browser/prefs/pref_service.h" | 32 #include "chrome/browser/prefs/pref_service.h" | 
| 33 #include "chrome/browser/printing/print_preview_tab_controller.h" | 33 #include "chrome/browser/printing/print_preview_tab_controller.h" | 
| 34 #include "chrome/browser/profiles/profile.h" | 34 #include "chrome/browser/profiles/profile.h" | 
| 35 #include "chrome/browser/search_engines/template_url.h" | 35 #include "chrome/browser/search_engines/template_url.h" | 
| 36 #include "chrome/browser/search_engines/template_url_model.h" | 36 #include "chrome/browser/search_engines/template_url_model.h" | 
| 37 #include "chrome/browser/spellcheck_host.h" | 37 #include "chrome/browser/spellcheck_host.h" | 
| 38 #include "chrome/browser/spellchecker_platform_engine.h" | 38 #include "chrome/browser/spellchecker_platform_engine.h" | 
|  | 39 #include "chrome/browser/tab_contents/introducer_handler.h" | 
| 39 #include "chrome/browser/translate/translate_prefs.h" | 40 #include "chrome/browser/translate/translate_prefs.h" | 
| 40 #include "chrome/browser/translate/translate_manager.h" | 41 #include "chrome/browser/translate/translate_manager.h" | 
| 41 #include "chrome/common/chrome_constants.h" | 42 #include "chrome/common/chrome_constants.h" | 
| 42 #include "chrome/common/chrome_switches.h" | 43 #include "chrome/common/chrome_switches.h" | 
| 43 #include "chrome/common/content_restriction.h" | 44 #include "chrome/common/content_restriction.h" | 
| 44 #include "chrome/common/pref_names.h" | 45 #include "chrome/common/pref_names.h" | 
| 45 #include "chrome/common/print_messages.h" | 46 #include "chrome/common/print_messages.h" | 
| 46 #include "chrome/common/url_constants.h" | 47 #include "chrome/common/url_constants.h" | 
| 47 #include "content/browser/child_process_security_policy.h" | 48 #include "content/browser/child_process_security_policy.h" | 
| 48 #include "content/browser/renderer_host/render_view_host.h" | 49 #include "content/browser/renderer_host/render_view_host.h" | 
| (...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 450   bool has_link = !params_.link_url.is_empty(); | 451   bool has_link = !params_.link_url.is_empty(); | 
| 451   bool has_selection = !params_.selection_text.empty(); | 452   bool has_selection = !params_.selection_text.empty(); | 
| 452 | 453 | 
| 453   if (AppendCustomItems()) { | 454   if (AppendCustomItems()) { | 
| 454     // Don't add items for Pepper menu. | 455     // Don't add items for Pepper menu. | 
| 455     if (!params_.custom_context.is_pepper_menu) | 456     if (!params_.custom_context.is_pepper_menu) | 
| 456       AppendDeveloperItems(); | 457       AppendDeveloperItems(); | 
| 457     return; | 458     return; | 
| 458   } | 459   } | 
| 459 | 460 | 
|  | 461   if (IntroducerService::InitMenu(source_tab_contents_, profile_, params_, | 
|  | 462                                   &introducer_commands_, &menu_model_)) { | 
|  | 463     return; | 
|  | 464   } | 
|  | 465 | 
| 460   // When no special node or text is selected and selection has no link, | 466   // When no special node or text is selected and selection has no link, | 
| 461   // show page items. | 467   // show page items. | 
| 462   bool is_devtools = false; | 468   bool is_devtools = false; | 
| 463   if (params_.media_type == WebContextMenuData::MediaTypeNone && | 469   if (params_.media_type == WebContextMenuData::MediaTypeNone && | 
| 464       !has_link && | 470       !has_link && | 
| 465       !params_.is_editable && | 471       !params_.is_editable && | 
| 466       !has_selection) { | 472       !has_selection) { | 
| 467     if (!params_.page_url.is_empty()) { | 473     if (!params_.page_url.is_empty()) { | 
| 468       is_devtools = IsDevToolsURL(params_.page_url); | 474       is_devtools = IsDevToolsURL(params_.page_url); | 
| 469       if (!is_devtools && !IsInternalResourcesURL(params_.page_url)) { | 475       if (!is_devtools && !IsInternalResourcesURL(params_.page_url)) { | 
| (...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 862   } | 868   } | 
| 863 | 869 | 
| 864   // Extension items. | 870   // Extension items. | 
| 865   if (id >= IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST && | 871   if (id >= IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST && | 
| 866       id <= IDC_EXTENSIONS_CONTEXT_CUSTOM_LAST) { | 872       id <= IDC_EXTENSIONS_CONTEXT_CUSTOM_LAST) { | 
| 867     // In the future we may add APIs for extensions to disable items, but for | 873     // In the future we may add APIs for extensions to disable items, but for | 
| 868     // now all items are implicitly enabled. | 874     // now all items are implicitly enabled. | 
| 869     return true; | 875     return true; | 
| 870   } | 876   } | 
| 871 | 877 | 
|  | 878   // Introducer items. | 
|  | 879   if (id >= IDC_INTRODUCER_CONTEXT_CUSTOM_FIRST && | 
|  | 880       id <= IDC_INTRODUCER_CONTEXT_CUSTOM_LAST) { | 
|  | 881     return true; | 
|  | 882   } | 
|  | 883 | 
| 872   switch (id) { | 884   switch (id) { | 
| 873     case IDC_BACK: | 885     case IDC_BACK: | 
| 874       return source_tab_contents_->controller().CanGoBack(); | 886       return source_tab_contents_->controller().CanGoBack(); | 
| 875 | 887 | 
| 876     case IDC_FORWARD: | 888     case IDC_FORWARD: | 
| 877       return source_tab_contents_->controller().CanGoForward(); | 889       return source_tab_contents_->controller().CanGoForward(); | 
| 878 | 890 | 
| 879     case IDC_RELOAD: | 891     case IDC_RELOAD: | 
| 880       return source_tab_contents_->delegate() && | 892       return source_tab_contents_->delegate() && | 
| 881           source_tab_contents_->delegate()->CanReloadContents( | 893           source_tab_contents_->delegate()->CanReloadContents( | 
| (...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1097   // Extension items. | 1109   // Extension items. | 
| 1098   if (id >= IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST && | 1110   if (id >= IDC_EXTENSIONS_CONTEXT_CUSTOM_FIRST && | 
| 1099       id <= IDC_EXTENSIONS_CONTEXT_CUSTOM_LAST) { | 1111       id <= IDC_EXTENSIONS_CONTEXT_CUSTOM_LAST) { | 
| 1100     ExtensionMenuItem* item = GetExtensionMenuItem(id); | 1112     ExtensionMenuItem* item = GetExtensionMenuItem(id); | 
| 1101     if (item) | 1113     if (item) | 
| 1102       return item->checked(); | 1114       return item->checked(); | 
| 1103     else | 1115     else | 
| 1104       return false; | 1116       return false; | 
| 1105   } | 1117   } | 
| 1106 | 1118 | 
|  | 1119   // Introducer items. | 
|  | 1120   if (id >= IDC_INTRODUCER_CONTEXT_CUSTOM_FIRST && | 
|  | 1121       id <= IDC_INTRODUCER_CONTEXT_CUSTOM_LAST) { | 
|  | 1122     return false; | 
|  | 1123   } | 
|  | 1124 | 
| 1107 #if defined(OS_MACOSX) | 1125 #if defined(OS_MACOSX) | 
| 1108     if (id == IDC_WRITING_DIRECTION_DEFAULT) | 1126     if (id == IDC_WRITING_DIRECTION_DEFAULT) | 
| 1109       return params_.writing_direction_default & | 1127       return params_.writing_direction_default & | 
| 1110           WebContextMenuData::CheckableMenuItemChecked; | 1128           WebContextMenuData::CheckableMenuItemChecked; | 
| 1111     if (id == IDC_WRITING_DIRECTION_RTL) | 1129     if (id == IDC_WRITING_DIRECTION_RTL) | 
| 1112       return params_.writing_direction_right_to_left & | 1130       return params_.writing_direction_right_to_left & | 
| 1113           WebContextMenuData::CheckableMenuItemChecked; | 1131           WebContextMenuData::CheckableMenuItemChecked; | 
| 1114     if (id == IDC_WRITING_DIRECTION_LTR) | 1132     if (id == IDC_WRITING_DIRECTION_LTR) | 
| 1115       return params_.writing_direction_left_to_right & | 1133       return params_.writing_direction_left_to_right & | 
| 1116           WebContextMenuData::CheckableMenuItemChecked; | 1134           WebContextMenuData::CheckableMenuItemChecked; | 
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1167         profile_->GetExtensionService()->menu_manager(); | 1185         profile_->GetExtensionService()->menu_manager(); | 
| 1168     std::map<int, ExtensionMenuItem::Id>::const_iterator i = | 1186     std::map<int, ExtensionMenuItem::Id>::const_iterator i = | 
| 1169         extension_item_map_.find(id); | 1187         extension_item_map_.find(id); | 
| 1170     if (i != extension_item_map_.end()) { | 1188     if (i != extension_item_map_.end()) { | 
| 1171       manager->ExecuteCommand(profile_, source_tab_contents_, params_, | 1189       manager->ExecuteCommand(profile_, source_tab_contents_, params_, | 
| 1172                               i->second); | 1190                               i->second); | 
| 1173     } | 1191     } | 
| 1174     return; | 1192     return; | 
| 1175   } | 1193   } | 
| 1176 | 1194 | 
|  | 1195   // Process Introducer menu items. | 
|  | 1196   if (id >= IDC_INTRODUCER_CONTEXT_CUSTOM_FIRST && | 
|  | 1197       id <= IDC_INTRODUCER_CONTEXT_CUSTOM_LAST) { | 
|  | 1198     if (IntroducerService::Introduce(source_tab_contents_, profile_, params_, | 
|  | 1199                                      introducer_commands_[id])) { | 
|  | 1200       params_.introduction_context.request_id = 0; | 
|  | 1201     } | 
|  | 1202     return; | 
|  | 1203   } | 
| 1177 | 1204 | 
| 1178   switch (id) { | 1205   switch (id) { | 
| 1179     case IDC_CONTENT_CONTEXT_OPENLINKNEWTAB: | 1206     case IDC_CONTENT_CONTEXT_OPENLINKNEWTAB: | 
| 1180       OpenURL(params_.link_url, | 1207       OpenURL(params_.link_url, | 
| 1181               source_tab_contents_->delegate() && | 1208               source_tab_contents_->delegate() && | 
| 1182               source_tab_contents_->delegate()->IsApplication() ? | 1209               source_tab_contents_->delegate()->IsApplication() ? | 
| 1183                   NEW_FOREGROUND_TAB : NEW_BACKGROUND_TAB, | 1210                   NEW_FOREGROUND_TAB : NEW_BACKGROUND_TAB, | 
| 1184               PageTransition::LINK); | 1211               PageTransition::LINK); | 
| 1185       break; | 1212       break; | 
| 1186 | 1213 | 
| (...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1463 | 1490 | 
| 1464     default: | 1491     default: | 
| 1465       NOTREACHED(); | 1492       NOTREACHED(); | 
| 1466       break; | 1493       break; | 
| 1467   } | 1494   } | 
| 1468 } | 1495 } | 
| 1469 | 1496 | 
| 1470 void RenderViewContextMenu::MenuClosed() { | 1497 void RenderViewContextMenu::MenuClosed() { | 
| 1471   source_tab_contents_->render_view_host()->ContextMenuClosed( | 1498   source_tab_contents_->render_view_host()->ContextMenuClosed( | 
| 1472       params_.custom_context); | 1499       params_.custom_context); | 
|  | 1500   if (params_.introduction_context.request_id) { | 
|  | 1501     IntroducerService::Dismiss(source_tab_contents_, | 
|  | 1502                                params_.introduction_context.request_id); | 
|  | 1503   } | 
| 1473 } | 1504 } | 
| 1474 | 1505 | 
| 1475 bool RenderViewContextMenu::IsDevCommandEnabled(int id) const { | 1506 bool RenderViewContextMenu::IsDevCommandEnabled(int id) const { | 
| 1476   const CommandLine& command_line = *CommandLine::ForCurrentProcess(); | 1507   const CommandLine& command_line = *CommandLine::ForCurrentProcess(); | 
| 1477   if (command_line.HasSwitch(switches::kAlwaysEnableDevTools)) | 1508   if (command_line.HasSwitch(switches::kAlwaysEnableDevTools)) | 
| 1478     return true; | 1509     return true; | 
| 1479 | 1510 | 
| 1480   NavigationEntry *active_entry = | 1511   NavigationEntry *active_entry = | 
| 1481       source_tab_contents_->controller().GetActiveEntry(); | 1512       source_tab_contents_->controller().GetActiveEntry(); | 
| 1482   if (!active_entry) | 1513   if (!active_entry) | 
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1538       profile_->GetPrefs()->GetString(prefs::kAcceptLanguages), | 1569       profile_->GetPrefs()->GetString(prefs::kAcceptLanguages), | 
| 1539       g_browser_process->clipboard()); | 1570       g_browser_process->clipboard()); | 
| 1540 } | 1571 } | 
| 1541 | 1572 | 
| 1542 void RenderViewContextMenu::MediaPlayerActionAt( | 1573 void RenderViewContextMenu::MediaPlayerActionAt( | 
| 1543     const gfx::Point& location, | 1574     const gfx::Point& location, | 
| 1544     const WebMediaPlayerAction& action) { | 1575     const WebMediaPlayerAction& action) { | 
| 1545   source_tab_contents_->render_view_host()->MediaPlayerActionAt( | 1576   source_tab_contents_->render_view_host()->MediaPlayerActionAt( | 
| 1546       location, action); | 1577       location, action); | 
| 1547 } | 1578 } | 
| OLD | NEW | 
|---|