blob: 55e59d6fd1f5ae24d9ab8af8d3be8131ce276b13 [file] [log] [blame]
// Copyright 2017 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/jni_android.h"
#include "base/android/jni_string.h"
#include "chrome/browser/predictors/loading_predictor.h"
#include "chrome/browser/predictors/loading_predictor_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_android.h"
#include "jni/LoadingPredictor_jni.h"
using base::android::JavaParamRef;
using base::android::ScopedJavaLocalRef;
namespace predictors {
namespace {
LoadingPredictor* LoadingPredictorFromProfileAndroid(
const JavaParamRef<jobject>& j_profile) {
Profile* profile = ProfileAndroid::FromProfileAndroid(j_profile);
if (!profile)
return nullptr;
return LoadingPredictorFactory::GetInstance()->GetForProfile(profile);
}
} // namespace
static jboolean JNI_LoadingPredictor_StartInitialization(
JNIEnv* env,
const JavaParamRef<jclass>& clazz,
const JavaParamRef<jobject>& j_profile) {
auto* loading_predictor = LoadingPredictorFromProfileAndroid(j_profile);
if (!loading_predictor)
return false;
loading_predictor->StartInitialization();
return true;
}
static jboolean JNI_LoadingPredictor_PrepareForPageLoad(
JNIEnv* env,
const JavaParamRef<jclass>& clazz,
const JavaParamRef<jobject>& j_profile,
const JavaParamRef<jstring>& j_url) {
auto* loading_predictor = LoadingPredictorFromProfileAndroid(j_profile);
if (!loading_predictor)
return false;
GURL url = GURL(base::android::ConvertJavaStringToUTF16(env, j_url));
loading_predictor->PrepareForPageLoad(url, HintOrigin::EXTERNAL);
return true;
}
static jboolean JNI_LoadingPredictor_CancelPageLoadHint(
JNIEnv* env,
const JavaParamRef<jclass>& clazz,
const JavaParamRef<jobject>& j_profile,
const JavaParamRef<jstring>& j_url) {
auto* loading_predictor = LoadingPredictorFromProfileAndroid(j_profile);
if (!loading_predictor)
return false;
GURL url = GURL(base::android::ConvertJavaStringToUTF16(env, j_url));
loading_predictor->CancelPageLoadHint(url);
return true;
}
} // namespace predictors