Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / components / web_contents_delegate_android / web_contents_delegate_android.cc
index a4f8213..629cd06 100644 (file)
 #include "components/web_contents_delegate_android/validation_message_bubble_android.h"
 #include "content/public/browser/android/content_view_core.h"
 #include "content/public/browser/color_chooser.h"
+#include "content/public/browser/global_request_id.h"
 #include "content/public/browser/invalidate_type.h"
 #include "content/public/browser/native_web_keyboard_event.h"
+#include "content/public/browser/navigation_controller.h"
 #include "content/public/browser/page_navigator.h"
 #include "content/public/browser/render_widget_host_view.h"
 #include "content/public/browser/web_contents.h"
-#include "content/public/common/page_transition_types.h"
 #include "content/public/common/referrer.h"
 #include "jni/WebContentsDelegateAndroid_jni.h"
 #include "ui/base/window_open_disposition.h"
@@ -67,8 +68,6 @@ WebContents* WebContentsDelegateAndroid::OpenURLFromTab(
     const content::OpenURLParams& params) {
   const GURL& url = params.url;
   WindowOpenDisposition disposition = params.disposition;
-  content::PageTransition transition(
-      PageTransitionFromInt(params.transition));
 
   if (!source || (disposition != CURRENT_TAB &&
                   disposition != NEW_FOREGROUND_TAB &&
@@ -105,17 +104,42 @@ WebContents* WebContentsDelegateAndroid::OpenURLFromTab(
                                                java_url.obj(),
                                                extra_headers.obj(),
                                                post_data.obj(),
-                                               disposition);
+                                               disposition,
+                                               params.is_renderer_initiated);
     return NULL;
   }
 
-  source->GetController().LoadURL(url, params.referrer, transition,
-                                  std::string());
+  // content::OpenURLParams -> content::NavigationController::LoadURLParams
+  content::NavigationController::LoadURLParams load_params(url);
+  load_params.referrer = params.referrer;
+  load_params.frame_tree_node_id = params.frame_tree_node_id;
+  load_params.redirect_chain = params.redirect_chain;
+  load_params.transition_type = params.transition;
+  load_params.extra_headers = params.extra_headers;
+  load_params.should_replace_current_entry =
+      params.should_replace_current_entry;
+  load_params.is_renderer_initiated = params.is_renderer_initiated;
+
+  if (params.transferred_global_request_id != content::GlobalRequestID()) {
+    load_params.transferred_global_request_id =
+        params.transferred_global_request_id;
+  }
+
+  // Only allows the browser-initiated navigation to use POST.
+  if (params.uses_post && !params.is_renderer_initiated) {
+    load_params.load_type =
+        content::NavigationController::LOAD_TYPE_BROWSER_INITIATED_HTTP_POST;
+    load_params.browser_initiated_post_data =
+        params.browser_initiated_post_data;
+  }
+
+  source->GetController().LoadURLWithParams(load_params);
+
   return source;
 }
 
 void WebContentsDelegateAndroid::NavigationStateChanged(
-    const WebContents* source, unsigned changed_flags) {
+    const WebContents* source, content::InvalidateTypes changed_flags) {
   JNIEnv* env = AttachCurrentThread();
   ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
   if (obj.is_null())
@@ -126,6 +150,17 @@ void WebContentsDelegateAndroid::NavigationStateChanged(
       changed_flags);
 }
 
+void WebContentsDelegateAndroid::VisibleSSLStateChanged(
+    const WebContents* source) {
+  JNIEnv* env = AttachCurrentThread();
+  ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
+  if (obj.is_null())
+    return;
+  Java_WebContentsDelegateAndroid_visibleSSLStateChanged(
+      env,
+      obj.obj());
+}
+
 void WebContentsDelegateAndroid::ActivateContents(WebContents* contents) {
   JNIEnv* env = AttachCurrentThread();
   ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
@@ -181,6 +216,58 @@ void WebContentsDelegateAndroid::RendererResponsive(WebContents* source) {
   Java_WebContentsDelegateAndroid_rendererResponsive(env, obj.obj());
 }
 
+void WebContentsDelegateAndroid::DidNavigateToPendingEntry(
+    WebContents* source) {
+  JNIEnv* env = AttachCurrentThread();
+  ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
+  if (obj.is_null())
+    return;
+  Java_WebContentsDelegateAndroid_didNavigateToPendingEntry(env, obj.obj());
+}
+
+bool WebContentsDelegateAndroid::ShouldCreateWebContents(
+    WebContents* web_contents,
+    int route_id,
+    WindowContainerType window_container_type,
+    const base::string16& frame_name,
+    const GURL& target_url,
+    const std::string& partition_id,
+    content::SessionStorageNamespace* session_storage_namespace) {
+  JNIEnv* env = AttachCurrentThread();
+  ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
+  if (obj.is_null())
+    return true;
+  ScopedJavaLocalRef<jstring> java_url =
+      ConvertUTF8ToJavaString(env, target_url.spec());
+  return Java_WebContentsDelegateAndroid_shouldCreateWebContents(env, obj.obj(),
+      java_url.obj());
+}
+
+bool WebContentsDelegateAndroid::OnGoToEntryOffset(int offset) {
+  JNIEnv* env = AttachCurrentThread();
+  ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
+  if (obj.is_null())
+    return true;
+  return Java_WebContentsDelegateAndroid_onGoToEntryOffset(env, obj.obj(),
+      offset);
+}
+
+void WebContentsDelegateAndroid::WebContentsCreated(
+    WebContents* source_contents, int opener_render_frame_id,
+    const base::string16& frame_name, const GURL& target_url,
+    WebContents* new_contents) {
+  JNIEnv* env = AttachCurrentThread();
+  ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
+  if (obj.is_null())
+    return;
+  Java_WebContentsDelegateAndroid_webContentsCreated(env, obj.obj(),
+      reinterpret_cast<intptr_t>(source_contents),
+      opener_render_frame_id,
+      base::android::ConvertUTF16ToJavaString(env, frame_name).Release(),
+      base::android::ConvertUTF8ToJavaString(env, target_url.spec()).Release(),
+      reinterpret_cast<intptr_t>(new_contents));
+}
+
 void WebContentsDelegateAndroid::CloseContents(WebContents* source) {
   JNIEnv* env = AttachCurrentThread();
   ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
@@ -240,7 +327,6 @@ bool WebContentsDelegateAndroid::AddMessageToConsole(
 // navigation. So we only handle the first case and pass the source TabContents'
 // url to Java to update the UI.
 void WebContentsDelegateAndroid::UpdateTargetURL(WebContents* source,
-                                                 int32 page_id,
                                                  const GURL& url) {
   if (!url.is_empty())
     return;
@@ -284,12 +370,7 @@ void WebContentsDelegateAndroid::ShowRepostFormWarningDialog(
   ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
   if (obj.is_null())
     return;
-  ScopedJavaLocalRef<jobject> content_view_core =
-      content::ContentViewCore::FromWebContents(source)->GetJavaObject();
-  if (content_view_core.is_null())
-    return;
-  Java_WebContentsDelegateAndroid_showRepostFormWarningDialog(env, obj.obj(),
-      content_view_core.obj());
+  Java_WebContentsDelegateAndroid_showRepostFormWarningDialog(env, obj.obj());
 }
 
 void WebContentsDelegateAndroid::ToggleFullscreenModeForTab(