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

Unified Diff: chrome/browser/extensions/api/web_request/web_request_api_unittest.cc

Issue 1577673002: WebRequest API cleanup (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: copy GetSocketAddress().host instead of & to resolve win failure Created 4 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
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 8414d1f10694420f325eaa650c0cd475b84a65f7..3b672fe27e44a271e43eba1e0be2519b95d61505 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
@@ -77,6 +77,7 @@ using helpers::CharListToString;
using helpers::EventResponseDelta;
using helpers::EventResponseDeltas;
using helpers::EventResponseDeltas;
+using helpers::ExtraInfoSpec;
using helpers::InDecreasingExtensionInstallationTimeOrder;
using helpers::MergeCancelOfResponses;
using helpers::MergeOnBeforeRequestResponses;
@@ -231,13 +232,11 @@ TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceRedirect) {
base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_);
ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
&profile_, extension1_id, extension1_id, events::FOR_TEST, kEventName,
- kEventName + "/1", filter,
- ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0,
+ kEventName + "/1", filter, ExtraInfoSpec::BLOCKING, 0, 0,
ipc_sender_factory.GetWeakPtr());
ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
&profile_, extension2_id, extension2_id, events::FOR_TEST, kEventName,
- kEventName + "/2", filter,
- ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0,
+ kEventName + "/2", filter, ExtraInfoSpec::BLOCKING, 0, 0,
ipc_sender_factory.GetWeakPtr());
net::URLRequestJobFactoryImpl job_factory;
@@ -370,13 +369,11 @@ TEST_F(ExtensionWebRequestTest, BlockingEventPrecedenceCancel) {
base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_);
ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
&profile_, extension1_id, extension1_id, events::FOR_TEST, kEventName,
- kEventName + "/1", filter,
- ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0,
+ kEventName + "/1", filter, ExtraInfoSpec::BLOCKING, 0, 0,
ipc_sender_factory.GetWeakPtr());
ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
&profile_, extension2_id, extension2_id, events::FOR_TEST, kEventName,
- kEventName + "/2", filter,
- ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0,
+ kEventName + "/2", filter, ExtraInfoSpec::BLOCKING, 0, 0,
ipc_sender_factory.GetWeakPtr());
GURL request_url("about:blank");
@@ -441,8 +438,7 @@ TEST_F(ExtensionWebRequestTest, SimulateChancelWhileBlocked) {
base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_);
ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
&profile_, extension_id, extension_id, events::FOR_TEST, kEventName,
- kEventName + "/1", filter,
- ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0,
+ kEventName + "/1", filter, ExtraInfoSpec::BLOCKING, 0, 0,
ipc_sender_factory.GetWeakPtr());
ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
&profile_, extension_id, extension_id, events::FOR_TEST, kEventName2,
@@ -500,8 +496,7 @@ bool GenerateInfoSpec(const std::string& values, int* result) {
base::SplitString(values, ",", base::KEEP_WHITESPACE,
base::SPLIT_WANT_NONEMPTY))
list_value.Append(new base::StringValue(cur));
- return ExtensionWebRequestEventRouter::ExtraInfoSpec::InitFromValue(
- list_value, result);
+ return ExtraInfoSpec::InitFromValue(list_value, result);
}
} // namespace
@@ -703,6 +698,83 @@ TEST_F(ExtensionWebRequestTest, AccessRequestBodyData) {
EXPECT_EQ(i, ipc_sender_.sent_end());
}
+// Tests whether requestBody is only present on the events that requested it.
+TEST_F(ExtensionWebRequestTest, MinimalAccessRequestBodyData) {
+ const std::string kEventName(web_request::OnBeforeRequest::kEventName);
+ ExtensionWebRequestEventRouter::RequestFilter filter;
+ const std::string extension_id1("1");
+ const std::string extension_id2("2");
+ int extra_info_spec_body = 0;
+ int extra_info_spec_empty = 0;
+ ASSERT_TRUE(GenerateInfoSpec("requestBody", &extra_info_spec_body));
+ base::WeakPtrFactory<TestIPCSender> ipc_sender_factory(&ipc_sender_);
+
+ bool kExpected[] = {
+ true,
+ false,
+ false,
+ true,
+ };
+
+ // Extension 1 with requestBody spec.
+ ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
+ &profile_, extension_id1, extension_id1, events::FOR_TEST, kEventName,
+ kEventName + "/1", filter, extra_info_spec_body, 0, 0,
+ ipc_sender_factory.GetWeakPtr());
+
+ // Extension 1 without requestBody spec.
+ ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
+ &profile_, extension_id1, extension_id1, events::FOR_TEST, kEventName,
+ kEventName + "/2", filter, extra_info_spec_empty, 0, 0,
+ ipc_sender_factory.GetWeakPtr());
+
+ // Extension 2, without requestBody spec.
+ ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
+ &profile_, extension_id2, extension_id2, events::FOR_TEST, kEventName,
+ kEventName + "/1", filter, extra_info_spec_empty, 0, 0,
+ ipc_sender_factory.GetWeakPtr());
+
+ // Extension 2, with requestBody spec.
+ ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
+ &profile_, extension_id2, extension_id2, events::FOR_TEST, kEventName,
+ kEventName + "/2", filter, extra_info_spec_body, 0, 0,
+ ipc_sender_factory.GetWeakPtr());
+
+ // Only one request is sent, but more than one event will be triggered.
+ for (size_t i = 1; i < arraysize(kExpected); ++i)
+ ipc_sender_.PushTask(base::Bind(&base::DoNothing));
+
+ const std::vector<char> part_of_body(1);
+ FireURLRequestWithData("POST", nullptr, part_of_body, part_of_body);
+
+ base::MessageLoop::current()->RunUntilIdle();
+
+ // Clean-up
+ ExtensionWebRequestEventRouter::GetInstance()->RemoveEventListener(
+ &profile_, extension_id1, kEventName + "/1", 0, 0);
+ ExtensionWebRequestEventRouter::GetInstance()->RemoveEventListener(
+ &profile_, extension_id2, kEventName + "/2", 0, 0);
+ ExtensionWebRequestEventRouter::GetInstance()->RemoveEventListener(
+ &profile_, extension_id1, kEventName + "/1", 0, 0);
+ ExtensionWebRequestEventRouter::GetInstance()->RemoveEventListener(
+ &profile_, extension_id2, kEventName + "/2", 0, 0);
+
+ TestIPCSender::SentMessages::const_iterator i = ipc_sender_.sent_begin();
+
+ for (size_t test = 0; test < arraysize(kExpected); ++test, ++i) {
+ SCOPED_TRACE(testing::Message("iteration number ") << test);
+ EXPECT_NE(i, ipc_sender_.sent_end());
+ IPC::Message* message = i->get();
+ const base::DictionaryValue* details = nullptr;
+ ExtensionMsg_MessageInvoke::Param param;
+ GetPartOfMessageArguments(message, &details, &param);
+ ASSERT_TRUE(details != nullptr);
+ EXPECT_EQ(kExpected[test], details->HasKey(keys::kRequestBodyKey));
+ }
+
+ EXPECT_EQ(i, ipc_sender_.sent_end());
+}
+
TEST_F(ExtensionWebRequestTest, NoAccessRequestBodyData) {
// We verify that URLRequest body is NOT accessible to OnBeforeRequest
// listeners when the type of the request is different from POST or PUT, or
@@ -836,21 +908,19 @@ TEST_P(ExtensionWebRequestHeaderModificationTest, TestModifications) {
// higher precedence than extension 1.
ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
&profile_, extension1_id, extension1_id, events::FOR_TEST, kEventName,
- kEventName + "/1", filter,
- ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0,
+ kEventName + "/1", filter, ExtraInfoSpec::BLOCKING, 0, 0,
ipc_sender_factory.GetWeakPtr());
ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
&profile_, extension2_id, extension2_id, events::FOR_TEST, kEventName,
- kEventName + "/2", filter,
- ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING, 0, 0,
+ kEventName + "/2", filter, ExtraInfoSpec::BLOCKING, 0, 0,
ipc_sender_factory.GetWeakPtr());
// Install one extension that observes the final headers.
ExtensionWebRequestEventRouter::GetInstance()->AddEventListener(
&profile_, extension3_id, extension3_id, events::FOR_TEST,
keys::kOnSendHeadersEvent, std::string(keys::kOnSendHeadersEvent) + "/3",
- filter, ExtensionWebRequestEventRouter::ExtraInfoSpec::REQUEST_HEADERS, 0,
- 0, ipc_sender_factory.GetWeakPtr());
+ filter, ExtraInfoSpec::REQUEST_HEADERS, 0, 0,
+ ipc_sender_factory.GetWeakPtr());
GURL request_url("http://doesnotexist/does_not_exist.html");
scoped_ptr<net::URLRequest> request(context_->CreateRequest(
@@ -1000,30 +1070,29 @@ TEST_F(ExtensionWebRequestTest, InitFromValue) {
TestInitFromValue(
"requestHeaders",
true,
- ExtensionWebRequestEventRouter::ExtraInfoSpec::REQUEST_HEADERS);
+ ExtraInfoSpec::REQUEST_HEADERS);
TestInitFromValue(
"responseHeaders",
true,
- ExtensionWebRequestEventRouter::ExtraInfoSpec::RESPONSE_HEADERS);
+ ExtraInfoSpec::RESPONSE_HEADERS);
TestInitFromValue(
"blocking",
true,
- ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING);
+ ExtraInfoSpec::BLOCKING);
TestInitFromValue(
"asyncBlocking",
true,
- ExtensionWebRequestEventRouter::ExtraInfoSpec::ASYNC_BLOCKING);
+ ExtraInfoSpec::ASYNC_BLOCKING);
TestInitFromValue(
"requestBody",
true,
- ExtensionWebRequestEventRouter::ExtraInfoSpec::REQUEST_BODY);
+ ExtraInfoSpec::REQUEST_BODY);
// Multiple valid values are bitwise-or'ed.
TestInitFromValue(
"requestHeaders,blocking",
true,
- ExtensionWebRequestEventRouter::ExtraInfoSpec::REQUEST_HEADERS |
- ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING);
+ ExtraInfoSpec::REQUEST_HEADERS | ExtraInfoSpec::BLOCKING);
// Any invalid values lead to a bad parse.
TestInitFromValue("invalidValue", false, 0);

Powered by Google App Engine
This is Rietveld 408576698