Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4473)

Unified Diff: chrome/browser/android/history/browsing_history_bridge.cc

Issue 2542203002: [Android History] Add Android history manager UI and bridge (Closed)
Patch Set: Rebase, drop changes to time.* Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/android/history/browsing_history_bridge.cc
diff --git a/chrome/browser/android/history/browsing_history_bridge.cc b/chrome/browser/android/history/browsing_history_bridge.cc
new file mode 100644
index 0000000000000000000000000000000000000000..768254aee4f9e1a34a9e48933386c4d46ff2e423
--- /dev/null
+++ b/chrome/browser/android/history/browsing_history_bridge.cc
@@ -0,0 +1,113 @@
+// Copyright 2016 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/history/browsing_history_bridge.h"
+
+#include <jni.h>
+
+#include "base/android/jni_android.h"
+#include "base/android/jni_string.h"
+#include "base/macros.h"
+#include "base/strings/utf_string_conversions.h"
+#include "base/time/time.h"
+#include "chrome/browser/profiles/profile_android.h"
+#include "components/url_formatter/url_formatter.h"
+#include "jni/BrowsingHistoryBridge_jni.h"
+
+const int kMaxQueryCount = 100;
+
+BrowsingHistoryBridge::BrowsingHistoryBridge(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ jobject j_profile) {
+ Profile* profile = ProfileAndroid::FromProfileAndroid(j_profile);
+ browsing_history_service_.reset(new BrowsingHistoryService(profile, this));
+ j_history_service_obj_.Reset(env, obj);
+}
+
+BrowsingHistoryBridge::~BrowsingHistoryBridge() {}
+
+void BrowsingHistoryBridge::Destroy(JNIEnv*, const JavaParamRef<jobject>&) {
+ delete this;
+}
+
+void BrowsingHistoryBridge::QueryHistory(
+ JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ const JavaParamRef<jobject>& j_result_obj,
+ jstring j_query,
+ int64_t j_query_end_time) {
+ j_query_result_obj_.Reset(env, j_result_obj);
+
+ history::QueryOptions options;
+ options.max_count = kMaxQueryCount;
+ options.end_time = base::Time::FromJavaTime(j_query_end_time);
+ options.duplicate_policy = history::QueryOptions::REMOVE_DUPLICATES_PER_DAY;
+
+ browsing_history_service_->QueryHistory(
+ base::android::ConvertJavaStringToUTF16(env, j_query), options);
+}
+
+// BrowsingHistoryServiceHandler implementation
+void BrowsingHistoryBridge::OnQueryComplete(
+ std::vector<BrowsingHistoryService::HistoryEntry>* results,
+ BrowsingHistoryService::QueryResultsInfo* query_results_info) {
+
+ JNIEnv* env = base::android::AttachCurrentThread();
+
+ for (auto it = results->begin(); it != results->end(); ++it) {
+
+ // TODO(twellington): move the domain logic to BrowsingHistoryServce so it
+ // can be shared with BrowsingHistoryHandler.
+ base::string16 domain = url_formatter::IDNToUnicode(it->url.host());
+ // When the domain is empty, use the scheme instead. This allows for a
+ // sensible treatment of e.g. file: URLs when group by domain is on.
+ if (domain.empty())
+ domain = base::UTF8ToUTF16(it->url.scheme() + ":");
+
+ Java_BrowsingHistoryBridge_createHistoryItemAndAddToList(
+ env,
+ j_query_result_obj_.obj(),
+ base::android::ConvertUTF8ToJavaString(env, it->url.spec()),
+ base::android::ConvertUTF16ToJavaString(env, domain),
+ base::android::ConvertUTF16ToJavaString(env, it->title),
+ it->time.ToJavaTime());
+ }
+
+ Java_BrowsingHistoryBridge_onQueryHistoryComplete(
+ env,
+ j_history_service_obj_.obj(),
+ j_query_result_obj_.obj());
+
+ j_query_result_obj_.Release();
+}
+
+void BrowsingHistoryBridge::OnRemoveVisitsComplete() {
+ // TODO(twellington): implement
+}
+
+void BrowsingHistoryBridge::OnRemoveVisitsFailed() {
+ // TODO(twellington): implement
+}
+
+void BrowsingHistoryBridge::HistoryDeleted() {
+ // TODO(twellington): implement
+}
+
+void BrowsingHistoryBridge::HasOtherFormsOfBrowsingHistory(
+ bool has_other_forms, bool has_synced_results) {
+ // TODO(twellington): implement
+}
+
+bool RegisterBrowsingHistoryBridge(JNIEnv* env) {
+ return RegisterNativesImpl(env);
+}
+
+static jlong Init(JNIEnv* env,
+ const JavaParamRef<jobject>& obj,
+ const JavaParamRef<jobject>& j_profile) {
+ BrowsingHistoryBridge* bridge =
+ new BrowsingHistoryBridge(env, obj, j_profile);
+ return reinterpret_cast<intptr_t>(bridge);
+}
« no previous file with comments | « chrome/browser/android/history/browsing_history_bridge.h ('k') | chrome/browser/history/browsing_history_service_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698