Refactor HttpStreamFactoryImpl and HttpStreamFactoryImpl::Job so that the main and alternate jobs do not know about each other, by adding a new JobController class to manage the cross-job interactions
By adding the JobController, we should be able to eliminate the cross-reference between jobs. In addition, HttpStreamFactoryImpl won't need to know jobs for a request, instead it should know the job_controller for a request. Request don't need to know jobs, but only the job_controller.
JobController, then as the center of management, will know everything, the request it's serving, jobs (both alternative/non-alternative) serving the request and the factoryimpl.
The lifetime of a job controller is the lifetime of the longer job.
Comment 1 by zhongyi@chromium.org
, Apr 22 2016