| 
									
										
										
										
											2016-01-30 16:49:18 +05:30
										 |  |  | // Copyright (c) 2016 GitHub, Inc.
 | 
					
						
							|  |  |  | // Use of this source code is governed by the MIT license that can be
 | 
					
						
							|  |  |  | // found in the LICENSE file.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "atom/browser/atom_permission_manager.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-12 19:25:56 -05:00
										 |  |  | #include <memory>
 | 
					
						
							| 
									
										
										
										
											2019-05-13 15:50:56 -07:00
										 |  |  | #include <utility>
 | 
					
						
							| 
									
										
										
										
											2016-03-08 23:32:59 +09:00
										 |  |  | #include <vector>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-08 16:45:37 +09:00
										 |  |  | #include "atom/browser/atom_browser_client.h"
 | 
					
						
							| 
									
										
										
										
											2018-08-23 21:21:46 +05:30
										 |  |  | #include "atom/browser/atom_browser_main_parts.h"
 | 
					
						
							| 
									
										
										
										
											2016-03-14 03:53:39 +05:30
										 |  |  | #include "atom/browser/web_contents_preferences.h"
 | 
					
						
							| 
									
										
										
										
											2016-01-30 19:01:10 +05:30
										 |  |  | #include "content/public/browser/child_process_security_policy.h"
 | 
					
						
							| 
									
										
										
										
											2018-10-02 14:53:10 -07:00
										 |  |  | #include "content/public/browser/permission_controller.h"
 | 
					
						
							| 
									
										
										
										
											2016-01-30 16:49:18 +05:30
										 |  |  | #include "content/public/browser/permission_type.h"
 | 
					
						
							|  |  |  | #include "content/public/browser/render_frame_host.h"
 | 
					
						
							|  |  |  | #include "content/public/browser/render_process_host.h"
 | 
					
						
							| 
									
										
										
										
											2016-02-01 15:13:49 +05:30
										 |  |  | #include "content/public/browser/render_view_host.h"
 | 
					
						
							| 
									
										
										
										
											2016-02-01 03:05:34 +05:30
										 |  |  | #include "content/public/browser/web_contents.h"
 | 
					
						
							| 
									
										
										
										
											2016-01-30 16:49:18 +05:30
										 |  |  | 
 | 
					
						
							|  |  |  | namespace atom { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-01 15:13:49 +05:30
										 |  |  | namespace { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | bool WebContentsDestroyed(int process_id) { | 
					
						
							| 
									
										
										
										
											2018-03-08 16:45:37 +09:00
										 |  |  |   content::WebContents* web_contents = | 
					
						
							| 
									
										
										
										
											2018-04-17 21:55:30 -04:00
										 |  |  |       static_cast<AtomBrowserClient*>(AtomBrowserClient::Get()) | 
					
						
							|  |  |  |           ->GetWebContentsFromProcessID(process_id); | 
					
						
							| 
									
										
										
										
											2018-03-08 16:45:37 +09:00
										 |  |  |   if (!web_contents) | 
					
						
							| 
									
										
										
										
											2016-03-14 03:53:39 +05:30
										 |  |  |     return true; | 
					
						
							| 
									
										
										
										
											2018-03-08 16:45:37 +09:00
										 |  |  |   return web_contents->IsBeingDestroyed(); | 
					
						
							| 
									
										
										
										
											2016-02-01 15:13:49 +05:30
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-19 15:12:16 -08:00
										 |  |  | void PermissionRequestResponseCallbackWrapper( | 
					
						
							| 
									
										
										
										
											2019-05-03 11:30:48 -07:00
										 |  |  |     AtomPermissionManager::StatusCallback callback, | 
					
						
							| 
									
										
										
										
											2016-12-19 15:12:16 -08:00
										 |  |  |     const std::vector<blink::mojom::PermissionStatus>& vector) { | 
					
						
							| 
									
										
										
										
											2019-05-03 11:30:48 -07:00
										 |  |  |   std::move(callback).Run(vector[0]); | 
					
						
							| 
									
										
										
										
											2016-12-19 15:12:16 -08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-01 15:13:49 +05:30
										 |  |  | }  // namespace
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-19 15:12:16 -08:00
										 |  |  | class AtomPermissionManager::PendingRequest { | 
					
						
							|  |  |  |  public: | 
					
						
							|  |  |  |   PendingRequest(content::RenderFrameHost* render_frame_host, | 
					
						
							|  |  |  |                  const std::vector<content::PermissionType>& permissions, | 
					
						
							| 
									
										
										
										
											2019-05-03 11:30:48 -07:00
										 |  |  |                  StatusesCallback callback) | 
					
						
							| 
									
										
										
										
											2016-12-19 15:12:16 -08:00
										 |  |  |       : render_process_id_(render_frame_host->GetProcess()->GetID()), | 
					
						
							| 
									
										
										
										
											2019-05-03 11:30:48 -07:00
										 |  |  |         callback_(std::move(callback)), | 
					
						
							| 
									
										
										
										
											2018-08-23 21:21:46 +05:30
										 |  |  |         permissions_(permissions), | 
					
						
							| 
									
										
										
										
											2016-12-19 15:12:16 -08:00
										 |  |  |         results_(permissions.size(), blink::mojom::PermissionStatus::DENIED), | 
					
						
							|  |  |  |         remaining_results_(permissions.size()) {} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   void SetPermissionStatus(int permission_id, | 
					
						
							|  |  |  |                            blink::mojom::PermissionStatus status) { | 
					
						
							|  |  |  |     DCHECK(!IsComplete()); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-23 21:21:46 +05:30
										 |  |  |     if (status == blink::mojom::PermissionStatus::GRANTED) { | 
					
						
							|  |  |  |       const auto permission = permissions_[permission_id]; | 
					
						
							|  |  |  |       if (permission == content::PermissionType::MIDI_SYSEX) { | 
					
						
							|  |  |  |         content::ChildProcessSecurityPolicy::GetInstance() | 
					
						
							|  |  |  |             ->GrantSendMidiSysExMessage(render_process_id_); | 
					
						
							|  |  |  |       } else if (permission == content::PermissionType::GEOLOCATION) { | 
					
						
							|  |  |  |         AtomBrowserMainParts::Get() | 
					
						
							|  |  |  |             ->GetGeolocationControl() | 
					
						
							|  |  |  |             ->UserDidOptIntoLocationServices(); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-12-19 15:12:16 -08:00
										 |  |  |     results_[permission_id] = status; | 
					
						
							|  |  |  |     --remaining_results_; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-17 21:55:30 -04:00
										 |  |  |   int render_process_id() const { return render_process_id_; } | 
					
						
							| 
									
										
										
										
											2016-12-19 15:12:16 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-17 21:55:30 -04:00
										 |  |  |   bool IsComplete() const { return remaining_results_ == 0; } | 
					
						
							| 
									
										
										
										
											2016-12-19 15:12:16 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-03 11:30:48 -07:00
										 |  |  |   void RunCallback() { | 
					
						
							|  |  |  |     if (!callback_.is_null()) { | 
					
						
							|  |  |  |       std::move(callback_).Run(results_); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-12-19 15:12:16 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |  private: | 
					
						
							|  |  |  |   int render_process_id_; | 
					
						
							| 
									
										
										
										
											2019-05-03 11:30:48 -07:00
										 |  |  |   StatusesCallback callback_; | 
					
						
							| 
									
										
										
										
											2018-08-23 21:21:46 +05:30
										 |  |  |   std::vector<content::PermissionType> permissions_; | 
					
						
							| 
									
										
										
										
											2016-12-19 15:12:16 -08:00
										 |  |  |   std::vector<blink::mojom::PermissionStatus> results_; | 
					
						
							|  |  |  |   size_t remaining_results_; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-17 21:55:30 -04:00
										 |  |  | AtomPermissionManager::AtomPermissionManager() {} | 
					
						
							| 
									
										
										
										
											2016-01-30 16:49:18 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-17 21:55:30 -04:00
										 |  |  | AtomPermissionManager::~AtomPermissionManager() {} | 
					
						
							| 
									
										
										
										
											2016-01-30 16:49:18 +05:30
										 |  |  | 
 | 
					
						
							|  |  |  | void AtomPermissionManager::SetPermissionRequestHandler( | 
					
						
							|  |  |  |     const RequestHandler& handler) { | 
					
						
							| 
									
										
										
										
											2016-12-19 15:12:16 -08:00
										 |  |  |   if (handler.is_null() && !pending_requests_.IsEmpty()) { | 
					
						
							| 
									
										
										
										
											2019-05-03 11:30:48 -07:00
										 |  |  |     for (PendingRequestsMap::iterator iter(&pending_requests_); !iter.IsAtEnd(); | 
					
						
							|  |  |  |          iter.Advance()) { | 
					
						
							| 
									
										
										
										
											2018-04-17 15:41:47 -07:00
										 |  |  |       auto* request = iter.GetCurrentValue(); | 
					
						
							| 
									
										
										
										
											2016-12-19 15:12:16 -08:00
										 |  |  |       if (!WebContentsDestroyed(request->render_process_id())) | 
					
						
							|  |  |  |         request->RunCallback(); | 
					
						
							| 
									
										
										
										
											2016-02-01 15:13:49 +05:30
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-12-19 15:12:16 -08:00
										 |  |  |     pending_requests_.Clear(); | 
					
						
							| 
									
										
										
										
											2016-01-30 16:49:18 +05:30
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-02-01 03:05:34 +05:30
										 |  |  |   request_handler_ = handler; | 
					
						
							| 
									
										
										
										
											2016-01-30 16:49:18 +05:30
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-29 02:05:08 +12:00
										 |  |  | void AtomPermissionManager::SetPermissionCheckHandler( | 
					
						
							|  |  |  |     const CheckHandler& handler) { | 
					
						
							|  |  |  |   check_handler_ = handler; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-30 16:49:18 +05:30
										 |  |  | int AtomPermissionManager::RequestPermission( | 
					
						
							|  |  |  |     content::PermissionType permission, | 
					
						
							|  |  |  |     content::RenderFrameHost* render_frame_host, | 
					
						
							|  |  |  |     const GURL& requesting_origin, | 
					
						
							| 
									
										
										
										
											2016-11-30 16:30:03 +09:00
										 |  |  |     bool user_gesture, | 
					
						
							| 
									
										
										
										
											2019-05-03 11:30:48 -07:00
										 |  |  |     StatusCallback response_callback) { | 
					
						
							| 
									
										
										
										
											2018-04-17 21:55:30 -04:00
										 |  |  |   return RequestPermissionWithDetails(permission, render_frame_host, | 
					
						
							|  |  |  |                                       requesting_origin, user_gesture, nullptr, | 
					
						
							| 
									
										
										
										
											2019-05-03 11:30:48 -07:00
										 |  |  |                                       std::move(response_callback)); | 
					
						
							| 
									
										
										
										
											2017-11-11 14:27:30 +11:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2017-11-11 14:44:57 +11:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-11 14:27:30 +11:00
										 |  |  | int AtomPermissionManager::RequestPermissionWithDetails( | 
					
						
							|  |  |  |     content::PermissionType permission, | 
					
						
							|  |  |  |     content::RenderFrameHost* render_frame_host, | 
					
						
							|  |  |  |     const GURL& requesting_origin, | 
					
						
							|  |  |  |     bool user_gesture, | 
					
						
							|  |  |  |     const base::DictionaryValue* details, | 
					
						
							| 
									
										
										
										
											2019-05-03 11:30:48 -07:00
										 |  |  |     StatusCallback response_callback) { | 
					
						
							| 
									
										
										
										
											2017-11-11 14:27:30 +11:00
										 |  |  |   return RequestPermissionsWithDetails( | 
					
						
							| 
									
										
										
										
											2018-04-17 21:55:30 -04:00
										 |  |  |       std::vector<content::PermissionType>(1, permission), render_frame_host, | 
					
						
							|  |  |  |       requesting_origin, user_gesture, details, | 
					
						
							| 
									
										
										
										
											2019-05-03 11:30:48 -07:00
										 |  |  |       base::BindOnce(PermissionRequestResponseCallbackWrapper, | 
					
						
							|  |  |  |                      std::move(response_callback))); | 
					
						
							| 
									
										
										
										
											2016-01-30 16:49:18 +05:30
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-08 23:28:53 +09:00
										 |  |  | int AtomPermissionManager::RequestPermissions( | 
					
						
							|  |  |  |     const std::vector<content::PermissionType>& permissions, | 
					
						
							|  |  |  |     content::RenderFrameHost* render_frame_host, | 
					
						
							|  |  |  |     const GURL& requesting_origin, | 
					
						
							| 
									
										
										
										
											2016-11-30 16:30:03 +09:00
										 |  |  |     bool user_gesture, | 
					
						
							| 
									
										
										
										
											2019-05-03 11:30:48 -07:00
										 |  |  |     StatusesCallback response_callback) { | 
					
						
							| 
									
										
										
										
											2018-04-17 21:55:30 -04:00
										 |  |  |   return RequestPermissionsWithDetails(permissions, render_frame_host, | 
					
						
							|  |  |  |                                        requesting_origin, user_gesture, nullptr, | 
					
						
							| 
									
										
										
										
											2019-05-03 11:30:48 -07:00
										 |  |  |                                        std::move(response_callback)); | 
					
						
							| 
									
										
										
										
											2017-11-11 14:27:30 +11:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int AtomPermissionManager::RequestPermissionsWithDetails( | 
					
						
							|  |  |  |     const std::vector<content::PermissionType>& permissions, | 
					
						
							|  |  |  |     content::RenderFrameHost* render_frame_host, | 
					
						
							|  |  |  |     const GURL& requesting_origin, | 
					
						
							|  |  |  |     bool user_gesture, | 
					
						
							|  |  |  |     const base::DictionaryValue* details, | 
					
						
							| 
									
										
										
										
											2019-05-03 11:30:48 -07:00
										 |  |  |     StatusesCallback response_callback) { | 
					
						
							| 
									
										
										
										
											2016-12-19 15:12:16 -08:00
										 |  |  |   if (permissions.empty()) { | 
					
						
							| 
									
										
										
										
											2019-05-03 11:30:48 -07:00
										 |  |  |     std::move(response_callback).Run({}); | 
					
						
							| 
									
										
										
										
											2018-10-02 15:08:12 -07:00
										 |  |  |     return content::PermissionController::kNoPendingOperation; | 
					
						
							| 
									
										
										
										
											2016-12-19 15:12:16 -08:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   if (request_handler_.is_null()) { | 
					
						
							|  |  |  |     std::vector<blink::mojom::PermissionStatus> statuses; | 
					
						
							|  |  |  |     for (auto permission : permissions) { | 
					
						
							|  |  |  |       if (permission == content::PermissionType::MIDI_SYSEX) { | 
					
						
							| 
									
										
										
										
											2018-04-17 21:55:30 -04:00
										 |  |  |         content::ChildProcessSecurityPolicy::GetInstance() | 
					
						
							|  |  |  |             ->GrantSendMidiSysExMessage( | 
					
						
							|  |  |  |                 render_frame_host->GetProcess()->GetID()); | 
					
						
							| 
									
										
										
										
											2018-08-23 21:21:46 +05:30
										 |  |  |       } else if (permission == content::PermissionType::GEOLOCATION) { | 
					
						
							|  |  |  |         AtomBrowserMainParts::Get() | 
					
						
							|  |  |  |             ->GetGeolocationControl() | 
					
						
							|  |  |  |             ->UserDidOptIntoLocationServices(); | 
					
						
							| 
									
										
										
										
											2016-12-19 15:12:16 -08:00
										 |  |  |       } | 
					
						
							|  |  |  |       statuses.push_back(blink::mojom::PermissionStatus::GRANTED); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2019-05-03 11:30:48 -07:00
										 |  |  |     std::move(response_callback).Run(statuses); | 
					
						
							| 
									
										
										
										
											2018-10-02 15:08:12 -07:00
										 |  |  |     return content::PermissionController::kNoPendingOperation; | 
					
						
							| 
									
										
										
										
											2016-12-19 15:12:16 -08:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-17 15:41:47 -07:00
										 |  |  |   auto* web_contents = | 
					
						
							| 
									
										
										
										
											2016-12-19 15:12:16 -08:00
										 |  |  |       content::WebContents::FromRenderFrameHost(render_frame_host); | 
					
						
							| 
									
										
										
										
											2018-04-12 08:48:32 -04:00
										 |  |  |   int request_id = pending_requests_.Add(std::make_unique<PendingRequest>( | 
					
						
							| 
									
										
										
										
											2019-05-03 11:30:48 -07:00
										 |  |  |       render_frame_host, permissions, std::move(response_callback))); | 
					
						
							| 
									
										
										
										
											2016-12-19 15:12:16 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   for (size_t i = 0; i < permissions.size(); ++i) { | 
					
						
							|  |  |  |     auto permission = permissions[i]; | 
					
						
							|  |  |  |     const auto callback = | 
					
						
							| 
									
										
										
										
											2019-05-03 11:30:48 -07:00
										 |  |  |         base::BindRepeating(&AtomPermissionManager::OnPermissionResponse, | 
					
						
							|  |  |  |                             base::Unretained(this), request_id, i); | 
					
						
							| 
									
										
										
										
											2017-11-11 14:27:30 +11:00
										 |  |  |     if (details == nullptr) { | 
					
						
							| 
									
										
										
										
											2017-11-11 14:44:57 +11:00
										 |  |  |       request_handler_.Run(web_contents, permission, callback, | 
					
						
							|  |  |  |                            base::DictionaryValue()); | 
					
						
							| 
									
										
										
										
											2017-11-11 14:27:30 +11:00
										 |  |  |     } else { | 
					
						
							|  |  |  |       request_handler_.Run(web_contents, permission, callback, *details); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-03-08 23:28:53 +09:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-12-19 15:12:16 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   return request_id; | 
					
						
							| 
									
										
										
										
											2016-03-08 23:28:53 +09:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-01 03:05:34 +05:30
										 |  |  | void AtomPermissionManager::OnPermissionResponse( | 
					
						
							|  |  |  |     int request_id, | 
					
						
							| 
									
										
										
										
											2016-12-19 15:12:16 -08:00
										 |  |  |     int permission_id, | 
					
						
							| 
									
										
										
										
											2016-05-23 10:59:39 +09:00
										 |  |  |     blink::mojom::PermissionStatus status) { | 
					
						
							| 
									
										
										
										
											2018-04-17 15:41:47 -07:00
										 |  |  |   auto* pending_request = pending_requests_.Lookup(request_id); | 
					
						
							| 
									
										
										
										
											2016-12-19 15:12:16 -08:00
										 |  |  |   if (!pending_request) | 
					
						
							|  |  |  |     return; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   pending_request->SetPermissionStatus(permission_id, status); | 
					
						
							|  |  |  |   if (pending_request->IsComplete()) { | 
					
						
							|  |  |  |     pending_request->RunCallback(); | 
					
						
							|  |  |  |     pending_requests_.Remove(request_id); | 
					
						
							| 
									
										
										
										
											2016-02-01 15:13:49 +05:30
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-02-01 03:05:34 +05:30
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-17 21:55:30 -04:00
										 |  |  | void AtomPermissionManager::ResetPermission(content::PermissionType permission, | 
					
						
							|  |  |  |                                             const GURL& requesting_origin, | 
					
						
							|  |  |  |                                             const GURL& embedding_origin) {} | 
					
						
							| 
									
										
										
										
											2016-01-30 16:49:18 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-23 10:59:39 +09:00
										 |  |  | blink::mojom::PermissionStatus AtomPermissionManager::GetPermissionStatus( | 
					
						
							| 
									
										
										
										
											2016-01-30 16:49:18 +05:30
										 |  |  |     content::PermissionType permission, | 
					
						
							|  |  |  |     const GURL& requesting_origin, | 
					
						
							|  |  |  |     const GURL& embedding_origin) { | 
					
						
							| 
									
										
										
										
											2016-05-23 10:59:39 +09:00
										 |  |  |   return blink::mojom::PermissionStatus::GRANTED; | 
					
						
							| 
									
										
										
										
											2016-01-30 16:49:18 +05:30
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int AtomPermissionManager::SubscribePermissionStatusChange( | 
					
						
							|  |  |  |     content::PermissionType permission, | 
					
						
							| 
									
										
										
										
											2018-10-25 21:15:51 +05:30
										 |  |  |     content::RenderFrameHost* render_frame_host, | 
					
						
							| 
									
										
										
										
											2016-01-30 16:49:18 +05:30
										 |  |  |     const GURL& requesting_origin, | 
					
						
							| 
									
										
										
										
											2019-05-03 11:30:48 -07:00
										 |  |  |     base::RepeatingCallback<void(blink::mojom::PermissionStatus)> callback) { | 
					
						
							| 
									
										
										
										
											2016-01-30 16:49:18 +05:30
										 |  |  |   return -1; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void AtomPermissionManager::UnsubscribePermissionStatusChange( | 
					
						
							| 
									
										
										
										
											2018-04-17 21:55:30 -04:00
										 |  |  |     int subscription_id) {} | 
					
						
							| 
									
										
										
										
											2016-01-30 16:49:18 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-29 02:05:08 +12:00
										 |  |  | bool AtomPermissionManager::CheckPermissionWithDetails( | 
					
						
							|  |  |  |     content::PermissionType permission, | 
					
						
							|  |  |  |     content::RenderFrameHost* render_frame_host, | 
					
						
							|  |  |  |     const GURL& requesting_origin, | 
					
						
							|  |  |  |     const base::DictionaryValue* details) const { | 
					
						
							|  |  |  |   if (check_handler_.is_null()) { | 
					
						
							|  |  |  |     return true; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   auto* web_contents = | 
					
						
							|  |  |  |       content::WebContents::FromRenderFrameHost(render_frame_host); | 
					
						
							|  |  |  |   return check_handler_.Run(web_contents, permission, requesting_origin, | 
					
						
							|  |  |  |                             *details); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-22 01:48:43 +10:00
										 |  |  | blink::mojom::PermissionStatus | 
					
						
							|  |  |  | AtomPermissionManager::GetPermissionStatusForFrame( | 
					
						
							|  |  |  |     content::PermissionType permission, | 
					
						
							|  |  |  |     content::RenderFrameHost* render_frame_host, | 
					
						
							|  |  |  |     const GURL& requesting_origin) { | 
					
						
							|  |  |  |   return blink::mojom::PermissionStatus::GRANTED; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-30 16:49:18 +05:30
										 |  |  | }  // namespace atom
 |