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

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

Issue 1143333008: Getting rid of more webview memory leaks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 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
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 <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 1328 matching lines...) Expand 10 before | Expand all | Expand 10 after
1339 DecrementBlockCount(browser_context, extension_id, event_name, *it, NULL); 1339 DecrementBlockCount(browser_context, extension_id, event_name, *it, NULL);
1340 } 1340 }
1341 1341
1342 event_listeners.erase(listener); 1342 event_listeners.erase(listener);
1343 1343
1344 helpers::ClearCacheOnNavigation(); 1344 helpers::ClearCacheOnNavigation();
1345 } 1345 }
1346 1346
1347 void ExtensionWebRequestEventRouter::RemoveWebViewEventListeners( 1347 void ExtensionWebRequestEventRouter::RemoveWebViewEventListeners(
1348 void* browser_context, 1348 void* browser_context,
1349 const std::string& extension_id,
1350 int embedder_process_id, 1349 int embedder_process_id,
1351 int web_view_instance_id) { 1350 int web_view_instance_id) {
1352 DCHECK_CURRENTLY_ON(BrowserThread::IO); 1351 DCHECK_CURRENTLY_ON(BrowserThread::IO);
1353 1352
1354 // Iterate over all listeners of all WebRequest events to delete 1353 // Iterate over all listeners of all WebRequest events to delete
1355 // any listeners that belong to the provided <webview>. 1354 // any listeners that belong to the provided <webview>.
1356 ListenerMapForBrowserContext& map_for_browser_context = 1355 ListenerMapForBrowserContext& map_for_browser_context =
1357 listeners_[browser_context]; 1356 listeners_[browser_context];
1358 for (const auto& event_iter : map_for_browser_context) { 1357 for (const auto& event_iter : map_for_browser_context) {
1359 // Construct a listeners_to_delete vector so that we don't modify the set of 1358 // Construct a listeners_to_delete vector so that we don't modify the set of
1360 // listeners as we iterate through it. 1359 // listeners as we iterate through it.
1361 std::vector<EventListener> listeners_to_delete; 1360 std::vector<EventListener> listeners_to_delete;
1362 const std::set<EventListener>& listeners = event_iter.second; 1361 const std::set<EventListener>& listeners = event_iter.second;
1363 for (const auto& listener : listeners) { 1362 for (const auto& listener : listeners) {
1364 if (listener.embedder_process_id == embedder_process_id && 1363 if (listener.embedder_process_id == embedder_process_id &&
1365 listener.web_view_instance_id == web_view_instance_id) { 1364 listener.web_view_instance_id == web_view_instance_id) {
1366 listeners_to_delete.push_back(listener); 1365 listeners_to_delete.push_back(listener);
1367 } 1366 }
1368 } 1367 }
1369 // Remove the listeners selected for deletion. 1368 // Remove the listeners selected for deletion.
1370 for (const auto& listener : listeners_to_delete) { 1369 for (const auto& listener : listeners_to_delete) {
1371 RemoveEventListenerOnIOThread( 1370 RemoveEventListenerOnIOThread(
1372 browser_context, 1371 browser_context,
1373 extension_id, 1372 listener.extension_id,
1374 listener.sub_event_name, 1373 listener.sub_event_name,
1375 listener.embedder_process_id, 1374 listener.embedder_process_id,
1376 listener.web_view_instance_id); 1375 listener.web_view_instance_id);
1377 } 1376 }
1378 } 1377 }
1379 } 1378 }
1380 1379
1381 void ExtensionWebRequestEventRouter::OnOTRBrowserContextCreated( 1380 void ExtensionWebRequestEventRouter::OnOTRBrowserContextCreated(
1382 void* original_browser_context, void* otr_browser_context) { 1381 void* original_browser_context, void* otr_browser_context) {
1383 cross_browser_context_map_[original_browser_context] = 1382 cross_browser_context_map_[original_browser_context] =
(...skipping 1075 matching lines...) Expand 10 before | Expand all | Expand 10 after
2459 base::Bind(&WarningService::NotifyWarningsOnUI, profile_id(), warnings)); 2458 base::Bind(&WarningService::NotifyWarningsOnUI, profile_id(), warnings));
2460 2459
2461 // Continue gracefully. 2460 // Continue gracefully.
2462 RunSync(); 2461 RunSync();
2463 } 2462 }
2464 2463
2465 bool WebRequestHandlerBehaviorChangedFunction::RunSync() { 2464 bool WebRequestHandlerBehaviorChangedFunction::RunSync() {
2466 helpers::ClearCacheOnNavigation(); 2465 helpers::ClearCacheOnNavigation();
2467 return true; 2466 return true;
2468 } 2467 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698