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

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

Issue 2555273002: [Android History] Add support for removing items (Closed)
Patch Set: Rebase 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
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,
71 j_query_result_obj_.obj(), 79 j_query_result_obj_.obj(),
72 base::android::ConvertUTF8ToJavaString(env, it->url.spec()), 80 base::android::ConvertUTF8ToJavaString(env, it->url.spec()),
73 base::android::ConvertUTF16ToJavaString(env, domain), 81 base::android::ConvertUTF16ToJavaString(env, domain),
74 base::android::ConvertUTF16ToJavaString(env, it->title), 82 base::android::ConvertUTF16ToJavaString(env, it->title),
75 it->time.ToJavaTime()); 83 base::android::ToJavaLongArray(env, timestamps));
84
85 timestamps.clear();
76 } 86 }
77 87
78 Java_BrowsingHistoryBridge_onQueryHistoryComplete( 88 Java_BrowsingHistoryBridge_onQueryHistoryComplete(
79 env, 89 env,
80 j_history_service_obj_.obj(), 90 j_history_service_obj_.obj(),
81 j_query_result_obj_.obj()); 91 j_query_result_obj_.obj());
82 92
83 j_query_result_obj_.Release(); 93 j_query_result_obj_.Release();
84 } 94 }
85 95
96 void BrowsingHistoryBridge::MarkItemForRemoval(
97 JNIEnv* env,
98 const JavaParamRef<jobject>& obj,
99 jstring j_url,
100 const JavaParamRef<jlongArray>& j_timestamps) {
101 std::unique_ptr<BrowsingHistoryService::HistoryEntry> entry(
102 new BrowsingHistoryService::HistoryEntry());
gone 2016/12/08 21:21:56 git cl format?
Theresa 2016/12/08 21:51:15 Done.
103 entry->url = GURL(base::android::ConvertJavaStringToUTF16(env, j_url));
104
105 std::vector<int64_t> timestamps;
106 base::android::JavaLongArrayToInt64Vector(
107 env, j_timestamps.obj(), &timestamps);
108 for (auto it = timestamps.begin(); it != timestamps.end(); ++it) {
109 base::Time visit_time = base::Time::FromJavaTime(*it);
110 entry->all_timestamps.insert(visit_time.ToInternalValue());
111 }
112
113 items_to_remove_.push_back(std::move(entry));
114 timestamps.clear();
115 }
116
117 void BrowsingHistoryBridge::RemoveItems(JNIEnv* env,
118 const JavaParamRef<jobject>& obj) {
119 browsing_history_service_->RemoveVisits(&items_to_remove_);
120 items_to_remove_.clear();
121 }
122
86 void BrowsingHistoryBridge::OnRemoveVisitsComplete() { 123 void BrowsingHistoryBridge::OnRemoveVisitsComplete() {
87 // TODO(twellington): implement 124 JNIEnv* env = base::android::AttachCurrentThread();
125 Java_BrowsingHistoryBridge_onRemoveComplete(
126 env, j_history_service_obj_.obj());
88 } 127 }
89 128
90 void BrowsingHistoryBridge::OnRemoveVisitsFailed() { 129 void BrowsingHistoryBridge::OnRemoveVisitsFailed() {
91 // TODO(twellington): implement 130 JNIEnv* env = base::android::AttachCurrentThread();
131 Java_BrowsingHistoryBridge_onRemoveFailed(env, j_history_service_obj_.obj());
92 } 132 }
93 133
94 void BrowsingHistoryBridge::HistoryDeleted() { 134 void BrowsingHistoryBridge::HistoryDeleted() {
95 // TODO(twellington): implement 135 JNIEnv* env = base::android::AttachCurrentThread();
136 Java_BrowsingHistoryBridge_onHistoryDeleted(
137 env, j_history_service_obj_.obj());
96 } 138 }
97 139
98 void BrowsingHistoryBridge::HasOtherFormsOfBrowsingHistory( 140 void BrowsingHistoryBridge::HasOtherFormsOfBrowsingHistory(
99 bool has_other_forms, bool has_synced_results) { 141 bool has_other_forms, bool has_synced_results) {
100 // TODO(twellington): implement 142 // TODO(twellington): implement
101 } 143 }
102 144
103 bool RegisterBrowsingHistoryBridge(JNIEnv* env) { 145 bool RegisterBrowsingHistoryBridge(JNIEnv* env) {
104 return RegisterNativesImpl(env); 146 return RegisterNativesImpl(env);
105 } 147 }
106 148
107 static jlong Init(JNIEnv* env, 149 static jlong Init(JNIEnv* env,
108 const JavaParamRef<jobject>& obj, 150 const JavaParamRef<jobject>& obj,
109 const JavaParamRef<jobject>& j_profile) { 151 const JavaParamRef<jobject>& j_profile) {
110 BrowsingHistoryBridge* bridge = 152 BrowsingHistoryBridge* bridge =
111 new BrowsingHistoryBridge(env, obj, j_profile); 153 new BrowsingHistoryBridge(env, obj, j_profile);
112 return reinterpret_cast<intptr_t>(bridge); 154 return reinterpret_cast<intptr_t>(bridge);
113 } 155 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698