Skip to content

Commit 5408436

Browse files
authored
Merge pull request #5 from brave/plz-navigae-c63
Use frame_tree_node_id to get web-contents in case of no process ID
2 parents 12a36d7 + 5ed02f1 commit 5408436

File tree

4 files changed

+29
-31
lines changed

4 files changed

+29
-31
lines changed

DEPS

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ deps = {
55
"vendor/tracking-protection": "https://github.com/brave/tracking-protection.git@0931529eba33109c6b3946a83295577fea540045",
66
"vendor/hashset-cpp": "https://github.com/bbondy/hashset-cpp.git@f427324d667d7188a9e0975cca7f3a8c06226b4d",
77
"vendor/bloom-filter-cpp": "https://github.com/bbondy/bloom-filter-cpp.git@6faa14ececa33badad149c40f94ff9867159681c",
8-
"vendor/brave-extension": "https://github.com/brave/brave-extension.git@4e7c8782e6d8c0f07b626d8f36c86093bcc7b687",
8+
"vendor/brave-extension": "https://github.com/brave/brave-extension.git@964216a438140ec4cd8bca606c51bee2f4869730",
99
"vendor/requests": "https://github.com/kennethreitz/requests@e4d59bedfd3c7f4f254f4f5d036587bcd8152458",
1010
"vendor/boto": "https://github.com/boto/boto@f7574aa6cc2c819430c1f05e9a1a1a666ef8169b",
1111
"vendor/python-patch": "https://github.com/svn2github/python-patch@a336a458016ced89aba90dfc3f4c8222ae3b1403",

components/brave_shields/browser/brave_shields_util.cc

+14-19
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,20 @@ bool IsAllowContentSettingFromIO(net::URLRequest* request,
4747
return setting != CONTENT_SETTING_BLOCK;
4848
}
4949

50-
void GetRenderFrameIdAndProcessId(URLRequest* request,
50+
void GetRenderFrameInfo(URLRequest* request,
5151
int* render_frame_id,
52-
int* render_process_id) {
52+
int* render_process_id,
53+
int* frame_tree_node_id) {
5354
DCHECK_CURRENTLY_ON(BrowserThread::IO);
5455
*render_frame_id = -1;
5556
*render_process_id = -1;
57+
*frame_tree_node_id = -1;
58+
59+
// PlzNavigate requests have a frame_tree_node_id, but no render_process_id
60+
auto* request_info = content::ResourceRequestInfo::ForRequest(request);
61+
if (request_info) {
62+
*frame_tree_node_id = request_info->GetFrameTreeNodeId();
63+
}
5664
extensions::ExtensionApiFrameIdMap::FrameData frame_data;
5765
if (!content::ResourceRequestInfo::GetRenderFrameForRequest(
5866
request, render_process_id, render_frame_id)) {
@@ -65,28 +73,15 @@ void GetRenderFrameIdAndProcessId(URLRequest* request,
6573
}
6674
}
6775

68-
int GetTabIdFromIO(URLRequest* request) {
69-
DCHECK_CURRENTLY_ON(BrowserThread::IO);
70-
int render_frame_id = -1;
71-
int render_process_id = -1;
72-
int tab_id = -1;
73-
GetRenderFrameIdAndProcessId(request, &render_frame_id, &render_process_id);
74-
extensions::ExtensionApiFrameIdMap::FrameData frame_data;
75-
if (extensions::ExtensionApiFrameIdMap::Get()->GetCachedFrameDataOnIO(
76-
render_process_id, render_frame_id, &frame_data)) {
77-
tab_id = frame_data.tab_id;
78-
}
79-
return tab_id;
80-
}
81-
8276
void DispatchBlockedEventFromIO(URLRequest* request,
8377
const std::string& block_type) {
8478
DCHECK_CURRENTLY_ON(BrowserThread::IO);
85-
int render_process_id, render_frame_id;
86-
GetRenderFrameIdAndProcessId(request, &render_frame_id, &render_process_id);
79+
int render_process_id, render_frame_id, frame_tree_node_id;
80+
GetRenderFrameInfo(request, &render_frame_id, &render_process_id,
81+
&frame_tree_node_id);
8782
BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
8883
base::BindOnce(&BraveShieldsWebContentsObserver::DispatchBlockedEvent,
89-
block_type, render_process_id, render_frame_id));
84+
block_type, render_process_id, render_frame_id, frame_tree_node_id));
9085
}
9186

9287
} // namespace brave_shields

components/brave_shields/browser/brave_shields_web_contents_observer.cc

+13-10
Original file line numberDiff line numberDiff line change
@@ -41,19 +41,22 @@ void BraveShieldsWebContentsObserver::RenderFrameCreated(
4141
void BraveShieldsWebContentsObserver::DispatchBlockedEvent(
4242
const std::string& block_type,
4343
int render_process_id,
44-
int render_frame_id) {
44+
int render_frame_id,
45+
int frame_tree_node_id) {
4546
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
46-
if (render_frame_id == -1 || render_process_id == -1) {
47-
return;
48-
}
4947

50-
content::RenderFrameHost* rfh =
51-
content::RenderFrameHost::FromID(render_process_id, render_frame_id);
52-
if (!rfh) {
53-
return;
54-
}
5548
content::WebContents* web_contents =
56-
content::WebContents::FromRenderFrameHost(rfh);
49+
content::WebContents::FromFrameTreeNodeId(frame_tree_node_id);
50+
if (!web_contents) {
51+
content::RenderFrameHost* rfh =
52+
content::RenderFrameHost::FromID(render_process_id, render_frame_id);
53+
if (!rfh) {
54+
return;
55+
}
56+
web_contents =
57+
content::WebContents::FromRenderFrameHost(rfh);
58+
}
59+
5760
Profile* profile =
5861
Profile::FromBrowserContext(web_contents->GetBrowserContext());
5962
EventRouter* event_router = EventRouter::Get(profile);

components/brave_shields/browser/brave_shields_web_contents_observer.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class BraveShieldsWebContentsObserver : public content::WebContentsObserver,
2222
~BraveShieldsWebContentsObserver() override;
2323

2424
static void DispatchBlockedEvent(const std::string& block_type,
25-
int render_process_id, int render_frame_id);
25+
int render_process_id, int render_frame_id, int frame_tree_node_id);
2626

2727
// content::WebContentsObserver overrides.
2828
void RenderFrameCreated(content::RenderFrameHost* host) override;

0 commit comments

Comments
 (0)