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

Side by Side Diff: chrome/android/java_staging/src/org/chromium/chrome/browser/historyreport/HistoryReportJniBridge.java

Issue 1141283003: Upstream oodles of Chrome for Android code into Chromium. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: final patch? Created 5 years, 7 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
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package org.chromium.chrome.browser.historyreport;
6
7 import android.text.TextUtils;
8
9 import org.chromium.base.CalledByNative;
10 import org.chromium.base.JNINamespace;
11 import org.chromium.base.Log;
12 import org.chromium.base.ThreadUtils;
13 import org.chromium.base.VisibleForTesting;
14
15 import java.io.PrintWriter;
16 import java.util.concurrent.atomic.AtomicBoolean;
17
18 /**
19 * Bridge class for calls between Java and C++.
20 */
21 @JNINamespace("history_report")
22 public class HistoryReportJniBridge implements SearchJniBridge {
23 private static final String TAG = Log.makeTag("historyreport");
24
25 private long mNativeHistoryReportJniBridge;
26 private DataChangeObserver mDataChangeObserver;
27 private final AtomicBoolean mStarted = new AtomicBoolean();
28
29 @Override
30 public boolean init(DataChangeObserver observer) {
31 assert mDataChangeObserver == null || mDataChangeObserver == observer;
32 if (observer == null) return false;
33 if (mNativeHistoryReportJniBridge != 0) return true;
34 mDataChangeObserver = observer;
35 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
36 @Override
37 public void run() {
38 mNativeHistoryReportJniBridge = nativeInit();
39 }
40 });
41 if (mNativeHistoryReportJniBridge == 0) {
42 Log.w(TAG, "JNI bridge initialization unsuccessful.");
43 return false;
44 }
45
46 Log.d(TAG, "JNI bridge initialization successful.");
47 mStarted.set(true);
48 return true;
49 }
50
51 private boolean isInitialized() {
52 return mNativeHistoryReportJniBridge != 0 && mDataChangeObserver != null && mStarted.get();
53 }
54
55 @VisibleForTesting
56 @Override
57 public boolean isStartedForTest() {
58 return mStarted.get();
59 }
60
61 @Override
62 public DeltaFileEntry[] query(long lastSeqNo, int limit) {
63 if (!isInitialized()) {
64 Log.w(TAG, "query when JNI bridge not initialized");
65 return new DeltaFileEntry[0];
66 }
67 Log.d(TAG, "query %d %d", lastSeqNo, limit);
68 DeltaFileEntry[] result = nativeQuery(mNativeHistoryReportJniBridge, las tSeqNo, limit);
69 Log.d(TAG, "query result: %s", TextUtils.join("\n", result));
70 return result;
71 }
72
73 @Override
74 public long trimDeltaFile(long seqNoLowerBound) {
75 if (!isInitialized()) {
76 Log.w(TAG, "trimDeltaFile when JNI bridge not initialized");
77 return -1;
78 }
79 Log.d(TAG, "trimDeltaFile %d", seqNoLowerBound);
80 return nativeTrimDeltaFile(mNativeHistoryReportJniBridge, seqNoLowerBoun d);
81 }
82
83 @Override
84 public UsageReport[] getUsageReportsBatch(int batchSize) {
85 if (!isInitialized()) {
86 Log.w(TAG, "getUsageReportsBatch when JNI bridge not initialized");
87 return new UsageReport[0];
88 }
89 Log.d(TAG, "getUsageReportsBatch %d", batchSize);
90 return nativeGetUsageReportsBatch(mNativeHistoryReportJniBridge, batchSi ze);
91 }
92
93 @Override
94 public void removeUsageReports(UsageReport[] reports) {
95 if (!isInitialized()) {
96 Log.w(TAG, "removeUsageReports when JNI bridge not initialized");
97 return;
98 }
99 String[] reportIds = new String[reports.length];
100 for (int i = 0; i < reports.length; ++i) {
101 reportIds[i] = reports[i].reportId;
102 }
103 Log.d(TAG, "removeUsageReports %s", TextUtils.join(",", reportIds));
104 nativeRemoveUsageReports(mNativeHistoryReportJniBridge, reportIds);
105 }
106
107 @Override
108 public boolean addHistoricVisitsToUsageReportsBuffer() {
109 if (!isInitialized()) return false;
110 return nativeAddHistoricVisitsToUsageReportsBuffer(mNativeHistoryReportJ niBridge);
111 }
112
113 @Override
114 public void dump(PrintWriter writer) {
115 writer.append("\nHistoryReportJniBridge [").append("started: " + mStarte d.get())
116 .append(", initialized: " + isInitialized());
117 if (isInitialized()) {
118 writer.append(", " + nativeDump(mNativeHistoryReportJniBridge));
119 }
120 writer.append("]");
121 }
122
123 @CalledByNative
124 private static DeltaFileEntry[] createDeltaFileEntriesArray(int size) {
125 return new DeltaFileEntry[size];
126 }
127
128 @CalledByNative
129 private static void setDeltaFileEntry(DeltaFileEntry[] entries, int position , long seqNo,
130 String type, String id, String url, int score, String title, String indexedUrl) {
131 entries[position] = new DeltaFileEntry(seqNo, type, id, url, score, titl e, indexedUrl);
132 }
133
134 @CalledByNative
135 private static UsageReport[] createUsageReportsArray(int size) {
136 return new UsageReport[size];
137 }
138
139 @CalledByNative
140 private static void setUsageReport(UsageReport[] reports, int position, Stri ng reportId,
141 String pageId, long timestampMs, boolean typedVisit) {
142 reports[position] = new UsageReport(reportId, pageId, timestampMs, typed Visit);
143 }
144
145 @CalledByNative
146 private void onDataChanged() {
147 Log.d(TAG, "onDataChanged");
148 mDataChangeObserver.onDataChanged();
149 }
150
151 @CalledByNative
152 private void onDataCleared() {
153 Log.d(TAG, "onDataCleared");
154 mDataChangeObserver.onDataCleared();
155 }
156
157 @CalledByNative
158 private void startReportingTask() {
159 Log.d(TAG, "startReportingTask");
160 mDataChangeObserver.startReportingTask();
161 }
162
163 @CalledByNative
164 private void stopReportingTask() {
165 Log.d(TAG, "stopReportingTask");
166 mDataChangeObserver.stopReportingTask();
167 }
168
169 private native long nativeInit();
170 private native long nativeTrimDeltaFile(long nativeHistoryReportJniBridge,
171 long seqNoLowerBound);
172 private native DeltaFileEntry[] nativeQuery(long nativeHistoryReportJniBridg e, long lastSeqNo,
173 int limit);
174 private native UsageReport[] nativeGetUsageReportsBatch(long nativeHistoryRe portJniBridge,
175 int batchSize);
176 private native void nativeRemoveUsageReports(long nativeHistoryReportJniBrid ge,
177 String[] reportIds);
178 private native boolean nativeAddHistoricVisitsToUsageReportsBuffer(
179 long nativeHistoryReportJniBridge);
180 private native String nativeDump(long nativeHistoryReportJniBridge);
181 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698