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

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

Issue 2935783002: Send microsecond resolution timestamps to Java history page so they can be sent back. (Closed)
Patch Set: Updates for twellington@ Created 3 years, 6 months 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
« no previous file with comments | « chrome/browser/android/history/browsing_history_bridge.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
index 9fcd8a0dc7133e9b4fa33ea52b7551ba3bf123a0..b747ae6efc8559a515d4ceedd0224c316a96a369 100644
--- a/chrome/browser/android/history/browsing_history_bridge.cc
+++ b/chrome/browser/android/history/browsing_history_bridge.cc
@@ -6,6 +6,8 @@
#include <jni.h>
+#include <utility>
+
#include "base/android/jni_android.h"
#include "base/android/jni_array.h"
#include "base/android/jni_string.h"
@@ -61,32 +63,30 @@ void BrowsingHistoryBridge::OnQueryComplete(
JNIEnv* env = base::android::AttachCurrentThread();
- for (auto it = results->begin(); it != results->end(); ++it) {
-
+ for (const BrowsingHistoryService::HistoryEntry& entry : *results) {
// TODO(twellington): move the domain logic to BrowsingHistoryServce so it
// can be shared with BrowsingHistoryHandler.
- base::string16 domain = url_formatter::IDNToUnicode(it->url.host());
+ base::string16 domain = url_formatter::IDNToUnicode(entry.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() + ":");
+ domain = base::UTF8ToUTF16(entry.url.scheme() + ":");
- std::vector<int64_t> timestamps;
- for (auto timestampIt = it->all_timestamps.begin();
- timestampIt != it->all_timestamps.end(); ++timestampIt) {
- timestamps.push_back(
- base::Time::FromInternalValue(*timestampIt).ToJavaTime());
- }
+ // This relies on |all_timestamps| being a sorted data structure.
+ int64_t most_recent_java_timestamp =
+ base::Time::FromInternalValue(*entry.all_timestamps.rbegin())
+ .ToJavaTime();
+ std::vector<int64_t> native_timestamps(entry.all_timestamps.begin(),
+ entry.all_timestamps.end());
Java_BrowsingHistoryBridge_createHistoryItemAndAddToList(
env, j_query_result_obj_.obj(),
- base::android::ConvertUTF8ToJavaString(env, it->url.spec()),
+ base::android::ConvertUTF8ToJavaString(env, entry.url.spec()),
base::android::ConvertUTF16ToJavaString(env, domain),
- base::android::ConvertUTF16ToJavaString(env, it->title),
- base::android::ToJavaLongArray(env, timestamps),
- it->blocked_visit);
-
- timestamps.clear();
+ base::android::ConvertUTF16ToJavaString(env, entry.title),
+ most_recent_java_timestamp,
+ base::android::ToJavaLongArray(env, native_timestamps),
+ entry.blocked_visit);
}
Java_BrowsingHistoryBridge_onQueryHistoryComplete(
@@ -100,21 +100,17 @@ void BrowsingHistoryBridge::MarkItemForRemoval(
JNIEnv* env,
const JavaParamRef<jobject>& obj,
jstring j_url,
- const JavaParamRef<jlongArray>& j_timestamps) {
+ const JavaParamRef<jlongArray>& j_native_timestamps) {
std::unique_ptr<BrowsingHistoryService::HistoryEntry> entry(
new BrowsingHistoryService::HistoryEntry());
entry->url = GURL(base::android::ConvertJavaStringToUTF16(env, j_url));
std::vector<int64_t> timestamps;
- base::android::JavaLongArrayToInt64Vector(env, j_timestamps.obj(),
+ base::android::JavaLongArrayToInt64Vector(env, j_native_timestamps.obj(),
&timestamps);
- for (auto it = timestamps.begin(); it != timestamps.end(); ++it) {
- base::Time visit_time = base::Time::FromJavaTime(*it);
- entry->all_timestamps.insert(visit_time.ToInternalValue());
- }
+ entry->all_timestamps.insert(timestamps.begin(), timestamps.end());
items_to_remove_.push_back(std::move(entry));
- timestamps.clear();
}
void BrowsingHistoryBridge::RemoveItems(JNIEnv* env,
« no previous file with comments | « chrome/browser/android/history/browsing_history_bridge.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698