Index: chrome/browser/extensions/api/web_request/web_request_api_unittest.cc |
diff --git a/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc b/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc |
index 1e75bb5b488ec4407b458751ceb4db0f8c80f36c..8945653e7a7e1bb3784b6113bf0089a6bc4f6037 100644 |
--- a/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc |
+++ b/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc |
@@ -833,6 +833,36 @@ TEST_F(ExtensionWebRequestTest, NoAccessRequestBodyData) { |
EXPECT_EQ(i, ipc_sender_.sent_end()); |
} |
+// Tests the sanity of operator< (crbug.com/589735). |
+TEST_F(ExtensionWebRequestTest, AddAndRemoveListeners) { |
+ std::string ext_id("abcdefghijklmnopabcdefghijklmnop"); |
+ ExtensionWebRequestEventRouter::RequestFilter filter; |
+ const std::string kEventName(web_request::OnBeforeRequest::kEventName); |
+ const std::string kSubEventName = kEventName + "/1"; |
+ base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_); |
+ |
+ // Add two non-webview listeners. |
+ ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
+ &profile_, ext_id, ext_id, events::FOR_TEST, kEventName, kSubEventName, |
+ filter, 0, 1 /* embedder_process_id */, 0, |
+ ipc_sender_factory.GetWeakPtr()); |
+ ExtensionWebRequestEventRouter::GetInstance()->AddEventListener( |
+ &profile_, ext_id, ext_id, events::FOR_TEST, kEventName, kSubEventName, |
+ filter, 0, 2 /* embedder_process_id */, 0, |
+ ipc_sender_factory.GetWeakPtr()); |
+ |
+ // Now remove the events without passing an explicit process ID. |
+ ExtensionWebRequestEventRouter::GetInstance()->RemoveEventListener( |
+ &profile_, ext_id, kSubEventName, 0 /* embedder_process_id */, 0); |
+ EXPECT_EQ(1, ExtensionWebRequestEventRouter::GetInstance()->GetListenerCount( |
+ &profile_, kEventName)); |
+ |
+ ExtensionWebRequestEventRouter::GetInstance()->RemoveEventListener( |
+ &profile_, ext_id, kSubEventName, 0 /* embedder_process_id */, 0); |
+ EXPECT_EQ(0, ExtensionWebRequestEventRouter::GetInstance()->GetListenerCount( |
+ &profile_, kEventName)); |
+} |
+ |
struct HeaderModificationTest_Header { |
const char* name; |
const char* value; |