1 // Copyright 2014 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/ui/android/toolbar/toolbar_model_android.h" 6 7 #include "base/android/jni_string.h" 8 #include "chrome/browser/profiles/profile.h" 9 #include "chrome/browser/search/search.h" 10 #include "chrome/browser/search_engines/ui_thread_search_terms_data.h" 11 #include "chrome/browser/ui/toolbar/toolbar_model_impl.h" 12 #include "content/public/browser/web_contents.h" 13 #include "jni/ToolbarModel_jni.h" 14 15 using base::android::ScopedJavaLocalRef; 16 17 ToolbarModelAndroid::ToolbarModelAndroid(JNIEnv* env, jobject jdelegate) 18 : toolbar_model_(new ToolbarModelImpl(this)), 19 weak_java_delegate_(env, jdelegate) { 20 } 21 22 ToolbarModelAndroid::~ToolbarModelAndroid() { 23 } 24 25 void ToolbarModelAndroid::Destroy(JNIEnv* env, jobject obj) { 26 delete this; 27 } 28 29 ScopedJavaLocalRef<jstring> ToolbarModelAndroid::GetText(JNIEnv* env, 30 jobject obj) { 31 return base::android::ConvertUTF16ToJavaString(env, 32 toolbar_model_->GetText()); 33 } 34 35 ScopedJavaLocalRef<jstring> ToolbarModelAndroid::GetQueryExtractionParam( 36 JNIEnv* env, 37 jobject obj) { 38 content::WebContents* web_contents = GetActiveWebContents(); 39 if (!web_contents) 40 return ScopedJavaLocalRef<jstring>(); 41 Profile* profile = 42 Profile::FromBrowserContext(web_contents->GetBrowserContext()); 43 UIThreadSearchTermsData search_terms_data(profile); 44 return base::android::ConvertUTF8ToJavaString( 45 env, chrome::InstantExtendedEnabledParam(true)); 46 } 47 48 ScopedJavaLocalRef<jstring> ToolbarModelAndroid::GetCorpusChipText( 49 JNIEnv* env, 50 jobject obj) { 51 return base::android::ConvertUTF16ToJavaString( 52 env, 53 toolbar_model_->GetCorpusNameForMobile()); 54 } 55 56 content::WebContents* ToolbarModelAndroid::GetActiveWebContents() const { 57 JNIEnv* env = base::android::AttachCurrentThread(); 58 ScopedJavaLocalRef<jobject> jdelegate = weak_java_delegate_.get(env); 59 if (!jdelegate.obj()) 60 return NULL; 61 ScopedJavaLocalRef<jobject> jweb_contents = 62 Java_ToolbarModelDelegate_getActiveWebContents(env, jdelegate.obj()); 63 return content::WebContents::FromJavaWebContents(jweb_contents.obj()); 64 } 65 66 bool ToolbarModelAndroid::InTabbedBrowser() const { 67 return true; 68 } 69 70 // static 71 bool ToolbarModelAndroid::RegisterToolbarModelAndroid(JNIEnv* env) { 72 return RegisterNativesImpl(env); 73 } 74 75 // static 76 jlong Init(JNIEnv* env, jobject obj, jobject delegate) { 77 ToolbarModelAndroid* toolbar_model = new ToolbarModelAndroid(env, delegate); 78 return reinterpret_cast<intptr_t>(toolbar_model); 79 } 80