Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(150)

Side by Side Diff: chrome/browser/chrome_content_browser_client.cc

Issue 338353007: Implementation of shared worker code path for WebView file system permission. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master_sharedworker
Patch Set: Small changes are made. Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
OLDNEW
« no previous file with comments | « chrome/browser/chrome_content_browser_client.h ('k') | chrome/browser/guest_view/web_view/web_view_guest.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698