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

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

Issue 864893003: <webview>: Fix WebRequest API crash (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove unnecessary change Created 5 years, 11 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..c85846a3267d1ff5a9eb2cac5f706c3f866315a6 100644
--- a/extensions/browser/api/web_request/web_request_api.cc
+++ b/extensions/browser/api/web_request/web_request_api.cc
@@ -458,7 +458,7 @@ struct ExtensionWebRequestEventRouter::EventListener {
RequestFilter filter;
int extra_info_spec;
int embedder_process_id;
- int webview_instance_id;
+ int web_view_instance_id;
Devlin 2015/01/21 22:31:45 why the change? It looks like webview is more pop
Fady Samuel 2015/01/21 23:05:41 This matches the naming in extensions/browser/gues
base::WeakPtr<IPC::Sender> ipc_sender;
mutable std::set<uint64> blocked_requests;
@@ -466,9 +466,25 @@ struct ExtensionWebRequestEventRouter::EventListener {
bool operator<(const EventListener& that) const {
if (extension_id < that.extension_id)
Devlin 2015/01/21 22:31:45 instead, do: if (extension_id != that.extension_id
Fady Samuel 2015/01/21 23:05:41 Done.
return true;
+
+ if (extension_id == that.extension_id &&
+ sub_event_name < that.sub_event_name) {
+ return true;
+ }
+
if (extension_id == that.extension_id &&
- sub_event_name < that.sub_event_name)
+ sub_event_name == that.sub_event_name &&
+ embedder_process_id < that.embedder_process_id) {
return true;
+ }
+
+ if (extension_id == that.extension_id &&
+ sub_event_name == that.sub_event_name &&
+ embedder_process_id == that.embedder_process_id &&
+ web_view_instance_id < that.web_view_instance_id) {
+ return true;
+ }
+
return false;
}
@@ -1279,7 +1295,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 +1308,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 +1360,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 +1374,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 +1498,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,8 +2221,8 @@ 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();
@@ -2218,7 +2234,7 @@ bool WebRequestInternalAddEventListenerFunction::RunSync() {
std::string extension_name =
extension ? extension->name() : extension_id_safe();
- if (webview_instance_id == 0) {
+ if (web_view_instance_id == 0) {
// We check automatically whether the extension has the 'webRequest'
// permission. For blocking calls we require the additional permission
// 'webRequestBlocking'.
@@ -2249,7 +2265,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();
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698