Index: net/docs/url_request.dot |
diff --git a/net/docs/url_request.dot b/net/docs/url_request.dot |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7c8621c9ecd47835000d26b150dd44893c083761 |
--- /dev/null |
+++ b/net/docs/url_request.dot |
@@ -0,0 +1,124 @@ |
+digraph URLRequestRoot { |
+ subgraph cluster_legend { |
+ label="Legend"; |
+ |
+ ## UML |
+ SubClass -> BaseClass [arrowhead="empty"]; |
+ SubClass -> Interface [arrowhead="empty", style=dashed]; |
+ Part -> Whole [arrowhead="diamond", label="ownership"]; |
+ Part -> Whole [arrowhead="odiamond", label="pointer"]; |
+ A -> B [arrowhead="none", headlabel="?..?", taillabel="?..?", |
+ label="association"]; |
+ Interface [label="Interface / ABC", style=dashed]; |
+ template_class [shape=diamond]; # Link will name parameter(s) |
+ |
+ |
+ Factory -> object [arrowhead=veevee]; |
+ SubClass [label="Derived Class"]; |
+ }; |
+ |
+ URLRequest; // Non-threadsafe, SupportsUserData |
+ URLRequestContext; |
+ URLRequestJob [style=dashed]; // RC, base::PowerObserver |
+ // Many subclasses |
+ HttpCache_Transaction [label="HttpCache::Transaction"]; |
+ HttpStreamFactoryImpl_Request [label="HttpStreamFactoryImpl::Request"]; |
+ HttpStreamFactoryImpl_Job [label="HttpStreamFactoryImpl::Job"]; |
+ HttpStreamRequest_Delegate [label="HttpStreamRequest::Delegate",style=dashed]; |
+ Filter; |
+ |
+ URLRequestContext -> URLRequest [arrowhead=veevee]; |
+ Filter -> URLRequestJob [arrowhead="diamond"]; |
+ Filter -> Filter [arrowhead="diamond", taillabel="0..1"]; |
+ URLRequestHttpJob -> Filter [arrowhead=veevee]; |
+ |
+ URLRequestJob -> URLRequest [arrowhead="diamond"]; |
+ |
+ URLRequestHttpJob -> URLRequestJob [arrowhead="empty"]; |
+ // Handles both http & https |
+ |
+ URLRequestJobOthers [label="...others..."]; |
+ URLRequestJobOthers -> URLRequestJob [arrowhead="empty"]; |
+ |
+ // Indirects to network delegate. |
+ |
+ HttpCache; |
+ HttpNetworkLayer; |
+ HttpTransactionFactory; |
+ HttpTransaction [style=dashed]; |
+ HttpTransaction_Others [label="...others..."]; |
+ HttpTransaction -> URLRequestHttpJob [arrowhead="diamond"] |
+ |
+ HttpNetworkLayer -> HttpTransactionFactory [arrowhead=empty, style=dashed]; |
+ |
+ HttpStreamFactoryImpl_Job -> HttpStreamFactoryImpl_Request [arrowhead="diamond",taillabel="1..*"]; |
+ |
+ ClientSocketHandle -> {HttpStreamFactoryImpl_Job,HttpBasicState} [arrowhead="diamond"]; |
+ ClientSocketPool [style=dashed]; |
+ ClientSocketPool -> ClientSocketHandle [arrowhead=odiamond]; |
+ |
+ {SSLClientSocketPool, TransportClientSocketPool, ClientSocketPool_Others} -> ClientSocketPool [style=dashed, arrowhead=empty]; |
+ ClientSocketPool_Others [label="...others..."]; |
+ |
+ ClientSocketPoolBase -> TransportClientSocketPool [arrowhead=diamond, label=TransportSocketParams]; |
+ ClientSocketPoolBase [label="ClientSocketPoolBase", shape=diamond]; |
+ |
+ ClientSocketPoolBaseHelper -> ConnectJob_Delegate [arrowhead=empty, style=dashed]; |
+ ConnectJob [style=dashed]; |
+ ConnectJob_Delegate [label="ConnectJob::Delegate",style=dashed]; |
+ |
+ StreamSocket [style=dashed]; |
+ StreamSocket -> Socket [arrowhead=empty, style=dashed]; |
+ TCPClientSocket -> StreamSocket [arrowhead=empty, style=dashed]; |
+ StreamSocket_others -> StreamSocket [arrowhead=empty, style=dashed]; |
+ StreamSocket_others [label="...others..."]; |
+ StreamSocket -> ClientSocketHandle [arrowhead=diamond]; |
+ ConnectJobFactory -> ClientSocketPoolBase [arrowhead=diamond]; |
+ subgraph { rank=same; ConnectJobFactory -> ConnectJob [arrowhead=veevee];} |
+ StreamSocket -> ConnectJob [arrowhead=diamond]; |
+ |
+ TransportConnectJob; |
+ TransportConnectJobHelper; |
+ SingleRequestHostResolver; |
+ |
+ SingleRequestHostResolver -> TransportConnectJobHelper -> |
+ TransportConnectJob [arrowhead=diamond]; |
+ |
+ {SSLConnectJob, TransportConnectJob, ConnectJob_Others} -> ConnectJob [style=dashed, arrowhead=empty]; |
+ ConnectJob_Others [label="...others..."]; |
+ |
+ ConnectJob_Delegate -> ConnectJob [arrowhead=odiamond]; |
+ ClientSocketPoolBaseHelper -> ClientSocketPoolBase [arrowhead=diamond]; |
+ |
+ subgraph { |
+ rank=same; |
+ URLRequestJobManager -> URLRequestJob [arrowhead=veevee]; |
+ } |
+ |
+ TransportClientSocketPool -> ClientSocketHandle [arrowhead=veevee]; |
+ |
+ HttpTransactionFactory [style=dashed]; |
+ HttpCache -> HttpTransactionFactory [arrowhead=empty, style=dashed]; |
+ HttpTransactionFactory -> HttpTransaction [arrowhead=veevee]; |
+ HttpNetworkLayer -> HttpNetworkTransaction [arrowhead=veevee]; |
+ HttpCache -> HttpCache_Transaction [arrowhead=veevee]; |
+ |
+ HttpStreamRequest_Delegate -> HttpStreamFactoryImpl_Request [arrowhead=odiamond]; |
+ subgraph { rank=same; HttpStreamFactoryImpl -> HttpStreamRequest -> HttpStream [arrowhead=veevee];} |
+ |
+ HttpTransaction_Others -> HttpTransaction [style=dashed, arrowhead="empty"]; |
+ HttpCache_Transaction -> HttpTransaction [style=dashed, arrowhead="empty"]; |
+ HttpTransaction -> HttpCache_Transaction [arrowhead=diamond]; |
+ HttpNetworkTransaction -> HttpTransaction [style=dashed, arrowhead="empty"]; |
+ |
+ HttpStreamRequest [style=dashed]; |
+ HttpStreamRequest -> HttpNetworkTransaction [arrowhead="diamond"]; |
+ HttpStream -> HttpNetworkTransaction [arrowhead="diamond"]; |
+ HttpNetworkTransaction -> HttpStreamRequest_Delegate [style=dashed, arrowhead="empty"]; |
+ HttpStreamFactoryImpl_Request -> HttpStreamRequest [style=dashed, arrowhead="empty"]; |
+ HttpStream [style=dashed]; |
+ HttpBasicState -> HttpBasicStream [arrowhead=diamond]; |
+ HttpBasicStream -> HttpStream [style=dashed, arrowhead="empty"]; |
+ QuicHttpStream -> HttpStream [style=dashed, arrowhead="empty"]; |
+ SpdyHttpStream -> HttpStream [style=dashed, arrowhead="empty"]; |
+} |