| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |