New issue
Advanced search Search tips

Issue 601940 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: May 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug

Blocking:
issue 604091



Sign in to add a comment

Move NQE, SPW and SPWF related files to //net/nqe/ and //net/socket/

Project Member Reported by tbansal@chromium.org, Apr 8 2016

Issue description

In a recent discussion with rsleevi and bengr@, it was decided that NQE should be moved to //net/nqe/. SocketPerformanceWatcher (SPW) and SocketPerformanceWatcherFactory (SPWF) should be moved to //net/socket/.

This would help in splitting NQE files into smaller files. It would also keep SPW and SPWF close to the other socket related classes.
 
Components: Internals>Network
In any move, it would also be good to have a //net/nqe/-level documentation about where it fits in the //net stack (my understanding, perhaps incorrectly, is that it's logically "above" //net/url_request - thus it's acceptable that it can depend on everything in //net, but nothing outside of //net/nqe in //net should depend on it (unless they sit above //net/nqe, like cronet may)
NQE is notified every time some URL Request starts, ends, or reads data from the wire. So, with this change, //net/url_request/* will have a dependency on //net/nqe/. I thought it was okay for //net/a/ to depend on //net/b/. Is that correct?
It's fine for //net/a to depend on //net/b, but that means //net/b should not depend on //net/a. If URLRequest must depend on NQE, then NQE MUST NOT depend on any behaviours or contracts or APIs of URLRequest, and should instead use an appropriate form of abstraction to break the dependency.

I have no preferences one way or the other, other than making sure that acceptable and unacceptable dependencies (e.g. "where does NQE fit within //net layering") is clear :)
Yes, I need to make the dependencies clearer. NQE hooking in URLRequest was modeled similar to how NCN (= NetworkChangeNotifier) is hooked up. NCN and URLRequest also have circular dependency on each other.

Historically, NCN being in //net/base was also the reason behind why NQE was put in //net/base.
Re #4: NQE reads the load timing info struct attached to the request. URLRequest notifies NQE when the request headers or body is completely read. It does not really depend on any contract of NQE.
Project Member

Comment 7 by bugdroid1@chromium.org, Apr 28 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ca83c0041ebaebdfb1594824099156c1edd2789b

commit ca83c0041ebaebdfb1594824099156c1edd2789b
Author: tbansal <tbansal@chromium.org>
Date: Thu Apr 28 20:56:28 2016

Move Network Quality Estimator files to //net/nqe

This restructures the Network Quality Estimator files to
live in //net/nqe, rather than in //net/base. Additionally,
it moves the socket-related files into //net/socket.

BUG= 601940 

Review-Url: https://codereview.chromium.org/1898603002
Cr-Commit-Position: refs/heads/master@{#390475}

[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/chrome/browser/android/net/external_estimate_provider_android.h
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/chrome/browser/android/net/external_estimate_provider_android_unittest.cc
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/chrome/browser/io_thread.cc
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/chrome/browser/profiles/profile_io_data.cc
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/components/cronet.gypi
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/components/cronet/android/BUILD.gn
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/components/cronet/android/cronet_url_request_context_adapter.cc
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/components/cronet/android/cronet_url_request_context_adapter.h
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/components/data_reduction_proxy/core/browser/data_reduction_proxy_config.cc
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/components/data_reduction_proxy/core/browser/data_reduction_proxy_config_unittest.cc
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/ios/chrome/browser/browser_state/chrome_browser_state_io_data.cc
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/ios/chrome/browser/ios_chrome_io_thread.mm
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/base/OWNERS
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/dns/address_sorter_posix_unittest.cc
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/dns/dns_session_unittest.cc
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/net.gypi
[add] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/nqe/OWNERS
[rename] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/nqe/external_estimate_provider.h
[rename] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/nqe/network_quality_estimator.cc
[rename] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/nqe/network_quality_estimator.h
[rename] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/nqe/network_quality_estimator_unittest.cc
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/quic/quic_chromium_client_session.h
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/quic/quic_chromium_client_session_test.cc
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/quic/quic_connection_logger.h
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/quic/quic_connection_logger_unittest.cc
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/quic/quic_http_stream_test.cc
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/quic/quic_network_transaction_unittest.cc
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/quic/quic_stream_factory.cc
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/socket/client_socket_factory.h
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/socket/client_socket_pool_base_unittest.cc
[rename] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/socket/socket_performance_watcher.h
[rename] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/socket/socket_performance_watcher_factory.h
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/socket/socket_test_util.h
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/socket/tcp_client_socket.cc
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/socket/tcp_client_socket_unittest.cc
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/socket/tcp_socket_posix.h
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/socket/tcp_socket_unittest.cc
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/socket/tcp_socket_win.h
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/socket/transport_client_socket_pool.cc
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/socket/transport_client_socket_pool_test_util.h
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/url_request/url_request_http_job.cc
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/url_request/url_request_job.cc
[modify] https://crrev.com/ca83c0041ebaebdfb1594824099156c1edd2789b/net/url_request/url_request_unittest.cc

Status: Fixed (was: Started)
Blocking: 604091
Components: Internals>Network>NetworkQuality

Sign in to add a comment