| 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/file_system_dispatcher_host.h" | 5 #include "content/browser/file_system/file_system_dispatcher_host.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/file_path.h" | 10 #include "base/file_path.h" |
| 11 #include "base/platform_file.h" | 11 #include "base/platform_file.h" |
| 12 #include "base/threading/thread.h" | 12 #include "base/threading/thread.h" |
| 13 #include "base/time.h" | 13 #include "base/time.h" |
| 14 #include "chrome/browser/content_settings/host_content_settings_map.h" | |
| 15 #include "chrome/browser/profiles/profile.h" | 14 #include "chrome/browser/profiles/profile.h" |
| 16 #include "content/browser/resource_context.h" | 15 #include "content/browser/resource_context.h" |
| 17 #include "content/common/file_system_messages.h" | 16 #include "content/common/file_system_messages.h" |
| 18 #include "googleurl/src/gurl.h" | 17 #include "googleurl/src/gurl.h" |
| 19 #include "ipc/ipc_platform_file.h" | 18 #include "ipc/ipc_platform_file.h" |
| 20 #include "net/url_request/url_request_context.h" | 19 #include "net/url_request/url_request_context.h" |
| 21 #include "webkit/fileapi/file_system_callback_dispatcher.h" | 20 #include "webkit/fileapi/file_system_callback_dispatcher.h" |
| 22 #include "webkit/fileapi/file_system_context.h" | 21 #include "webkit/fileapi/file_system_context.h" |
| 23 #include "webkit/fileapi/file_system_operation.h" | 22 #include "webkit/fileapi/file_system_operation.h" |
| 24 #include "webkit/fileapi/file_system_operation.h" | 23 #include "webkit/fileapi/file_system_operation.h" |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 98 dispatcher_host_->Send(new FileSystemMsg_DidOpenFile( | 97 dispatcher_host_->Send(new FileSystemMsg_DidOpenFile( |
| 99 request_id_, file_for_transit)); | 98 request_id_, file_for_transit)); |
| 100 } | 99 } |
| 101 | 100 |
| 102 private: | 101 private: |
| 103 scoped_refptr<FileSystemDispatcherHost> dispatcher_host_; | 102 scoped_refptr<FileSystemDispatcherHost> dispatcher_host_; |
| 104 int request_id_; | 103 int request_id_; |
| 105 }; | 104 }; |
| 106 | 105 |
| 107 FileSystemDispatcherHost::FileSystemDispatcherHost( | 106 FileSystemDispatcherHost::FileSystemDispatcherHost( |
| 108 const content::ResourceContext* resource_context, | 107 const content::ResourceContext* resource_context) |
| 109 HostContentSettingsMap* host_content_settings_map) | |
| 110 : context_(NULL), | 108 : context_(NULL), |
| 111 host_content_settings_map_(host_content_settings_map), | |
| 112 resource_context_(resource_context), | 109 resource_context_(resource_context), |
| 113 request_context_(NULL) { | 110 request_context_(NULL) { |
| 114 DCHECK(resource_context_); | 111 DCHECK(resource_context_); |
| 115 DCHECK(host_content_settings_map_); | |
| 116 } | 112 } |
| 117 | 113 |
| 118 FileSystemDispatcherHost::FileSystemDispatcherHost( | 114 FileSystemDispatcherHost::FileSystemDispatcherHost( |
| 119 net::URLRequestContext* request_context, | 115 net::URLRequestContext* request_context, |
| 120 HostContentSettingsMap* host_content_settings_map, | |
| 121 fileapi::FileSystemContext* file_system_context) | 116 fileapi::FileSystemContext* file_system_context) |
| 122 : context_(file_system_context), | 117 : context_(file_system_context), |
| 123 host_content_settings_map_(host_content_settings_map), | |
| 124 resource_context_(NULL), | 118 resource_context_(NULL), |
| 125 request_context_(request_context) { | 119 request_context_(request_context) { |
| 126 DCHECK(request_context_); | 120 DCHECK(request_context_); |
| 127 DCHECK(host_content_settings_map_); | |
| 128 DCHECK(context_); | 121 DCHECK(context_); |
| 129 } | 122 } |
| 130 | 123 |
| 131 FileSystemDispatcherHost::~FileSystemDispatcherHost() { | 124 FileSystemDispatcherHost::~FileSystemDispatcherHost() { |
| 132 } | 125 } |
| 133 | 126 |
| 134 void FileSystemDispatcherHost::OnChannelConnected(int32 peer_pid) { | 127 void FileSystemDispatcherHost::OnChannelConnected(int32 peer_pid) { |
| 135 BrowserMessageFilter::OnChannelConnected(peer_pid); | 128 BrowserMessageFilter::OnChannelConnected(peer_pid); |
| 136 | 129 |
| 137 if (resource_context_) { | 130 if (resource_context_) { |
| (...skipping 26 matching lines...) Expand all Loading... |
| 164 IPC_MESSAGE_HANDLER(FileSystemHostMsg_CancelWrite, OnCancel) | 157 IPC_MESSAGE_HANDLER(FileSystemHostMsg_CancelWrite, OnCancel) |
| 165 IPC_MESSAGE_HANDLER(FileSystemHostMsg_OpenFile, OnOpenFile) | 158 IPC_MESSAGE_HANDLER(FileSystemHostMsg_OpenFile, OnOpenFile) |
| 166 IPC_MESSAGE_UNHANDLED(handled = false) | 159 IPC_MESSAGE_UNHANDLED(handled = false) |
| 167 IPC_END_MESSAGE_MAP_EX() | 160 IPC_END_MESSAGE_MAP_EX() |
| 168 return handled; | 161 return handled; |
| 169 } | 162 } |
| 170 | 163 |
| 171 void FileSystemDispatcherHost::OnOpen( | 164 void FileSystemDispatcherHost::OnOpen( |
| 172 int request_id, const GURL& origin_url, fileapi::FileSystemType type, | 165 int request_id, const GURL& origin_url, fileapi::FileSystemType type, |
| 173 int64 requested_size, bool create) { | 166 int64 requested_size, bool create) { |
| 174 ContentSetting content_setting = | |
| 175 host_content_settings_map_->GetContentSetting( | |
| 176 origin_url, CONTENT_SETTINGS_TYPE_COOKIES, ""); | |
| 177 DCHECK((content_setting == CONTENT_SETTING_ALLOW) || | |
| 178 (content_setting == CONTENT_SETTING_BLOCK) || | |
| 179 (content_setting == CONTENT_SETTING_SESSION_ONLY)); | |
| 180 if (content_setting == CONTENT_SETTING_BLOCK) { | |
| 181 // TODO(kinuko): Need to notify the UI thread to indicate that | |
| 182 // there's a blocked content. | |
| 183 Send(new FileSystemMsg_OpenComplete( | |
| 184 request_id, false, std::string(), GURL())); | |
| 185 return; | |
| 186 } | |
| 187 | |
| 188 GetNewOperation(request_id)->OpenFileSystem(origin_url, type, create); | 167 GetNewOperation(request_id)->OpenFileSystem(origin_url, type, create); |
| 189 } | 168 } |
| 190 | 169 |
| 191 void FileSystemDispatcherHost::OnMove( | 170 void FileSystemDispatcherHost::OnMove( |
| 192 int request_id, const GURL& src_path, const GURL& dest_path) { | 171 int request_id, const GURL& src_path, const GURL& dest_path) { |
| 193 GetNewOperation(request_id)->Move(src_path, dest_path); | 172 GetNewOperation(request_id)->Move(src_path, dest_path); |
| 194 } | 173 } |
| 195 | 174 |
| 196 void FileSystemDispatcherHost::OnCopy( | 175 void FileSystemDispatcherHost::OnCopy( |
| 197 int request_id, const GURL& src_path, const GURL& dest_path) { | 176 int request_id, const GURL& src_path, const GURL& dest_path) { |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 286 context_, | 265 context_, |
| 287 NULL); | 266 NULL); |
| 288 operations_.AddWithID(operation, request_id); | 267 operations_.AddWithID(operation, request_id); |
| 289 return operation; | 268 return operation; |
| 290 } | 269 } |
| 291 | 270 |
| 292 void FileSystemDispatcherHost::UnregisterOperation(int request_id) { | 271 void FileSystemDispatcherHost::UnregisterOperation(int request_id) { |
| 293 DCHECK(operations_.Lookup(request_id)); | 272 DCHECK(operations_.Lookup(request_id)); |
| 294 operations_.Remove(request_id); | 273 operations_.Remove(request_id); |
| 295 } | 274 } |
| OLD | NEW |