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

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 (this CL).
4. Blink side - remove old APIs that use long list of params and start to use new API with WebTransitionElementData (https://codereview.chromium.org/721973002/).
5. Chrome side - remove redundent implmentations of the old APIs.

BUG=370696

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

Cr-Commit-Position: refs/heads/master@{#303939}
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
index 593fa80..ac59f3b 100644
--- a/content/renderer/render_frame_impl.h
+++ b/content/renderer/render_frame_impl.h
@@ -28,6 +28,7 @@
 #include "third_party/WebKit/public/web/WebDataSource.h"
 #include "third_party/WebKit/public/web/WebFrameClient.h"
 #include "third_party/WebKit/public/web/WebHistoryCommitType.h"
+#include "third_party/WebKit/public/web/WebTransitionElementData.h"
 #include "ui/gfx/range/range.h"
 
 #if defined(OS_ANDROID)
@@ -51,6 +52,7 @@
 struct WebCompositionUnderline;
 struct WebContextMenuData;
 struct WebCursorInfo;
+struct WebTransitionElementData;
 }
 
 namespace gfx {
@@ -380,15 +382,13 @@
                                      blink::WebHistoryCommitType commit_type);
   virtual void didUpdateCurrentHistoryItem(blink::WebLocalFrame* frame);
   virtual void addNavigationTransitionData(
-        const blink::WebString& allowedDestinationOrigin,
-        const blink::WebString& selector,
-        const blink::WebString& markup);
-  virtual void addNavigationTransitionData(
       const blink::WebString& allowedDestinationOrigin,
       const blink::WebString& selector,
       const blink::WebString& markup,
-      const blink::WebVector<blink::WebString>& web_names,
+      const blink::WebVector<blink::WebString>& web_ids,
       const blink::WebVector<blink::WebRect>& web_rects);
+  virtual void addNavigationTransitionData(
+      const blink::WebTransitionElementData& data);
   virtual void didChangeThemeColor();
   virtual void requestNotificationPermission(
       const blink::WebSecurityOrigin& origin,