Commit e969fd5e authored by Clark DuVall's avatar Clark DuVall Committed by Chromium LUCI CQ

Add SplitCompatContentProvider and convert ChromeBrowserProvider

This will also allow converting the remaining providers in //clank.
Moving providers to the base module gives more time for the chrome split
preload to work, see http://crrev.com/c/2577546 for more info.

Note I removed the onCreate method from ChromeBrowserProvider, because
it just calls ensureNativeSideInitialized(). Every method which uses
native already calls canHandleContentProviderApiCall() which internally
will call ensureNativeSideInitialized(), so it seems unnecessary to call
from onCreate. This simplifies things a bit.

Review from Patchset 1 on for better diffs, Patchset 1 just moves
ChromeBrowserProvider.java to ChromeBrowserProviderImpl.java.

Bug: 1150600
Change-Id: I98134425b32173211293a4306f7e962934ed47c1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2591879
Commit-Queue: Clark DuVall <cduvall@chromium.org>
Reviewed-by: default avatarAndrew Grieve <agrieve@chromium.org>
Cr-Commit-Position: refs/heads/master@{#837129}
parent 492bb819
...@@ -2144,6 +2144,7 @@ android_library("base_module_java") { ...@@ -2144,6 +2144,7 @@ android_library("base_module_java") {
"java/src/org/chromium/chrome/browser/base/SplitCompatAppComponentFactory.java", "java/src/org/chromium/chrome/browser/base/SplitCompatAppComponentFactory.java",
"java/src/org/chromium/chrome/browser/base/SplitCompatApplication.java", "java/src/org/chromium/chrome/browser/base/SplitCompatApplication.java",
"java/src/org/chromium/chrome/browser/base/SplitCompatBackupAgent.java", "java/src/org/chromium/chrome/browser/base/SplitCompatBackupAgent.java",
"java/src/org/chromium/chrome/browser/base/SplitCompatContentProvider.java",
"java/src/org/chromium/chrome/browser/base/SplitCompatCustomTabsService.java", "java/src/org/chromium/chrome/browser/base/SplitCompatCustomTabsService.java",
"java/src/org/chromium/chrome/browser/base/SplitCompatGcmListenerService.java", "java/src/org/chromium/chrome/browser/base/SplitCompatGcmListenerService.java",
"java/src/org/chromium/chrome/browser/base/SplitCompatGcmTaskService.java", "java/src/org/chromium/chrome/browser/base/SplitCompatGcmTaskService.java",
...@@ -2174,6 +2175,7 @@ android_library("base_module_java") { ...@@ -2174,6 +2175,7 @@ android_library("base_module_java") {
"java/src/org/chromium/chrome/browser/omaha/OmahaClient.java", "java/src/org/chromium/chrome/browser/omaha/OmahaClient.java",
"java/src/org/chromium/chrome/browser/photo_picker/DecoderService.java", "java/src/org/chromium/chrome/browser/photo_picker/DecoderService.java",
"java/src/org/chromium/chrome/browser/prerender/ChromePrerenderService.java", "java/src/org/chromium/chrome/browser/prerender/ChromePrerenderService.java",
"java/src/org/chromium/chrome/browser/provider/ChromeBrowserProvider.java",
"java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java", "java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java",
"java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundService.java", "java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundService.java",
"java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java", "java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java",
...@@ -3400,7 +3402,7 @@ generate_jni("chrome_jni_headers") { ...@@ -3400,7 +3402,7 @@ generate_jni("chrome_jni_headers") {
"java/src/org/chromium/chrome/browser/previews/PreviewsAndroidBridge.java", "java/src/org/chromium/chrome/browser/previews/PreviewsAndroidBridge.java",
"java/src/org/chromium/chrome/browser/printing/TabPrinter.java", "java/src/org/chromium/chrome/browser/printing/TabPrinter.java",
"java/src/org/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManagerImpl.java", "java/src/org/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManagerImpl.java",
"java/src/org/chromium/chrome/browser/provider/ChromeBrowserProvider.java", "java/src/org/chromium/chrome/browser/provider/ChromeBrowserProviderImpl.java",
"java/src/org/chromium/chrome/browser/push_messaging/PushMessagingServiceObserver.java", "java/src/org/chromium/chrome/browser/push_messaging/PushMessagingServiceObserver.java",
"java/src/org/chromium/chrome/browser/query_tiles/TileProviderFactory.java", "java/src/org/chromium/chrome/browser/query_tiles/TileProviderFactory.java",
"java/src/org/chromium/chrome/browser/rappor/RapporServiceBridge.java", "java/src/org/chromium/chrome/browser/rappor/RapporServiceBridge.java",
......
...@@ -1191,7 +1191,7 @@ chrome_java_sources = [ ...@@ -1191,7 +1191,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java", "java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java",
"java/src/org/chromium/chrome/browser/provider/BaseColumns.java", "java/src/org/chromium/chrome/browser/provider/BaseColumns.java",
"java/src/org/chromium/chrome/browser/provider/BookmarkColumns.java", "java/src/org/chromium/chrome/browser/provider/BookmarkColumns.java",
"java/src/org/chromium/chrome/browser/provider/ChromeBrowserProvider.java", "java/src/org/chromium/chrome/browser/provider/ChromeBrowserProviderImpl.java",
"java/src/org/chromium/chrome/browser/provider/ChromeBrowserProviderSuggestionsCursor.java", "java/src/org/chromium/chrome/browser/provider/ChromeBrowserProviderSuggestionsCursor.java",
"java/src/org/chromium/chrome/browser/provider/SearchColumns.java", "java/src/org/chromium/chrome/browser/provider/SearchColumns.java",
"java/src/org/chromium/chrome/browser/push_messaging/PushMessagingServiceObserver.java", "java/src/org/chromium/chrome/browser/push_messaging/PushMessagingServiceObserver.java",
......
...@@ -853,6 +853,7 @@ ...@@ -853,6 +853,7 @@
<provider # DIFF-ANCHOR: 2215b9cd <provider # DIFF-ANCHOR: 2215b9cd
android:authorities="$PACKAGE.ChromeBrowserProvider;$PACKAGE.browser;$PACKAGE" android:authorities="$PACKAGE.ChromeBrowserProvider;$PACKAGE.browser;$PACKAGE"
android:exported="true" android:exported="true"
android:initOrder="10000"
android:name="org.chromium.chrome.browser.provider.ChromeBrowserProvider"> android:name="org.chromium.chrome.browser.provider.ChromeBrowserProvider">
<path-permission android:path="/bookmarks/search_suggest_query" android:readPermission="android.permission.GLOBAL_SEARCH"/> <path-permission android:path="/bookmarks/search_suggest_query" android:readPermission="android.permission.GLOBAL_SEARCH"/>
</provider> # DIFF-ANCHOR: 2215b9cd </provider> # DIFF-ANCHOR: 2215b9cd
......
...@@ -791,6 +791,7 @@ ...@@ -791,6 +791,7 @@
<provider # DIFF-ANCHOR: 2215b9cd <provider # DIFF-ANCHOR: 2215b9cd
android:authorities="$PACKAGE.ChromeBrowserProvider;$PACKAGE.browser;$PACKAGE" android:authorities="$PACKAGE.ChromeBrowserProvider;$PACKAGE.browser;$PACKAGE"
android:exported="true" android:exported="true"
android:initOrder="10000"
android:name="org.chromium.chrome.browser.provider.ChromeBrowserProvider"> android:name="org.chromium.chrome.browser.provider.ChromeBrowserProvider">
<path-permission android:path="/bookmarks/search_suggest_query" android:readPermission="android.permission.GLOBAL_SEARCH"/> <path-permission android:path="/bookmarks/search_suggest_query" android:readPermission="android.permission.GLOBAL_SEARCH"/>
</provider> # DIFF-ANCHOR: 2215b9cd </provider> # DIFF-ANCHOR: 2215b9cd
......
...@@ -869,14 +869,6 @@ by a child template that "extends" this file. ...@@ -869,14 +869,6 @@ by a child template that "extends" this file.
android:isolatedProcess="true" android:isolatedProcess="true"
android:process=":decoder_service" /> android:process=":decoder_service" />
<!-- Providers for chrome data. -->
<provider android:name="org.chromium.chrome.browser.provider.ChromeBrowserProvider"
android:authorities="{{ manifest_package }}.ChromeBrowserProvider;{{ manifest_package }}.browser;{{ manifest_package }}"
android:exported="true">
<path-permission android:path="/bookmarks/search_suggest_query"
android:readPermission="android.permission.GLOBAL_SEARCH" />
</provider>
<!-- Broadcast receiver that will be notified of account changes --> <!-- Broadcast receiver that will be notified of account changes -->
<receiver android:name="org.chromium.chrome.browser.services.AccountsChangedReceiver" <receiver android:name="org.chromium.chrome.browser.services.AccountsChangedReceiver"
android:exported="true"> android:exported="true">
...@@ -1246,6 +1238,15 @@ by a child template that "extends" this file. ...@@ -1246,6 +1238,15 @@ by a child template that "extends" this file.
android:resource="@xml/file_paths" /> android:resource="@xml/file_paths" />
</provider> </provider>
<!-- Provider for chrome data. -->
<provider android:name="org.chromium.chrome.browser.provider.ChromeBrowserProvider"
android:authorities="{{ manifest_package }}.ChromeBrowserProvider;{{ manifest_package }}.browser;{{ manifest_package }}"
android:initOrder="10000"
android:exported="true">
<path-permission android:path="/bookmarks/search_suggest_query"
android:readPermission="android.permission.GLOBAL_SEARCH" />
</provider>
{% block base_application_definitions %} {% block base_application_definitions %}
{% endblock %} {% endblock %}
{% block extra_application_definitions_for_test %} {% block extra_application_definitions_for_test %}
......
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.base;
import android.content.ContentProvider;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import java.io.FileDescriptor;
import java.io.PrintWriter;
/**
* ContentProvider base class which will call through to the given {@link Impl}. This class must be
* present in the base module, while the Impl can be in the chrome module.
*/
public class SplitCompatContentProvider extends ContentProvider {
private final Object mImplLock = new Object();
private Impl mImpl;
private String mContentProviderClassName;
public SplitCompatContentProvider(String contentProviderClassName) {
mContentProviderClassName = contentProviderClassName;
}
private Impl getImpl() {
// Content provider methods can be called on multiple threads, so make sure mImpl is locked
// when it is created.
synchronized (mImplLock) {
if (mImpl == null) {
Context context = SplitCompatUtils.createChromeContext(getContext());
mImpl = (Impl) SplitCompatUtils.newInstance(context, mContentProviderClassName);
mImpl.setContentProvider(this);
}
return mImpl;
}
}
@Override
public boolean onCreate() {
return true;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
String sortOrder) {
return getImpl().query(uri, projection, selection, selectionArgs, sortOrder);
}
@Override
public Uri insert(Uri uri, ContentValues values) {
return getImpl().insert(uri, values);
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
return getImpl().delete(uri, selection, selectionArgs);
}
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
return getImpl().update(uri, values, selection, selectionArgs);
}
@Override
public String getType(Uri uri) {
return getImpl().getType(uri);
}
@Override
public void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
getImpl().dump(fd, writer, args);
}
/**
* Holds the implementation of ContentProvider logic. Will be called by {@link
* SplitCompatContentProvider}.
*/
public abstract static class Impl {
private SplitCompatContentProvider mContentProvider;
protected void setContentProvider(SplitCompatContentProvider contentProvider) {
mContentProvider = contentProvider;
}
protected final Context getContext() {
return mContentProvider.getContext();
}
public abstract Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder);
public abstract Uri insert(Uri uri, ContentValues values);
public abstract int delete(Uri uri, String selection, String[] selectionArgs);
public abstract int update(
Uri uri, ContentValues values, String selection, String[] selectionArgs);
public abstract String getType(Uri uri);
public void dump(FileDescriptor fd, PrintWriter writer, String[] args) {}
}
}
...@@ -15,8 +15,8 @@ import org.junit.runner.RunWith; ...@@ -15,8 +15,8 @@ import org.junit.runner.RunWith;
import org.chromium.base.test.BaseJUnit4ClassRunner; import org.chromium.base.test.BaseJUnit4ClassRunner;
import org.chromium.base.test.util.Feature; import org.chromium.base.test.util.Feature;
import org.chromium.chrome.browser.provider.ChromeBrowserProvider.BookmarkNode; import org.chromium.chrome.browser.provider.ChromeBrowserProviderImpl.BookmarkNode;
import org.chromium.chrome.browser.provider.ChromeBrowserProvider.Type; import org.chromium.chrome.browser.provider.ChromeBrowserProviderImpl.Type;
import java.util.Random; import java.util.Random;
......
...@@ -41,7 +41,8 @@ public class ProviderBookmarksUriTest { ...@@ -41,7 +41,8 @@ public class ProviderBookmarksUriTest {
@Before @Before
public void setUp() { public void setUp() {
mBookmarksUri = ChromeBrowserProvider.getBookmarksApiUri(mProviderTestRule.getActivity()); mBookmarksUri =
ChromeBrowserProviderImpl.getBookmarksApiUri(mProviderTestRule.getActivity());
mProviderTestRule.getContentResolver().delete(mBookmarksUri, null, null); mProviderTestRule.getContentResolver().delete(mBookmarksUri, null, null);
} }
......
...@@ -37,7 +37,7 @@ public class ProviderSearchesUriTest { ...@@ -37,7 +37,7 @@ public class ProviderSearchesUriTest {
@Before @Before
public void setUp() { public void setUp() {
mSearchesUri = ChromeBrowserProvider.getSearchesApiUri(mProviderTestRule.getActivity()); mSearchesUri = ChromeBrowserProviderImpl.getSearchesApiUri(mProviderTestRule.getActivity());
mProviderTestRule.getContentResolver().delete(mSearchesUri, null, null); mProviderTestRule.getContentResolver().delete(mSearchesUri, null, null);
} }
...@@ -176,15 +176,15 @@ public class ProviderSearchesUriTest { ...@@ -176,15 +176,15 @@ public class ProviderSearchesUriTest {
Uri insertUri = mProviderTestRule.getContentResolver().insert(mSearchesUri, value); Uri insertUri = mProviderTestRule.getContentResolver().insert(mSearchesUri, value);
Cursor cursor = mProviderTestRule.getContentResolver().query(mSearchesUri, Cursor cursor = mProviderTestRule.getContentResolver().query(mSearchesUri,
ChromeBrowserProvider.SEARCHES_PROJECTION, SearchColumns.SEARCH + " = ?", ChromeBrowserProviderImpl.SEARCHES_PROJECTION, SearchColumns.SEARCH + " = ?",
new String[] {insertSearch}, null); new String[] {insertSearch}, null);
int id; int id;
try { try {
Assert.assertTrue(cursor.moveToNext()); Assert.assertTrue(cursor.moveToNext());
Assert.assertEquals(insertSearch, Assert.assertEquals(insertSearch,
cursor.getString(ChromeBrowserProvider.SEARCHES_PROJECTION_SEARCH_INDEX)); cursor.getString(ChromeBrowserProviderImpl.SEARCHES_PROJECTION_SEARCH_INDEX));
Assert.assertEquals(createDate, Assert.assertEquals(createDate,
cursor.getLong(ChromeBrowserProvider.SEARCHES_PROJECTION_DATE_INDEX)); cursor.getLong(ChromeBrowserProviderImpl.SEARCHES_PROJECTION_DATE_INDEX));
id = cursor.getInt(idIndex); id = cursor.getInt(idIndex);
} finally { } finally {
cursor.close(); cursor.close();
...@@ -199,14 +199,14 @@ public class ProviderSearchesUriTest { ...@@ -199,14 +199,14 @@ public class ProviderSearchesUriTest {
mProviderTestRule.getContentResolver().update( mProviderTestRule.getContentResolver().update(
mSearchesUri, value, SearchColumns.ID + " = " + id, null); mSearchesUri, value, SearchColumns.ID + " = " + id, null);
cursor = mProviderTestRule.getContentResolver().query(mSearchesUri, cursor = mProviderTestRule.getContentResolver().query(mSearchesUri,
ChromeBrowserProvider.SEARCHES_PROJECTION, SearchColumns.ID + " = " + id, null, ChromeBrowserProviderImpl.SEARCHES_PROJECTION, SearchColumns.ID + " = " + id, null,
null); null);
try { try {
Assert.assertTrue(cursor.moveToNext()); Assert.assertTrue(cursor.moveToNext());
Assert.assertEquals(updateSearch, Assert.assertEquals(updateSearch,
cursor.getString(ChromeBrowserProvider.SEARCHES_PROJECTION_SEARCH_INDEX)); cursor.getString(ChromeBrowserProviderImpl.SEARCHES_PROJECTION_SEARCH_INDEX));
Assert.assertEquals(updateDate, Assert.assertEquals(updateDate,
cursor.getLong(ChromeBrowserProvider.SEARCHES_PROJECTION_DATE_INDEX)); cursor.getLong(ChromeBrowserProviderImpl.SEARCHES_PROJECTION_DATE_INDEX));
Assert.assertEquals(id, cursor.getInt(idIndex)); Assert.assertEquals(id, cursor.getInt(idIndex));
} finally { } finally {
cursor.close(); cursor.close();
...@@ -214,7 +214,7 @@ public class ProviderSearchesUriTest { ...@@ -214,7 +214,7 @@ public class ProviderSearchesUriTest {
// Test: delete // Test: delete
mProviderTestRule.getContentResolver().delete(insertUri, null, null); mProviderTestRule.getContentResolver().delete(insertUri, null, null);
cursor = mProviderTestRule.getContentResolver().query(mSearchesUri, cursor = mProviderTestRule.getContentResolver().query(mSearchesUri,
ChromeBrowserProvider.SEARCHES_PROJECTION, SearchColumns.ID + " = " + id, null, ChromeBrowserProviderImpl.SEARCHES_PROJECTION, SearchColumns.ID + " = " + id, null,
null); null);
try { try {
Assert.assertEquals(0, cursor.getCount()); Assert.assertEquals(0, cursor.getCount());
......
...@@ -47,12 +47,12 @@ public class ProviderTestRule extends ChromeTabbedActivityTestRule { ...@@ -47,12 +47,12 @@ public class ProviderTestRule extends ChromeTabbedActivityTestRule {
final ContentProvider provider = new ChromeBrowserProvider(); final ContentProvider provider = new ChromeBrowserProvider();
TestThreadUtils.runOnUiThreadBlocking(() -> { TestThreadUtils.runOnUiThreadBlocking(() -> {
ProviderInfo providerInfo = new ProviderInfo(); ProviderInfo providerInfo = new ProviderInfo();
providerInfo.authority = ChromeBrowserProvider.getApiAuthority(activity); providerInfo.authority = ChromeBrowserProviderImpl.getApiAuthority(activity);
provider.attachInfo(activity, providerInfo); provider.attachInfo(activity, providerInfo);
}); });
MockContentResolver resolver = new MockContentResolver(); MockContentResolver resolver = new MockContentResolver();
resolver.addProvider(ChromeBrowserProvider.getApiAuthority(activity), provider); resolver.addProvider(ChromeBrowserProviderImpl.getApiAuthority(activity), provider);
mContext = new IsolatedContext(resolver, activity); mContext = new IsolatedContext(resolver, activity);
Assert.assertTrue(getContentResolver() instanceof MockContentResolver); Assert.assertTrue(getContentResolver() instanceof MockContentResolver);
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "base/task/cancelable_task_tracker.h" #include "base/task/cancelable_task_tracker.h"
#include "base/time/time.h" #include "base/time/time.h"
#include "chrome/android/chrome_jni_headers/ChromeBrowserProvider_jni.h" #include "chrome/android/chrome_jni_headers/ChromeBrowserProviderImpl_jni.h"
#include "chrome/browser/android/provider/blocking_ui_thread_async_request.h" #include "chrome/browser/android/provider/blocking_ui_thread_async_request.h"
#include "chrome/browser/android/provider/bookmark_model_task.h" #include "chrome/browser/android/provider/bookmark_model_task.h"
#include "chrome/browser/android/provider/run_on_ui_thread_blocking.h" #include "chrome/browser/android/provider/run_on_ui_thread_blocking.h"
...@@ -99,7 +99,7 @@ const int64_t kInvalidBookmarkId = -1; ...@@ -99,7 +99,7 @@ const int64_t kInvalidBookmarkId = -1;
// ------------- Java-related utility methods ------------- // // ------------- Java-related utility methods ------------- //
jlong JNI_ChromeBrowserProvider_ConvertJLongObjectToPrimitive( jlong JNI_ChromeBrowserProviderImpl_ConvertJLongObjectToPrimitive(
JNIEnv* env, JNIEnv* env,
const JavaRef<jobject>& long_obj) { const JavaRef<jobject>& long_obj) {
ScopedJavaLocalRef<jclass> jlong_clazz = GetClass(env, "java/lang/Long"); ScopedJavaLocalRef<jclass> jlong_clazz = GetClass(env, "java/lang/Long");
...@@ -108,7 +108,7 @@ jlong JNI_ChromeBrowserProvider_ConvertJLongObjectToPrimitive( ...@@ -108,7 +108,7 @@ jlong JNI_ChromeBrowserProvider_ConvertJLongObjectToPrimitive(
return env->CallLongMethod(long_obj.obj(), long_value, nullptr); return env->CallLongMethod(long_obj.obj(), long_value, nullptr);
} }
jboolean JNI_ChromeBrowserProvider_ConvertJBooleanObjectToPrimitive( jboolean JNI_ChromeBrowserProviderImpl_ConvertJBooleanObjectToPrimitive(
JNIEnv* env, JNIEnv* env,
const JavaRef<jobject>& boolean_object) { const JavaRef<jobject>& boolean_object) {
ScopedJavaLocalRef<jclass> jboolean_clazz = ScopedJavaLocalRef<jclass> jboolean_clazz =
...@@ -123,7 +123,7 @@ base::Time ConvertJlongToTime(jlong value) { ...@@ -123,7 +123,7 @@ base::Time ConvertJlongToTime(jlong value) {
base::TimeDelta::FromMilliseconds((int64_t)value); base::TimeDelta::FromMilliseconds((int64_t)value);
} }
jint JNI_ChromeBrowserProvider_ConvertJIntegerToJint( jint JNI_ChromeBrowserProviderImpl_ConvertJIntegerToJint(
JNIEnv* env, JNIEnv* env,
const JavaRef<jobject>& integer_obj) { const JavaRef<jobject>& integer_obj) {
ScopedJavaLocalRef<jclass> jinteger_clazz = ScopedJavaLocalRef<jclass> jinteger_clazz =
...@@ -712,7 +712,7 @@ class RemoveSearchTermsFromAPITask : public SearchTermTask { ...@@ -712,7 +712,7 @@ class RemoveSearchTermsFromAPITask : public SearchTermTask {
// ------------- Other utility methods (may use tasks) ------------- // // ------------- Other utility methods (may use tasks) ------------- //
// Fills the bookmark |row| with the given java objects. // Fills the bookmark |row| with the given java objects.
void JNI_ChromeBrowserProvider_FillBookmarkRow( void JNI_ChromeBrowserProviderImpl_FillBookmarkRow(
JNIEnv* env, JNIEnv* env,
const JavaRef<jobject>& obj, const JavaRef<jobject>& obj,
const JavaRef<jstring>& url, const JavaRef<jstring>& url,
...@@ -742,16 +742,18 @@ void JNI_ChromeBrowserProvider_FillBookmarkRow( ...@@ -742,16 +742,18 @@ void JNI_ChromeBrowserProvider_FillBookmarkRow(
if (!created.is_null()) if (!created.is_null())
row->set_created(ConvertJlongToTime( row->set_created(ConvertJlongToTime(
JNI_ChromeBrowserProvider_ConvertJLongObjectToPrimitive(env, created))); JNI_ChromeBrowserProviderImpl_ConvertJLongObjectToPrimitive(env,
created)));
if (!isBookmark.is_null()) if (!isBookmark.is_null())
row->set_is_bookmark( row->set_is_bookmark(
JNI_ChromeBrowserProvider_ConvertJBooleanObjectToPrimitive(env, JNI_ChromeBrowserProviderImpl_ConvertJBooleanObjectToPrimitive(
isBookmark)); env, isBookmark));
if (!date.is_null()) if (!date.is_null())
row->set_last_visit_time(ConvertJlongToTime( row->set_last_visit_time(ConvertJlongToTime(
JNI_ChromeBrowserProvider_ConvertJLongObjectToPrimitive(env, date))); JNI_ChromeBrowserProviderImpl_ConvertJLongObjectToPrimitive(env,
date)));
if (!favicon.is_null()) { if (!favicon.is_null()) {
std::vector<uint8_t> bytes; std::vector<uint8_t> bytes;
...@@ -764,7 +766,7 @@ void JNI_ChromeBrowserProvider_FillBookmarkRow( ...@@ -764,7 +766,7 @@ void JNI_ChromeBrowserProvider_FillBookmarkRow(
if (!visits.is_null()) if (!visits.is_null())
row->set_visit_count( row->set_visit_count(
JNI_ChromeBrowserProvider_ConvertJIntegerToJint(env, visits)); JNI_ChromeBrowserProviderImpl_ConvertJIntegerToJint(env, visits));
// Make sure parent_id is always in the mobile_node branch. // Make sure parent_id is always in the mobile_node branch.
IsInMobileBookmarksBranchTask task(model, model_loader); IsInMobileBookmarksBranchTask task(model, model_loader);
...@@ -773,7 +775,7 @@ void JNI_ChromeBrowserProvider_FillBookmarkRow( ...@@ -773,7 +775,7 @@ void JNI_ChromeBrowserProvider_FillBookmarkRow(
} }
// Fills the bookmark |row| with the given java objects if it is not null. // Fills the bookmark |row| with the given java objects if it is not null.
void JNI_ChromeBrowserProvider_FillSearchRow( void JNI_ChromeBrowserProviderImpl_FillSearchRow(
JNIEnv* env, JNIEnv* env,
const JavaRef<jobject>& obj, const JavaRef<jobject>& obj,
const JavaRef<jstring>& search_term, const JavaRef<jstring>& search_term,
...@@ -784,14 +786,16 @@ void JNI_ChromeBrowserProvider_FillSearchRow( ...@@ -784,14 +786,16 @@ void JNI_ChromeBrowserProvider_FillSearchRow(
if (!date.is_null()) if (!date.is_null())
row->set_search_time(ConvertJlongToTime( row->set_search_time(ConvertJlongToTime(
JNI_ChromeBrowserProvider_ConvertJLongObjectToPrimitive(env, date))); JNI_ChromeBrowserProviderImpl_ConvertJLongObjectToPrimitive(env,
date)));
} }
} // namespace } // namespace
// ------------- Native initialization and destruction ------------- // // ------------- Native initialization and destruction ------------- //
static jlong JNI_ChromeBrowserProvider_Init(JNIEnv* env, static jlong JNI_ChromeBrowserProviderImpl_Init(
JNIEnv* env,
const JavaParamRef<jobject>& obj) { const JavaParamRef<jobject>& obj) {
ChromeBrowserProvider* provider = new ChromeBrowserProvider(env, obj); ChromeBrowserProvider* provider = new ChromeBrowserProvider(env, obj);
return reinterpret_cast<intptr_t>(provider); return reinterpret_cast<intptr_t>(provider);
...@@ -877,7 +881,7 @@ jlong ChromeBrowserProvider::AddBookmarkFromAPI( ...@@ -877,7 +881,7 @@ jlong ChromeBrowserProvider::AddBookmarkFromAPI(
DCHECK(url); DCHECK(url);
history::HistoryAndBookmarkRow row; history::HistoryAndBookmarkRow row;
JNI_ChromeBrowserProvider_FillBookmarkRow( JNI_ChromeBrowserProviderImpl_FillBookmarkRow(
env, obj, url, created, isBookmark, date, favicon, title, visits, env, obj, url, created, isBookmark, date, favicon, title, visits,
parent_id, &row, bookmark_model_, bookmark_model_loader_); parent_id, &row, bookmark_model_, bookmark_model_loader_);
...@@ -959,7 +963,7 @@ jint ChromeBrowserProvider::UpdateBookmarkFromAPI( ...@@ -959,7 +963,7 @@ jint ChromeBrowserProvider::UpdateBookmarkFromAPI(
const JavaParamRef<jstring>& selections, const JavaParamRef<jstring>& selections,
const JavaParamRef<jobjectArray>& selection_args) { const JavaParamRef<jobjectArray>& selection_args) {
history::HistoryAndBookmarkRow row; history::HistoryAndBookmarkRow row;
JNI_ChromeBrowserProvider_FillBookmarkRow( JNI_ChromeBrowserProviderImpl_FillBookmarkRow(
env, obj, url, created, isBookmark, date, favicon, title, visits, env, obj, url, created, isBookmark, date, favicon, title, visits,
parent_id, &row, bookmark_model_, bookmark_model_loader_); parent_id, &row, bookmark_model_, bookmark_model_loader_);
...@@ -1016,7 +1020,8 @@ jlong ChromeBrowserProvider::AddSearchTermFromAPI( ...@@ -1016,7 +1020,8 @@ jlong ChromeBrowserProvider::AddSearchTermFromAPI(
DCHECK(search_term); DCHECK(search_term);
history::SearchRow row; history::SearchRow row;
JNI_ChromeBrowserProvider_FillSearchRow(env, obj, search_term, date, &row); JNI_ChromeBrowserProviderImpl_FillSearchRow(env, obj, search_term, date,
&row);
// URL must be valid. // URL must be valid.
if (row.search_term().empty()) { if (row.search_term().empty()) {
...@@ -1092,7 +1097,8 @@ jint ChromeBrowserProvider::UpdateSearchTermFromAPI( ...@@ -1092,7 +1097,8 @@ jint ChromeBrowserProvider::UpdateSearchTermFromAPI(
const JavaParamRef<jstring>& selections, const JavaParamRef<jstring>& selections,
const JavaParamRef<jobjectArray>& selection_args) { const JavaParamRef<jobjectArray>& selection_args) {
history::SearchRow row; history::SearchRow row;
JNI_ChromeBrowserProvider_FillSearchRow(env, obj, search_term, date, &row); JNI_ChromeBrowserProviderImpl_FillSearchRow(env, obj, search_term, date,
&row);
std::vector<base::string16> where_args; std::vector<base::string16> where_args;
AppendJavaStringArrayToStringVector(env, selection_args, &where_args); AppendJavaStringArrayToStringVector(env, selection_args, &where_args);
...@@ -1145,14 +1151,14 @@ void ChromeBrowserProvider::BookmarkModelChanged() { ...@@ -1145,14 +1151,14 @@ void ChromeBrowserProvider::BookmarkModelChanged() {
JNIEnv* env = AttachCurrentThread(); JNIEnv* env = AttachCurrentThread();
ScopedJavaLocalRef<jobject> obj; ScopedJavaLocalRef<jobject> obj;
if (GetJavaProviderOrDeleteSelf(&obj, env)) if (GetJavaProviderOrDeleteSelf(&obj, env))
Java_ChromeBrowserProvider_onBookmarkChanged(env, obj); Java_ChromeBrowserProviderImpl_onBookmarkChanged(env, obj);
} }
void ChromeBrowserProvider::OnHistoryChanged() { void ChromeBrowserProvider::OnHistoryChanged() {
JNIEnv* env = AttachCurrentThread(); JNIEnv* env = AttachCurrentThread();
ScopedJavaLocalRef<jobject> obj; ScopedJavaLocalRef<jobject> obj;
if (GetJavaProviderOrDeleteSelf(&obj, env)) if (GetJavaProviderOrDeleteSelf(&obj, env))
Java_ChromeBrowserProvider_onHistoryChanged(env, obj); Java_ChromeBrowserProviderImpl_onHistoryChanged(env, obj);
} }
void ChromeBrowserProvider::OnURLVisited( void ChromeBrowserProvider::OnURLVisited(
...@@ -1178,7 +1184,7 @@ void ChromeBrowserProvider::OnKeywordSearchTermUpdated( ...@@ -1178,7 +1184,7 @@ void ChromeBrowserProvider::OnKeywordSearchTermUpdated(
JNIEnv* env = AttachCurrentThread(); JNIEnv* env = AttachCurrentThread();
ScopedJavaLocalRef<jobject> obj; ScopedJavaLocalRef<jobject> obj;
if (GetJavaProviderOrDeleteSelf(&obj, env)) if (GetJavaProviderOrDeleteSelf(&obj, env))
Java_ChromeBrowserProvider_onSearchTermChanged(env, obj); Java_ChromeBrowserProviderImpl_onSearchTermChanged(env, obj);
} }
void ChromeBrowserProvider::OnKeywordSearchTermDeleted( void ChromeBrowserProvider::OnKeywordSearchTermDeleted(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment