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

Side by Side Diff: chrome/browser/android/history/browsing_history_bridge.cc

Issue 2555273002: [Android History] Add support for removing items (Closed)
Patch Set: Changes from dfalcantara@ review 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 unified diff | Download patch
« no previous file with comments | « chrome/browser/android/history/browsing_history_bridge.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "base/android/jni_android.h" 9 #include "base/android/jni_android.h"
10 #include "base/android/jni_array.h"
10 #include "base/android/jni_string.h" 11 #include "base/android/jni_string.h"
11 #include "base/macros.h" 12 #include "base/macros.h"
12 #include "base/strings/utf_string_conversions.h" 13 #include "base/strings/utf_string_conversions.h"
13 #include "base/time/time.h" 14 #include "base/time/time.h"
14 #include "chrome/browser/profiles/profile_android.h" 15 #include "chrome/browser/profiles/profile_android.h"
15 #include "components/url_formatter/url_formatter.h" 16 #include "components/url_formatter/url_formatter.h"
16 #include "jni/BrowsingHistoryBridge_jni.h" 17 #include "jni/BrowsingHistoryBridge_jni.h"
17 18
18 const int kMaxQueryCount = 100; 19 const int kMaxQueryCount = 100;
19 20
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 for (auto it = results->begin(); it != results->end(); ++it) { 60 for (auto it = results->begin(); it != results->end(); ++it) {
60 61
61 // TODO(twellington): move the domain logic to BrowsingHistoryServce so it 62 // TODO(twellington): move the domain logic to BrowsingHistoryServce so it
62 // can be shared with BrowsingHistoryHandler. 63 // can be shared with BrowsingHistoryHandler.
63 base::string16 domain = url_formatter::IDNToUnicode(it->url.host()); 64 base::string16 domain = url_formatter::IDNToUnicode(it->url.host());
64 // When the domain is empty, use the scheme instead. This allows for a 65 // When the domain is empty, use the scheme instead. This allows for a
65 // sensible treatment of e.g. file: URLs when group by domain is on. 66 // sensible treatment of e.g. file: URLs when group by domain is on.
66 if (domain.empty()) 67 if (domain.empty())
67 domain = base::UTF8ToUTF16(it->url.scheme() + ":"); 68 domain = base::UTF8ToUTF16(it->url.scheme() + ":");
68 69
70 std::vector<int64_t> timestamps;
71 for (auto timestampIt = it->all_timestamps.begin();
72 timestampIt != it->all_timestamps.end(); ++timestampIt) {
73 timestamps.push_back(
74 base::Time::FromInternalValue(*timestampIt).ToJavaTime());
75 }
76
69 Java_BrowsingHistoryBridge_createHistoryItemAndAddToList( 77 Java_BrowsingHistoryBridge_createHistoryItemAndAddToList(
70 env, 78 env, j_query_result_obj_.obj(),
71 j_query_result_obj_.obj(),
72 base::android::ConvertUTF8ToJavaString(env, it->url.spec()), 79 base::android::ConvertUTF8ToJavaString(env, it->url.spec()),
73 base::android::ConvertUTF16ToJavaString(env, domain), 80 base::android::ConvertUTF16ToJavaString(env, domain),
74 base::android::ConvertUTF16ToJavaString(env, it->title), 81 base::android::ConvertUTF16ToJavaString(env, it->title),
75 it->time.ToJavaTime()); 82 base::android::ToJavaLongArray(env, timestamps));
83
84 timestamps.clear();
76 } 85 }
77 86
78 Java_BrowsingHistoryBridge_onQueryHistoryComplete( 87 Java_BrowsingHistoryBridge_onQueryHistoryComplete(
79 env, 88 env,
80 j_history_service_obj_.obj(), 89 j_history_service_obj_.obj(),
81 j_query_result_obj_.obj()); 90 j_query_result_obj_.obj());
82 91
83 j_query_result_obj_.Release(); 92 j_query_result_obj_.Release();
84 } 93 }
85 94
95 void BrowsingHistoryBridge::MarkItemForRemoval(
96 JNIEnv* env,
97 const JavaParamRef<jobject>& obj,
98 jstring j_url,
99 const JavaParamRef<jlongArray>& j_timestamps) {
100 std::unique_ptr<BrowsingHistoryService::HistoryEntry> entry(
101 new BrowsingHistoryService::HistoryEntry());
102 entry->url = GURL(base::android::ConvertJavaStringToUTF16(env, j_url));
103
104 std::vector<int64_t> timestamps;
105 base::android::JavaLongArrayToInt64Vector(env, j_timestamps.obj(),
106 &timestamps);
107 for (auto it = timestamps.begin(); it != timestamps.end(); ++it) {
108 base::Time visit_time = base::Time::FromJavaTime(*it);
109 entry->all_timestamps.insert(visit_time.ToInternalValue());
110 }
111
112 items_to_remove_.push_back(std::move(entry));
113 timestamps.clear();
114 }
115
116 void BrowsingHistoryBridge::RemoveItems(JNIEnv* env,
117 const JavaParamRef<jobject>& obj) {
118 browsing_history_service_->RemoveVisits(&items_to_remove_);
119 items_to_remove_.clear();
120 }
121
86 void BrowsingHistoryBridge::OnRemoveVisitsComplete() { 122 void BrowsingHistoryBridge::OnRemoveVisitsComplete() {
87 // TODO(twellington): implement 123 JNIEnv* env = base::android::AttachCurrentThread();
124 Java_BrowsingHistoryBridge_onRemoveComplete(env,
125 j_history_service_obj_.obj());
88 } 126 }
89 127
90 void BrowsingHistoryBridge::OnRemoveVisitsFailed() { 128 void BrowsingHistoryBridge::OnRemoveVisitsFailed() {
91 // TODO(twellington): implement 129 JNIEnv* env = base::android::AttachCurrentThread();
130 Java_BrowsingHistoryBridge_onRemoveFailed(env, j_history_service_obj_.obj());
92 } 131 }
93 132
94 void BrowsingHistoryBridge::HistoryDeleted() { 133 void BrowsingHistoryBridge::HistoryDeleted() {
95 // TODO(twellington): implement 134 JNIEnv* env = base::android::AttachCurrentThread();
135 Java_BrowsingHistoryBridge_onHistoryDeleted(env,
136 j_history_service_obj_.obj());
96 } 137 }
97 138
98 void BrowsingHistoryBridge::HasOtherFormsOfBrowsingHistory( 139 void BrowsingHistoryBridge::HasOtherFormsOfBrowsingHistory(
99 bool has_other_forms, bool has_synced_results) { 140 bool has_other_forms, bool has_synced_results) {
100 // TODO(twellington): implement 141 // TODO(twellington): implement
101 } 142 }
102 143
103 bool RegisterBrowsingHistoryBridge(JNIEnv* env) { 144 bool RegisterBrowsingHistoryBridge(JNIEnv* env) {
104 return RegisterNativesImpl(env); 145 return RegisterNativesImpl(env);
105 } 146 }
106 147
107 static jlong Init(JNIEnv* env, 148 static jlong Init(JNIEnv* env,
108 const JavaParamRef<jobject>& obj, 149 const JavaParamRef<jobject>& obj,
109 const JavaParamRef<jobject>& j_profile) { 150 const JavaParamRef<jobject>& j_profile) {
110 BrowsingHistoryBridge* bridge = 151 BrowsingHistoryBridge* bridge =
111 new BrowsingHistoryBridge(env, obj, j_profile); 152 new BrowsingHistoryBridge(env, obj, j_profile);
112 return reinterpret_cast<intptr_t>(bridge); 153 return reinterpret_cast<intptr_t>(bridge);
113 } 154 }
OLDNEW
« 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