| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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/ui/browser.h" | 5 #include "chrome/browser/ui/browser.h" |
| 6 | 6 |
| 7 #if defined(OS_WIN) | 7 #if defined(OS_WIN) |
| 8 #include <windows.h> | 8 #include <windows.h> |
| 9 #include <shellapi.h> | 9 #include <shellapi.h> |
| 10 #endif // defined(OS_WIN) | 10 #endif // defined(OS_WIN) |
| (...skipping 867 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 878 return false; | 878 return false; |
| 879 } | 879 } |
| 880 | 880 |
| 881 // static | 881 // static |
| 882 void Browser::JSOutOfMemoryHelper(WebContents* web_contents) { | 882 void Browser::JSOutOfMemoryHelper(WebContents* web_contents) { |
| 883 InfoBarService* infobar_service = | 883 InfoBarService* infobar_service = |
| 884 InfoBarService::FromWebContents(web_contents); | 884 InfoBarService::FromWebContents(web_contents); |
| 885 if (!infobar_service) | 885 if (!infobar_service) |
| 886 return; | 886 return; |
| 887 | 887 |
| 888 infobar_service->AddInfoBar(new SimpleAlertInfoBarDelegate( | 888 SimpleAlertInfoBarDelegate::Create( |
| 889 infobar_service, | 889 infobar_service, NULL, |
| 890 NULL, | 890 l10n_util::GetStringUTF16(IDS_JS_OUT_OF_MEMORY_PROMPT), true); |
| 891 l10n_util::GetStringUTF16(IDS_JS_OUT_OF_MEMORY_PROMPT), | |
| 892 true)); | |
| 893 } | 891 } |
| 894 | 892 |
| 895 // static | 893 // static |
| 896 void Browser::RegisterProtocolHandlerHelper(WebContents* web_contents, | 894 void Browser::RegisterProtocolHandlerHelper(WebContents* web_contents, |
| 897 const std::string& protocol, | 895 const std::string& protocol, |
| 898 const GURL& url, | 896 const GURL& url, |
| 899 const string16& title, | 897 const string16& title, |
| 900 bool user_gesture, | 898 bool user_gesture, |
| 901 BrowserWindow* window) { | 899 BrowserWindow* window) { |
| 902 Profile* profile = | 900 Profile* profile = |
| (...skipping 19 matching lines...) Expand all Loading... |
| 922 return; | 920 return; |
| 923 } | 921 } |
| 924 | 922 |
| 925 // Make sure content-setting icon is turned off in case the page does | 923 // Make sure content-setting icon is turned off in case the page does |
| 926 // ungestured and gestured RPH calls. | 924 // ungestured and gestured RPH calls. |
| 927 if (window) { | 925 if (window) { |
| 928 tab_content_settings->ClearPendingProtocolHandler(); | 926 tab_content_settings->ClearPendingProtocolHandler(); |
| 929 window->GetLocationBar()->UpdateContentSettingsIcons(); | 927 window->GetLocationBar()->UpdateContentSettingsIcons(); |
| 930 } | 928 } |
| 931 | 929 |
| 932 content::RecordAction( | 930 RegisterProtocolHandlerInfoBarDelegate::Create( |
| 933 UserMetricsAction("RegisterProtocolHandler.InfoBar_Shown")); | 931 InfoBarService::FromWebContents(web_contents), registry, handler); |
| 934 InfoBarService* infobar_service = | |
| 935 InfoBarService::FromWebContents(web_contents); | |
| 936 | |
| 937 RegisterProtocolHandlerInfoBarDelegate* rph_delegate = | |
| 938 new RegisterProtocolHandlerInfoBarDelegate(infobar_service, | |
| 939 registry, | |
| 940 handler); | |
| 941 | |
| 942 for (size_t i = 0; i < infobar_service->GetInfoBarCount(); i++) { | |
| 943 InfoBarDelegate* delegate = infobar_service->GetInfoBarDelegateAt(i); | |
| 944 RegisterProtocolHandlerInfoBarDelegate* cast_delegate = | |
| 945 delegate->AsRegisterProtocolHandlerInfoBarDelegate(); | |
| 946 if (cast_delegate != NULL && cast_delegate->IsReplacedBy(rph_delegate)) { | |
| 947 infobar_service->ReplaceInfoBar(cast_delegate, rph_delegate); | |
| 948 rph_delegate = NULL; | |
| 949 break; | |
| 950 } | |
| 951 } | |
| 952 | |
| 953 if (rph_delegate != NULL) | |
| 954 infobar_service->AddInfoBar(rph_delegate); | |
| 955 } | 932 } |
| 956 | 933 |
| 957 // static | 934 // static |
| 958 void Browser::FindReplyHelper(WebContents* web_contents, | 935 void Browser::FindReplyHelper(WebContents* web_contents, |
| 959 int request_id, | 936 int request_id, |
| 960 int number_of_matches, | 937 int number_of_matches, |
| 961 const gfx::Rect& selection_rect, | 938 const gfx::Rect& selection_rect, |
| 962 int active_match_ordinal, | 939 int active_match_ordinal, |
| 963 bool final_update) { | 940 bool final_update) { |
| 964 FindTabHelper* find_tab_helper = FindTabHelper::FromWebContents(web_contents); | 941 FindTabHelper* find_tab_helper = FindTabHelper::FromWebContents(web_contents); |
| 965 if (!find_tab_helper) | 942 if (!find_tab_helper) |
| 966 return; | 943 return; |
| 967 | 944 |
| 968 find_tab_helper->HandleFindReply(request_id, | 945 find_tab_helper->HandleFindReply(request_id, |
| 969 number_of_matches, | 946 number_of_matches, |
| 970 selection_rect, | 947 selection_rect, |
| 971 active_match_ordinal, | 948 active_match_ordinal, |
| 972 final_update); | 949 final_update); |
| 973 } | 950 } |
| 974 | 951 |
| 975 // static | |
| 976 void Browser::RequestMediaAccessPermissionHelper( | |
| 977 content::WebContents* web_contents, | |
| 978 const content::MediaStreamRequest& request, | |
| 979 const content::MediaResponseCallback& callback) { | |
| 980 Profile* profile = | |
| 981 Profile::FromBrowserContext(web_contents->GetBrowserContext()); | |
| 982 | |
| 983 scoped_ptr<MediaStreamDevicesController> | |
| 984 controller(new MediaStreamDevicesController(profile, | |
| 985 request, | |
| 986 callback)); | |
| 987 if (!controller->DismissInfoBarAndTakeActionOnSettings()) { | |
| 988 InfoBarService* infobar_service = | |
| 989 InfoBarService::FromWebContents(web_contents); | |
| 990 InfoBarDelegate* old_infobar = NULL; | |
| 991 for (size_t i = 0; i < infobar_service->GetInfoBarCount(); ++i) { | |
| 992 old_infobar = infobar_service->GetInfoBarDelegateAt(i)-> | |
| 993 AsMediaStreamInfoBarDelegate(); | |
| 994 if (old_infobar) | |
| 995 break; | |
| 996 } | |
| 997 | |
| 998 InfoBarDelegate* infobar = | |
| 999 new MediaStreamInfoBarDelegate(infobar_service, controller.release()); | |
| 1000 if (old_infobar) | |
| 1001 infobar_service->ReplaceInfoBar(old_infobar, infobar); | |
| 1002 else | |
| 1003 infobar_service->AddInfoBar(infobar); | |
| 1004 } | |
| 1005 } | |
| 1006 | |
| 1007 void Browser::UpdateUIForNavigationInTab(WebContents* contents, | 952 void Browser::UpdateUIForNavigationInTab(WebContents* contents, |
| 1008 content::PageTransition transition, | 953 content::PageTransition transition, |
| 1009 bool user_initiated) { | 954 bool user_initiated) { |
| 1010 tab_strip_model_->TabNavigating(contents, transition); | 955 tab_strip_model_->TabNavigating(contents, transition); |
| 1011 | 956 |
| 1012 bool contents_is_selected = | 957 bool contents_is_selected = |
| 1013 contents == tab_strip_model_->GetActiveWebContents(); | 958 contents == tab_strip_model_->GetActiveWebContents(); |
| 1014 if (user_initiated && contents_is_selected && window()->GetLocationBar()) { | 959 if (user_initiated && contents_is_selected && window()->GetLocationBar()) { |
| 1015 // Forcibly reset the location bar if the url is going to change in the | 960 // Forcibly reset the location bar if the url is going to change in the |
| 1016 // current tab, since otherwise it won't discard any ongoing user edits, | 961 // current tab, since otherwise it won't discard any ongoing user edits, |
| (...skipping 582 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1599 return; | 1544 return; |
| 1600 | 1545 |
| 1601 chrome::ShowHungRendererDialog(source); | 1546 chrome::ShowHungRendererDialog(source); |
| 1602 } | 1547 } |
| 1603 | 1548 |
| 1604 void Browser::RendererResponsive(WebContents* source) { | 1549 void Browser::RendererResponsive(WebContents* source) { |
| 1605 chrome::HideHungRendererDialog(source); | 1550 chrome::HideHungRendererDialog(source); |
| 1606 } | 1551 } |
| 1607 | 1552 |
| 1608 void Browser::WorkerCrashed(WebContents* source) { | 1553 void Browser::WorkerCrashed(WebContents* source) { |
| 1609 InfoBarService* infobar_service = | 1554 SimpleAlertInfoBarDelegate::Create( |
| 1610 InfoBarService::FromWebContents(source); | 1555 InfoBarService::FromWebContents(source), NULL, |
| 1611 infobar_service->AddInfoBar(new SimpleAlertInfoBarDelegate( | 1556 l10n_util::GetStringUTF16(IDS_WEBWORKER_CRASHED_PROMPT), true); |
| 1612 infobar_service, | |
| 1613 NULL, | |
| 1614 l10n_util::GetStringUTF16(IDS_WEBWORKER_CRASHED_PROMPT), | |
| 1615 true)); | |
| 1616 } | 1557 } |
| 1617 | 1558 |
| 1618 void Browser::DidNavigateMainFramePostCommit(WebContents* web_contents) { | 1559 void Browser::DidNavigateMainFramePostCommit(WebContents* web_contents) { |
| 1619 if (web_contents == tab_strip_model_->GetActiveWebContents()) | 1560 if (web_contents == tab_strip_model_->GetActiveWebContents()) |
| 1620 UpdateBookmarkBarState(BOOKMARK_BAR_STATE_CHANGE_TAB_STATE); | 1561 UpdateBookmarkBarState(BOOKMARK_BAR_STATE_CHANGE_TAB_STATE); |
| 1621 } | 1562 } |
| 1622 | 1563 |
| 1623 void Browser::DidNavigateToPendingEntry(WebContents* web_contents) { | 1564 void Browser::DidNavigateToPendingEntry(WebContents* web_contents) { |
| 1624 if (web_contents == tab_strip_model_->GetActiveWebContents()) | 1565 if (web_contents == tab_strip_model_->GetActiveWebContents()) |
| 1625 UpdateBookmarkBarState(BOOKMARK_BAR_STATE_CHANGE_TAB_STATE); | 1566 UpdateBookmarkBarState(BOOKMARK_BAR_STATE_CHANGE_TAB_STATE); |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1685 const string16& title, | 1626 const string16& title, |
| 1686 bool user_gesture) { | 1627 bool user_gesture) { |
| 1687 RegisterProtocolHandlerHelper( | 1628 RegisterProtocolHandlerHelper( |
| 1688 web_contents, protocol, url, title, user_gesture, window()); | 1629 web_contents, protocol, url, title, user_gesture, window()); |
| 1689 } | 1630 } |
| 1690 | 1631 |
| 1691 void Browser::RegisterIntentHandler( | 1632 void Browser::RegisterIntentHandler( |
| 1692 WebContents* web_contents, | 1633 WebContents* web_contents, |
| 1693 const webkit_glue::WebIntentServiceData& data, | 1634 const webkit_glue::WebIntentServiceData& data, |
| 1694 bool user_gesture) { | 1635 bool user_gesture) { |
| 1695 RegisterIntentHandlerHelper(web_contents, data, user_gesture); | 1636 RegisterIntentHandlerInfoBarDelegate::Create(web_contents, data); |
| 1696 } | 1637 } |
| 1697 | 1638 |
| 1698 void Browser::WebIntentDispatch( | 1639 void Browser::WebIntentDispatch( |
| 1699 WebContents* web_contents, | 1640 WebContents* web_contents, |
| 1700 content::WebIntentsDispatcher* intents_dispatcher) { | 1641 content::WebIntentsDispatcher* intents_dispatcher) { |
| 1701 if (!web_intents::IsWebIntentsEnabledForProfile(profile_)) { | 1642 if (!web_intents::IsWebIntentsEnabledForProfile(profile_)) { |
| 1702 web_intents::RecordIntentsDispatchDisabled(); | 1643 web_intents::RecordIntentsDispatchDisabled(); |
| 1703 delete intents_dispatcher; | 1644 delete intents_dispatcher; |
| 1704 return; | 1645 return; |
| 1705 } | 1646 } |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1781 } | 1722 } |
| 1782 | 1723 |
| 1783 void Browser::LostMouseLock() { | 1724 void Browser::LostMouseLock() { |
| 1784 fullscreen_controller_->LostMouseLock(); | 1725 fullscreen_controller_->LostMouseLock(); |
| 1785 } | 1726 } |
| 1786 | 1727 |
| 1787 void Browser::RequestMediaAccessPermission( | 1728 void Browser::RequestMediaAccessPermission( |
| 1788 content::WebContents* web_contents, | 1729 content::WebContents* web_contents, |
| 1789 const content::MediaStreamRequest& request, | 1730 const content::MediaStreamRequest& request, |
| 1790 const content::MediaResponseCallback& callback) { | 1731 const content::MediaResponseCallback& callback) { |
| 1791 RequestMediaAccessPermissionHelper(web_contents, request, callback); | 1732 MediaStreamInfoBarDelegate::Create(web_contents, request, callback); |
| 1792 } | 1733 } |
| 1793 | 1734 |
| 1794 bool Browser::RequestPpapiBrokerPermission( | 1735 bool Browser::RequestPpapiBrokerPermission( |
| 1795 WebContents* web_contents, | 1736 WebContents* web_contents, |
| 1796 const GURL& url, | 1737 const GURL& url, |
| 1797 const FilePath& plugin_path, | 1738 const FilePath& plugin_path, |
| 1798 const base::Callback<void(bool)>& callback) { | 1739 const base::Callback<void(bool)>& callback) { |
| 1799 PepperBrokerInfoBarDelegate::Show(web_contents, url, plugin_path, callback); | 1740 PepperBrokerInfoBarDelegate::Create(web_contents, url, plugin_path, callback); |
| 1800 return true; | 1741 return true; |
| 1801 } | 1742 } |
| 1802 | 1743 |
| 1803 /////////////////////////////////////////////////////////////////////////////// | 1744 /////////////////////////////////////////////////////////////////////////////// |
| 1804 // Browser, CoreTabHelperDelegate implementation: | 1745 // Browser, CoreTabHelperDelegate implementation: |
| 1805 | 1746 |
| 1806 void Browser::SwapTabContents(content::WebContents* old_contents, | 1747 void Browser::SwapTabContents(content::WebContents* old_contents, |
| 1807 content::WebContents* new_contents) { | 1748 content::WebContents* new_contents) { |
| 1808 int index = tab_strip_model_->GetIndexOfWebContents(old_contents); | 1749 int index = tab_strip_model_->GetIndexOfWebContents(old_contents); |
| 1809 DCHECK_NE(TabStripModel::kNoTab, index); | 1750 DCHECK_NE(TabStripModel::kNoTab, index); |
| (...skipping 628 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2438 if (contents && !allow_js_access) { | 2379 if (contents && !allow_js_access) { |
| 2439 contents->web_contents()->GetController().LoadURL( | 2380 contents->web_contents()->GetController().LoadURL( |
| 2440 target_url, | 2381 target_url, |
| 2441 content::Referrer(), | 2382 content::Referrer(), |
| 2442 content::PAGE_TRANSITION_LINK, | 2383 content::PAGE_TRANSITION_LINK, |
| 2443 std::string()); // No extra headers. | 2384 std::string()); // No extra headers. |
| 2444 } | 2385 } |
| 2445 | 2386 |
| 2446 return contents != NULL; | 2387 return contents != NULL; |
| 2447 } | 2388 } |
| OLD | NEW |