diff --git a/DEPS b/DEPS index 542383558e42..575bd213f2c6 100644 --- a/DEPS +++ b/DEPS @@ -5,7 +5,7 @@ deps = { "vendor/tracking-protection": "https://github.com/brave/tracking-protection.git@0931529eba33109c6b3946a83295577fea540045", "vendor/hashset-cpp": "https://github.com/bbondy/hashset-cpp.git@f427324d667d7188a9e0975cca7f3a8c06226b4d", "vendor/bloom-filter-cpp": "https://github.com/bbondy/bloom-filter-cpp.git@6faa14ececa33badad149c40f94ff9867159681c", - "vendor/brave-extension": "https://github.com/brave/brave-extension.git@4e7c8782e6d8c0f07b626d8f36c86093bcc7b687", + "vendor/brave-extension": "https://github.com/brave/brave-extension.git@964216a438140ec4cd8bca606c51bee2f4869730", "vendor/requests": "https://github.com/kennethreitz/requests@e4d59bedfd3c7f4f254f4f5d036587bcd8152458", "vendor/boto": "https://github.com/boto/boto@f7574aa6cc2c819430c1f05e9a1a1a666ef8169b", "vendor/python-patch": "https://github.com/svn2github/python-patch@a336a458016ced89aba90dfc3f4c8222ae3b1403", diff --git a/components/brave_shields/browser/brave_shields_util.cc b/components/brave_shields/browser/brave_shields_util.cc index 5cc569340ce6..4e7ccf6df32a 100644 --- a/components/brave_shields/browser/brave_shields_util.cc +++ b/components/brave_shields/browser/brave_shields_util.cc @@ -47,12 +47,20 @@ bool IsAllowContentSettingFromIO(net::URLRequest* request, return setting != CONTENT_SETTING_BLOCK; } -void GetRenderFrameIdAndProcessId(URLRequest* request, +void GetRenderFrameInfo(URLRequest* request, int* render_frame_id, - int* render_process_id) { + int* render_process_id, + int* frame_tree_node_id) { DCHECK_CURRENTLY_ON(BrowserThread::IO); *render_frame_id = -1; *render_process_id = -1; + *frame_tree_node_id = -1; + + // PlzNavigate requests have a frame_tree_node_id, but no render_process_id + auto* request_info = content::ResourceRequestInfo::ForRequest(request); + if (request_info) { + *frame_tree_node_id = request_info->GetFrameTreeNodeId(); + } extensions::ExtensionApiFrameIdMap::FrameData frame_data; if (!content::ResourceRequestInfo::GetRenderFrameForRequest( request, render_process_id, render_frame_id)) { @@ -65,28 +73,15 @@ void GetRenderFrameIdAndProcessId(URLRequest* request, } } -int GetTabIdFromIO(URLRequest* request) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - int render_frame_id = -1; - int render_process_id = -1; - int tab_id = -1; - GetRenderFrameIdAndProcessId(request, &render_frame_id, &render_process_id); - extensions::ExtensionApiFrameIdMap::FrameData frame_data; - if (extensions::ExtensionApiFrameIdMap::Get()->GetCachedFrameDataOnIO( - render_process_id, render_frame_id, &frame_data)) { - tab_id = frame_data.tab_id; - } - return tab_id; -} - void DispatchBlockedEventFromIO(URLRequest* request, const std::string& block_type) { DCHECK_CURRENTLY_ON(BrowserThread::IO); - int render_process_id, render_frame_id; - GetRenderFrameIdAndProcessId(request, &render_frame_id, &render_process_id); + int render_process_id, render_frame_id, frame_tree_node_id; + GetRenderFrameInfo(request, &render_frame_id, &render_process_id, + &frame_tree_node_id); BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, base::BindOnce(&BraveShieldsWebContentsObserver::DispatchBlockedEvent, - block_type, render_process_id, render_frame_id)); + block_type, render_process_id, render_frame_id, frame_tree_node_id)); } } // namespace brave_shields diff --git a/components/brave_shields/browser/brave_shields_web_contents_observer.cc b/components/brave_shields/browser/brave_shields_web_contents_observer.cc index f825da1770e9..426516a5724d 100644 --- a/components/brave_shields/browser/brave_shields_web_contents_observer.cc +++ b/components/brave_shields/browser/brave_shields_web_contents_observer.cc @@ -41,19 +41,22 @@ void BraveShieldsWebContentsObserver::RenderFrameCreated( void BraveShieldsWebContentsObserver::DispatchBlockedEvent( const std::string& block_type, int render_process_id, - int render_frame_id) { + int render_frame_id, + int frame_tree_node_id) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - if (render_frame_id == -1 || render_process_id == -1) { - return; - } - content::RenderFrameHost* rfh = - content::RenderFrameHost::FromID(render_process_id, render_frame_id); - if (!rfh) { - return; - } content::WebContents* web_contents = - content::WebContents::FromRenderFrameHost(rfh); + content::WebContents::FromFrameTreeNodeId(frame_tree_node_id); + if (!web_contents) { + content::RenderFrameHost* rfh = + content::RenderFrameHost::FromID(render_process_id, render_frame_id); + if (!rfh) { + return; + } + web_contents = + content::WebContents::FromRenderFrameHost(rfh); + } + Profile* profile = Profile::FromBrowserContext(web_contents->GetBrowserContext()); EventRouter* event_router = EventRouter::Get(profile); diff --git a/components/brave_shields/browser/brave_shields_web_contents_observer.h b/components/brave_shields/browser/brave_shields_web_contents_observer.h index 3de224cf8191..5ab1176bdb1e 100644 --- a/components/brave_shields/browser/brave_shields_web_contents_observer.h +++ b/components/brave_shields/browser/brave_shields_web_contents_observer.h @@ -22,7 +22,7 @@ class BraveShieldsWebContentsObserver : public content::WebContentsObserver, ~BraveShieldsWebContentsObserver() override; static void DispatchBlockedEvent(const std::string& block_type, - int render_process_id, int render_frame_id); + int render_process_id, int render_frame_id, int frame_tree_node_id); // content::WebContentsObserver overrides. void RenderFrameCreated(content::RenderFrameHost* host) override;