Skip to content

Commit

Permalink
Refactor Resource Scheduler to a separate directory
Browse files Browse the repository at this point in the history
Move resource scheduler to a separate directory in
//services/network.
services/network/resource_scheduler/resource_scheduler.cc
file has become too big and cumbersome with too many
internal classes. The plan is to split
the internal classes off to separate files. Having
resource_scheduler in a separate directory would make
that easier to manage.

This CL does not make any functional changes.

Change-Id: I3b26b5219b8dbe41b01185e901183cd32a7d8dd5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1689786
Commit-Queue: Tarun Bansal <tbansal@chromium.org>
Reviewed-by: Matt Menke <mmenke@chromium.org>
Reviewed-by: Doug Arnett <dougarnett@chromium.org>
Cr-Commit-Position: refs/heads/master@{#678035}
  • Loading branch information
Tarun Bansal authored and Commit Bot committed Jul 16, 2019
1 parent e7a331e commit b6d9932
Show file tree
Hide file tree
Showing 25 changed files with 57 additions and 47 deletions.
2 changes: 1 addition & 1 deletion content/browser/loader/mojo_async_resource_handler.cc
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
#include "services/network/public/cpp/constants.h"
#include "services/network/public/cpp/resource_response.h"
#include "services/network/public/cpp/url_loader_completion_status.h"
#include "services/network/resource_scheduler.h"
#include "services/network/resource_scheduler/resource_scheduler.h"

namespace content {
namespace {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
#include "services/network/public/cpp/url_loader_completion_status.h"
#include "services/network/public/mojom/url_loader.mojom.h"
#include "services/network/public/mojom/url_loader_factory.mojom.h"
#include "services/network/resource_scheduler.h"
#include "services/network/resource_scheduler/resource_scheduler.h"
#include "services/network/test/test_url_loader_client.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/base/page_transition_types.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
#include "net/url_request/url_request_context_builder.h"
#include "ppapi/buildflags/buildflags.h"
#include "services/network/public/cpp/features.h"
#include "services/network/resource_scheduler_client.h"
#include "services/network/resource_scheduler/resource_scheduler_client.h"
#include "services/network/url_loader.h"
#include "services/network/url_request_context_owner.h"
#include "testing/gtest/include/gtest/gtest.h"
Expand Down
2 changes: 1 addition & 1 deletion content/browser/loader/resource_dispatcher_host_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@
#include "services/network/public/cpp/resource_request.h"
#include "services/network/public/cpp/resource_request_body.h"
#include "services/network/public/cpp/url_loader_completion_status.h"
#include "services/network/resource_scheduler.h"
#include "services/network/resource_scheduler/resource_scheduler.h"
#include "services/network/throttling/scoped_throttling_token.h"
#include "services/network/url_loader_factory.h"
#include "storage/browser/blob/blob_data_handle.h"
Expand Down
4 changes: 2 additions & 2 deletions content/browser/loader/resource_dispatcher_host_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,8 @@
#include "net/url_request/url_request_test_util.h"
#include "services/network/public/cpp/features.h"
#include "services/network/public/cpp/resource_request.h"
#include "services/network/resource_scheduler.h"
#include "services/network/resource_scheduler_params_manager.h"
#include "services/network/resource_scheduler/resource_scheduler.h"
#include "services/network/resource_scheduler/resource_scheduler_params_manager.h"
#include "services/network/test/test_url_loader_client.h"
#include "storage/browser/blob/shareable_file_reference.h"
#include "testing/gtest/include/gtest/gtest.h"
Expand Down
16 changes: 8 additions & 8 deletions services/network/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -123,12 +123,12 @@ jumbo_component("network_service") {
"proxy_service_mojo.h",
"resolve_host_request.cc",
"resolve_host_request.h",
"resource_scheduler.cc",
"resource_scheduler.h",
"resource_scheduler_client.cc",
"resource_scheduler_client.h",
"resource_scheduler_params_manager.cc",
"resource_scheduler_params_manager.h",
"resource_scheduler/resource_scheduler.cc",
"resource_scheduler/resource_scheduler.h",
"resource_scheduler/resource_scheduler_client.cc",
"resource_scheduler/resource_scheduler_client.h",
"resource_scheduler/resource_scheduler_params_manager.cc",
"resource_scheduler/resource_scheduler_params_manager.h",
"restricted_cookie_manager.cc",
"restricted_cookie_manager.h",
"sec_header_helpers.cc",
Expand Down Expand Up @@ -328,8 +328,8 @@ source_set("tests") {
"proxy_config_service_mojo_unittest.cc",
"proxy_resolving_client_socket_unittest.cc",
"proxy_resolving_socket_mojo_unittest.cc",
"resource_scheduler_params_manager_unittest.cc",
"resource_scheduler_unittest.cc",
"resource_scheduler/resource_scheduler_params_manager_unittest.cc",
"resource_scheduler/resource_scheduler_unittest.cc",
"restricted_cookie_manager_unittest.cc",
"sec_header_helpers_unittest.cc",
"session_cleanup_cookie_store_unittest.cc",
Expand Down
4 changes: 3 additions & 1 deletion services/network/OWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ per-file network_sandbox_hook_linux.*.cc=file://sandbox/OWNERS
per-file network_sandbox_win.*=file://sandbox/win/OWNERS

per-file network_quality*=file://net/nqe/OWNERS
per-file resource_scheduler*=tbansal@chromium.org

per-file BUILD.gn=file://net/nqe/OWNERS
per-file BUILD.gn=file://services/network/resource_scheduler/OWNERS

# COMPONENT: Internals>Services>Network
2 changes: 1 addition & 1 deletion services/network/cors/cors_url_loader_factory.cc
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
#include "services/network/public/cpp/header_util.h"
#include "services/network/public/cpp/resource_request.h"
#include "services/network/public/mojom/fetch_api.mojom.h"
#include "services/network/resource_scheduler_client.h"
#include "services/network/resource_scheduler/resource_scheduler_client.h"
#include "services/network/url_loader_factory.h"

namespace network {
Expand Down
4 changes: 2 additions & 2 deletions services/network/cors/cors_url_loader_factory_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
#include "services/network/public/cpp/resource_request.h"
#include "services/network/public/mojom/url_loader.mojom.h"
#include "services/network/public/mojom/url_loader_factory.mojom.h"
#include "services/network/resource_scheduler.h"
#include "services/network/resource_scheduler_client.h"
#include "services/network/resource_scheduler/resource_scheduler.h"
#include "services/network/resource_scheduler/resource_scheduler_client.h"
#include "services/network/test/test_url_loader_client.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"
Expand Down
4 changes: 2 additions & 2 deletions services/network/cors/cors_url_loader_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@
#include "services/network/public/mojom/network_context.mojom.h"
#include "services/network/public/mojom/url_loader.mojom.h"
#include "services/network/public/mojom/url_loader_factory.mojom.h"
#include "services/network/resource_scheduler.h"
#include "services/network/resource_scheduler_client.h"
#include "services/network/resource_scheduler/resource_scheduler.h"
#include "services/network/resource_scheduler/resource_scheduler_client.h"
#include "services/network/test/test_url_loader_client.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
Expand Down
2 changes: 1 addition & 1 deletion services/network/network_context.cc
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@
#include "services/network/public/cpp/features.h"
#include "services/network/public/cpp/network_switches.h"
#include "services/network/resolve_host_request.h"
#include "services/network/resource_scheduler_client.h"
#include "services/network/resource_scheduler/resource_scheduler_client.h"
#include "services/network/restricted_cookie_manager.h"
#include "services/network/session_cleanup_cookie_store.h"
#include "services/network/ssl_config_service_mojo.h"
Expand Down
4 changes: 4 additions & 0 deletions services/network/resource_scheduler/OWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
tbansal@chromium.org
dougarnett@chromium.org

# COMPONENT: Internals>Network>NetworkQuality
7 changes: 7 additions & 0 deletions services/network/resource_scheduler/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Resource Scheduler

Resource scheduler controls the loading of the webpages by scheduling the order in which the HTTP requests are dispatched on the network. It ensures that the loading of lower priority resources (e.g., XHRs, images) does not slow down the loading of the higher priority resources (e.g., HTML, CSS, render blocking JavaScript) while ensuring the maximum usage of the available network resources.

## Design

Resource scheduler creates one resource scheduler client is created per execution context (aka per-frame and service worker). This means that iframes get their own scheduler client. Each scheduler client controls the loading of the requests relevat in its context. At a high level, the scheduling logic does not dispatch low priority requests on the network if they are expected to contend for network resources with higher priority requests. This contention is estimated based on the count of higher priority requests in-flight and the estimated network capacity.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "services/network/resource_scheduler.h"
#include "services/network/resource_scheduler/resource_scheduler.h"

#include <stdint.h>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef SERVICES_NETWORK_RESOURCE_SCHEDULER_H_
#define SERVICES_NETWORK_RESOURCE_SCHEDULER_H_
#ifndef SERVICES_NETWORK_RESOURCE_SCHEDULER_RESOURCE_SCHEDULER_H_
#define SERVICES_NETWORK_RESOURCE_SCHEDULER_RESOURCE_SCHEDULER_H_

#include <stddef.h>
#include <stdint.h>
Expand All @@ -26,12 +26,12 @@
#include "net/base/priority_queue.h"
#include "net/base/request_priority.h"
#include "net/nqe/effective_connection_type.h"
#include "services/network/resource_scheduler_params_manager.h"
#include "services/network/resource_scheduler/resource_scheduler_params_manager.h"

namespace base {
class SequencedTaskRunner;
class TickClock;
}
} // namespace base

namespace net {
class URLRequest;
Expand Down Expand Up @@ -201,4 +201,4 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) ResourceScheduler {

} // namespace network

#endif // SERVICES_NETWORK_RESOURCE_SCHEDULER_H_
#endif // SERVICES_NETWORK_RESOURCE_SCHEDULER_RESOURCE_SCHEDULER_H_
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "services/network/resource_scheduler_client.h"
#include "services/network/resource_scheduler/resource_scheduler_client.h"

#include "net/url_request/url_request_context.h"
#include "services/network/network_context.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef SERVICES_NETWORK_RESOURCE_SCHEDULER_CLIENT_H_
#define SERVICES_NETWORK_RESOURCE_SCHEDULER_CLIENT_H_
#ifndef SERVICES_NETWORK_RESOURCE_SCHEDULER_RESOURCE_SCHEDULER_CLIENT_H_
#define SERVICES_NETWORK_RESOURCE_SCHEDULER_RESOURCE_SCHEDULER_CLIENT_H_

#include "base/memory/ref_counted.h"
#include "net/base/request_priority.h"
#include "services/network/resource_scheduler.h"
#include "services/network/resource_scheduler/resource_scheduler.h"

namespace net {
class URLRequest;
Expand Down Expand Up @@ -51,4 +51,4 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) ResourceSchedulerClient final
};
} // namespace network

#endif // SERVICES_NETWORK_RESOURCE_SCHEDULER_CLIENT_H_
#endif // SERVICES_NETWORK_RESOURCE_SCHEDULER_RESOURCE_SCHEDULER_CLIENT_H_
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "services/network/resource_scheduler_params_manager.h"
#include "services/network/resource_scheduler/resource_scheduler_params_manager.h"

#include "base/feature_list.h"
#include "base/metrics/field_trial.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef SERVICES_NETWORK_RESOURCE_SCHEDULER_PARAMS_MANAGER_H_
#define SERVICES_NETWORK_RESOURCE_SCHEDULER_PARAMS_MANAGER_H_
#ifndef SERVICES_NETWORK_RESOURCE_SCHEDULER_RESOURCE_SCHEDULER_PARAMS_MANAGER_H_
#define SERVICES_NETWORK_RESOURCE_SCHEDULER_RESOURCE_SCHEDULER_PARAMS_MANAGER_H_

#include <stddef.h>
#include <stdint.h>
Expand Down Expand Up @@ -118,4 +118,4 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) ResourceSchedulerParamsManager {

} // namespace network

#endif // SERVICES_NETWORK_RESOURCE_SCHEDULER_PARAMS_MANAGER_H_
#endif // SERVICES_NETWORK_RESOURCE_SCHEDULER_RESOURCE_SCHEDULER_PARAMS_MANAGER_H_
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "services/network/resource_scheduler_params_manager.h"
#include "services/network/resource_scheduler/resource_scheduler_params_manager.h"

#include <map>
#include <string>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "services/network/resource_scheduler.h"
#include "services/network/resource_scheduler/resource_scheduler.h"

#include <map>
#include <memory>
Expand Down Expand Up @@ -34,7 +34,7 @@
#include "net/url_request/url_request_test_util.h"
#include "services/network/public/cpp/features.h"
#include "services/network/public/mojom/network_context.mojom.h"
#include "services/network/resource_scheduler_params_manager.h"
#include "services/network/resource_scheduler/resource_scheduler_params_manager.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "url/scheme_host_port.h"
Expand Down Expand Up @@ -538,8 +538,6 @@ TEST_F(ResourceSchedulerTest, MaxRequestsPerHostForSpdyWhenNotDelayable) {
EXPECT_TRUE(request->started());
}



TEST_F(ResourceSchedulerTest, BackgroundRequestStartsImmediately) {
const int route_id = 0; // Indicates a background request.
std::unique_ptr<TestRequest> request(
Expand Down Expand Up @@ -1003,7 +1001,6 @@ TEST_F(ResourceSchedulerTest, SpdyProxySchedulesImmediately) {
EXPECT_FALSE(request->started());
}


TEST_F(ResourceSchedulerTest, NewSpdyHostInDelayableRequests) {
base::test::ScopedFeatureList scoped_feature_list;
InitializeScheduler();
Expand Down
2 changes: 1 addition & 1 deletion services/network/url_loader.cc
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
#include "services/network/public/cpp/resource_request.h"
#include "services/network/public/cpp/resource_response.h"
#include "services/network/public/mojom/url_loader_factory.mojom.h"
#include "services/network/resource_scheduler_client.h"
#include "services/network/resource_scheduler/resource_scheduler_client.h"
#include "services/network/sec_header_helpers.h"
#include "services/network/throttling/scoped_throttling_token.h"

Expand Down
4 changes: 2 additions & 2 deletions services/network/url_loader.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@
#include "services/network/public/mojom/fetch_api.mojom.h"
#include "services/network/public/mojom/network_service.mojom.h"
#include "services/network/public/mojom/url_loader.mojom.h"
#include "services/network/resource_scheduler.h"
#include "services/network/resource_scheduler_client.h"
#include "services/network/resource_scheduler/resource_scheduler.h"
#include "services/network/resource_scheduler/resource_scheduler_client.h"
#include "services/network/upload_progress_tracker.h"

namespace net {
Expand Down
2 changes: 1 addition & 1 deletion services/network/url_loader_factory.cc
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
#include "services/network/network_service.h"
#include "services/network/network_usage_accumulator.h"
#include "services/network/public/cpp/resource_request.h"
#include "services/network/resource_scheduler_client.h"
#include "services/network/resource_scheduler/resource_scheduler_client.h"
#include "services/network/url_loader.h"
#include "url/gurl.h"
#include "url/origin.h"
Expand Down
2 changes: 1 addition & 1 deletion services/network/url_loader_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@
#include "net/url_request/url_request_test_util.h"
#include "services/network/loader_util.h"
#include "services/network/public/cpp/resource_request.h"
#include "services/network/resource_scheduler_client.h"
#include "services/network/resource_scheduler/resource_scheduler_client.h"
#include "services/network/test/test_data_pipe_getter.h"
#include "services/network/test/test_network_context_client.h"
#include "services/network/test/test_network_service_client.h"
Expand Down

0 comments on commit b6d9932

Please sign in to comment.