Chromium Code Reviews| Index: chrome/browser/extensions/api/web_request/web_request_event_details_unittest.cc |
| diff --git a/chrome/browser/extensions/api/web_request/web_request_event_details_unittest.cc b/chrome/browser/extensions/api/web_request/web_request_event_details_unittest.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..9a7499559b07a9eabf12f33f2ad1ae0fde282870 |
| --- /dev/null |
| +++ b/chrome/browser/extensions/api/web_request/web_request_event_details_unittest.cc |
| @@ -0,0 +1,68 @@ |
| +// Copyright 2016 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "extensions/browser/api/web_request/web_request_event_details.h" |
| + |
| +#include "testing/gtest/include/gtest/gtest.h" |
| + |
| +namespace extensions { |
| + |
| +TEST(WebRequestEventDetailsTest, WhitelistedCopyForPublicSession) { |
| + // Create original and copy, and populate them with some values. |
| + std::unique_ptr<WebRequestEventDetails> orig(new WebRequestEventDetails); |
| + std::unique_ptr<WebRequestEventDetails> copy(new WebRequestEventDetails); |
| + |
| + const char* const safe_attributes[] = { |
| + "method", "requestId", "timeStamp", "type", "tabId", "frameId", |
| + "parentFrameId", "fromCache", "error", "ip", "statusLine", "statusCode" |
| + }; |
| + |
| + for (WebRequestEventDetails* ptr : {orig.get(), copy.get()}) { |
| + ptr->render_process_id_ = 1; |
| + ptr->render_frame_id_ = 2; |
| + ptr->extra_info_spec_ = 3; |
| + |
| + ptr->request_body_.reset(new base::DictionaryValue); |
| + ptr->request_headers_.reset(new base::ListValue); |
| + ptr->response_headers_.reset(new base::ListValue); |
| + |
| + for (const char* safe_attr : safe_attributes) { |
| + ptr->dict_.SetString(safe_attr, safe_attr); |
| + } |
| + |
| + ptr->dict_.SetString("url", "http://www.foo.bar/baz"); |
| + |
| + // Add some extra dict_ values that should be filtered out. |
| + ptr->dict_.SetString("requestBody", "request body value"); |
| + ptr->dict_.SetString("requestHeaders", "request headers value"); |
| + } |
| + |
| + // Filter the copy out then check that filtering really works. |
| + copy->FilterForPublicSession(); |
| + |
| + EXPECT_EQ(orig->render_process_id_, copy->render_process_id_); |
| + EXPECT_EQ(orig->render_frame_id_, copy->render_frame_id_); |
| + EXPECT_EQ(0, copy->extra_info_spec_); |
| + |
| + EXPECT_EQ(nullptr, copy->request_body_); |
| + EXPECT_EQ(nullptr, copy->request_headers_); |
| + EXPECT_EQ(nullptr, copy->response_headers_); |
| + |
| + for (const char* safe_attr : safe_attributes) { |
| + std::string copy_str, orig_str; |
|
Devlin
2016/11/15 15:12:02
nit: chromium style says one variable per line, so
Ivan Šandrk
2016/11/15 16:07:39
Done.
|
| + copy->dict_.GetString(safe_attr, ©_str); |
|
Devlin
2016/11/15 15:12:02
We should know that the string value is |safe_attr
Ivan Šandrk
2016/11/15 16:07:39
Good point, done.
|
| + orig->dict_.GetString(safe_attr, &orig_str); |
| + EXPECT_EQ(orig_str, copy_str); |
| + } |
| + |
| + // URL is stripped down to origin. |
| + std::string url; |
| + copy->dict_.GetString("url", &url); |
| + EXPECT_EQ("http://www.foo.bar/", url); |
| + |
| + // Extras are filtered out (+1 for url). |
| + EXPECT_EQ(arraysize(safe_attributes) + 1, copy->dict_.size()); |
| +} |
| + |
| +} // namespace extensions |