diff options
author | zhenw <zhenw@chromium.org> | 2014-10-31 09:33:06 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-10-31 16:33:33 +0000 |
commit | 5b846f579d3dd1a0f4d0b8c26ff274117bfba0bc (patch) | |
tree | aa4eaeec80dbadf439f30555a7e60d567d3426a3 /content/browser/transition_request_manager.h | |
parent | 61f4825a7c00dffc798912a9a1c4d32453a3fa9b (diff) | |
download | chromium_src-5b846f579d3dd1a0f4d0b8c26ff274117bfba0bc.zip chromium_src-5b846f579d3dd1a0f4d0b8c26ff274117bfba0bc.tar.gz chromium_src-5b846f579d3dd1a0f4d0b8c26ff274117bfba0bc.tar.bz2 |
Navigation transitions (web to native app): Pass data after starting provisional load (Chrome side)
Pass transitional elements' CSS selector, names and rects to TransitionPageHelper after starting provisional load. Those data are needed when overriding the URL navigation to jump to a native Android app.
The is the Chrome side of the CL. The Clank side is here: https://chrome-internal-review.googlesource.com/#/c/180668/
BUG=370696
Review URL: https://codereview.chromium.org/652953008
Cr-Commit-Position: refs/heads/master@{#302279}
Diffstat (limited to 'content/browser/transition_request_manager.h')
-rw-r--r-- | content/browser/transition_request_manager.h | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/content/browser/transition_request_manager.h b/content/browser/transition_request_manager.h index 3db4d87..65b5792 100644 --- a/content/browser/transition_request_manager.h +++ b/content/browser/transition_request_manager.h @@ -13,6 +13,7 @@ #include "base/basictypes.h" #include "base/memory/ref_counted.h" #include "content/common/content_export.h" +#include "content/public/common/transition_element.h" #include "ui/gfx/geometry/rect.h" #include "url/gurl.h" @@ -33,8 +34,7 @@ struct TransitionLayerData { std::string markup; std::string css_selector; - std::vector<std::string> names; - std::vector<gfx::Rect> rects; + std::vector<TransitionElement> elements; scoped_refptr<net::HttpResponseHeaders> response_headers; GURL request_url; }; @@ -57,10 +57,11 @@ class TransitionRequestManager { std::vector<GURL>& entering_stylesheets, const GURL& resolve_address); - // Returns whether the RenderFrameHost specified by the given IDs currently - // has any pending transition request data. If so, we will have to delay the - // response until the embedder resumes the request. - CONTENT_EXPORT bool HasPendingTransitionRequest( + // Get pending transition request data from RenderFrameHost specified by the + // given IDs and return true if the data exists. For web to web transition, we + // will have to delay the response until the embedder resumes the request if + // the data exists. + CONTENT_EXPORT bool GetPendingTransitionRequest( int render_process_id, int render_frame_id, const GURL& request_url, @@ -74,8 +75,7 @@ class TransitionRequestManager { const std::string& allowed_destination_host_pattern, const std::string& css_selector, const std::string& markup, - const std::vector<std::string>& names, - const std::vector<gfx::Rect>& rects); + const std::vector<TransitionElement>& elements); CONTENT_EXPORT void AddPendingTransitionRequestDataForTesting( int render_process_id, int render_frame_id); @@ -83,6 +83,10 @@ class TransitionRequestManager { CONTENT_EXPORT void ClearPendingTransitionRequestData(int render_process_id, int render_frame_id); + // The maximum number of elements is meant to avoid passing arbitrarily large + // amount of objects across the IPC boundary. + static const int kMaxNumOfElements = 1024; + private: class TransitionRequestData { public: @@ -91,8 +95,7 @@ class TransitionRequestManager { void AddEntry(const std::string& allowed_destination_host_pattern, const std::string& selector, const std::string& markup, - const std::vector<std::string>& names, - const std::vector<gfx::Rect>& rects); + const std::vector<TransitionElement>& elements); bool FindEntry(const GURL& request_url, TransitionLayerData* transition_data); @@ -104,14 +107,12 @@ class TransitionRequestManager { std::string allowed_destination_host_pattern; std::string css_selector; std::string markup; - std::vector<std::string> names; - std::vector<gfx::Rect> rects; + std::vector<TransitionElement> elements; AllowedEntry(const std::string& allowed_destination_host_pattern, const std::string& css_selector, const std::string& markup, - const std::vector<std::string>& names, - const std::vector<gfx::Rect>& rects); + const std::vector<TransitionElement>& elements); ~AllowedEntry(); }; std::vector<AllowedEntry> allowed_entries_; |