Home | History | Annotate | Download | only in android
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/browser/android/content_view_util.h"
      6 
      7 #include "base/android/jni_android.h"
      8 #include "chrome/browser/browser_process.h"
      9 #include "chrome/browser/profiles/profile.h"
     10 #include "chrome/browser/profiles/profile_manager.h"
     11 #include "content/public/browser/android/content_view_core.h"
     12 #include "content/public/browser/web_contents.h"
     13 #include "jni/ContentViewUtil_jni.h"
     14 
     15 static jlong CreateNativeWebContents(
     16     JNIEnv* env, jclass clazz, jboolean incognito, jboolean initially_hidden) {
     17   Profile* profile = g_browser_process->profile_manager()->GetLastUsedProfile();
     18   if (incognito)
     19     profile = profile->GetOffTheRecordProfile();
     20 
     21   content::WebContents::CreateParams params(profile);
     22   params.initially_hidden = static_cast<bool>(initially_hidden);
     23   return reinterpret_cast<intptr_t>(content::WebContents::Create(params));
     24 }
     25 
     26 static jlong CreateNativeWebContentsWithSharedSiteInstance(
     27     JNIEnv* env,
     28     jclass clazz,
     29     jobject jcontent_view_core) {
     30   content::ContentViewCore* content_view_core =
     31       content::ContentViewCore::GetNativeContentViewCore(env,
     32                                                          jcontent_view_core);
     33   CHECK(content_view_core);
     34 
     35   Profile* profile = Profile::FromBrowserContext(
     36       content_view_core->GetWebContents()->GetBrowserContext());
     37 
     38   content::WebContents::CreateParams params(
     39       profile, content_view_core->GetWebContents()->GetSiteInstance());
     40 
     41   return reinterpret_cast<intptr_t>(content::WebContents::Create(params));
     42 }
     43 
     44 static void DestroyNativeWebContents(
     45     JNIEnv* env, jclass clazz, jlong web_contents_ptr) {
     46   content::WebContents* web_contents =
     47       reinterpret_cast<content::WebContents*>(web_contents_ptr);
     48   delete web_contents;
     49 }
     50 
     51 bool RegisterContentViewUtil(JNIEnv* env) {
     52   return RegisterNativesImpl(env);
     53 }
     54