| Index: content/browser/web_contents/web_contents_android.cc | 
| diff --git a/content/browser/web_contents/web_contents_android.cc b/content/browser/web_contents/web_contents_android.cc | 
| index 6033d2c0e8b15235ef776b46e363513e9f8d109e..7de19d8924532e71e65dedae99f5ef94de2e4d36 100644 | 
| --- a/content/browser/web_contents/web_contents_android.cc | 
| +++ b/content/browser/web_contents/web_contents_android.cc | 
| @@ -6,20 +6,25 @@ | 
|  | 
| #include "base/android/jni_android.h" | 
| #include "base/android/jni_string.h" | 
| +#include "base/command_line.h" | 
| #include "base/logging.h" | 
| #include "content/browser/android/interstitial_page_delegate_android.h" | 
| #include "content/browser/frame_host/interstitial_page_impl.h" | 
| #include "content/browser/media/media_web_contents_observer.h" | 
| #include "content/browser/renderer_host/render_view_host_impl.h" | 
| +#include "content/browser/web_contents/web_contents_impl.h" | 
| #include "content/common/frame_messages.h" | 
| #include "content/common/input_messages.h" | 
| #include "content/common/view_messages.h" | 
| +#include "content/public/browser/browser_context.h" | 
| #include "content/public/browser/browser_thread.h" | 
| #include "content/public/browser/web_contents.h" | 
| +#include "content/public/common/content_switches.h" | 
| #include "jni/WebContentsImpl_jni.h" | 
|  | 
| using base::android::AttachCurrentThread; | 
| using base::android::ConvertJavaStringToUTF8; | 
| +using base::android::ConvertUTF8ToJavaString; | 
|  | 
| namespace content { | 
|  | 
| @@ -104,6 +109,55 @@ jint WebContentsAndroid::GetBackgroundColor(JNIEnv* env, jobject obj) { | 
| return rwhva->GetCachedBackgroundColor(); | 
| } | 
|  | 
| +ScopedJavaLocalRef<jstring> WebContentsAndroid::GetURL(JNIEnv* env, | 
| +                                                       jobject obj) const { | 
| +  return ConvertUTF8ToJavaString(env, web_contents_->GetURL().spec()); | 
| +} | 
| + | 
| +jboolean WebContentsAndroid::IsIncognito(JNIEnv* env, jobject obj) { | 
| +  return web_contents_->GetBrowserContext()->IsOffTheRecord(); | 
| +} | 
| + | 
| +void WebContentsAndroid::ResumeResponseDeferredAtStart(JNIEnv* env, | 
| +                                                       jobject obj) { | 
| +  static_cast<WebContentsImpl*>(web_contents_)->ResumeResponseDeferredAtStart(); | 
| +} | 
| + | 
| +void WebContentsAndroid::SetHasPendingNavigationTransitionForTesting( | 
| +    JNIEnv* env, | 
| +    jobject obj) { | 
| +  CommandLine::ForCurrentProcess()->AppendSwitch( | 
| +      switches::kEnableExperimentalWebPlatformFeatures); | 
| +  RenderFrameHost* frame = | 
| +      static_cast<WebContentsImpl*>(web_contents_)->GetMainFrame(); | 
| +  BrowserThread::PostTask( | 
| +      BrowserThread::IO, | 
| +      FROM_HERE, | 
| +      base::Bind(&TransitionRequestManager::AddPendingTransitionRequestData, | 
| +                 base::Unretained(TransitionRequestManager::GetInstance()), | 
| +                 frame->GetProcess()->GetID(), | 
| +                 frame->GetRoutingID(), | 
| +                 "*", | 
| +                 "", | 
| +                 "")); | 
| +} | 
| + | 
| +void WebContentsAndroid::SetupTransitionView(JNIEnv* env, | 
| +                                             jobject jobj, | 
| +                                             jstring markup) { | 
| +  web_contents_->GetMainFrame()->Send(new FrameMsg_SetupTransitionView( | 
| +      web_contents_->GetMainFrame()->GetRoutingID(), | 
| +      ConvertJavaStringToUTF8(env, markup))); | 
| +} | 
| + | 
| +void WebContentsAndroid::BeginExitTransition(JNIEnv* env, | 
| +                                             jobject jobj, | 
| +                                             jstring css_selector) { | 
| +  web_contents_->GetMainFrame()->Send(new FrameMsg_BeginExitTransition( | 
| +      web_contents_->GetMainFrame()->GetRoutingID(), | 
| +      ConvertJavaStringToUTF8(env, css_selector))); | 
| +} | 
| + | 
| void WebContentsAndroid::OnHide(JNIEnv* env, jobject obj) { | 
| web_contents_->WasHidden(); | 
| PauseVideo(); | 
| @@ -201,4 +255,56 @@ void WebContentsAndroid::SelectWordAroundCaret(JNIEnv* env, jobject obj) { | 
| host->SelectWordAroundCaret(); | 
| } | 
|  | 
| +bool WebContentsAndroid::WillHandleDeferAfterResponseStarted() { | 
| +  JNIEnv* env = AttachCurrentThread(); | 
| +  return Java_WebContentsImpl_willHandleDeferAfterResponseStarted(env, | 
| +                                                                  obj_.obj()); | 
| +} | 
| + | 
| +void WebContentsAndroid::DidDeferAfterResponseStarted( | 
| +    const TransitionLayerData& transition_data) { | 
| +  JNIEnv* env = AttachCurrentThread(); | 
| +  std::vector<GURL> entering_stylesheets; | 
| +  std::string transition_color; | 
| +  if (transition_data.response_headers) { | 
| +    TransitionRequestManager::ParseTransitionStylesheetsFromHeaders( | 
| +        transition_data.response_headers, | 
| +        entering_stylesheets, | 
| +        transition_data.request_url); | 
| + | 
| +    transition_data.response_headers->EnumerateHeader( | 
| +        NULL, "X-Transition-Entering-Color", &transition_color); | 
| +  } | 
| + | 
| +  ScopedJavaLocalRef<jstring> jstring_markup( | 
| +      ConvertUTF8ToJavaString(env, transition_data.markup)); | 
| + | 
| +  ScopedJavaLocalRef<jstring> jstring_css_selector( | 
| +      ConvertUTF8ToJavaString(env, transition_data.css_selector)); | 
| + | 
| +  ScopedJavaLocalRef<jstring> jstring_transition_color( | 
| +      ConvertUTF8ToJavaString(env, transition_color)); | 
| + | 
| +  Java_WebContentsImpl_didDeferAfterResponseStarted( | 
| +      env, | 
| +      obj_.obj(), | 
| +      jstring_markup.obj(), | 
| +      jstring_css_selector.obj(), | 
| +      jstring_transition_color.obj()); | 
| + | 
| +  std::vector<GURL>::const_iterator iter = entering_stylesheets.begin(); | 
| +  for (; iter != entering_stylesheets.end(); ++iter) { | 
| +    ScopedJavaLocalRef<jstring> jstring_url( | 
| +        ConvertUTF8ToJavaString(env, iter->spec())); | 
| +    Java_WebContentsImpl_addEnteringStylesheetToTransition( | 
| +        env, obj_.obj(), jstring_url.obj()); | 
| +  } | 
| +} | 
| + | 
| +void WebContentsAndroid::DidStartNavigationTransitionForFrame(int64 frame_id) { | 
| +  JNIEnv* env = AttachCurrentThread(); | 
| +  Java_WebContentsImpl_didStartNavigationTransitionForFrame( | 
| +      env, obj_.obj(), frame_id); | 
| +} | 
| + | 
| }  // namespace content | 
|  |