Commit 3536a6f4 authored by Fabrice de Gans-Riberi's avatar Fabrice de Gans-Riberi Committed by Commit Bot

Revert "[Fuchsia] Implement extra headers support in NavigationController."

This reverts commit c6df4d27.

Reason for revert: Broke Fuchsia browsertests.
Bug: 925574

Original change's description:
> [Fuchsia] Implement extra headers support in NavigationController.
> 
> This implements setting and using the |headers| data in
> LoadUrlParams. A new test fixture is added to ensure the extra headers
> are properly received by the test server.
> 
> Bug: 923598
> Change-Id: I59a44c886f1853bbc631ae016b0655dd1d4d539b
> Reviewed-on: https://chromium-review.googlesource.com/c/1427565
> Commit-Queue: Fabrice de Gans-Riberi <fdegans@chromium.org>
> Reviewed-by: Kevin Marshall <kmarshall@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#625912}

TBR=wez@chromium.org,kmarshall@chromium.org,fdegans@chromium.org

Change-Id: I82c9a5dead06edd58553a0999b708c6cc8b8dfd7
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 923598
Reviewed-on: https://chromium-review.googlesource.com/c/1437914Reviewed-by: default avatarFabrice de Gans-Riberi <fdegans@chromium.org>
Commit-Queue: Fabrice de Gans-Riberi <fdegans@chromium.org>
Cr-Commit-Position: refs/heads/master@{#626277}
parent add18a73
...@@ -295,16 +295,6 @@ void FrameImpl::LoadUrl(std::string url, ...@@ -295,16 +295,6 @@ void FrameImpl::LoadUrl(std::string url,
content::NavigationController::LoadURLParams params_converted(validated_url); content::NavigationController::LoadURLParams params_converted(validated_url);
if (!params->headers.empty()) {
std::vector<base::StringPiece> extra_headers;
extra_headers.reserve(params->headers.size());
for (const auto& header : params->headers) {
extra_headers.push_back(base::StringPiece(
reinterpret_cast<const char*>(header.data()), header.size()));
}
params_converted.extra_headers = base::JoinString(extra_headers, "\n");
}
if (validated_url.scheme() == url::kDataScheme) if (validated_url.scheme() == url::kDataScheme)
params_converted.load_type = content::NavigationController::LOAD_TYPE_DATA; params_converted.load_type = content::NavigationController::LOAD_TYPE_DATA;
......
...@@ -71,7 +71,6 @@ class FrameImplTest : public WebRunnerBrowserTest { ...@@ -71,7 +71,6 @@ class FrameImplTest : public WebRunnerBrowserTest {
// Navigates a |controller| to |url|, blocking until navigation is complete. // Navigates a |controller| to |url|, blocking until navigation is complete.
void CheckLoadUrl(const std::string& url, void CheckLoadUrl(const std::string& url,
const std::string& expected_title, const std::string& expected_title,
chromium::web::LoadUrlParamsPtr load_url_params,
chromium::web::NavigationController* controller) { chromium::web::NavigationController* controller) {
base::RunLoop run_loop; base::RunLoop run_loop;
EXPECT_CALL(navigation_observer_, EXPECT_CALL(navigation_observer_,
...@@ -79,7 +78,7 @@ class FrameImplTest : public WebRunnerBrowserTest { ...@@ -79,7 +78,7 @@ class FrameImplTest : public WebRunnerBrowserTest {
Field(&NavigationDetails::title, expected_title), Field(&NavigationDetails::title, expected_title),
Field(&NavigationDetails::url, url)))) Field(&NavigationDetails::url, url))))
.WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })); .WillOnce(InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }));
controller->LoadUrl(url, std::move(load_url_params)); controller->LoadUrl(url, nullptr);
run_loop.Run(); run_loop.Run();
Mock::VerifyAndClearExpectations(this); Mock::VerifyAndClearExpectations(this);
navigation_observer_.Acknowledge(); navigation_observer_.Acknowledge();
...@@ -110,8 +109,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, NavigateFrame) { ...@@ -110,8 +109,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, NavigateFrame) {
chromium::web::NavigationControllerPtr controller; chromium::web::NavigationControllerPtr controller;
frame->GetNavigationController(controller.NewRequest()); frame->GetNavigationController(controller.NewRequest());
CheckLoadUrl(url::kAboutBlankURL, url::kAboutBlankURL, nullptr, CheckLoadUrl(url::kAboutBlankURL, url::kAboutBlankURL, controller.get());
controller.get());
} }
IN_PROC_BROWSER_TEST_F(FrameImplTest, NavigateDataFrame) { IN_PROC_BROWSER_TEST_F(FrameImplTest, NavigateDataFrame) {
...@@ -120,7 +118,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, NavigateDataFrame) { ...@@ -120,7 +118,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, NavigateDataFrame) {
chromium::web::NavigationControllerPtr controller; chromium::web::NavigationControllerPtr controller;
frame->GetNavigationController(controller.NewRequest()); frame->GetNavigationController(controller.NewRequest());
CheckLoadUrl(kDataUrl, kDataUrl, nullptr, controller.get()); CheckLoadUrl(kDataUrl, kDataUrl, controller.get());
} }
IN_PROC_BROWSER_TEST_F(FrameImplTest, FrameDeletedBeforeContext) { IN_PROC_BROWSER_TEST_F(FrameImplTest, FrameDeletedBeforeContext) {
...@@ -167,8 +165,8 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, GoBackAndForward) { ...@@ -167,8 +165,8 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, GoBackAndForward) {
GURL title1(embedded_test_server()->GetURL(kPage1Path)); GURL title1(embedded_test_server()->GetURL(kPage1Path));
GURL title2(embedded_test_server()->GetURL(kPage2Path)); GURL title2(embedded_test_server()->GetURL(kPage2Path));
CheckLoadUrl(title1.spec(), kPage1Title, nullptr, controller.get()); CheckLoadUrl(title1.spec(), kPage1Title, controller.get());
CheckLoadUrl(title2.spec(), kPage2Title, nullptr, controller.get()); CheckLoadUrl(title2.spec(), kPage2Title, controller.get());
{ {
base::RunLoop run_loop; base::RunLoop run_loop;
...@@ -219,7 +217,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, ReloadFrame) { ...@@ -219,7 +217,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, ReloadFrame) {
GURL url(embedded_test_server()->GetURL(kPage1Path)); GURL url(embedded_test_server()->GetURL(kPage1Path));
EXPECT_CALL(*this, OnServeHttpRequest(_)); EXPECT_CALL(*this, OnServeHttpRequest(_));
CheckLoadUrl(url.spec(), kPage1Title, nullptr, navigation_controller.get()); CheckLoadUrl(url.spec(), kPage1Title, navigation_controller.get());
navigation_observer_.Observe( navigation_observer_.Observe(
context_impl()->GetFrameImplForTest(&frame)->web_contents_.get()); context_impl()->GetFrameImplForTest(&frame)->web_contents_.get());
...@@ -392,7 +390,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, ExecuteJavaScriptImmediate) { ...@@ -392,7 +390,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, ExecuteJavaScriptImmediate) {
chromium::web::NavigationControllerPtr controller; chromium::web::NavigationControllerPtr controller;
frame->GetNavigationController(controller.NewRequest()); frame->GetNavigationController(controller.NewRequest());
CheckLoadUrl(title1.spec(), kPage1Title, nullptr, controller.get()); CheckLoadUrl(title1.spec(), kPage1Title, controller.get());
std::vector<std::string> origins = {title1.GetOrigin().spec()}; std::vector<std::string> origins = {title1.GetOrigin().spec()};
frame->ExecuteJavaScript( frame->ExecuteJavaScript(
...@@ -424,7 +422,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, ExecuteJavaScriptOnLoad) { ...@@ -424,7 +422,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, ExecuteJavaScriptOnLoad) {
chromium::web::NavigationControllerPtr controller; chromium::web::NavigationControllerPtr controller;
frame->GetNavigationController(controller.NewRequest()); frame->GetNavigationController(controller.NewRequest());
CheckLoadUrl(url.spec(), "hello", nullptr, controller.get()); CheckLoadUrl(url.spec(), "hello", controller.get());
} }
IN_PROC_BROWSER_TEST_F(FrameImplTest, ExecuteJavaScriptOnLoadVmoDestroyed) { IN_PROC_BROWSER_TEST_F(FrameImplTest, ExecuteJavaScriptOnLoadVmoDestroyed) {
...@@ -441,7 +439,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, ExecuteJavaScriptOnLoadVmoDestroyed) { ...@@ -441,7 +439,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, ExecuteJavaScriptOnLoadVmoDestroyed) {
chromium::web::NavigationControllerPtr controller; chromium::web::NavigationControllerPtr controller;
frame->GetNavigationController(controller.NewRequest()); frame->GetNavigationController(controller.NewRequest());
CheckLoadUrl(url.spec(), "hello", nullptr, controller.get()); CheckLoadUrl(url.spec(), "hello", controller.get());
} }
IN_PROC_BROWSER_TEST_F(FrameImplTest, ExecuteJavascriptOnLoadWrongOrigin) { IN_PROC_BROWSER_TEST_F(FrameImplTest, ExecuteJavascriptOnLoadWrongOrigin) {
...@@ -462,7 +460,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, ExecuteJavascriptOnLoadWrongOrigin) { ...@@ -462,7 +460,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, ExecuteJavascriptOnLoadWrongOrigin) {
// Expect that the original HTML title is used, because we didn't inject a // Expect that the original HTML title is used, because we didn't inject a
// script with a replacement title. // script with a replacement title.
CheckLoadUrl(url.spec(), "Welcome to Stan the Offline Dino's Homepage", CheckLoadUrl(url.spec(), "Welcome to Stan the Offline Dino's Homepage",
nullptr, controller.get()); controller.get());
} }
IN_PROC_BROWSER_TEST_F(FrameImplTest, ExecuteJavaScriptOnLoadWildcardOrigin) { IN_PROC_BROWSER_TEST_F(FrameImplTest, ExecuteJavaScriptOnLoadWildcardOrigin) {
...@@ -480,15 +478,14 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, ExecuteJavaScriptOnLoadWildcardOrigin) { ...@@ -480,15 +478,14 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, ExecuteJavaScriptOnLoadWildcardOrigin) {
// Test script injection for the origin 127.0.0.1. // Test script injection for the origin 127.0.0.1.
chromium::web::NavigationControllerPtr controller; chromium::web::NavigationControllerPtr controller;
frame->GetNavigationController(controller.NewRequest()); frame->GetNavigationController(controller.NewRequest());
CheckLoadUrl(url.spec(), "hello", nullptr, controller.get()); CheckLoadUrl(url.spec(), "hello", controller.get());
CheckLoadUrl(url::kAboutBlankURL, url::kAboutBlankURL, nullptr, CheckLoadUrl(url::kAboutBlankURL, url::kAboutBlankURL, controller.get());
controller.get());
// Test script injection using a different origin ("localhost"), which should // Test script injection using a different origin ("localhost"), which should
// still be picked up by the wildcard. // still be picked up by the wildcard.
GURL alt_url = embedded_test_server()->GetURL("localhost", kDynamicTitlePath); GURL alt_url = embedded_test_server()->GetURL("localhost", kDynamicTitlePath);
CheckLoadUrl(alt_url.spec(), "hello", nullptr, controller.get()); CheckLoadUrl(alt_url.spec(), "hello", controller.get());
} }
// Test that consecutive scripts are executed in order by computing a cumulative // Test that consecutive scripts are executed in order by computing a cumulative
...@@ -510,7 +507,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, ExecuteMultipleJavaScriptsOnLoad) { ...@@ -510,7 +507,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, ExecuteMultipleJavaScriptsOnLoad) {
chromium::web::NavigationControllerPtr controller; chromium::web::NavigationControllerPtr controller;
frame->GetNavigationController(controller.NewRequest()); frame->GetNavigationController(controller.NewRequest());
CheckLoadUrl(url.spec(), "hello there", nullptr, controller.get()); CheckLoadUrl(url.spec(), "hello there", controller.get());
} }
// Test that we can inject scripts before and after RenderFrame creation. // Test that we can inject scripts before and after RenderFrame creation.
...@@ -528,7 +525,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, ExecuteOnLoadEarlyAndLateRegistrations) { ...@@ -528,7 +525,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, ExecuteOnLoadEarlyAndLateRegistrations) {
chromium::web::NavigationControllerPtr controller; chromium::web::NavigationControllerPtr controller;
frame->GetNavigationController(controller.NewRequest()); frame->GetNavigationController(controller.NewRequest());
CheckLoadUrl(url.spec(), "hello", nullptr, controller.get()); CheckLoadUrl(url.spec(), "hello", controller.get());
frame->ExecuteJavaScript(std::move(origins), frame->ExecuteJavaScript(std::move(origins),
MemBufferFromString("stashed_title += ' there';"), MemBufferFromString("stashed_title += ' there';"),
...@@ -536,11 +533,10 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, ExecuteOnLoadEarlyAndLateRegistrations) { ...@@ -536,11 +533,10 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, ExecuteOnLoadEarlyAndLateRegistrations) {
[](bool success) { EXPECT_TRUE(success); }); [](bool success) { EXPECT_TRUE(success); });
// Navigate away to clean the slate. // Navigate away to clean the slate.
CheckLoadUrl(url::kAboutBlankURL, url::kAboutBlankURL, nullptr, CheckLoadUrl(url::kAboutBlankURL, url::kAboutBlankURL, controller.get());
controller.get());
// Navigate back and see if both scripts are working. // Navigate back and see if both scripts are working.
CheckLoadUrl(url.spec(), "hello there", nullptr, controller.get()); CheckLoadUrl(url.spec(), "hello there", controller.get());
} }
IN_PROC_BROWSER_TEST_F(FrameImplTest, ExecuteJavaScriptBadEncoding) { IN_PROC_BROWSER_TEST_F(FrameImplTest, ExecuteJavaScriptBadEncoding) {
...@@ -551,7 +547,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, ExecuteJavaScriptBadEncoding) { ...@@ -551,7 +547,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, ExecuteJavaScriptBadEncoding) {
chromium::web::NavigationControllerPtr controller; chromium::web::NavigationControllerPtr controller;
frame->GetNavigationController(controller.NewRequest()); frame->GetNavigationController(controller.NewRequest());
CheckLoadUrl(url.spec(), kPage1Title, nullptr, controller.get()); CheckLoadUrl(url.spec(), kPage1Title, controller.get());
base::RunLoop run_loop; base::RunLoop run_loop;
...@@ -727,8 +723,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, PostMessage) { ...@@ -727,8 +723,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, PostMessage) {
chromium::web::NavigationControllerPtr controller; chromium::web::NavigationControllerPtr controller;
frame->GetNavigationController(controller.NewRequest()); frame->GetNavigationController(controller.NewRequest());
CheckLoadUrl(post_message_url.spec(), "postmessage", nullptr, CheckLoadUrl(post_message_url.spec(), "postmessage", controller.get());
controller.get());
chromium::web::WebMessage message; chromium::web::WebMessage message;
message.data = MemBufferFromString(kPage1Path); message.data = MemBufferFromString(kPage1Path);
...@@ -755,8 +750,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, PostMessagePassMessagePort) { ...@@ -755,8 +750,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, PostMessagePassMessagePort) {
chromium::web::NavigationControllerPtr controller; chromium::web::NavigationControllerPtr controller;
frame->GetNavigationController(controller.NewRequest()); frame->GetNavigationController(controller.NewRequest());
CheckLoadUrl(post_message_url.spec(), "messageport", nullptr, CheckLoadUrl(post_message_url.spec(), "messageport", controller.get());
controller.get());
chromium::web::MessagePortPtr message_port; chromium::web::MessagePortPtr message_port;
chromium::web::WebMessage msg; chromium::web::WebMessage msg;
...@@ -802,8 +796,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, PostMessageMessagePortDisconnected) { ...@@ -802,8 +796,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, PostMessageMessagePortDisconnected) {
chromium::web::NavigationControllerPtr controller; chromium::web::NavigationControllerPtr controller;
frame->GetNavigationController(controller.NewRequest()); frame->GetNavigationController(controller.NewRequest());
CheckLoadUrl(post_message_url.spec(), "messageport", nullptr, CheckLoadUrl(post_message_url.spec(), "messageport", controller.get());
controller.get());
chromium::web::MessagePortPtr message_port; chromium::web::MessagePortPtr message_port;
chromium::web::WebMessage msg; chromium::web::WebMessage msg;
...@@ -847,8 +840,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, PostMessageUseContentProvidedPort) { ...@@ -847,8 +840,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, PostMessageUseContentProvidedPort) {
chromium::web::NavigationControllerPtr controller; chromium::web::NavigationControllerPtr controller;
frame->GetNavigationController(controller.NewRequest()); frame->GetNavigationController(controller.NewRequest());
CheckLoadUrl(post_message_url.spec(), "messageport", nullptr, CheckLoadUrl(post_message_url.spec(), "messageport", controller.get());
controller.get());
chromium::web::MessagePortPtr incoming_message_port; chromium::web::MessagePortPtr incoming_message_port;
chromium::web::WebMessage msg; chromium::web::WebMessage msg;
...@@ -927,8 +919,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, PostMessageBadOriginDropped) { ...@@ -927,8 +919,7 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, PostMessageBadOriginDropped) {
chromium::web::NavigationControllerPtr controller; chromium::web::NavigationControllerPtr controller;
frame->GetNavigationController(controller.NewRequest()); frame->GetNavigationController(controller.NewRequest());
CheckLoadUrl(post_message_url.spec(), "messageport", nullptr, CheckLoadUrl(post_message_url.spec(), "messageport", controller.get());
controller.get());
chromium::web::MessagePortPtr bad_origin_incoming_message_port; chromium::web::MessagePortPtr bad_origin_incoming_message_port;
chromium::web::WebMessage msg; chromium::web::WebMessage msg;
...@@ -975,77 +966,4 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, PostMessageBadOriginDropped) { ...@@ -975,77 +966,4 @@ IN_PROC_BROWSER_TEST_F(FrameImplTest, PostMessageBadOriginDropped) {
EXPECT_FALSE(unused_message_read.has_value()); EXPECT_FALSE(unused_message_read.has_value());
} }
class RequestMonitoringFrameImplBrowserTest : public FrameImplTest {
public:
RequestMonitoringFrameImplBrowserTest() = default;
protected:
void SetUpOnMainThread() override {
// Accumulate all http requests made to |embedded_test_server| into
// |accumulated_requests_| container.
embedded_test_server()->RegisterRequestMonitor(base::BindRepeating(
&RequestMonitoringFrameImplBrowserTest::MonitorRequestOnIoThread,
base::Unretained(this), base::SequencedTaskRunnerHandle::Get()));
ASSERT_TRUE(embedded_test_server()->Start());
}
void TearDown() override {
EXPECT_TRUE(embedded_test_server()->ShutdownAndWaitUntilComplete());
}
std::map<GURL, net::test_server::HttpRequest> accumulated_requests_;
private:
void MonitorRequestOnIoThread(
const scoped_refptr<base::SequencedTaskRunner>& main_thread_task_runner,
const net::test_server::HttpRequest& request) {
main_thread_task_runner->PostTask(
FROM_HERE,
base::BindOnce(
&RequestMonitoringFrameImplBrowserTest::MonitorRequestOnMainThread,
base::Unretained(this), request));
}
void MonitorRequestOnMainThread(
const net::test_server::HttpRequest& request) {
accumulated_requests_[request.GetURL()] = request;
}
DISALLOW_COPY_AND_ASSIGN(RequestMonitoringFrameImplBrowserTest);
};
std::vector<uint8_t> StringToUnsignedVector(base::StringPiece str) {
const uint8_t* raw_data = reinterpret_cast<const uint8_t*>(str.data());
return std::vector<uint8_t>(raw_data, raw_data + str.length());
}
IN_PROC_BROWSER_TEST_F(RequestMonitoringFrameImplBrowserTest, ExtraHeaders) {
chromium::web::FramePtr frame = CreateFrame();
chromium::web::LoadUrlParamsPtr load_url_params =
chromium::web::LoadUrlParams::New();
load_url_params->headers.push_back(
StringToUnsignedVector("X-ExtraHeaders: 1"));
load_url_params->headers.push_back(
StringToUnsignedVector("X-2ExtraHeaders: 2"));
chromium::web::NavigationControllerPtr controller;
frame->GetNavigationController(controller.NewRequest());
const GURL page_url(embedded_test_server()->GetURL(kPage1Path));
CheckLoadUrl(page_url.spec(), kPage1Title, std::move(load_url_params),
controller.get());
base::RunLoop().RunUntilIdle();
// At this point, the page should be loaded, the server should have received
// the request and the request should be in the map.
const auto iter = accumulated_requests_.find(page_url);
ASSERT_NE(iter, accumulated_requests_.end());
EXPECT_THAT(iter->second.headers,
testing::Contains(testing::Key("X-ExtraHeaders")));
EXPECT_THAT(iter->second.headers,
testing::Contains(testing::Key("X-2ExtraHeaders")));
}
} // namespace webrunner } // namespace webrunner
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment