Index: chrome/browser/android/contextualsearch/contextual_search_tab_helper.cc |
diff --git a/chrome/browser/android/contextualsearch/contextual_search_tab_helper.cc b/chrome/browser/android/contextualsearch/contextual_search_tab_helper.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6e635c5a92cfc6a43e25090bdc3070c930ea38c1 |
--- /dev/null |
+++ b/chrome/browser/android/contextualsearch/contextual_search_tab_helper.cc |
@@ -0,0 +1,53 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/browser/android/contextualsearch/contextual_search_tab_helper.h" |
+ |
+#include "base/android/jni_android.h" |
+#include "base/android/jni_string.h" |
+#include "base/prefs/pref_change_registrar.h" |
+#include "chrome/browser/profiles/profile.h" |
+#include "chrome/browser/profiles/profile_android.h" |
+#include "chrome/common/pref_names.h" |
+#include "jni/ContextualSearchTabHelper_jni.h" |
+ |
+ |
+ContextualSearchTabHelper::ContextualSearchTabHelper(JNIEnv* env, |
+ jobject obj, |
+ Profile* profile) |
+ : weak_java_ref_(env, obj), |
+ pref_change_registrar_(new PrefChangeRegistrar()), |
+ weak_factory_(this) { |
+ pref_change_registrar_->Init(profile->GetPrefs()); |
+ pref_change_registrar_->Add( |
+ prefs::kContextualSearchEnabled, |
+ base::Bind(&ContextualSearchTabHelper::OnContextualSearchPrefChanged, |
+ weak_factory_.GetWeakPtr())); |
+} |
+ |
+ContextualSearchTabHelper::~ContextualSearchTabHelper() { |
+ pref_change_registrar_->RemoveAll(); |
+} |
+ |
+void ContextualSearchTabHelper::OnContextualSearchPrefChanged() { |
+ JNIEnv* env = base::android::AttachCurrentThread(); |
+ ScopedJavaLocalRef<jobject> jobj = weak_java_ref_.get(env); |
+ Java_ContextualSearchTabHelper_onContextualSearchPrefChanged(env, jobj.obj()); |
+} |
+ |
+void ContextualSearchTabHelper::Destroy(JNIEnv* env, jobject obj) { |
+ delete this; |
+} |
+ |
+static jlong Init(JNIEnv* env, jobject obj, jobject java_profile) { |
+ Profile* profile = ProfileAndroid::FromProfileAndroid(java_profile); |
+ CHECK(profile); |
+ ContextualSearchTabHelper* tab = new ContextualSearchTabHelper( |
+ env, obj, profile); |
+ return reinterpret_cast<intptr_t>(tab); |
+} |
+ |
+bool RegisterContextualSearchTabHelper(JNIEnv* env) { |
+ return RegisterNativesImpl(env); |
+} |