Commit f0b9097f authored by zhenw@chromium.org's avatar zhenw@chromium.org

Navigation transitions (web to native app): Get names and rects of transition elements (Step 4)

Web to native app navigation transition uses Activity Transitions APIs in Android L. It requires the names and rects of transition elements. This CL gets the names and rects and pass them to TransitionRequestManager.

Design doc: https://docs.google.com/a/chromium.org/document/d/17jg1RRL3RI969cLwbKBIcoGDsPwqaEdBxafGNYGwiY4/edit#
Demo video: https://drive.google.com/a/google.com/file/d/0B3hetueIc91Gd01DU25uT2hWU2M/view?usp=sharing
Activity Transitions in Android L: https://developer.android.com/preview/material/animations.html#transitions

================

Originally this was a 3-way patch since it involves API change in WebFrameClient.h. After the chrome side impl was committed (step 1), we found that it is better to pass struct instead of long list of params. So this turns out to be a 5-way patch.

Here are the 5 steps:
1. Chrome side - save the data (https://codereview.chromium.org/652283002/).
2. Blink side - getting the data and introduce struct WebTransitionElementData, but still using long list of params (https://codereview.chromium.org/654953002/).
3. Chrome side - implement the API with WebTransitionElementData (https://codereview.chromium.org/679813003/).
4. Blink side - remove old APIs that use long list of params and start to use new API with WebTransitionElementData (this CL).
5. Chrome side - remove redundent implmentations of the old APIs (https://codereview.chromium.org/728653003/).

BUG=370696

Review URL: https://codereview.chromium.org/721973002

git-svn-id: svn://svn.chromium.org/blink/trunk@185334 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 0009cc6f
......@@ -527,19 +527,13 @@ void FrameLoaderClientImpl::dispatchAddNavigationTransitionData(const Document::
if (!m_webFrame->client())
return;
// FIXME: change to use WebTransitionElementData after the chrome side is done.
Vector<String> ids;
Vector<IntRect> rects;
WebVector<WebTransitionElement> webElements(data.elements.size());
for (size_t i = 0; i < data.elements.size(); ++i) {
ids.append(data.elements[i].id);
rects.append(data.elements[i].rect);
webElements[i].id = data.elements[i].id;
webElements[i].rect = data.elements[i].rect;
}
m_webFrame->client()->addNavigationTransitionData(
WebString(data.scope),
WebString(data.selector),
WebString(data.markup),
WebVector<WebString>(ids),
WebVector<WebRect>(rects));
WebTransitionElementData webData(data.scope, data.selector, data.markup, webElements);
m_webFrame->client()->addNavigationTransitionData(webData);
}
void FrameLoaderClientImpl::dispatchWillRequestResource(FetchRequest* request)
......
......@@ -6864,12 +6864,7 @@ public:
, m_provisionalLoadCount(0)
, m_wasLastProvisionalLoadATransition(false) { }
virtual void addNavigationTransitionData(
const WebString& allowedDestinationOrigin,
const WebString& selector,
const WebString& markup,
const WebVector<WebString>& names,
const WebVector<WebRect>& rects) override
virtual void addNavigationTransitionData(const WebTransitionElementData& data) override
{
m_navigationalDataReceivedCount++;
}
......
......@@ -319,11 +319,6 @@ public:
// Provides serialized markup of transition elements for use in the following navigation.
virtual void addNavigationTransitionData(const WebTransitionElementData&) { }
// FIXME: remove the following two addNavigationTransitionData() functions after the chrome side is done.
virtual void addNavigationTransitionData(const WebString& allowedDestinationOrigin, const WebString& selector, const WebString& markup) { }
virtual void addNavigationTransitionData(const WebString& allowedDestinationOrigin, const WebString& selector, const WebString& markup, const WebVector<WebString>& ids, const WebVector<WebRect>& rects) { }
// Web Notifications ---------------------------------------------------
// Requests permission to display platform notifications on the origin of this frame.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment