| 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 b04ee7656142448910ea7ca0946aa93a77449397..87da356ebce5602f6072deb5f7d75d62d8983b65 100644
|
| --- a/extensions/browser/api/web_request/web_request_api.cc
|
| +++ b/extensions/browser/api/web_request/web_request_api.cc
|
| @@ -458,21 +458,31 @@ struct ExtensionWebRequestEventRouter::EventListener {
|
| RequestFilter filter;
|
| int extra_info_spec;
|
| int embedder_process_id;
|
| - int webview_instance_id;
|
| + int web_view_instance_id;
|
| base::WeakPtr<IPC::Sender> ipc_sender;
|
| mutable std::set<uint64> blocked_requests;
|
|
|
| // Comparator to work with std::set.
|
| bool operator<(const EventListener& that) const {
|
| - if (extension_id < that.extension_id)
|
| - return true;
|
| - if (extension_id == that.extension_id &&
|
| - sub_event_name < that.sub_event_name)
|
| - return true;
|
| + if (extension_id != that.extension_id)
|
| + return extension_id < that.extension_id;
|
| +
|
| + if (sub_event_name != that.sub_event_name)
|
| + return sub_event_name < that.sub_event_name;
|
| +
|
| + if (embedder_process_id != that.embedder_process_id)
|
| + return embedder_process_id < that.embedder_process_id;
|
| +
|
| + if (web_view_instance_id != that.web_view_instance_id)
|
| + return web_view_instance_id < that.web_view_instance_id;
|
| +
|
| return false;
|
| }
|
|
|
| - EventListener() : extra_info_spec(0) {}
|
| + EventListener() :
|
| + extra_info_spec(0),
|
| + embedder_process_id(0),
|
| + web_view_instance_id(0) {}
|
| };
|
|
|
| // Contains info about requests that are blocked waiting for a response from
|
| @@ -1279,7 +1289,7 @@ bool ExtensionWebRequestEventRouter::AddEventListener(
|
| const RequestFilter& filter,
|
| int extra_info_spec,
|
| int embedder_process_id,
|
| - int webview_instance_id,
|
| + int web_view_instance_id,
|
| base::WeakPtr<IPC::Sender> ipc_sender) {
|
| if (!IsWebRequestEvent(event_name))
|
| return false;
|
| @@ -1292,8 +1302,8 @@ bool ExtensionWebRequestEventRouter::AddEventListener(
|
| listener.extra_info_spec = extra_info_spec;
|
| listener.ipc_sender = ipc_sender;
|
| listener.embedder_process_id = embedder_process_id;
|
| - listener.webview_instance_id = webview_instance_id;
|
| - if (listener.webview_instance_id) {
|
| + listener.web_view_instance_id = web_view_instance_id;
|
| + if (listener.web_view_instance_id) {
|
| content::RecordAction(
|
| base::UserMetricsAction("WebView.WebRequest.AddListener"));
|
| }
|
| @@ -1344,7 +1354,7 @@ void ExtensionWebRequestEventRouter::RemoveWebViewEventListeners(
|
| void* browser_context,
|
| const std::string& extension_id,
|
| int embedder_process_id,
|
| - int webview_instance_id) {
|
| + int web_view_instance_id) {
|
| // Iterate over all listeners of all WebRequest events to delete
|
| // any listeners that belong to the provided <webview>.
|
| ListenerMapForBrowserContext& map_for_browser_context =
|
| @@ -1358,7 +1368,7 @@ void ExtensionWebRequestEventRouter::RemoveWebViewEventListeners(
|
| listener_iter != listeners.end(); ++listener_iter) {
|
| const EventListener& listener = *listener_iter;
|
| if (listener.embedder_process_id == embedder_process_id &&
|
| - listener.webview_instance_id == webview_instance_id)
|
| + listener.web_view_instance_id == web_view_instance_id)
|
| listeners_to_delete.push_back(listener);
|
| }
|
| for (size_t i = 0; i < listeners_to_delete.size(); ++i) {
|
| @@ -1482,7 +1492,7 @@ void ExtensionWebRequestEventRouter::GetMatchingListenersImpl(
|
|
|
| if (is_web_view_guest &&
|
| (it->embedder_process_id != web_view_info.embedder_process_id ||
|
| - it->webview_instance_id != web_view_info.instance_id))
|
| + it->web_view_instance_id != web_view_info.instance_id))
|
| continue;
|
|
|
| if (!it->filter.urls.is_empty() && !it->filter.urls.MatchesURL(url))
|
| @@ -2205,20 +2215,21 @@ bool WebRequestInternalAddEventListenerFunction::RunSync() {
|
| std::string sub_event_name;
|
| EXTENSION_FUNCTION_VALIDATE(args_->GetString(4, &sub_event_name));
|
|
|
| - int webview_instance_id = 0;
|
| - EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(5, &webview_instance_id));
|
| + int web_view_instance_id = 0;
|
| + EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(5, &web_view_instance_id));
|
|
|
| base::WeakPtr<extensions::ExtensionMessageFilter> ipc_sender =
|
| ipc_sender_weak();
|
| int embedder_process_id =
|
| - ipc_sender.get() ? ipc_sender->render_process_id() : -1;
|
| + ipc_sender.get() && web_view_instance_id > 0 ?
|
| + ipc_sender->render_process_id() : 0;
|
|
|
| const Extension* extension =
|
| extension_info_map()->extensions().GetByID(extension_id_safe());
|
| std::string extension_name =
|
| extension ? extension->name() : extension_id_safe();
|
|
|
| - if (webview_instance_id == 0) {
|
| + if (!web_view_instance_id) {
|
| // We check automatically whether the extension has the 'webRequest'
|
| // permission. For blocking calls we require the additional permission
|
| // 'webRequestBlocking'.
|
| @@ -2249,7 +2260,7 @@ bool WebRequestInternalAddEventListenerFunction::RunSync() {
|
| ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
|
| profile_id(), extension_id_safe(), extension_name,
|
| event_name, sub_event_name, filter, extra_info_spec,
|
| - embedder_process_id, webview_instance_id, ipc_sender_weak());
|
| + embedder_process_id, web_view_instance_id, ipc_sender_weak());
|
| EXTENSION_FUNCTION_VALIDATE(success);
|
|
|
| helpers::ClearCacheOnNavigation();
|
|
|