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

Side by Side Diff: chrome/browser/net/system_network_context_manager_browsertest.cc

Issue 2968293002: Introduce SystemNetworkContextManager. (Closed)
Patch Set: Response to comments Created 3 years, 5 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
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/net/system_network_context_manager.h"
6
7 #include "base/command_line.h"
8 #include "chrome/test/base/in_process_browser_test.h"
9 #include "content/public/common/content_features.h"
10 #include "content/public/common/content_switches.h"
11 #include "content/public/common/network_service.mojom.h"
12 #include "content/public/common/resource_response.h"
13 #include "content/public/common/resource_response_info.h"
14 #include "content/public/common/url_loader.mojom.h"
15 #include "content/public/common/url_loader_factory.mojom.h"
16 #include "content/public/test/test_url_loader_client.h"
17 #include "mojo/common/data_pipe_utils.h"
18 #include "net/base/net_errors.h"
19 #include "net/http/http_response_headers.h"
20 #include "net/test/embedded_test_server/embedded_test_server.h"
21 #include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
22
23 namespace {
24
25 enum class NetworkServiceState {
26 kDisabled,
27 kEnabled,
28 };
29
30 class SystemNetworkContextManagerTest
31 : public InProcessBrowserTest,
32 public testing::WithParamInterface<NetworkServiceState> {
33 public:
34 SystemNetworkContextManagerTest() {
35 EXPECT_TRUE(embedded_test_server()->Start());
36 }
37
38 ~SystemNetworkContextManagerTest() override {}
39
40 void SetUpCommandLine(base::CommandLine* command_line) override {
41 if (GetParam() == NetworkServiceState::kEnabled) {
42 command_line->AppendSwitchASCII(switches::kEnableFeatures,
43 features::kNetworkService.name);
44 }
45 }
46
47 void SetUpOnMainThread() override {
48 SystemNetworkContextManager::Context()->CreateURLLoaderFactory(
49 MakeRequest(&loader_factory_), 0);
50 }
51
52 content::mojom::URLLoaderFactory* loader_factory() {
53 return loader_factory_.get();
54 }
55
56 private:
57 content::mojom::URLLoaderFactoryPtr loader_factory_;
58 };
59
60 IN_PROC_BROWSER_TEST_P(SystemNetworkContextManagerTest, BasicRequest) {
61 content::mojom::URLLoaderAssociatedPtr loader;
62 content::ResourceRequest request;
63 content::TestURLLoaderClient client;
64 request.url = embedded_test_server()->GetURL("/echo");
65 request.method = "GET";
66 request.request_initiator = url::Origin();
67 loader_factory()->CreateLoaderAndStart(
68 mojo::MakeRequest(&loader), 2, 1, content::mojom::kURLLoadOptionNone,
69 request, client.CreateInterfacePtr(),
70 net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS));
71 client.RunUntilResponseReceived();
72 ASSERT_TRUE(client.response_head().headers);
73 EXPECT_EQ(200, client.response_head().headers->response_code());
74
75 client.RunUntilResponseBodyArrived();
76 // TODO(mmenke): Is blocking the UI Thread while reading the response really
77 // the best way to test requests in a browser test?
78 std::string response_body;
79 EXPECT_TRUE(mojo::common::BlockingCopyToString(client.response_body_release(),
80 &response_body));
81 EXPECT_EQ("Echo", response_body);
82
83 client.RunUntilComplete();
84 EXPECT_EQ(net::OK, client.completion_status().error_code);
85 }
86
87 INSTANTIATE_TEST_CASE_P(
88 /* no prefix */,
89 SystemNetworkContextManagerTest,
90 ::testing::Values(NetworkServiceState::kDisabled,
91 NetworkServiceState::kEnabled));
92
93 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698