refactor: use rfh instead of process id in permission manager (#28791)
* refactor: use rfh instead of process id in permission manager * fix build * Update electron_permission_manager.cc * swap for smaller diff
This commit is contained in:
parent
dc7fa1d9f1
commit
7c32deb70f
1 changed files with 9 additions and 5 deletions
|
@ -9,6 +9,7 @@
|
|||
#include <vector>
|
||||
|
||||
#include "content/public/browser/child_process_security_policy.h"
|
||||
#include "content/public/browser/global_routing_id.h"
|
||||
#include "content/public/browser/permission_controller.h"
|
||||
#include "content/public/browser/permission_type.h"
|
||||
#include "content/public/browser/render_frame_host.h"
|
||||
|
@ -23,10 +24,9 @@ namespace electron {
|
|||
|
||||
namespace {
|
||||
|
||||
bool WebContentsDestroyed(int process_id) {
|
||||
bool WebContentsDestroyed(content::RenderFrameHost* rfh) {
|
||||
content::WebContents* web_contents =
|
||||
static_cast<ElectronBrowserClient*>(ElectronBrowserClient::Get())
|
||||
->GetWebContentsFromProcessID(process_id);
|
||||
content::WebContents::FromRenderFrameHost(rfh);
|
||||
if (!web_contents)
|
||||
return true;
|
||||
return web_contents->IsBeingDestroyed();
|
||||
|
@ -46,6 +46,7 @@ class ElectronPermissionManager::PendingRequest {
|
|||
const std::vector<content::PermissionType>& permissions,
|
||||
StatusesCallback callback)
|
||||
: render_process_id_(render_frame_host->GetProcess()->GetID()),
|
||||
render_frame_id_(render_frame_host->GetGlobalFrameRoutingId()),
|
||||
callback_(std::move(callback)),
|
||||
permissions_(permissions),
|
||||
results_(permissions.size(), blink::mojom::PermissionStatus::DENIED),
|
||||
|
@ -71,7 +72,9 @@ class ElectronPermissionManager::PendingRequest {
|
|||
--remaining_results_;
|
||||
}
|
||||
|
||||
int render_process_id() const { return render_process_id_; }
|
||||
content::RenderFrameHost* GetRenderFrameHost() {
|
||||
return content::RenderFrameHost::FromID(render_frame_id_);
|
||||
}
|
||||
|
||||
bool IsComplete() const { return remaining_results_ == 0; }
|
||||
|
||||
|
@ -83,6 +86,7 @@ class ElectronPermissionManager::PendingRequest {
|
|||
|
||||
private:
|
||||
int render_process_id_;
|
||||
content::GlobalFrameRoutingId render_frame_id_;
|
||||
StatusesCallback callback_;
|
||||
std::vector<content::PermissionType> permissions_;
|
||||
std::vector<blink::mojom::PermissionStatus> results_;
|
||||
|
@ -99,7 +103,7 @@ void ElectronPermissionManager::SetPermissionRequestHandler(
|
|||
for (PendingRequestsMap::iterator iter(&pending_requests_); !iter.IsAtEnd();
|
||||
iter.Advance()) {
|
||||
auto* request = iter.GetCurrentValue();
|
||||
if (!WebContentsDestroyed(request->render_process_id()))
|
||||
if (!WebContentsDestroyed(request->GetRenderFrameHost()))
|
||||
request->RunCallback();
|
||||
}
|
||||
pending_requests_.Clear();
|
||||
|
|
Loading…
Add table
Reference in a new issue