Chromium Code Reviews| Index: chrome/browser/android/offline_pages/background_scheduler_bridge.cc |
| diff --git a/chrome/browser/android/offline_pages/background_scheduler_bridge.cc b/chrome/browser/android/offline_pages/background_scheduler_bridge.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..11c236001e6f7b11fe35dd19770754379e6cca56 |
| --- /dev/null |
| +++ b/chrome/browser/android/offline_pages/background_scheduler_bridge.cc |
| @@ -0,0 +1,64 @@ |
| +// Copyright 2016 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. |
| + |
| +#include "base/android/scoped_java_ref.h" |
| +#include "chrome/browser/android/offline_pages/background_scheduler_bridge.h" |
| +#include "chrome/browser/profiles/profile.h" |
| +#include "chrome/browser/profiles/profile_android.h" |
| +#include "jni/BackgroundSchedulerBridge_jni.h" |
| + |
| +using base::android::ScopedJavaGlobalRef; |
| + |
| +namespace offline_pages { |
| +namespace android { |
| + |
| +namespace { |
| + |
| +// C++ callback that delegates to Java callback. |
| +void ProcessingDoneCallback( |
| + const ScopedJavaGlobalRef<jobject>& j_callback_obj) { |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| + Java_ProcessingDoneCallback_onResult(env, j_callback_obj.obj()); |
| +} |
| + |
| +} // namespace |
| + |
| +// JNI call to start request processing. |
| +static jboolean StartProcessing( |
| + JNIEnv* env, |
| + const JavaParamRef<jclass>& jcaller, |
| + const JavaParamRef<jobject>& j_profile, |
| + const JavaParamRef<jobject>& j_callback_obj) { |
| + ScopedJavaGlobalRef<jobject> j_callback_ref; |
| + j_callback_ref.Reset(env, j_callback_obj); |
| + base::Bind(&ProcessingDoneCallback, j_callback_ref); |
| + // TODO(dougarnett): lookup/create RequestCoordinator KeyedService |
| + // and call StartProcessing on it with Bind-ed j_callback_obj. |
|
fgorski
2016/04/28 11:44:00
nit: bound?
|
| + return false; |
| +} |
| + |
| +BackgroundSchedulerBridge::BackgroundSchedulerBridge() { |
| +} |
| + |
| +BackgroundSchedulerBridge::~BackgroundSchedulerBridge() { |
| +} |
| + |
| +void BackgroundSchedulerBridge::EnsureScheduled( |
| + const TriggerCondition& trigger_condition) { |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| + // TODO(dougarnett): pass trigger_condition. |
| + Java_BackgroundSchedulerBridge_ensureScheduled(env); |
| +} |
| + |
| +void BackgroundSchedulerBridge::ClearScheduled() { |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| + Java_BackgroundSchedulerBridge_clearScheduled(env); |
| +} |
| + |
| +bool RegisterBackgroundSchedulerBridge(JNIEnv* env) { |
| + return RegisterNativesImpl(env); |
| +} |
| + |
| +} // namespace android |
| +} // namespace offline_pages |