Skip to content

Commit

Permalink
Merge pull request #5 from brave/plz-navigae-c63
Browse files Browse the repository at this point in the history
Use frame_tree_node_id to get web-contents in case of no process ID
  • Loading branch information
bbondy authored Dec 19, 2017
2 parents 12a36d7 + 5ed02f1 commit 5408436
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 31 deletions.
2 changes: 1 addition & 1 deletion DEPS
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
33 changes: 14 additions & 19 deletions components/brave_shields/browser/brave_shields_util.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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)) {
Expand All @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit 5408436

Please sign in to comment.