| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #ifndef CHROME_BROWSER_GUEST_VIEW_WEB_VIEW_WEB_VIEW_GUEST_H_ | 5 #ifndef CHROME_BROWSER_GUEST_VIEW_WEB_VIEW_WEB_VIEW_GUEST_H_ |
| 6 #define CHROME_BROWSER_GUEST_VIEW_WEB_VIEW_WEB_VIEW_GUEST_H_ | 6 #define CHROME_BROWSER_GUEST_VIEW_WEB_VIEW_WEB_VIEW_GUEST_H_ |
| 7 | 7 |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/observer_list.h" | 10 #include "base/observer_list.h" |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 189 WebViewPermissionType permission_type, | 189 WebViewPermissionType permission_type, |
| 190 const base::DictionaryValue& request_info, | 190 const base::DictionaryValue& request_info, |
| 191 const PermissionResponseCallback& callback, | 191 const PermissionResponseCallback& callback, |
| 192 bool allowed_by_default); | 192 bool allowed_by_default); |
| 193 | 193 |
| 194 // Requests Geolocation Permission from the embedder. | 194 // Requests Geolocation Permission from the embedder. |
| 195 void RequestGeolocationPermission(int bridge_id, | 195 void RequestGeolocationPermission(int bridge_id, |
| 196 const GURL& requesting_frame, | 196 const GURL& requesting_frame, |
| 197 bool user_gesture, | 197 bool user_gesture, |
| 198 const base::Callback<void(bool)>& callback); | 198 const base::Callback<void(bool)>& callback); |
| 199 | |
| 200 void OnWebViewGeolocationPermissionResponse( | |
| 201 int bridge_id, | |
| 202 bool user_gesture, | |
| 203 const base::Callback<void(bool)>& callback, | |
| 204 bool allow, | |
| 205 const std::string& user_input); | |
| 206 | |
| 207 void CancelGeolocationPermissionRequest(int bridge_id); | 199 void CancelGeolocationPermissionRequest(int bridge_id); |
| 208 | 200 |
| 209 void OnWebViewMediaPermissionResponse( | 201 void RequestFileSystemPermission(const GURL& url, |
| 210 const content::MediaStreamRequest& request, | 202 bool allowed_by_default, |
| 211 const content::MediaResponseCallback& callback, | 203 const base::Callback<void(bool)>& callback); |
| 212 bool allow, | |
| 213 const std::string& user_input); | |
| 214 | |
| 215 void OnWebViewDownloadPermissionResponse( | |
| 216 const base::Callback<void(bool)>& callback, | |
| 217 bool allow, | |
| 218 const std::string& user_input); | |
| 219 | |
| 220 void OnWebViewPointerLockPermissionResponse( | |
| 221 const base::Callback<void(bool)>& callback, | |
| 222 bool allow, | |
| 223 const std::string& user_input); | |
| 224 | |
| 225 void OnWebViewNewWindowResponse(int new_window_instance_id, | |
| 226 bool allow, | |
| 227 const std::string& user_input); | |
| 228 | 204 |
| 229 enum PermissionResponseAction { | 205 enum PermissionResponseAction { |
| 230 DENY, | 206 DENY, |
| 231 ALLOW, | 207 ALLOW, |
| 232 DEFAULT | 208 DEFAULT |
| 233 }; | 209 }; |
| 234 | 210 |
| 235 enum SetPermissionResult { | 211 enum SetPermissionResult { |
| 236 SET_PERMISSION_INVALID, | 212 SET_PERMISSION_INVALID, |
| 237 SET_PERMISSION_ALLOWED, | 213 SET_PERMISSION_ALLOWED, |
| (...skipping 22 matching lines...) Expand all Loading... |
| 260 // Partition data that are newer than |removal_since| will be removed. | 236 // Partition data that are newer than |removal_since| will be removed. |
| 261 // |removal_mask| corresponds to bitmask in StoragePartition::RemoveDataMask. | 237 // |removal_mask| corresponds to bitmask in StoragePartition::RemoveDataMask. |
| 262 bool ClearData(const base::Time remove_since, | 238 bool ClearData(const base::Time remove_since, |
| 263 uint32 removal_mask, | 239 uint32 removal_mask, |
| 264 const base::Closure& callback); | 240 const base::Closure& callback); |
| 265 | 241 |
| 266 extensions::ScriptExecutor* script_executor() { | 242 extensions::ScriptExecutor* script_executor() { |
| 267 return script_executor_.get(); | 243 return script_executor_.get(); |
| 268 } | 244 } |
| 269 | 245 |
| 246 // Called when file system access is requested by the guest content using the |
| 247 // asynchronous HTML5 file system API. The request is plumbed through the |
| 248 // <webview> permission request API. The request will be: |
| 249 // - Allowed if the embedder explicitly allowed it. |
| 250 // - Denied if the embedder explicitly denied. |
| 251 // - Determined by the guest's content settings if the embedder does not |
| 252 // perform an explicit action. |
| 253 // If access was blocked due to the page's content settings, |
| 254 // |blocked_by_policy| should be true, and this function should invoke |
| 255 // OnContentBlocked. |
| 256 static void FileSystemAccessedAsync(int render_process_id, |
| 257 int render_frame_id, |
| 258 int request_id, |
| 259 const GURL& url, |
| 260 bool blocked_by_policy); |
| 261 |
| 262 // Called when file system access is requested by the guest content using the |
| 263 // synchronous HTML5 file system API in a worker thread or shared worker. The |
| 264 // request is plumbed through the <webview> permission request API. The |
| 265 // request will be: |
| 266 // - Allowed if the embedder explicitly allowed it. |
| 267 // - Denied if the embedder explicitly denied. |
| 268 // - Determined by the guest's content settings if the embedder does not |
| 269 // perform an explicit action. |
| 270 // If access was blocked due to the page's content settings, |
| 271 // |blocked_by_policy| should be true, and this function should invoke |
| 272 // OnContentBlocked. |
| 273 static void FileSystemAccessedSync(int render_process_id, |
| 274 int render_frame_id, |
| 275 const GURL& url, |
| 276 bool blocked_by_policy, |
| 277 IPC::Message* reply_msg); |
| 278 |
| 270 private: | 279 private: |
| 271 virtual ~WebViewGuest(); | 280 virtual ~WebViewGuest(); |
| 272 | 281 |
| 273 // A map to store the callback for a request keyed by the request's id. | 282 // A map to store the callback for a request keyed by the request's id. |
| 274 struct PermissionResponseInfo { | 283 struct PermissionResponseInfo { |
| 275 PermissionResponseCallback callback; | 284 PermissionResponseCallback callback; |
| 276 WebViewPermissionType permission_type; | 285 WebViewPermissionType permission_type; |
| 277 bool allowed_by_default; | 286 bool allowed_by_default; |
| 278 PermissionResponseInfo(); | 287 PermissionResponseInfo(); |
| 279 PermissionResponseInfo(const PermissionResponseCallback& callback, | 288 PermissionResponseInfo(const PermissionResponseCallback& callback, |
| 280 WebViewPermissionType permission_type, | 289 WebViewPermissionType permission_type, |
| 281 bool allowed_by_default); | 290 bool allowed_by_default); |
| 282 ~PermissionResponseInfo(); | 291 ~PermissionResponseInfo(); |
| 283 }; | 292 }; |
| 284 | 293 |
| 285 static void RecordUserInitiatedUMA(const PermissionResponseInfo& info, | 294 static void RecordUserInitiatedUMA(const PermissionResponseInfo& info, |
| 286 bool allow); | 295 bool allow); |
| 287 | 296 |
| 288 // Returns the top level items (ignoring submenus) as Value. | 297 // Returns the top level items (ignoring submenus) as Value. |
| 289 static scoped_ptr<base::ListValue> MenuModelToValue( | 298 static scoped_ptr<base::ListValue> MenuModelToValue( |
| 290 const ui::SimpleMenuModel& menu_model); | 299 const ui::SimpleMenuModel& menu_model); |
| 291 | 300 |
| 301 void OnWebViewGeolocationPermissionResponse( |
| 302 int bridge_id, |
| 303 bool user_gesture, |
| 304 const base::Callback<void(bool)>& callback, |
| 305 bool allow, |
| 306 const std::string& user_input); |
| 307 |
| 308 void OnWebViewFileSystemPermissionResponse( |
| 309 const base::Callback<void(bool)>& callback, |
| 310 bool allow, |
| 311 const std::string& user_input); |
| 312 |
| 313 void OnWebViewMediaPermissionResponse( |
| 314 const content::MediaStreamRequest& request, |
| 315 const content::MediaResponseCallback& callback, |
| 316 bool allow, |
| 317 const std::string& user_input); |
| 318 |
| 319 void OnWebViewDownloadPermissionResponse( |
| 320 const base::Callback<void(bool)>& callback, |
| 321 bool allow, |
| 322 const std::string& user_input); |
| 323 |
| 324 void OnWebViewPointerLockPermissionResponse( |
| 325 const base::Callback<void(bool)>& callback, |
| 326 bool allow, |
| 327 const std::string& user_input); |
| 328 |
| 329 void OnWebViewNewWindowResponse(int new_window_instance_id, |
| 330 bool allow, |
| 331 const std::string& user_input); |
| 332 |
| 333 static void FileSystemAccessedAsyncResponse(int render_process_id, |
| 334 int render_frame_id, |
| 335 int request_id, |
| 336 const GURL& url, |
| 337 bool allowed); |
| 338 |
| 339 static void FileSystemAccessedSyncResponse(int render_process_id, |
| 340 int render_frame_id, |
| 341 const GURL& url, |
| 342 IPC::Message* reply_msg, |
| 343 bool allowed); |
| 344 |
| 292 // WebContentsObserver implementation. | 345 // WebContentsObserver implementation. |
| 293 virtual void DidCommitProvisionalLoadForFrame( | 346 virtual void DidCommitProvisionalLoadForFrame( |
| 294 int64 frame_id, | 347 int64 frame_id, |
| 295 const base::string16& frame_unique_name, | 348 const base::string16& frame_unique_name, |
| 296 bool is_main_frame, | 349 bool is_main_frame, |
| 297 const GURL& url, | 350 const GURL& url, |
| 298 content::PageTransition transition_type, | 351 content::PageTransition transition_type, |
| 299 content::RenderViewHost* render_view_host) OVERRIDE; | 352 content::RenderViewHost* render_view_host) OVERRIDE; |
| 300 virtual void DidFailProvisionalLoad( | 353 virtual void DidFailProvisionalLoad( |
| 301 int64 frame_id, | 354 int64 frame_id, |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 449 name(name) {} | 502 name(name) {} |
| 450 }; | 503 }; |
| 451 | 504 |
| 452 typedef std::map<WebViewGuest*, NewWindowInfo> PendingWindowMap; | 505 typedef std::map<WebViewGuest*, NewWindowInfo> PendingWindowMap; |
| 453 PendingWindowMap pending_new_windows_; | 506 PendingWindowMap pending_new_windows_; |
| 454 | 507 |
| 455 DISALLOW_COPY_AND_ASSIGN(WebViewGuest); | 508 DISALLOW_COPY_AND_ASSIGN(WebViewGuest); |
| 456 }; | 509 }; |
| 457 | 510 |
| 458 #endif // CHROME_BROWSER_GUEST_VIEW_WEB_VIEW_WEB_VIEW_GUEST_H_ | 511 #endif // CHROME_BROWSER_GUEST_VIEW_WEB_VIEW_WEB_VIEW_GUEST_H_ |
| OLD | NEW |