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

Unified Diff: extensions/browser/api/web_request/web_request_api.cc

Issue 1236493004: Final batch adding real histogram values for extension events. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: android compile Created 5 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: extensions/browser/api/web_request/web_request_api.cc
diff --git a/extensions/browser/api/web_request/web_request_api.cc b/extensions/browser/api/web_request/web_request_api.cc
index 88212320ef6a97acc281b35745777b37af4836ee..ad112574ec5d681ad18c0bae10ac37e97d878e23 100644
--- a/extensions/browser/api/web_request/web_request_api.cc
+++ b/extensions/browser/api/web_request/web_request_api.cc
@@ -69,20 +69,15 @@ using content::BrowserMessageFilter;
using content::BrowserThread;
using content::ResourceRequestInfo;
using content::ResourceType;
-using extensions::ErrorUtils;
-using extensions::Extension;
-using extensions::InfoMap;
-using extensions::Feature;
-using extensions::RulesRegistryService;
-using extensions::Warning;
-using extensions::WarningService;
-using extensions::WarningSet;
-
-namespace activitylog = activity_log_web_request_constants;
+
+namespace activity_log = activity_log_web_request_constants;
namespace helpers = extension_web_request_api_helpers;
namespace keys = extension_web_request_api_constants;
-namespace web_request = extensions::core_api::web_request;
-namespace declarative_keys = extensions::declarative_webrequest_constants;
+
+namespace extensions {
+
+namespace declarative_keys = declarative_webrequest_constants;
+namespace web_request = core_api::web_request;
namespace {
@@ -181,14 +176,13 @@ void ExtractRequestRoutingInfo(net::URLRequest* request,
// a <webview> guest process or not. If it is from a <webview> guest process,
// then |web_view_info| is returned with information about the instance ID
// that uniquely identifies the <webview> and its embedder.
-bool GetWebViewInfo(
- net::URLRequest* request,
- extensions::WebViewRendererState::WebViewInfo* web_view_info) {
+bool GetWebViewInfo(net::URLRequest* request,
+ WebViewRendererState::WebViewInfo* web_view_info) {
int render_process_host_id = -1;
int routing_id = -1;
ExtractRequestRoutingInfo(request, &render_process_host_id, &routing_id);
- return extensions::WebViewRendererState::GetInstance()->
- GetInfo(render_process_host_id, routing_id, web_view_info);
+ return WebViewRendererState::GetInstance()->GetInfo(
+ render_process_host_id, routing_id, web_view_info);
}
void ExtractRequestInfoDetails(net::URLRequest* request,
@@ -229,11 +223,11 @@ void ExtractRequestInfoBody(const net::URLRequest* request,
out->Set(keys::kRequestBodyKey, request_body);
// Get the data presenters, ordered by how specific they are.
- extensions::ParsedDataPresenter parsed_data_presenter(*request);
- extensions::RawDataPresenter raw_data_presenter;
- extensions::UploadDataPresenter* const presenters[] = {
- &parsed_data_presenter, // 1: any parseable forms? (Specific to forms.)
- &raw_data_presenter // 2: any data at all? (Non-specific.)
+ ParsedDataPresenter parsed_data_presenter(*request);
+ RawDataPresenter raw_data_presenter;
+ UploadDataPresenter* const presenters[] = {
+ &parsed_data_presenter, // 1: any parseable forms? (Specific to forms.)
+ &raw_data_presenter // 2: any data at all? (Non-specific.)
};
// Keys for the results of the corresponding presenters.
static const char* const kKeys[] = {
@@ -330,39 +324,39 @@ void SendOnMessageEventOnUI(
void* browser_context_id,
const std::string& extension_id,
bool is_web_view_guest,
- const extensions::WebViewRendererState::WebViewInfo& web_view_info,
+ const WebViewRendererState::WebViewInfo& web_view_info,
scoped_ptr<base::DictionaryValue> event_argument) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
content::BrowserContext* browser_context =
reinterpret_cast<content::BrowserContext*>(browser_context_id);
- if (!extensions::ExtensionsBrowserClient::Get()->IsValidContext(
- browser_context))
+ if (!ExtensionsBrowserClient::Get()->IsValidContext(browser_context))
return;
scoped_ptr<base::ListValue> event_args(new base::ListValue);
event_args->Append(event_argument.release());
- extensions::EventRouter* event_router =
- extensions::EventRouter::Get(browser_context);
+ EventRouter* event_router = EventRouter::Get(browser_context);
- extensions::EventFilteringInfo event_filtering_info;
+ EventFilteringInfo event_filtering_info;
+ events::HistogramValue histogram_value = events::UNKNOWN;
std::string event_name;
// The instance ID uniquely identifies a <webview> instance within an embedder
// process. We use a filter here so that only event listeners for a particular
// <webview> will fire.
if (is_web_view_guest) {
event_filtering_info.SetInstanceID(web_view_info.instance_id);
+ histogram_value = events::WEB_VIEW_INTERNAL_ON_MESSAGE;
event_name = webview::kEventMessage;
} else {
+ histogram_value = events::DECLARATIVE_WEB_REQUEST_ON_MESSAGE;
event_name = declarative_keys::kOnMessage;
}
- scoped_ptr<extensions::Event> event(new extensions::Event(
- extensions::events::UNKNOWN, event_name, event_args.Pass(),
- browser_context, GURL(), extensions::EventRouter::USER_GESTURE_UNKNOWN,
- event_filtering_info));
+ scoped_ptr<Event> event(new Event(
+ histogram_value, event_name, event_args.Pass(), browser_context, GURL(),
+ EventRouter::USER_GESTURE_UNKNOWN, event_filtering_info));
event_router->DispatchEventToExtension(extension_id, event.Pass());
}
@@ -380,8 +374,6 @@ void RemoveEventListenerOnIOThread(
} // namespace
-namespace extensions {
-
WebRequestAPI::WebRequestAPI(content::BrowserContext* context)
: browser_context_(context) {
EventRouter* event_router = EventRouter::Get(browser_context_);
@@ -428,8 +420,6 @@ void WebRequestAPI::OnListenerRemoved(const EventListenerInfo& details) {
0 /* web_view_instance_id */));
}
-} // namespace extensions
-
// Represents a single unique listener to an event, along with whatever filter
// parameters and extra_info_spec were specified at the time the listener was
// added.
@@ -648,8 +638,7 @@ ExtensionWebRequestEventRouter* ExtensionWebRequestEventRouter::GetInstance() {
ExtensionWebRequestEventRouter::ExtensionWebRequestEventRouter()
: request_time_tracker_(new ExtensionWebRequestTimeTracker) {
web_request_event_router_delegate_.reset(
- extensions::ExtensionsAPIClient::Get()->
- CreateWebRequestEventRouterDelegate());
+ ExtensionsAPIClient::Get()->CreateWebRequestEventRouterDelegate());
}
ExtensionWebRequestEventRouter::~ExtensionWebRequestEventRouter() {
@@ -658,7 +647,7 @@ ExtensionWebRequestEventRouter::~ExtensionWebRequestEventRouter() {
void ExtensionWebRequestEventRouter::RegisterRulesRegistry(
void* browser_context,
int rules_registry_id,
- scoped_refptr<extensions::WebRequestRulesRegistry> rules_registry) {
+ scoped_refptr<WebRequestRulesRegistry> rules_registry) {
RulesRegistryKey key(browser_context, rules_registry_id);
if (rules_registry.get())
rules_registries_[key] = rules_registry;
@@ -724,7 +713,7 @@ int ExtensionWebRequestEventRouter::OnBeforeRequest(
initialize_blocked_requests |=
ProcessDeclarativeRules(browser_context, extension_info_map,
web_request::OnBeforeRequest::kEventName, request,
- extensions::ON_BEFORE_REQUEST, NULL);
+ ON_BEFORE_REQUEST, NULL);
int extra_info_spec = 0;
std::vector<const EventListener*> listeners =
@@ -778,10 +767,9 @@ int ExtensionWebRequestEventRouter::OnBeforeSendHeaders(
bool initialize_blocked_requests = false;
- initialize_blocked_requests |=
- ProcessDeclarativeRules(browser_context, extension_info_map,
- keys::kOnBeforeSendHeadersEvent, request,
- extensions::ON_BEFORE_SEND_HEADERS, NULL);
+ initialize_blocked_requests |= ProcessDeclarativeRules(
+ browser_context, extension_info_map, keys::kOnBeforeSendHeadersEvent,
+ request, ON_BEFORE_SEND_HEADERS, NULL);
int extra_info_spec = 0;
std::vector<const EventListener*> listeners =
@@ -870,11 +858,9 @@ int ExtensionWebRequestEventRouter::OnHeadersReceived(
bool initialize_blocked_requests = false;
- initialize_blocked_requests |=
- ProcessDeclarativeRules(browser_context, extension_info_map,
- keys::kOnHeadersReceivedEvent, request,
- extensions::ON_HEADERS_RECEIVED,
- original_response_headers);
+ initialize_blocked_requests |= ProcessDeclarativeRules(
+ browser_context, extension_info_map, keys::kOnHeadersReceivedEvent,
+ request, ON_HEADERS_RECEIVED, original_response_headers);
int extra_info_spec = 0;
std::vector<const EventListener*> listeners =
@@ -1210,12 +1196,10 @@ bool ExtensionWebRequestEventRouter::DispatchEvent(
if (!((*it)->extra_info_spec & ExtraInfoSpec::RESPONSE_HEADERS))
dict->Remove(keys::kResponseHeadersKey, NULL);
- extensions::EventRouter::DispatchEvent(
- (*it)->ipc_sender.get(), browser_context,
- (*it)->extension_id, (*it)->sub_event_name,
- args_filtered.Pass(),
- extensions::EventRouter::USER_GESTURE_UNKNOWN,
- extensions::EventFilteringInfo());
+ EventRouter::DispatchEvent(
+ (*it)->ipc_sender.get(), browser_context, (*it)->extension_id,
+ (*it)->sub_event_name, args_filtered.Pass(),
+ EventRouter::USER_GESTURE_UNKNOWN, EventFilteringInfo());
if ((*it)->extra_info_spec &
(ExtraInfoSpec::BLOCKING | ExtraInfoSpec::ASYNC_BLOCKING)) {
(*it)->blocked_requests.insert(request->identifier());
@@ -1311,8 +1295,7 @@ void ExtensionWebRequestEventRouter::RemoveEventListener(
const std::string& sub_event_name,
int embedder_process_id,
int web_view_instance_id) {
- std::string event_name =
- extensions::EventRouter::GetBaseEventName(sub_event_name);
+ std::string event_name = EventRouter::GetBaseEventName(sub_event_name);
DCHECK(IsWebRequestEvent(event_name));
EventListener listener;
@@ -1464,9 +1447,9 @@ void ExtensionWebRequestEventRouter::GetMatchingListenersImpl(
std::vector<const ExtensionWebRequestEventRouter::EventListener*>*
matching_listeners) {
std::string web_request_event_name(event_name);
- extensions::WebViewRendererState::WebViewInfo web_view_info;
- bool is_web_view_guest = extensions::WebViewRendererState::GetInstance()->
- GetInfo(render_process_host_id, routing_id, &web_view_info);
+ WebViewRendererState::WebViewInfo web_view_info;
+ bool is_web_view_guest = WebViewRendererState::GetInstance()->GetInfo(
+ render_process_host_id, routing_id, &web_view_info);
if (is_web_view_guest) {
web_request_event_name.replace(
0, sizeof(kWebRequestEventPrefix) - 1, webview::kWebViewEventPrefix);
@@ -1645,32 +1628,32 @@ base::ListValue* SummarizeCookieModifications(
const CookieType& mod = *i->get();
switch (mod.type) {
case helpers::ADD:
- summary->SetString(activitylog::kCookieModificationTypeKey,
- activitylog::kCookieModificationAdd);
+ summary->SetString(activity_log::kCookieModificationTypeKey,
+ activity_log::kCookieModificationAdd);
break;
case helpers::EDIT:
- summary->SetString(activitylog::kCookieModificationTypeKey,
- activitylog::kCookieModificationEdit);
+ summary->SetString(activity_log::kCookieModificationTypeKey,
+ activity_log::kCookieModificationEdit);
break;
case helpers::REMOVE:
- summary->SetString(activitylog::kCookieModificationTypeKey,
- activitylog::kCookieModificationRemove);
+ summary->SetString(activity_log::kCookieModificationTypeKey,
+ activity_log::kCookieModificationRemove);
break;
}
if (mod.filter) {
if (mod.filter->name)
- summary->SetString(activitylog::kCookieFilterNameKey,
+ summary->SetString(activity_log::kCookieFilterNameKey,
*mod.modification->name);
if (mod.filter->domain)
- summary->SetString(activitylog::kCookieFilterDomainKey,
+ summary->SetString(activity_log::kCookieFilterDomainKey,
*mod.modification->name);
}
if (mod.modification) {
if (mod.modification->name)
- summary->SetString(activitylog::kCookieModDomainKey,
+ summary->SetString(activity_log::kCookieModDomainKey,
*mod.modification->name);
if (mod.modification->domain)
- summary->SetString(activitylog::kCookieModDomainKey,
+ summary->SetString(activity_log::kCookieModDomainKey,
*mod.modification->name);
}
cookie_modifications->Append(summary.release());
@@ -1685,10 +1668,10 @@ scoped_ptr<base::DictionaryValue> SummarizeResponseDelta(
const helpers::EventResponseDelta& delta) {
scoped_ptr<base::DictionaryValue> details(new base::DictionaryValue());
if (delta.cancel) {
- details->SetBoolean(activitylog::kCancelKey, true);
+ details->SetBoolean(activity_log::kCancelKey, true);
}
if (!delta.new_url.is_empty()) {
- details->SetString(activitylog::kNewUrlKey, delta.new_url.spec());
+ details->SetString(activity_log::kNewUrlKey, delta.new_url.spec());
}
scoped_ptr<base::ListValue> modified_headers(new base::ListValue());
@@ -1698,34 +1681,34 @@ scoped_ptr<base::DictionaryValue> SummarizeResponseDelta(
helpers::CreateHeaderDictionary(iter.name(), iter.value()));
}
if (!modified_headers->empty()) {
- details->Set(activitylog::kModifiedRequestHeadersKey,
+ details->Set(activity_log::kModifiedRequestHeadersKey,
modified_headers.release());
}
scoped_ptr<base::ListValue> deleted_headers(new base::ListValue());
deleted_headers->AppendStrings(delta.deleted_request_headers);
if (!deleted_headers->empty()) {
- details->Set(activitylog::kDeletedRequestHeadersKey,
+ details->Set(activity_log::kDeletedRequestHeadersKey,
deleted_headers.release());
}
if (!delta.added_response_headers.empty()) {
- details->Set(activitylog::kAddedRequestHeadersKey,
+ details->Set(activity_log::kAddedRequestHeadersKey,
SerializeResponseHeaders(delta.added_response_headers));
}
if (!delta.deleted_response_headers.empty()) {
- details->Set(activitylog::kDeletedResponseHeadersKey,
+ details->Set(activity_log::kDeletedResponseHeadersKey,
SerializeResponseHeaders(delta.deleted_response_headers));
}
if (delta.auth_credentials) {
- details->SetString(activitylog::kAuthCredentialsKey,
- base::UTF16ToUTF8(
- delta.auth_credentials->username()) + ":*");
+ details->SetString(
+ activity_log::kAuthCredentialsKey,
+ base::UTF16ToUTF8(delta.auth_credentials->username()) + ":*");
}
if (!delta.response_cookie_modifications.empty()) {
details->Set(
- activitylog::kResponseCookieModificationsKey,
+ activity_log::kResponseCookieModificationsKey,
SummarizeCookieModifications(delta.response_cookie_modifications));
}
@@ -1838,7 +1821,7 @@ void ExtensionWebRequestEventRouter::SendMessages(
message != messages.end(); ++message) {
scoped_ptr<base::DictionaryValue> argument(new base::DictionaryValue);
ExtractRequestInfo(blocked_request.request, argument.get());
- extensions::WebViewRendererState::WebViewInfo web_view_info;
+ WebViewRendererState::WebViewInfo web_view_info;
bool is_web_view_guest = GetWebViewInfo(blocked_request.request,
&web_view_info);
argument->SetString(keys::kMessageKey, *message);
@@ -1965,9 +1948,9 @@ bool ExtensionWebRequestEventRouter::ProcessDeclarativeRules(
InfoMap* extension_info_map,
const std::string& event_name,
net::URLRequest* request,
- extensions::RequestStage request_stage,
+ RequestStage request_stage,
const net::HttpResponseHeaders* original_response_headers) {
- extensions::WebViewRendererState::WebViewInfo web_view_info;
+ WebViewRendererState::WebViewInfo web_view_info;
bool is_web_view_guest = GetWebViewInfo(request, &web_view_info);
int rules_registry_id = is_web_view_guest
? web_view_info.rules_registry_id
@@ -1976,7 +1959,7 @@ bool ExtensionWebRequestEventRouter::ProcessDeclarativeRules(
RulesRegistryKey rules_key(browser_context, rules_registry_id);
// If this check fails, check that the active stages are up-to-date in
// extensions/browser/api/declarative_webrequest/request_stage.h .
- DCHECK(request_stage & extensions::kActiveStages);
+ DCHECK(request_stage & kActiveStages);
// Rules of the current |browser_context| may apply but we need to check also
// whether there are applicable rules from extensions whose background page
@@ -1984,8 +1967,7 @@ bool ExtensionWebRequestEventRouter::ProcessDeclarativeRules(
// First parameter identifies the registry, the second indicates whether the
// registry belongs to the cross browser_context.
- typedef std::pair<extensions::WebRequestRulesRegistry*, bool>
- RelevantRegistry;
+ typedef std::pair<WebRequestRulesRegistry*, bool> RelevantRegistry;
typedef std::vector<RelevantRegistry> RelevantRegistries;
RelevantRegistries relevant_registries;
@@ -2009,7 +1991,7 @@ bool ExtensionWebRequestEventRouter::ProcessDeclarativeRules(
// logged with UMA Extensions.NetworkDelayRegistryLoad. crbug.com/175961
for (RelevantRegistries::iterator i = relevant_registries.begin();
i != relevant_registries.end(); ++i) {
- extensions::WebRequestRulesRegistry* rules_registry = i->first;
+ WebRequestRulesRegistry* rules_registry = i->first;
if (!rules_registry->ready().is_signaled()) {
// The rules registry is still loading. Block this request until it
// finishes.
@@ -2040,14 +2022,11 @@ bool ExtensionWebRequestEventRouter::ProcessDeclarativeRules(
bool deltas_created = false;
for (RelevantRegistries::iterator i = relevant_registries.begin();
i != relevant_registries.end(); ++i) {
- extensions::WebRequestRulesRegistry* rules_registry =
- i->first;
- helpers::EventResponseDeltas result =
- rules_registry->CreateDeltas(
- extension_info_map,
- extensions::WebRequestData(
- request, request_stage, original_response_headers),
- i->second);
+ WebRequestRulesRegistry* rules_registry = i->first;
+ helpers::EventResponseDeltas result = rules_registry->CreateDeltas(
+ extension_info_map,
+ WebRequestData(request, request_stage, original_response_headers),
+ i->second);
if (!result.empty()) {
helpers::EventResponseDeltas& deltas =
@@ -2068,7 +2047,7 @@ void ExtensionWebRequestEventRouter::OnRulesRegistryReady(
void* browser_context,
const std::string& event_name,
uint64 request_id,
- extensions::RequestStage request_stage) {
+ RequestStage request_stage) {
// It's possible that this request was deleted, or cancelled by a previous
// event handler. If so, ignore this response.
if (blocked_requests_.find(request_id) == blocked_requests_.end())
@@ -2124,7 +2103,7 @@ void ExtensionWebRequestEventRouter::ClearSignaled(uint64 request_id,
// webRequest.handlerBehaviorChanged() should trigger a quota violation at the
// time it is called. Instead we only decrement the bucket counter at the time
// when the cache is cleared (when page loads happen).
-class ClearCacheQuotaHeuristic : public extensions::QuotaLimitHeuristic {
+class ClearCacheQuotaHeuristic : public QuotaLimitHeuristic {
public:
ClearCacheQuotaHeuristic(const Config& config, BucketMapper* map)
: QuotaLimitHeuristic(
@@ -2210,8 +2189,7 @@ bool WebRequestInternalAddEventListenerFunction::RunSync() {
int web_view_instance_id = 0;
EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(5, &web_view_instance_id));
- base::WeakPtr<extensions::IOThreadExtensionMessageFilter> ipc_sender =
- ipc_sender_weak();
+ base::WeakPtr<IOThreadExtensionMessageFilter> ipc_sender = ipc_sender_weak();
int embedder_process_id =
ipc_sender.get() && web_view_instance_id > 0 ?
ipc_sender->render_process_id() : 0;
@@ -2229,7 +2207,7 @@ bool WebRequestInternalAddEventListenerFunction::RunSync() {
(ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING |
ExtensionWebRequestEventRouter::ExtraInfoSpec::ASYNC_BLOCKING)) &&
!extension->permissions_data()->HasAPIPermission(
- extensions::APIPermission::kWebRequestBlocking)) {
+ APIPermission::kWebRequestBlocking)) {
error_ = keys::kBlockingPermissionRequired;
return false;
}
@@ -2434,13 +2412,13 @@ bool WebRequestInternalEventHandledFunction::RunSync() {
}
void WebRequestHandlerBehaviorChangedFunction::GetQuotaLimitHeuristics(
- extensions::QuotaLimitHeuristics* heuristics) const {
- extensions::QuotaLimitHeuristic::Config config = {
+ QuotaLimitHeuristics* heuristics) const {
+ QuotaLimitHeuristic::Config config = {
// See web_request.json for current value.
web_request::MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES,
base::TimeDelta::FromMinutes(10)};
- extensions::QuotaLimitHeuristic::BucketMapper* bucket_mapper =
- new extensions::QuotaLimitHeuristic::SingletonBucketMapper();
+ QuotaLimitHeuristic::BucketMapper* bucket_mapper =
+ new QuotaLimitHeuristic::SingletonBucketMapper();
ClearCacheQuotaHeuristic* heuristic =
new ClearCacheQuotaHeuristic(config, bucket_mapper);
heuristics->push_back(heuristic);
@@ -2465,3 +2443,5 @@ bool WebRequestHandlerBehaviorChangedFunction::RunSync() {
helpers::ClearCacheOnNavigation();
return true;
}
+
+} // namespace extensions
« no previous file with comments | « extensions/browser/api/web_request/web_request_api.h ('k') | extensions/browser/event_listener_map_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698