Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / android / chrome_web_contents_delegate_android.cc
index 7a539e1..6463083 100644 (file)
@@ -5,8 +5,8 @@
 #include "chrome/browser/android/chrome_web_contents_delegate_android.h"
 
 #include "base/android/jni_android.h"
+#include "base/android/jni_string.h"
 #include "base/command_line.h"
-#include "chrome/browser/android/tab_android.h"
 #include "chrome/browser/chrome_notification_types.h"
 #include "chrome/browser/file_select_helper.h"
 #include "chrome/browser/media/media_capture_devices_dispatcher.h"
@@ -20,6 +20,7 @@
 #include "chrome/browser/ui/browser_navigator.h"
 #include "chrome/browser/ui/find_bar/find_notification_details.h"
 #include "chrome/browser/ui/find_bar/find_tab_helper.h"
+#include "chrome/browser/ui/tab_helpers.h"
 #include "chrome/common/chrome_switches.h"
 #include "content/public/browser/notification_details.h"
 #include "content/public/browser/notification_service.h"
@@ -87,9 +88,10 @@ bool RegisterChromeWebContentsDelegateAndroid(JNIEnv* env) {
 }
 
 void ChromeWebContentsDelegateAndroid::LoadingStateChanged(
-    WebContents* source) {
+    WebContents* source, bool to_different_document) {
   bool has_stopped = source == NULL || !source->IsLoading();
-  WebContentsDelegateAndroid::LoadingStateChanged(source);
+  WebContentsDelegateAndroid::LoadingStateChanged(
+      source, to_different_document);
   LoadProgressChanged(source, has_stopped ? 1 : 0);
 }
 
@@ -224,6 +226,14 @@ void ChromeWebContentsDelegateAndroid::RequestMediaAccessPermission(
       web_contents, request, callback, NULL);
 }
 
+bool ChromeWebContentsDelegateAndroid::CheckMediaAccessPermission(
+    content::WebContents* web_contents,
+    const GURL& security_origin,
+    content::MediaStreamType type) {
+  return MediaCaptureDevicesDispatcher::GetInstance()
+      ->CheckMediaAccessPermission(web_contents, security_origin, type);
+}
+
 bool ChromeWebContentsDelegateAndroid::RequestPpapiBrokerPermission(
     WebContents* web_contents,
     const GURL& url,
@@ -305,7 +315,7 @@ void ChromeWebContentsDelegateAndroid::AddNewContents(
   // Can't create a new contents for the current tab - invalid case.
   DCHECK_NE(disposition, CURRENT_TAB);
 
-  TabAndroid::InitTabHelpers(new_contents);
+  TabHelpers::AttachTabHelpers(new_contents);
 
   JNIEnv* env = AttachCurrentThread();
   ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
@@ -321,9 +331,26 @@ void ChromeWebContentsDelegateAndroid::AddNewContents(
         user_gesture);
   }
 
+  if (was_blocked)
+    *was_blocked = !handled;
   if (!handled)
     delete new_contents;
 }
 
+void ChromeWebContentsDelegateAndroid::WebContentsCreated(
+    content::WebContents* source_contents, int opener_render_frame_id,
+    const base::string16& frame_name, const GURL& target_url,
+    content::WebContents* new_contents) {
+  JNIEnv* env = AttachCurrentThread();
+  ScopedJavaLocalRef<jobject> obj = GetJavaDelegate(env);
+  if (obj.is_null())
+    return;
+  Java_ChromeWebContentsDelegateAndroid_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));
+}
+
 }  // namespace android
 }  // namespace chrome