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); |
}; |