| 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 791 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 802 selection_navigation_url_ = match.destination_url; | 802 selection_navigation_url_ = match.destination_url; |
| 803 if (!selection_navigation_url_.is_valid()) | 803 if (!selection_navigation_url_.is_valid()) |
| 804 return; | 804 return; |
| 805 | 805 |
| 806 string16 printable_selection_text = PrintableSelectionText(); | 806 string16 printable_selection_text = PrintableSelectionText(); |
| 807 // Escape "&" as "&&". | 807 // Escape "&" as "&&". |
| 808 for (size_t i = printable_selection_text.find('&'); i != string16::npos; | 808 for (size_t i = printable_selection_text.find('&'); i != string16::npos; |
| 809 i = printable_selection_text.find('&', i + 2)) | 809 i = printable_selection_text.find('&', i + 2)) |
| 810 printable_selection_text.insert(i, 1, '&'); | 810 printable_selection_text.insert(i, 1, '&'); |
| 811 | 811 |
| 812 if (match.transition == PageTransition::TYPED) { | 812 if (match.transition == content::PAGE_TRANSITION_TYPED) { |
| 813 if (ChildProcessSecurityPolicy::GetInstance()->IsWebSafeScheme( | 813 if (ChildProcessSecurityPolicy::GetInstance()->IsWebSafeScheme( |
| 814 selection_navigation_url_.scheme())) { | 814 selection_navigation_url_.scheme())) { |
| 815 menu_model_.AddItem( | 815 menu_model_.AddItem( |
| 816 IDC_CONTENT_CONTEXT_GOTOURL, | 816 IDC_CONTENT_CONTEXT_GOTOURL, |
| 817 l10n_util::GetStringFUTF16(IDS_CONTENT_CONTEXT_GOTOURL, | 817 l10n_util::GetStringFUTF16(IDS_CONTENT_CONTEXT_GOTOURL, |
| 818 printable_selection_text)); | 818 printable_selection_text)); |
| 819 } | 819 } |
| 820 } else { | 820 } else { |
| 821 const TemplateURL* const default_provider = | 821 const TemplateURL* const default_provider = |
| 822 TemplateURLServiceFactory::GetForProfile(profile_)-> | 822 TemplateURLServiceFactory::GetForProfile(profile_)-> |
| (...skipping 635 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1458 UserMetrics::RecordAction( | 1458 UserMetrics::RecordAction( |
| 1459 UserMetricsAction("RegisterProtocolHandler.ContextMenu_Open")); | 1459 UserMetricsAction("RegisterProtocolHandler.ContextMenu_Open")); |
| 1460 int handlerIndex = id - IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_FIRST; | 1460 int handlerIndex = id - IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_FIRST; |
| 1461 WindowOpenDisposition disposition = | 1461 WindowOpenDisposition disposition = |
| 1462 ForceNewTabDispositionFromEventFlags(event_flags); | 1462 ForceNewTabDispositionFromEventFlags(event_flags); |
| 1463 OpenURL( | 1463 OpenURL( |
| 1464 handlers[handlerIndex].TranslateUrl(params_.link_url), | 1464 handlers[handlerIndex].TranslateUrl(params_.link_url), |
| 1465 params_.frame_url.is_empty() ? params_.page_url : params_.frame_url, | 1465 params_.frame_url.is_empty() ? params_.page_url : params_.frame_url, |
| 1466 params_.frame_id, | 1466 params_.frame_id, |
| 1467 disposition, | 1467 disposition, |
| 1468 PageTransition::LINK); | 1468 content::PAGE_TRANSITION_LINK); |
| 1469 return; | 1469 return; |
| 1470 } | 1470 } |
| 1471 | 1471 |
| 1472 switch (id) { | 1472 switch (id) { |
| 1473 case IDC_CONTENT_CONTEXT_OPENLINKNEWTAB: | 1473 case IDC_CONTENT_CONTEXT_OPENLINKNEWTAB: |
| 1474 OpenURL( | 1474 OpenURL( |
| 1475 params_.link_url, | 1475 params_.link_url, |
| 1476 params_.frame_url.is_empty() ? params_.page_url : params_.frame_url, | 1476 params_.frame_url.is_empty() ? params_.page_url : params_.frame_url, |
| 1477 params_.frame_id, | 1477 params_.frame_id, |
| 1478 source_tab_contents_->delegate() && | 1478 source_tab_contents_->delegate() && |
| 1479 source_tab_contents_->delegate()->IsApplication() ? | 1479 source_tab_contents_->delegate()->IsApplication() ? |
| 1480 NEW_FOREGROUND_TAB : NEW_BACKGROUND_TAB, | 1480 NEW_FOREGROUND_TAB : NEW_BACKGROUND_TAB, |
| 1481 PageTransition::LINK); | 1481 content::PAGE_TRANSITION_LINK); |
| 1482 break; | 1482 break; |
| 1483 | 1483 |
| 1484 case IDC_CONTENT_CONTEXT_OPENLINKNEWWINDOW: | 1484 case IDC_CONTENT_CONTEXT_OPENLINKNEWWINDOW: |
| 1485 OpenURL( | 1485 OpenURL( |
| 1486 params_.link_url, | 1486 params_.link_url, |
| 1487 params_.frame_url.is_empty() ? params_.page_url : params_.frame_url, | 1487 params_.frame_url.is_empty() ? params_.page_url : params_.frame_url, |
| 1488 params_.frame_id, | 1488 params_.frame_id, |
| 1489 NEW_WINDOW, PageTransition::LINK); | 1489 NEW_WINDOW, content::PAGE_TRANSITION_LINK); |
| 1490 break; | 1490 break; |
| 1491 | 1491 |
| 1492 case IDC_CONTENT_CONTEXT_OPENLINKOFFTHERECORD: | 1492 case IDC_CONTENT_CONTEXT_OPENLINKOFFTHERECORD: |
| 1493 OpenURL(params_.link_url, | 1493 OpenURL(params_.link_url, |
| 1494 GURL(), | 1494 GURL(), |
| 1495 params_.frame_id, | 1495 params_.frame_id, |
| 1496 OFF_THE_RECORD, | 1496 OFF_THE_RECORD, |
| 1497 PageTransition::LINK); | 1497 content::PAGE_TRANSITION_LINK); |
| 1498 break; | 1498 break; |
| 1499 | 1499 |
| 1500 case IDC_CONTENT_CONTEXT_SAVEAVAS: | 1500 case IDC_CONTENT_CONTEXT_SAVEAVAS: |
| 1501 case IDC_CONTENT_CONTEXT_SAVEIMAGEAS: | 1501 case IDC_CONTENT_CONTEXT_SAVEIMAGEAS: |
| 1502 case IDC_CONTENT_CONTEXT_SAVELINKAS: { | 1502 case IDC_CONTENT_CONTEXT_SAVELINKAS: { |
| 1503 download_stats::RecordDownloadCount( | 1503 download_stats::RecordDownloadCount( |
| 1504 download_stats::INITIATED_BY_CONTEXT_MENU_COUNT); | 1504 download_stats::INITIATED_BY_CONTEXT_MENU_COUNT); |
| 1505 const GURL& referrer = | 1505 const GURL& referrer = |
| 1506 params_.frame_url.is_empty() ? params_.page_url : params_.frame_url; | 1506 params_.frame_url.is_empty() ? params_.page_url : params_.frame_url; |
| 1507 const GURL& url = | 1507 const GURL& url = |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1526 case IDC_CONTENT_CONTEXT_COPYIMAGE: | 1526 case IDC_CONTENT_CONTEXT_COPYIMAGE: |
| 1527 CopyImageAt(params_.x, params_.y); | 1527 CopyImageAt(params_.x, params_.y); |
| 1528 break; | 1528 break; |
| 1529 | 1529 |
| 1530 case IDC_CONTENT_CONTEXT_OPENIMAGENEWTAB: | 1530 case IDC_CONTENT_CONTEXT_OPENIMAGENEWTAB: |
| 1531 case IDC_CONTENT_CONTEXT_OPENAVNEWTAB: | 1531 case IDC_CONTENT_CONTEXT_OPENAVNEWTAB: |
| 1532 OpenURL( | 1532 OpenURL( |
| 1533 params_.src_url, | 1533 params_.src_url, |
| 1534 params_.frame_url.is_empty() ? params_.page_url : params_.frame_url, | 1534 params_.frame_url.is_empty() ? params_.page_url : params_.frame_url, |
| 1535 params_.frame_id, | 1535 params_.frame_id, |
| 1536 NEW_BACKGROUND_TAB, PageTransition::LINK); | 1536 NEW_BACKGROUND_TAB, content::PAGE_TRANSITION_LINK); |
| 1537 break; | 1537 break; |
| 1538 | 1538 |
| 1539 case IDC_CONTENT_CONTEXT_PLAYPAUSE: { | 1539 case IDC_CONTENT_CONTEXT_PLAYPAUSE: { |
| 1540 bool play = !!(params_.media_flags & WebContextMenuData::MediaPaused); | 1540 bool play = !!(params_.media_flags & WebContextMenuData::MediaPaused); |
| 1541 if (play) { | 1541 if (play) { |
| 1542 UserMetrics::RecordAction(UserMetricsAction("MediaContextMenu_Play")); | 1542 UserMetrics::RecordAction(UserMetricsAction("MediaContextMenu_Play")); |
| 1543 } else { | 1543 } else { |
| 1544 UserMetrics::RecordAction(UserMetricsAction("MediaContextMenu_Pause")); | 1544 UserMetrics::RecordAction(UserMetricsAction("MediaContextMenu_Pause")); |
| 1545 } | 1545 } |
| 1546 MediaPlayerActionAt(gfx::Point(params_.x, params_.y), | 1546 MediaPlayerActionAt(gfx::Point(params_.x, params_.y), |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1723 break; | 1723 break; |
| 1724 | 1724 |
| 1725 case IDC_CONTENT_CONTEXT_SEARCHWEBFOR: | 1725 case IDC_CONTENT_CONTEXT_SEARCHWEBFOR: |
| 1726 case IDC_CONTENT_CONTEXT_GOTOURL: { | 1726 case IDC_CONTENT_CONTEXT_GOTOURL: { |
| 1727 WindowOpenDisposition disposition = | 1727 WindowOpenDisposition disposition = |
| 1728 ForceNewTabDispositionFromEventFlags(event_flags); | 1728 ForceNewTabDispositionFromEventFlags(event_flags); |
| 1729 OpenURL(selection_navigation_url_, | 1729 OpenURL(selection_navigation_url_, |
| 1730 GURL(), | 1730 GURL(), |
| 1731 params_.frame_id, | 1731 params_.frame_id, |
| 1732 disposition, | 1732 disposition, |
| 1733 PageTransition::LINK); | 1733 content::PAGE_TRANSITION_LINK); |
| 1734 break; | 1734 break; |
| 1735 } | 1735 } |
| 1736 | 1736 |
| 1737 case IDC_SPELLCHECK_SUGGESTION_0: | 1737 case IDC_SPELLCHECK_SUGGESTION_0: |
| 1738 case IDC_SPELLCHECK_SUGGESTION_1: | 1738 case IDC_SPELLCHECK_SUGGESTION_1: |
| 1739 case IDC_SPELLCHECK_SUGGESTION_2: | 1739 case IDC_SPELLCHECK_SUGGESTION_2: |
| 1740 case IDC_SPELLCHECK_SUGGESTION_3: | 1740 case IDC_SPELLCHECK_SUGGESTION_3: |
| 1741 case IDC_SPELLCHECK_SUGGESTION_4: { | 1741 case IDC_SPELLCHECK_SUGGESTION_4: { |
| 1742 rvh->Replace( | 1742 rvh->Replace( |
| 1743 params_.dictionary_suggestions[id - IDC_SPELLCHECK_SUGGESTION_0]); | 1743 params_.dictionary_suggestions[id - IDC_SPELLCHECK_SUGGESTION_0]); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 1760 UTF16ToUTF8(params_.misspelled_word)); | 1760 UTF16ToUTF8(params_.misspelled_word)); |
| 1761 SpellCheckerPlatform::AddWord(params_.misspelled_word); | 1761 SpellCheckerPlatform::AddWord(params_.misspelled_word); |
| 1762 break; | 1762 break; |
| 1763 } | 1763 } |
| 1764 | 1764 |
| 1765 case IDC_CONTENT_CONTEXT_LANGUAGE_SETTINGS: { | 1765 case IDC_CONTENT_CONTEXT_LANGUAGE_SETTINGS: { |
| 1766 WindowOpenDisposition disposition = | 1766 WindowOpenDisposition disposition = |
| 1767 ForceNewTabDispositionFromEventFlags(event_flags); | 1767 ForceNewTabDispositionFromEventFlags(event_flags); |
| 1768 std::string url = std::string(chrome::kChromeUISettingsURL) + | 1768 std::string url = std::string(chrome::kChromeUISettingsURL) + |
| 1769 chrome::kLanguageOptionsSubPage; | 1769 chrome::kLanguageOptionsSubPage; |
| 1770 OpenURL(GURL(url), GURL(), 0, disposition, PageTransition::LINK); | 1770 OpenURL(GURL(url), GURL(), 0, disposition, content::PAGE_TRANSITION_LINK); |
| 1771 break; | 1771 break; |
| 1772 } | 1772 } |
| 1773 | 1773 |
| 1774 case IDC_SPELLPANEL_TOGGLE: { | 1774 case IDC_SPELLPANEL_TOGGLE: { |
| 1775 rvh->Send(new SpellCheckMsg_ToggleSpellPanel( | 1775 rvh->Send(new SpellCheckMsg_ToggleSpellPanel( |
| 1776 rvh->routing_id(), SpellCheckerPlatform::SpellingPanelVisible())); | 1776 rvh->routing_id(), SpellCheckerPlatform::SpellingPanelVisible())); |
| 1777 break; | 1777 break; |
| 1778 } | 1778 } |
| 1779 | 1779 |
| 1780 #if defined(OS_MACOSX) | 1780 #if defined(OS_MACOSX) |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1795 LookUpInDictionary(); | 1795 LookUpInDictionary(); |
| 1796 break; | 1796 break; |
| 1797 #endif // OS_MACOSX | 1797 #endif // OS_MACOSX |
| 1798 case IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_SETTINGS: { | 1798 case IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_SETTINGS: { |
| 1799 UserMetrics::RecordAction( | 1799 UserMetrics::RecordAction( |
| 1800 UserMetricsAction("RegisterProtocolHandler.ContextMenu_Settings")); | 1800 UserMetricsAction("RegisterProtocolHandler.ContextMenu_Settings")); |
| 1801 WindowOpenDisposition disposition = | 1801 WindowOpenDisposition disposition = |
| 1802 ForceNewTabDispositionFromEventFlags(event_flags); | 1802 ForceNewTabDispositionFromEventFlags(event_flags); |
| 1803 std::string url = std::string(chrome::kChromeUISettingsURL) + | 1803 std::string url = std::string(chrome::kChromeUISettingsURL) + |
| 1804 chrome::kHandlerSettingsSubPage; | 1804 chrome::kHandlerSettingsSubPage; |
| 1805 OpenURL(GURL(url), GURL(), 0, disposition, PageTransition::LINK); | 1805 OpenURL(GURL(url), GURL(), 0, disposition, content::PAGE_TRANSITION_LINK); |
| 1806 break; | 1806 break; |
| 1807 } | 1807 } |
| 1808 | 1808 |
| 1809 case IDC_CONTENT_CONTEXT_ADDSEARCHENGINE: { | 1809 case IDC_CONTENT_CONTEXT_ADDSEARCHENGINE: { |
| 1810 // Make sure the model is loaded. | 1810 // Make sure the model is loaded. |
| 1811 TemplateURLService* model = | 1811 TemplateURLService* model = |
| 1812 TemplateURLServiceFactory::GetForProfile(profile_); | 1812 TemplateURLServiceFactory::GetForProfile(profile_); |
| 1813 if (!model) | 1813 if (!model) |
| 1814 return; | 1814 return; |
| 1815 model->Load(); | 1815 model->Load(); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 1843 prefs->SetBoolean(prefs::kSpeechInputFilterProfanities, filter); | 1843 prefs->SetBoolean(prefs::kSpeechInputFilterProfanities, filter); |
| 1844 profile_->GetSpeechInputPreferences()->set_filter_profanities(filter); | 1844 profile_->GetSpeechInputPreferences()->set_filter_profanities(filter); |
| 1845 break; | 1845 break; |
| 1846 } | 1846 } |
| 1847 | 1847 |
| 1848 case IDC_CONTENT_CONTEXT_SPEECH_INPUT_ABOUT: { | 1848 case IDC_CONTENT_CONTEXT_SPEECH_INPUT_ABOUT: { |
| 1849 GURL url(chrome::kSpeechInputAboutURL); | 1849 GURL url(chrome::kSpeechInputAboutURL); |
| 1850 GURL localized_url = google_util::AppendGoogleLocaleParam(url); | 1850 GURL localized_url = google_util::AppendGoogleLocaleParam(url); |
| 1851 // Open URL with no referrer field (because user clicked on menu item). | 1851 // Open URL with no referrer field (because user clicked on menu item). |
| 1852 OpenURL(localized_url, GURL(), 0, NEW_FOREGROUND_TAB, | 1852 OpenURL(localized_url, GURL(), 0, NEW_FOREGROUND_TAB, |
| 1853 PageTransition::LINK); | 1853 content::PAGE_TRANSITION_LINK); |
| 1854 break; | 1854 break; |
| 1855 } | 1855 } |
| 1856 | 1856 |
| 1857 default: | 1857 default: |
| 1858 NOTREACHED(); | 1858 NOTREACHED(); |
| 1859 break; | 1859 break; |
| 1860 } | 1860 } |
| 1861 } | 1861 } |
| 1862 | 1862 |
| 1863 ProtocolHandlerRegistry::ProtocolHandlerList | 1863 ProtocolHandlerRegistry::ProtocolHandlerList |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1911 string16 RenderViewContextMenu::PrintableSelectionText() { | 1911 string16 RenderViewContextMenu::PrintableSelectionText() { |
| 1912 return ui::TruncateString(params_.selection_text, | 1912 return ui::TruncateString(params_.selection_text, |
| 1913 kMaxSelectionTextLength); | 1913 kMaxSelectionTextLength); |
| 1914 } | 1914 } |
| 1915 | 1915 |
| 1916 // Controller functions -------------------------------------------------------- | 1916 // Controller functions -------------------------------------------------------- |
| 1917 | 1917 |
| 1918 void RenderViewContextMenu::OpenURL( | 1918 void RenderViewContextMenu::OpenURL( |
| 1919 const GURL& url, const GURL& referrer, int64 frame_id, | 1919 const GURL& url, const GURL& referrer, int64 frame_id, |
| 1920 WindowOpenDisposition disposition, | 1920 WindowOpenDisposition disposition, |
| 1921 PageTransition::Type transition) { | 1921 content::PageTransition transition) { |
| 1922 TabContents* new_contents = | 1922 TabContents* new_contents = |
| 1923 source_tab_contents_->OpenURL(url, referrer, disposition, transition); | 1923 source_tab_contents_->OpenURL(url, referrer, disposition, transition); |
| 1924 | 1924 |
| 1925 if (new_contents) { | 1925 if (new_contents) { |
| 1926 content::RetargetingDetails details; | 1926 content::RetargetingDetails details; |
| 1927 details.source_tab_contents = source_tab_contents_; | 1927 details.source_tab_contents = source_tab_contents_; |
| 1928 details.source_frame_id = frame_id; | 1928 details.source_frame_id = frame_id; |
| 1929 details.target_url = url; | 1929 details.target_url = url; |
| 1930 details.target_tab_contents = new_contents; | 1930 details.target_tab_contents = new_contents; |
| 1931 NotificationService::current()->Notify( | 1931 NotificationService::current()->Notify( |
| (...skipping 20 matching lines...) Expand all Loading... |
| 1952 profile_->GetPrefs()->GetString(prefs::kAcceptLanguages), | 1952 profile_->GetPrefs()->GetString(prefs::kAcceptLanguages), |
| 1953 g_browser_process->clipboard()); | 1953 g_browser_process->clipboard()); |
| 1954 } | 1954 } |
| 1955 | 1955 |
| 1956 void RenderViewContextMenu::MediaPlayerActionAt( | 1956 void RenderViewContextMenu::MediaPlayerActionAt( |
| 1957 const gfx::Point& location, | 1957 const gfx::Point& location, |
| 1958 const WebMediaPlayerAction& action) { | 1958 const WebMediaPlayerAction& action) { |
| 1959 source_tab_contents_->render_view_host()-> | 1959 source_tab_contents_->render_view_host()-> |
| 1960 ExecuteMediaPlayerActionAtLocation(location, action); | 1960 ExecuteMediaPlayerActionAtLocation(location, action); |
| 1961 } | 1961 } |
| OLD | NEW |