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

Side by Side 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: 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/android/history/browsing_history_bridge.h" 5 #include "chrome/browser/android/history/browsing_history_bridge.h"
6 6
7 #include <jni.h> 7 #include <jni.h>
8 8
9 #include <utility>
10
9 #include "base/android/jni_android.h" 11 #include "base/android/jni_android.h"
10 #include "base/android/jni_array.h" 12 #include "base/android/jni_array.h"
11 #include "base/android/jni_string.h" 13 #include "base/android/jni_string.h"
12 #include "base/macros.h" 14 #include "base/macros.h"
13 #include "base/strings/utf_string_conversions.h" 15 #include "base/strings/utf_string_conversions.h"
14 #include "base/time/time.h" 16 #include "base/time/time.h"
15 #include "chrome/browser/profiles/profile_android.h" 17 #include "chrome/browser/profiles/profile_android.h"
16 #include "components/url_formatter/url_formatter.h" 18 #include "components/url_formatter/url_formatter.h"
17 #include "jni/BrowsingHistoryBridge_jni.h" 19 #include "jni/BrowsingHistoryBridge_jni.h"
18 20
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 base::android::ConvertJavaStringToUTF16(env, j_query), options); 56 base::android::ConvertJavaStringToUTF16(env, j_query), options);
55 } 57 }
56 58
57 // BrowsingHistoryServiceHandler implementation 59 // BrowsingHistoryServiceHandler implementation
58 void BrowsingHistoryBridge::OnQueryComplete( 60 void BrowsingHistoryBridge::OnQueryComplete(
59 std::vector<BrowsingHistoryService::HistoryEntry>* results, 61 std::vector<BrowsingHistoryService::HistoryEntry>* results,
60 BrowsingHistoryService::QueryResultsInfo* query_results_info) { 62 BrowsingHistoryService::QueryResultsInfo* query_results_info) {
61 63
62 JNIEnv* env = base::android::AttachCurrentThread(); 64 JNIEnv* env = base::android::AttachCurrentThread();
63 65
64 for (auto it = results->begin(); it != results->end(); ++it) { 66 for (const BrowsingHistoryService::HistoryEntry& entry : *results) {
65
66 // TODO(twellington): move the domain logic to BrowsingHistoryServce so it 67 // TODO(twellington): move the domain logic to BrowsingHistoryServce so it
67 // can be shared with BrowsingHistoryHandler. 68 // can be shared with BrowsingHistoryHandler.
68 base::string16 domain = url_formatter::IDNToUnicode(it->url.host()); 69 base::string16 domain = url_formatter::IDNToUnicode(entry.url.host());
69 // When the domain is empty, use the scheme instead. This allows for a 70 // When the domain is empty, use the scheme instead. This allows for a
70 // sensible treatment of e.g. file: URLs when group by domain is on. 71 // sensible treatment of e.g. file: URLs when group by domain is on.
71 if (domain.empty()) 72 if (domain.empty())
72 domain = base::UTF8ToUTF16(it->url.scheme() + ":"); 73 domain = base::UTF8ToUTF16(entry.url.scheme() + ":");
73 74
74 std::vector<int64_t> timestamps; 75 std::vector<int64_t> java_timestamps;
75 for (auto timestampIt = it->all_timestamps.begin(); 76 std::vector<int64_t> native_timestamps;
76 timestampIt != it->all_timestamps.end(); ++timestampIt) { 77 for (int64_t timestamp : entry.all_timestamps) {
77 timestamps.push_back( 78 java_timestamps.push_back(
78 base::Time::FromInternalValue(*timestampIt).ToJavaTime()); 79 base::Time::FromInternalValue(timestamp).ToJavaTime());
80 native_timestamps.push_back(timestamp);
79 } 81 }
80 82
81 Java_BrowsingHistoryBridge_createHistoryItemAndAddToList( 83 Java_BrowsingHistoryBridge_createHistoryItemAndAddToList(
82 env, j_query_result_obj_.obj(), 84 env, j_query_result_obj_.obj(),
83 base::android::ConvertUTF8ToJavaString(env, it->url.spec()), 85 base::android::ConvertUTF8ToJavaString(env, entry.url.spec()),
84 base::android::ConvertUTF16ToJavaString(env, domain), 86 base::android::ConvertUTF16ToJavaString(env, domain),
85 base::android::ConvertUTF16ToJavaString(env, it->title), 87 base::android::ConvertUTF16ToJavaString(env, entry.title),
86 base::android::ToJavaLongArray(env, timestamps), 88 base::android::ToJavaLongArray(env, java_timestamps),
87 it->blocked_visit); 89 base::android::ToJavaLongArray(env, native_timestamps),
88 90 entry.blocked_visit);
89 timestamps.clear();
90 } 91 }
91 92
92 Java_BrowsingHistoryBridge_onQueryHistoryComplete( 93 Java_BrowsingHistoryBridge_onQueryHistoryComplete(
93 env, 94 env,
94 j_history_service_obj_.obj(), 95 j_history_service_obj_.obj(),
95 j_query_result_obj_.obj(), 96 j_query_result_obj_.obj(),
96 !(query_results_info->reached_beginning)); 97 !(query_results_info->reached_beginning));
97 } 98 }
98 99
99 void BrowsingHistoryBridge::MarkItemForRemoval( 100 void BrowsingHistoryBridge::MarkItemForRemoval(
100 JNIEnv* env, 101 JNIEnv* env,
101 const JavaParamRef<jobject>& obj, 102 const JavaParamRef<jobject>& obj,
102 jstring j_url, 103 jstring j_url,
103 const JavaParamRef<jlongArray>& j_timestamps) { 104 const JavaParamRef<jlongArray>& j_native_timestamps) {
104 std::unique_ptr<BrowsingHistoryService::HistoryEntry> entry( 105 std::unique_ptr<BrowsingHistoryService::HistoryEntry> entry(
105 new BrowsingHistoryService::HistoryEntry()); 106 new BrowsingHistoryService::HistoryEntry());
106 entry->url = GURL(base::android::ConvertJavaStringToUTF16(env, j_url)); 107 entry->url = GURL(base::android::ConvertJavaStringToUTF16(env, j_url));
107 108
108 std::vector<int64_t> timestamps; 109 std::vector<int64_t> timestamps;
109 base::android::JavaLongArrayToInt64Vector(env, j_timestamps.obj(), 110 base::android::JavaLongArrayToInt64Vector(env, j_native_timestamps.obj(),
110 &timestamps); 111 &timestamps);
111 for (auto it = timestamps.begin(); it != timestamps.end(); ++it) { 112 entry->all_timestamps.insert(timestamps.begin(), timestamps.end());
112 base::Time visit_time = base::Time::FromJavaTime(*it);
113 entry->all_timestamps.insert(visit_time.ToInternalValue());
114 }
115 113
116 items_to_remove_.push_back(std::move(entry)); 114 items_to_remove_.push_back(std::move(entry));
117 timestamps.clear();
Theresa 2017/06/12 18:23:21 I had added this to make sure int64 timestamps in
skym 2017/06/12 19:45:13 Yeah, I don't think it was needed. The vector |tim
118 } 115 }
119 116
120 void BrowsingHistoryBridge::RemoveItems(JNIEnv* env, 117 void BrowsingHistoryBridge::RemoveItems(JNIEnv* env,
121 const JavaParamRef<jobject>& obj) { 118 const JavaParamRef<jobject>& obj) {
122 browsing_history_service_->RemoveVisits(&items_to_remove_); 119 browsing_history_service_->RemoveVisits(&items_to_remove_);
123 items_to_remove_.clear(); 120 items_to_remove_.clear();
124 } 121 }
125 122
126 void BrowsingHistoryBridge::OnRemoveVisitsComplete() { 123 void BrowsingHistoryBridge::OnRemoveVisitsComplete() {
127 JNIEnv* env = base::android::AttachCurrentThread(); 124 JNIEnv* env = base::android::AttachCurrentThread();
(...skipping 23 matching lines...) Expand all
151 return RegisterNativesImpl(env); 148 return RegisterNativesImpl(env);
152 } 149 }
153 150
154 static jlong Init(JNIEnv* env, 151 static jlong Init(JNIEnv* env,
155 const JavaParamRef<jobject>& obj, 152 const JavaParamRef<jobject>& obj,
156 const JavaParamRef<jobject>& j_profile) { 153 const JavaParamRef<jobject>& j_profile) {
157 BrowsingHistoryBridge* bridge = 154 BrowsingHistoryBridge* bridge =
158 new BrowsingHistoryBridge(env, obj, j_profile); 155 new BrowsingHistoryBridge(env, obj, j_profile);
159 return reinterpret_cast<intptr_t>(bridge); 156 return reinterpret_cast<intptr_t>(bridge);
160 } 157 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698