Chromium Code Reviews| Index: content/browser/transition_request_manager.h |
| diff --git a/content/browser/transition_request_manager.h b/content/browser/transition_request_manager.h |
| index 48be189ca50e0dfb7016dd909116bba22187f122..0fb404c40d49b599d1062b84d58730fc1302258f 100644 |
| --- a/content/browser/transition_request_manager.h |
| +++ b/content/browser/transition_request_manager.h |
| @@ -5,7 +5,8 @@ |
| #ifndef CONTENT_BROWSER_TRANSITION_REQUEST_MANAGER_H_ |
| #define CONTENT_BROWSER_TRANSITION_REQUEST_MANAGER_H_ |
| -#include <set> |
| +#include <map> |
| +#include <string> |
| #include <utility> |
| #include <vector> |
| @@ -20,9 +21,20 @@ struct DefaultSingletonTraits; |
| namespace net { |
| class HttpResponseHeaders; |
| } |
| +class GURL; |
| namespace content { |
| +struct TransitionLayerData { |
|
nasko
2014/08/04 13:36:48
Adding a comment that this structure is passed bet
oystein (OOO til 10th of July)
2014/08/05 19:02:49
Done.
|
| + TransitionLayerData(); |
| + ~TransitionLayerData(); |
| + |
| + std::string markup; |
| + std::string css_selector; |
| + scoped_refptr<net::HttpResponseHeaders> response_headers; |
| + GURL request_url; |
| +}; |
| + |
| // TransitionRequestManager is used to handle bookkeeping for transition |
| // requests and responses. |
| // |
| @@ -42,28 +54,63 @@ class TransitionRequestManager { |
| const GURL& resolve_address); |
| // Returns whether the RenderFrameHost specified by the given IDs currently |
| - // has a pending transition request. If so, we will have to delay the |
| + // has any pending transition request data. If so, we will have to delay the |
| // response until the embedder resumes the request. |
| - bool HasPendingTransitionRequest(int process_id, int render_frame_id); |
| - |
| - // Sets whether the RenderFrameHost specified by the given IDs currently has a |
| - // pending transition request. |
| - CONTENT_EXPORT void SetHasPendingTransitionRequest(int process_id, |
| - int render_frame_id, |
| - bool has_pending); |
| + bool HasPendingTransitionRequest(int renderer_id, |
|
nasko
2014/08/04 13:36:48
nit: why drop the "process" part of the variable n
oystein (OOO til 10th of July)
2014/08/05 19:02:49
Done; unintentional change actually due to some me
|
| + int render_frame_id, |
| + const GURL& request_url, |
| + TransitionLayerData* transition_data); |
| + |
| + // Adds pending request data for a transition navigation for the |
| + // RenderFrameHost specified by the given IDs. |
| + CONTENT_EXPORT void AddPendingTransitionRequestData( |
| + int renderer_id, |
| + int render_view_id, |
|
nasko
2014/08/04 13:36:48
Isn't this render_frame_id?
oystein (OOO til 10th of July)
2014/08/05 19:02:49
Done; same as above.
|
| + const std::string& origin, |
| + const std::string& css_selector, |
| + const std::string& markup); |
| + |
| + void ClearPendingTransitionRequestData(int renderer_id, int render_frame_id); |
| private: |
| + class TransitionRequestData { |
| + public: |
| + TransitionRequestData(); |
| + ~TransitionRequestData(); |
| + void AddEntry(const std::string& origin, |
| + const std::string& selector, |
| + const std::string& markup); |
| + bool FindEntry(const GURL& request_url, |
| + TransitionLayerData* transition_data); |
| + |
| + private: |
| + struct AllowedEntry { |
| + std::string origin; |
| + std::string css_selector; |
| + std::string markup; |
| + |
| + AllowedEntry(const std::string& origin, |
| + const std::string& css_selector, |
| + const std::string& markup) : |
| + origin(origin), |
| + css_selector(css_selector), |
| + markup(markup) {} |
| + }; |
| + std::vector<AllowedEntry> allowed_entries_; |
| + }; |
| + |
| friend struct DefaultSingletonTraits<TransitionRequestManager>; |
| - typedef std::set<std::pair<int, int> > RenderFrameSet; |
| + typedef std::map<std::pair<int, int>, TransitionRequestData> |
| + RenderFrameRequestDataMap; |
| TransitionRequestManager(); |
| ~TransitionRequestManager(); |
| - // Set of (render_process_host_id, render_frame_id) pairs of all |
| - // RenderFrameHosts that have pending transition requests. Used to pass |
| - // information to the CrossSiteResourceHandler without doing a round-trip |
| - // between IO->UI->IO threads. |
| - RenderFrameSet pending_transition_frames_; |
| + // Map of (render_process_host_id, render_frame_id) pairs of all |
| + // RenderFrameHosts that have pending cross-site requests and their data. |
| + // Used to pass information to the CrossSiteResourceHandler without doing a |
| + // round-trip between IO->UI->IO threads. |
| + RenderFrameRequestDataMap pending_transition_frames_; |
| DISALLOW_COPY_AND_ASSIGN(TransitionRequestManager); |
| }; |