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 15using base::android::ScopedJavaLocalRef; 16 17ToolbarModelAndroid::ToolbarModelAndroid(JNIEnv* env, jobject jdelegate) 18 : toolbar_model_(new ToolbarModelImpl(this)), 19 weak_java_delegate_(env, jdelegate) { 20} 21 22ToolbarModelAndroid::~ToolbarModelAndroid() { 23} 24 25void ToolbarModelAndroid::Destroy(JNIEnv* env, jobject obj) { 26 delete this; 27} 28 29ScopedJavaLocalRef<jstring> ToolbarModelAndroid::GetText(JNIEnv* env, 30 jobject obj) { 31 return base::android::ConvertUTF16ToJavaString(env, 32 toolbar_model_->GetText()); 33} 34 35ScopedJavaLocalRef<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 48ScopedJavaLocalRef<jstring> ToolbarModelAndroid::GetCorpusChipText( 49 JNIEnv* env, 50 jobject obj) { 51 return base::android::ConvertUTF16ToJavaString( 52 env, 53 toolbar_model_->GetCorpusNameForMobile()); 54} 55 56content::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 66bool ToolbarModelAndroid::InTabbedBrowser() const { 67 return true; 68} 69 70// static 71bool ToolbarModelAndroid::RegisterToolbarModelAndroid(JNIEnv* env) { 72 return RegisterNativesImpl(env); 73} 74 75// static 76jlong 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