Index: chrome/browser/android/new_tab_page_prefs.cc |
diff --git a/chrome/browser/android/new_tab_page_prefs.cc b/chrome/browser/android/new_tab_page_prefs.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..be2896117980a20d54c703747f447b8088282458 |
--- /dev/null |
+++ b/chrome/browser/android/new_tab_page_prefs.cc |
@@ -0,0 +1,115 @@ |
+// Copyright 2013 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/new_tab_page_prefs.h" |
+ |
+#include <jni.h> |
+ |
+#include "base/android/jni_string.h" |
+#include "base/prefs/pref_service.h" |
+#include "base/prefs/scoped_user_pref_update.h" |
+#include "chrome/browser/profiles/profile_android.h" |
+#include "chrome/common/pref_names.h" |
+#include "components/user_prefs/pref_registry_syncable.h" |
+#include "jni/NewTabPagePrefs_jni.h" |
+ |
+using base::android::ConvertJavaStringToUTF8; |
+ |
+static jint Init(JNIEnv* env, jclass clazz, jobject profile) { |
+ NewTabPagePrefs* new_tab_page_prefs = |
+ new NewTabPagePrefs(ProfileAndroid::FromProfileAndroid(profile)); |
+ return reinterpret_cast<jint>(new_tab_page_prefs); |
+} |
+ |
+NewTabPagePrefs::NewTabPagePrefs(Profile* profile) |
+ : profile_(profile) { |
+} |
+ |
+void NewTabPagePrefs::Destroy(JNIEnv* env, jobject obj) { |
+ delete this; |
+} |
+ |
+NewTabPagePrefs::~NewTabPagePrefs() { |
+} |
+ |
+jboolean NewTabPagePrefs::GetSnapshotDocumentCollapsed(JNIEnv* env, |
+ jobject obj) { |
+ return profile_->GetPrefs()->GetBoolean(prefs::kNtpCollapsedSnapshotDocument); |
+} |
+ |
+void NewTabPagePrefs::SetSnapshotDocumentCollapsed(JNIEnv* env, |
+ jobject obj, |
+ jboolean is_collapsed) { |
+ PrefService* prefs = profile_->GetPrefs(); |
+ prefs->SetBoolean(prefs::kNtpCollapsedSnapshotDocument, is_collapsed); |
+} |
+ |
+jboolean NewTabPagePrefs::GetRecentlyClosedTabsCollapsed(JNIEnv* env, |
+ jobject obj) { |
+ return profile_->GetPrefs()->GetBoolean( |
+ prefs::kNtpCollapsedRecentlyClosedTabs); |
+} |
+ |
+void NewTabPagePrefs::SetRecentlyClosedTabsCollapsed(JNIEnv* env, |
+ jobject obj, |
+ jboolean is_collapsed) { |
+ PrefService* prefs = profile_->GetPrefs(); |
+ prefs->SetBoolean(prefs::kNtpCollapsedRecentlyClosedTabs, is_collapsed); |
+} |
+ |
+jboolean NewTabPagePrefs::GetSyncPromoCollapsed(JNIEnv* env, |
+ jobject obj) { |
+ return profile_->GetPrefs()->GetBoolean(prefs::kNtpCollapsedSyncPromo); |
+} |
+ |
+void NewTabPagePrefs::SetSyncPromoCollapsed(JNIEnv* env, |
+ jobject obj, |
+ jboolean is_collapsed) { |
+ PrefService* prefs = profile_->GetPrefs(); |
+ prefs->SetBoolean(prefs::kNtpCollapsedSyncPromo, is_collapsed); |
+} |
+ |
+jboolean NewTabPagePrefs::GetForeignSessionCollapsed(JNIEnv* env, |
+ jobject obj, |
+ jstring session_tag) { |
+ const DictionaryValue* dict = profile_->GetPrefs()->GetDictionary( |
+ prefs::kNtpCollapsedForeignSessions); |
+ return dict && dict->HasKey(ConvertJavaStringToUTF8(env, session_tag)); |
+} |
+ |
+void NewTabPagePrefs::SetForeignSessionCollapsed(JNIEnv* env, |
+ jobject obj, |
+ jstring session_tag, |
+ jboolean is_collapsed) { |
+ // Store session tags for collapsed sessions in a preference so that the |
+ // collapsed state persists. |
+ PrefService* prefs = profile_->GetPrefs(); |
+ DictionaryPrefUpdate update(prefs, prefs::kNtpCollapsedForeignSessions); |
+ if (is_collapsed) |
+ update.Get()->SetBoolean(ConvertJavaStringToUTF8(env, session_tag), true); |
+ else |
+ update.Get()->Remove(ConvertJavaStringToUTF8(env, session_tag), NULL); |
+} |
+ |
+// static |
+void NewTabPagePrefs::RegisterProfilePrefs( |
+ user_prefs::PrefRegistrySyncable* registry) { |
+ registry->RegisterBooleanPref( |
+ prefs::kNtpCollapsedSnapshotDocument, |
+ false, |
+ user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
+ registry->RegisterBooleanPref( |
+ prefs::kNtpCollapsedRecentlyClosedTabs, |
+ false, |
+ user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
+ registry->RegisterBooleanPref( |
+ prefs::kNtpCollapsedSyncPromo, |
+ false, |
+ user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
+} |
+ |
+// static |
+bool NewTabPagePrefs::RegisterNewTabPagePrefs(JNIEnv* env) { |
+ return RegisterNativesImpl(env); |
+} |