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 "chrome/browser/chrome_content_browser_client.h" | 5 #include "chrome/browser/chrome_content_browser_client.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 #include <utility> | 8 #include <utility> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 #if defined(ENABLE_CAPTIVE_PORTAL_DETECTION) | 225 #if defined(ENABLE_CAPTIVE_PORTAL_DETECTION) |
226 #include "chrome/browser/captive_portal/captive_portal_tab_helper.h" | 226 #include "chrome/browser/captive_portal/captive_portal_tab_helper.h" |
227 #endif | 227 #endif |
228 | 228 |
229 #if defined(ENABLE_EXTENSIONS) | 229 #if defined(ENABLE_EXTENSIONS) |
230 #include "chrome/browser/extensions/api/web_request/web_request_api.h" | 230 #include "chrome/browser/extensions/api/web_request/web_request_api.h" |
231 #include "chrome/browser/guest_view/guest_view_base.h" | 231 #include "chrome/browser/guest_view/guest_view_base.h" |
232 #include "chrome/browser/guest_view/guest_view_constants.h" | 232 #include "chrome/browser/guest_view/guest_view_constants.h" |
233 #include "chrome/browser/guest_view/guest_view_manager.h" | 233 #include "chrome/browser/guest_view/guest_view_manager.h" |
234 #include "chrome/browser/guest_view/web_view/web_view_guest.h" | 234 #include "chrome/browser/guest_view/web_view/web_view_guest.h" |
| 235 #include "chrome/browser/guest_view/web_view/web_view_permission_helper.h" |
235 #include "chrome/browser/guest_view/web_view/web_view_renderer_state.h" | 236 #include "chrome/browser/guest_view/web_view/web_view_renderer_state.h" |
236 #include "chrome/browser/renderer_host/chrome_extension_message_filter.h" | 237 #include "chrome/browser/renderer_host/chrome_extension_message_filter.h" |
237 #include "chrome/browser/sync_file_system/local/sync_file_system_backend.h" | 238 #include "chrome/browser/sync_file_system/local/sync_file_system_backend.h" |
238 #endif | 239 #endif |
239 | 240 |
240 #if defined(ENABLE_SPELLCHECK) | 241 #if defined(ENABLE_SPELLCHECK) |
241 #include "chrome/browser/spellchecker/spellcheck_message_filter.h" | 242 #include "chrome/browser/spellchecker/spellcheck_message_filter.h" |
242 #endif | 243 #endif |
243 | 244 |
244 #if defined(ENABLE_SERVICE_DISCOVERY) | 245 #if defined(ENABLE_SERVICE_DISCOVERY) |
(...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
641 return ratio * (kMaxFSM - kMinFSM) + kMinFSM; | 642 return ratio * (kMaxFSM - kMinFSM) + kMinFSM; |
642 } | 643 } |
643 | 644 |
644 #endif // defined(OS_ANDROID) | 645 #endif // defined(OS_ANDROID) |
645 | 646 |
646 } // namespace | 647 } // namespace |
647 | 648 |
648 namespace chrome { | 649 namespace chrome { |
649 | 650 |
650 ChromeContentBrowserClient::ChromeContentBrowserClient() | 651 ChromeContentBrowserClient::ChromeContentBrowserClient() |
651 : prerender_tracker_(NULL) { | 652 : prerender_tracker_(NULL), |
| 653 weak_factory_(this) { |
652 #if defined(ENABLE_PLUGINS) | 654 #if defined(ENABLE_PLUGINS) |
653 for (size_t i = 0; i < arraysize(kPredefinedAllowedDevChannelOrigins); ++i) | 655 for (size_t i = 0; i < arraysize(kPredefinedAllowedDevChannelOrigins); ++i) |
654 allowed_dev_channel_origins_.insert(kPredefinedAllowedDevChannelOrigins[i]); | 656 allowed_dev_channel_origins_.insert(kPredefinedAllowedDevChannelOrigins[i]); |
655 for (size_t i = 0; i < arraysize(kPredefinedAllowedFileHandleOrigins); ++i) | 657 for (size_t i = 0; i < arraysize(kPredefinedAllowedFileHandleOrigins); ++i) |
656 allowed_file_handle_origins_.insert(kPredefinedAllowedFileHandleOrigins[i]); | 658 allowed_file_handle_origins_.insert(kPredefinedAllowedFileHandleOrigins[i]); |
657 for (size_t i = 0; i < arraysize(kPredefinedAllowedSocketOrigins); ++i) | 659 for (size_t i = 0; i < arraysize(kPredefinedAllowedSocketOrigins); ++i) |
658 allowed_socket_origins_.insert(kPredefinedAllowedSocketOrigins[i]); | 660 allowed_socket_origins_.insert(kPredefinedAllowedSocketOrigins[i]); |
659 #endif | 661 #endif |
660 | 662 |
661 permissions_policy_delegate_.reset( | 663 permissions_policy_delegate_.reset( |
(...skipping 1150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1812 for (i = render_frames.begin(); i != render_frames.end(); ++i) { | 1814 for (i = render_frames.begin(); i != render_frames.end(); ++i) { |
1813 BrowserThread::PostTask( | 1815 BrowserThread::PostTask( |
1814 BrowserThread::UI, FROM_HERE, | 1816 BrowserThread::UI, FROM_HERE, |
1815 base::Bind(&TabSpecificContentSettings::WebDatabaseAccessed, | 1817 base::Bind(&TabSpecificContentSettings::WebDatabaseAccessed, |
1816 i->first, i->second, url, name, display_name, !allow)); | 1818 i->first, i->second, url, name, display_name, !allow)); |
1817 } | 1819 } |
1818 | 1820 |
1819 return allow; | 1821 return allow; |
1820 } | 1822 } |
1821 | 1823 |
1822 bool ChromeContentBrowserClient::AllowWorkerFileSystem( | 1824 void ChromeContentBrowserClient::AllowWorkerFileSystem( |
1823 const GURL& url, | 1825 const GURL& url, |
1824 content::ResourceContext* context, | 1826 content::ResourceContext* context, |
1825 const std::vector<std::pair<int, int> >& render_frames) { | 1827 const std::vector<std::pair<int, int> >& render_frames, |
| 1828 base::Callback<void(bool)> callback) { |
1826 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 1829 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
1827 ProfileIOData* io_data = ProfileIOData::FromResourceContext(context); | 1830 ProfileIOData* io_data = ProfileIOData::FromResourceContext(context); |
1828 CookieSettings* cookie_settings = io_data->GetCookieSettings(); | 1831 CookieSettings* cookie_settings = io_data->GetCookieSettings(); |
1829 bool allow = cookie_settings->IsSettingCookieAllowed(url, url); | 1832 bool allow = cookie_settings->IsSettingCookieAllowed(url, url); |
1830 | 1833 |
| 1834 #if defined(ENABLE_EXTENSIONS) |
| 1835 GuestPermissionRequestHelper(url, render_frames, callback, allow); |
| 1836 #else |
| 1837 FileSystemAccessed(url, render_frames, callback, allow); |
| 1838 #endif |
| 1839 } |
| 1840 |
| 1841 #if defined(ENABLE_EXTENSIONS) |
| 1842 void ChromeContentBrowserClient::GuestPermissionRequestHelper( |
| 1843 const GURL& url, |
| 1844 const std::vector<std::pair<int, int> >& render_frames, |
| 1845 base::Callback<void(bool)> callback, |
| 1846 bool allow) { |
| 1847 DCHECK(BrowserThread:: CurrentlyOn(BrowserThread::IO)); |
| 1848 std::vector<std::pair<int, int> >::const_iterator i; |
| 1849 std::map<int, int> process_map; |
| 1850 std::map<int, int>::const_iterator it; |
| 1851 bool has_web_view_guest = false; |
| 1852 // Record access to file system for potential display in UI. |
| 1853 for (i = render_frames.begin(); i != render_frames.end(); ++i) { |
| 1854 if (process_map.find(i->first) != process_map.end()) |
| 1855 continue; |
| 1856 |
| 1857 process_map.insert(std::pair<int, int>(i->first, i->second)); |
| 1858 |
| 1859 if (WebViewRendererState::GetInstance()->IsGuest(i->first)) |
| 1860 has_web_view_guest = true; |
| 1861 } |
| 1862 if (!has_web_view_guest) { |
| 1863 FileSystemAccessed(url, render_frames, callback, allow); |
| 1864 return; |
| 1865 } |
| 1866 DCHECK(process_map.size() == 1); |
| 1867 it = process_map.begin(); |
| 1868 BrowserThread::PostTask( |
| 1869 BrowserThread::UI, |
| 1870 FROM_HERE, |
| 1871 base::Bind(&ChromeContentBrowserClient:: |
| 1872 RequestFileSystemPermissionOnUIThread, |
| 1873 it->first, |
| 1874 it->second, |
| 1875 url, |
| 1876 allow, |
| 1877 base::Bind(&ChromeContentBrowserClient::FileSystemAccessed, |
| 1878 weak_factory_.GetWeakPtr(), |
| 1879 url, |
| 1880 render_frames, |
| 1881 callback))); |
| 1882 } |
| 1883 |
| 1884 void ChromeContentBrowserClient::RequestFileSystemPermissionOnUIThread( |
| 1885 int render_process_id, |
| 1886 int render_frame_id, |
| 1887 const GURL& url, |
| 1888 bool allowed_by_default, |
| 1889 const base::Callback<void(bool)>& callback) { |
| 1890 DCHECK(BrowserThread:: CurrentlyOn(BrowserThread::UI)); |
| 1891 WebViewPermissionHelper* web_view_permission_helper = |
| 1892 WebViewPermissionHelper::FromFrameID(render_process_id, |
| 1893 render_frame_id); |
| 1894 web_view_permission_helper->RequestFileSystemPermission(url, |
| 1895 allowed_by_default, |
| 1896 callback); |
| 1897 } |
| 1898 #endif |
| 1899 |
| 1900 void ChromeContentBrowserClient::FileSystemAccessed( |
| 1901 const GURL& url, |
| 1902 const std::vector<std::pair<int, int> >& render_frames, |
| 1903 base::Callback<void(bool)> callback, |
| 1904 bool allow) { |
1831 // Record access to file system for potential display in UI. | 1905 // Record access to file system for potential display in UI. |
1832 std::vector<std::pair<int, int> >::const_iterator i; | 1906 std::vector<std::pair<int, int> >::const_iterator i; |
1833 for (i = render_frames.begin(); i != render_frames.end(); ++i) { | 1907 for (i = render_frames.begin(); i != render_frames.end(); ++i) { |
1834 BrowserThread::PostTask( | 1908 BrowserThread::PostTask( |
1835 BrowserThread::UI, FROM_HERE, | 1909 BrowserThread::UI, |
| 1910 FROM_HERE, |
1836 base::Bind(&TabSpecificContentSettings::FileSystemAccessed, | 1911 base::Bind(&TabSpecificContentSettings::FileSystemAccessed, |
1837 i->first, i->second, url, !allow)); | 1912 i->first, i->second, url, !allow)); |
1838 } | 1913 } |
1839 | 1914 callback.Run(allow); |
1840 return allow; | |
1841 } | 1915 } |
1842 | 1916 |
1843 bool ChromeContentBrowserClient::AllowWorkerIndexedDB( | 1917 bool ChromeContentBrowserClient::AllowWorkerIndexedDB( |
1844 const GURL& url, | 1918 const GURL& url, |
1845 const base::string16& name, | 1919 const base::string16& name, |
1846 content::ResourceContext* context, | 1920 content::ResourceContext* context, |
1847 const std::vector<std::pair<int, int> >& render_frames) { | 1921 const std::vector<std::pair<int, int> >& render_frames) { |
1848 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 1922 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
1849 ProfileIOData* io_data = ProfileIOData::FromResourceContext(context); | 1923 ProfileIOData* io_data = ProfileIOData::FromResourceContext(context); |
1850 CookieSettings* cookie_settings = io_data->GetCookieSettings(); | 1924 CookieSettings* cookie_settings = io_data->GetCookieSettings(); |
(...skipping 955 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2806 switches::kDisableWebRtcEncryption, | 2880 switches::kDisableWebRtcEncryption, |
2807 }; | 2881 }; |
2808 to_command_line->CopySwitchesFrom(from_command_line, | 2882 to_command_line->CopySwitchesFrom(from_command_line, |
2809 kWebRtcDevSwitchNames, | 2883 kWebRtcDevSwitchNames, |
2810 arraysize(kWebRtcDevSwitchNames)); | 2884 arraysize(kWebRtcDevSwitchNames)); |
2811 } | 2885 } |
2812 } | 2886 } |
2813 #endif // defined(ENABLE_WEBRTC) | 2887 #endif // defined(ENABLE_WEBRTC) |
2814 | 2888 |
2815 } // namespace chrome | 2889 } // namespace chrome |
OLD | NEW |