Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(64)

Side by Side Diff: extensions/browser/api/web_request/web_request_api.cc

Issue 2002763003: webRequest: reliably determine tabId (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@webRequest-testing-unload
Patch Set: Last nits Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | extensions/browser/api/web_request/web_request_event_details.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "extensions/browser/api/web_request/web_request_api.h" 5 #include "extensions/browser/api/web_request/web_request_api.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <memory> 10 #include <memory>
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 const WebViewRendererState::WebViewInfo& web_view_info, 236 const WebViewRendererState::WebViewInfo& web_view_info,
237 std::unique_ptr<WebRequestEventDetails> event_details) { 237 std::unique_ptr<WebRequestEventDetails> event_details) {
238 DCHECK_CURRENTLY_ON(BrowserThread::UI); 238 DCHECK_CURRENTLY_ON(BrowserThread::UI);
239 239
240 content::BrowserContext* browser_context = 240 content::BrowserContext* browser_context =
241 reinterpret_cast<content::BrowserContext*>(browser_context_id); 241 reinterpret_cast<content::BrowserContext*>(browser_context_id);
242 if (!ExtensionsBrowserClient::Get()->IsValidContext(browser_context)) 242 if (!ExtensionsBrowserClient::Get()->IsValidContext(browser_context))
243 return; 243 return;
244 244
245 std::unique_ptr<base::ListValue> event_args(new base::ListValue); 245 std::unique_ptr<base::ListValue> event_args(new base::ListValue);
246 event_details->DetermineFrameIdOnUI(); 246 event_details->DetermineFrameDataOnUI();
247 event_args->Append(event_details->GetAndClearDict()); 247 event_args->Append(event_details->GetAndClearDict());
248 248
249 EventRouter* event_router = EventRouter::Get(browser_context); 249 EventRouter* event_router = EventRouter::Get(browser_context);
250 250
251 EventFilteringInfo event_filtering_info; 251 EventFilteringInfo event_filtering_info;
252 252
253 events::HistogramValue histogram_value = events::UNKNOWN; 253 events::HistogramValue histogram_value = events::UNKNOWN;
254 std::string event_name; 254 std::string event_name;
255 // The instance ID uniquely identifies a <webview> instance within an embedder 255 // The instance ID uniquely identifies a <webview> instance within an embedder
256 // process. We use a filter here so that only event listeners for a particular 256 // process. We use a filter here so that only event listeners for a particular
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
594 rules_registries_.erase(key); 594 rules_registries_.erase(key);
595 } 595 }
596 596
597 std::unique_ptr<WebRequestEventDetails> 597 std::unique_ptr<WebRequestEventDetails>
598 ExtensionWebRequestEventRouter::CreateEventDetails( 598 ExtensionWebRequestEventRouter::CreateEventDetails(
599 const net::URLRequest* request, 599 const net::URLRequest* request,
600 int extra_info_spec) { 600 int extra_info_spec) {
601 std::unique_ptr<WebRequestEventDetails> event_details( 601 std::unique_ptr<WebRequestEventDetails> event_details(
602 new WebRequestEventDetails(request, extra_info_spec)); 602 new WebRequestEventDetails(request, extra_info_spec));
603 603
604 int render_frame_id = -1;
605 int render_process_id = -1;
606 int tab_id = -1;
607 ExtensionApiFrameIdMap::FrameData frame_data;
608 if (content::ResourceRequestInfo::GetRenderFrameForRequest(
609 request, &render_process_id, &render_frame_id) &&
610 ExtensionApiFrameIdMap::Get()->GetCachedFrameDataOnIO(
611 render_process_id, render_frame_id, &frame_data)) {
612 tab_id = frame_data.tab_id;
613 }
614 event_details->SetInteger(keys::kTabIdKey, tab_id);
615 return event_details; 604 return event_details;
616 } 605 }
617 606
618 int ExtensionWebRequestEventRouter::OnBeforeRequest( 607 int ExtensionWebRequestEventRouter::OnBeforeRequest(
619 void* browser_context, 608 void* browser_context,
620 const InfoMap* extension_info_map, 609 const InfoMap* extension_info_map,
621 net::URLRequest* request, 610 net::URLRequest* request,
622 const net::CompletionCallback& callback, 611 const net::CompletionCallback& callback,
623 GURL* new_url) { 612 GURL* new_url) {
624 if (ShouldHideEvent(browser_context, extension_info_map, request)) 613 if (ShouldHideEvent(browser_context, extension_info_map, request))
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
1025 IDS_LOAD_STATE_PARAMETER_EXTENSION, 1014 IDS_LOAD_STATE_PARAMETER_EXTENSION,
1026 base::UTF8ToUTF16(listener->extension_name)); 1015 base::UTF8ToUTF16(listener->extension_name));
1027 // LobAndReport allows extensions that block requests to be displayed in 1016 // LobAndReport allows extensions that block requests to be displayed in
1028 // the load status bar. 1017 // the load status bar.
1029 request->LogAndReportBlockedBy(delegate_info.c_str()); 1018 request->LogAndReportBlockedBy(delegate_info.c_str());
1030 } 1019 }
1031 ++num_handlers_blocking; 1020 ++num_handlers_blocking;
1032 } 1021 }
1033 } 1022 }
1034 1023
1035 event_details.release()->DetermineFrameIdOnIO(base::Bind( 1024 event_details.release()->DetermineFrameDataOnIO(base::Bind(
1036 &ExtensionWebRequestEventRouter::DispatchEventToListeners, AsWeakPtr(), 1025 &ExtensionWebRequestEventRouter::DispatchEventToListeners, AsWeakPtr(),
1037 browser_context, base::Passed(&listeners_to_dispatch))); 1026 browser_context, base::Passed(&listeners_to_dispatch)));
1038 1027
1039 if (num_handlers_blocking > 0) { 1028 if (num_handlers_blocking > 0) {
1040 BlockedRequest& blocked_request = blocked_requests_[request->identifier()]; 1029 BlockedRequest& blocked_request = blocked_requests_[request->identifier()];
1041 blocked_request.request = request; 1030 blocked_request.request = request;
1042 blocked_request.is_incognito |= IsIncognitoBrowserContext(browser_context); 1031 blocked_request.is_incognito |= IsIncognitoBrowserContext(browser_context);
1043 blocked_request.num_handlers_blocking += num_handlers_blocking; 1032 blocked_request.num_handlers_blocking += num_handlers_blocking;
1044 blocked_request.blocking_time = base::Time::Now(); 1033 blocked_request.blocking_time = base::Time::Now();
1045 return true; 1034 return true;
(...skipping 1249 matching lines...) Expand 10 before | Expand all | Expand 10 after
2295 // Continue gracefully. 2284 // Continue gracefully.
2296 RunSync(); 2285 RunSync();
2297 } 2286 }
2298 2287
2299 bool WebRequestHandlerBehaviorChangedFunction::RunSync() { 2288 bool WebRequestHandlerBehaviorChangedFunction::RunSync() {
2300 helpers::ClearCacheOnNavigation(); 2289 helpers::ClearCacheOnNavigation();
2301 return true; 2290 return true;
2302 } 2291 }
2303 2292
2304 } // namespace extensions 2293 } // namespace extensions
OLDNEW
« no previous file with comments | « no previous file | extensions/browser/api/web_request/web_request_event_details.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698