Chromium Code Reviews| Index: headless/public/util/deterministic_dispatcher.h |
| diff --git a/headless/public/util/deterministic_dispatcher.h b/headless/public/util/deterministic_dispatcher.h |
| index 0fea383b9cc42e747b8daa65ad1ca3bf0193c649..8e36787775b7fc574e06e79dec5090cd5636c983 100644 |
| --- a/headless/public/util/deterministic_dispatcher.h |
| +++ b/headless/public/util/deterministic_dispatcher.h |
| @@ -36,17 +36,34 @@ class DeterministicDispatcher : public URLRequestDispatcher { |
| void JobFailed(ManagedDispatchURLRequestJob* job, net::Error error) override; |
| void DataReady(ManagedDispatchURLRequestJob* job) override; |
| void JobDeleted(ManagedDispatchURLRequestJob* job) override; |
| + void NavigationRequested( |
| + std::unique_ptr<NavigationRequest> navigation_request) override; |
| private: |
| + void MaybeDispatchNavigationJobLocked(); |
| void MaybeDispatchJobLocked(); |
| void MaybeDispatchJobOnIOThreadTask(); |
| + void NavigationDoneTask(); |
| scoped_refptr<base::SingleThreadTaskRunner> io_thread_task_runner_; |
| // Protects all members below. |
| base::Lock lock_; |
| - std::deque<ManagedDispatchURLRequestJob*> pending_requests_; |
| + // TODO(alexclarke): Use std::varient when c++17 is allowed in chromium. |
|
altimin
2017/02/09 12:01:52
nit: std::variant?
alex clarke (OOO till 29th)
2017/02/09 12:44:43
Done.
|
| + struct Request { |
| + Request(); |
| + explicit Request(ManagedDispatchURLRequestJob* url_request); |
| + explicit Request(std::unique_ptr<NavigationRequest> navigation_request); |
| + ~Request(); |
| + |
| + Request& operator=(Request&& other); |
| + |
| + ManagedDispatchURLRequestJob* url_request; // NOT OWNED |
| + std::unique_ptr<NavigationRequest> navigation_request; |
| + }; |
| + |
| + std::deque<Request> pending_requests_; |
| using StatusMap = std::map<ManagedDispatchURLRequestJob*, net::Error>; |
| StatusMap ready_status_map_; |
| @@ -54,6 +71,7 @@ class DeterministicDispatcher : public URLRequestDispatcher { |
| // Whether or not a MaybeDispatchJobOnIoThreadTask has been posted on the |
| // |io_thread_task_runner_| |
| bool dispatch_pending_; |
| + bool navigation_in_progress_; |
| base::WeakPtrFactory<DeterministicDispatcher> weak_ptr_factory_; |