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 "content/browser/file_system/browser_file_system_helper.h" | 5 #include "content/browser/file_system/browser_file_system_helper.h" |
6 | 6 |
| 7 #include <vector> |
| 8 #include <string> |
| 9 |
7 #include "base/command_line.h" | 10 #include "base/command_line.h" |
8 #include "base/file_path.h" | 11 #include "base/file_path.h" |
9 #include "content/public/browser/browser_thread.h" | 12 #include "content/public/browser/browser_thread.h" |
10 #include "content/public/common/content_switches.h" | 13 #include "content/public/common/content_switches.h" |
| 14 #include "webkit/fileapi/file_system_options.h" |
11 #include "webkit/quota/quota_manager.h" | 15 #include "webkit/quota/quota_manager.h" |
12 | 16 |
13 using content::BrowserThread; | 17 using content::BrowserThread; |
14 | 18 |
| 19 namespace { |
| 20 |
| 21 const char kChromeScheme[] = "chrome"; |
| 22 const char kExtensionScheme[] = "chrome-extension"; |
| 23 |
| 24 using fileapi::FileSystemOptions; |
| 25 |
| 26 FileSystemOptions CreateBrowserFileSystemOptions(bool is_incognito) { |
| 27 std::vector<std::string> additional_allowed_schemes; |
| 28 additional_allowed_schemes.push_back(kChromeScheme); |
| 29 additional_allowed_schemes.push_back(kExtensionScheme); |
| 30 if (CommandLine::ForCurrentProcess()->HasSwitch( |
| 31 switches::kAllowFileAccessFromFiles)) { |
| 32 additional_allowed_schemes.push_back("file"); |
| 33 } |
| 34 FileSystemOptions::ProfileMode profile_mode = |
| 35 is_incognito ? FileSystemOptions::PROFILE_MODE_INCOGNITO |
| 36 : FileSystemOptions::PROFILE_MODE_NORMAL; |
| 37 return FileSystemOptions(profile_mode, additional_allowed_schemes); |
| 38 } |
| 39 |
| 40 } // anonymous namespace |
| 41 |
15 scoped_refptr<fileapi::FileSystemContext> CreateFileSystemContext( | 42 scoped_refptr<fileapi::FileSystemContext> CreateFileSystemContext( |
16 const FilePath& profile_path, bool is_incognito, | 43 const FilePath& profile_path, bool is_incognito, |
17 quota::SpecialStoragePolicy* special_storage_policy, | 44 quota::SpecialStoragePolicy* special_storage_policy, |
18 quota::QuotaManagerProxy* quota_manager_proxy) { | 45 quota::QuotaManagerProxy* quota_manager_proxy) { |
19 return new fileapi::FileSystemContext( | 46 return new fileapi::FileSystemContext( |
20 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE), | 47 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE), |
21 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO), | 48 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO), |
22 special_storage_policy, | 49 special_storage_policy, |
23 quota_manager_proxy, | 50 quota_manager_proxy, |
24 profile_path, | 51 profile_path, |
25 is_incognito, | 52 CreateBrowserFileSystemOptions(is_incognito)); |
26 CommandLine::ForCurrentProcess()->HasSwitch( | |
27 switches::kAllowFileAccessFromFiles), | |
28 NULL); | |
29 } | 53 } |
OLD | NEW |