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

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: Fix a callback bug. 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 630 matching lines...) Expand 10 before | Expand all | Expand 10 after
641 return ratio * (kMaxFSM - kMinFSM) + kMinFSM; 641 return ratio * (kMaxFSM - kMinFSM) + kMinFSM;
642 } 642 }
643 643
644 #endif // defined(OS_ANDROID) 644 #endif // defined(OS_ANDROID)
645 645
646 } // namespace 646 } // namespace
647 647
648 namespace chrome { 648 namespace chrome {
649 649
650 ChromeContentBrowserClient::ChromeContentBrowserClient() 650 ChromeContentBrowserClient::ChromeContentBrowserClient()
651 : prerender_tracker_(NULL) { 651 : prerender_tracker_(NULL),
652 weak_factory_(this) {
652 #if defined(ENABLE_PLUGINS) 653 #if defined(ENABLE_PLUGINS)
653 for (size_t i = 0; i < arraysize(kPredefinedAllowedDevChannelOrigins); ++i) 654 for (size_t i = 0; i < arraysize(kPredefinedAllowedDevChannelOrigins); ++i)
654 allowed_dev_channel_origins_.insert(kPredefinedAllowedDevChannelOrigins[i]); 655 allowed_dev_channel_origins_.insert(kPredefinedAllowedDevChannelOrigins[i]);
655 for (size_t i = 0; i < arraysize(kPredefinedAllowedFileHandleOrigins); ++i) 656 for (size_t i = 0; i < arraysize(kPredefinedAllowedFileHandleOrigins); ++i)
656 allowed_file_handle_origins_.insert(kPredefinedAllowedFileHandleOrigins[i]); 657 allowed_file_handle_origins_.insert(kPredefinedAllowedFileHandleOrigins[i]);
657 for (size_t i = 0; i < arraysize(kPredefinedAllowedSocketOrigins); ++i) 658 for (size_t i = 0; i < arraysize(kPredefinedAllowedSocketOrigins); ++i)
658 allowed_socket_origins_.insert(kPredefinedAllowedSocketOrigins[i]); 659 allowed_socket_origins_.insert(kPredefinedAllowedSocketOrigins[i]);
659 #endif 660 #endif
660 661
661 permissions_policy_delegate_.reset( 662 permissions_policy_delegate_.reset(
(...skipping 1149 matching lines...) Expand 10 before | Expand all | Expand 10 after
1811 for (i = render_frames.begin(); i != render_frames.end(); ++i) { 1812 for (i = render_frames.begin(); i != render_frames.end(); ++i) {
1812 BrowserThread::PostTask( 1813 BrowserThread::PostTask(
1813 BrowserThread::UI, FROM_HERE, 1814 BrowserThread::UI, FROM_HERE,
1814 base::Bind(&TabSpecificContentSettings::WebDatabaseAccessed, 1815 base::Bind(&TabSpecificContentSettings::WebDatabaseAccessed,
1815 i->first, i->second, url, name, display_name, !allow)); 1816 i->first, i->second, url, name, display_name, !allow));
1816 } 1817 }
1817 1818
1818 return allow; 1819 return allow;
1819 } 1820 }
1820 1821
1821 bool ChromeContentBrowserClient::AllowWorkerFileSystem( 1822 void ChromeContentBrowserClient::AllowWorkerFileSystem(
1822 const GURL& url, 1823 const GURL& url,
1823 content::ResourceContext* context, 1824 content::ResourceContext* context,
1824 const std::vector<std::pair<int, int> >& render_frames) { 1825 const std::vector<std::pair<int, int> >& render_frames,
1826 base::Callback<void(bool)> callback) {
1825 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 1827 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
1826 ProfileIOData* io_data = ProfileIOData::FromResourceContext(context); 1828 ProfileIOData* io_data = ProfileIOData::FromResourceContext(context);
1827 CookieSettings* cookie_settings = io_data->GetCookieSettings(); 1829 CookieSettings* cookie_settings = io_data->GetCookieSettings();
1828 bool allow = cookie_settings->IsSettingCookieAllowed(url, url); 1830 bool allow = cookie_settings->IsSettingCookieAllowed(url, url);
1829 1831
1832 #if defined(ENABLE_EXTENSIONS)
1833 // Record access to file system for potential display in UI.
1834 std::vector<std::pair<int, int> >::const_iterator i;
1835 for (i = render_frames.begin(); i != render_frames.end(); ++i) {
Xi Han 2014/07/03 15:02:51 With this implementation, we will guaranty the cal
1836 bool is_web_view_guest =
1837 WebViewRendererState::GetInstance()->IsGuest(i->first);
1838 if (is_web_view_guest) {
1839 BrowserThread::PostTask(
1840 BrowserThread::UI,
1841 FROM_HERE,
1842 base::Bind(&WebViewGuest::RequestFileSystemAccessPermission,
Fady Samuel 2014/07/08 14:42:46 RequestFileSystemPermissionFromIOThread
Xi Han 2014/07/08 21:28:24 I declare a static function in ChromeContentBrowse
1843 i->first,
1844 i->second,
1845 url,
1846 !allow,
1847 base::Bind(&ChromeContentBrowserClient::FileSystemAccessed,
1848 weak_factory_.GetWeakPtr(),
1849 url,
1850 render_frames,
1851 callback)));
1852 break;
1853 }
1854 }
1855 #else
1856 FileSystemAccessed(url, render_frames, callback, allow);
1857 #endif
1858
1859 }
1860
1861 void ChromeContentBrowserClient::FileSystemAccessed(
1862 const GURL& url,
1863 const std::vector<std::pair<int, int> >& render_frames,
1864 base::Callback<void(bool)> callback,
1865 bool allow) {
1830 // Record access to file system for potential display in UI. 1866 // Record access to file system for potential display in UI.
1831 std::vector<std::pair<int, int> >::const_iterator i; 1867 std::vector<std::pair<int, int> >::const_iterator i;
1832 for (i = render_frames.begin(); i != render_frames.end(); ++i) { 1868 for (i = render_frames.begin(); i != render_frames.end(); ++i) {
1833 BrowserThread::PostTask( 1869 BrowserThread::PostTask(
1834 BrowserThread::UI, FROM_HERE, 1870 BrowserThread::UI,
1871 FROM_HERE,
1835 base::Bind(&TabSpecificContentSettings::FileSystemAccessed, 1872 base::Bind(&TabSpecificContentSettings::FileSystemAccessed,
1836 i->first, i->second, url, !allow)); 1873 i->first,
1874 i->second,
1875 url,
1876 !allow));
1837 } 1877 }
1838 1878 callback.Run(allow);
1839 return allow;
1840 } 1879 }
1841 1880
1842 bool ChromeContentBrowserClient::AllowWorkerIndexedDB( 1881 bool ChromeContentBrowserClient::AllowWorkerIndexedDB(
1843 const GURL& url, 1882 const GURL& url,
1844 const base::string16& name, 1883 const base::string16& name,
1845 content::ResourceContext* context, 1884 content::ResourceContext* context,
1846 const std::vector<std::pair<int, int> >& render_frames) { 1885 const std::vector<std::pair<int, int> >& render_frames) {
1847 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 1886 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
1848 ProfileIOData* io_data = ProfileIOData::FromResourceContext(context); 1887 ProfileIOData* io_data = ProfileIOData::FromResourceContext(context);
1849 CookieSettings* cookie_settings = io_data->GetCookieSettings(); 1888 CookieSettings* cookie_settings = io_data->GetCookieSettings();
(...skipping 950 matching lines...) Expand 10 before | Expand all | Expand 10 after
2800 switches::kDisableWebRtcEncryption, 2839 switches::kDisableWebRtcEncryption,
2801 }; 2840 };
2802 to_command_line->CopySwitchesFrom(from_command_line, 2841 to_command_line->CopySwitchesFrom(from_command_line,
2803 kWebRtcDevSwitchNames, 2842 kWebRtcDevSwitchNames,
2804 arraysize(kWebRtcDevSwitchNames)); 2843 arraysize(kWebRtcDevSwitchNames));
2805 } 2844 }
2806 } 2845 }
2807 #endif // defined(ENABLE_WEBRTC) 2846 #endif // defined(ENABLE_WEBRTC)
2808 2847
2809 } // namespace chrome 2848 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698