summaryrefslogtreecommitdiffstats
path: root/content/browser/transition_request_manager.h
diff options
context:
space:
mode:
authorzhenw <zhenw@chromium.org>2014-10-31 09:33:06 -0700
committerCommit bot <commit-bot@chromium.org>2014-10-31 16:33:33 +0000
commit5b846f579d3dd1a0f4d0b8c26ff274117bfba0bc (patch)
treeaa4eaeec80dbadf439f30555a7e60d567d3426a3 /content/browser/transition_request_manager.h
parent61f4825a7c00dffc798912a9a1c4d32453a3fa9b (diff)
downloadchromium_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.h29
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_;